mirror of
https://github.com/ApfelTeeSaft/vb01.git
synced 2026-08-26 19:33:45 +00:00
cloning original bones as bones
This commit is contained in:
@@ -79,8 +79,12 @@ namespace vb01{
|
||||
Bone *originalBone = dynamic_cast<Bone*>(original);
|
||||
Node *clone = nullptr;
|
||||
|
||||
if(originalBone)
|
||||
clone = new Bone(originalBone->getName(), originalBone->getLength(), originalBone->getPosition(), originalBone->getOrientation(), originalBone->getScale());
|
||||
if(originalBone){
|
||||
Bone *boneClone = new Bone(originalBone->getName(), originalBone->getLength(), originalBone->getPosition(), originalBone->getOrientation(), originalBone->getScale());
|
||||
boneClone->setIkChainLength(originalBone->getIkChainLength());
|
||||
boneClone->setIkTarget(originalBone->getIkTarget());
|
||||
clone = boneClone;
|
||||
}
|
||||
else
|
||||
clone = new Node(original->getPosition(), original->getOrientation(), original->getScale(), original->getName());
|
||||
|
||||
|
||||
+13
-4
@@ -115,11 +115,18 @@ namespace vb01{
|
||||
Skeleton *skeleton = new Skeleton();
|
||||
originalC->dettachChild(originalD);
|
||||
originalA->dettachChild(originalC);
|
||||
originalA->dettachChild(originalB);
|
||||
originalC = new Bone(originalC->getName(), .25);
|
||||
originalD = new Bone(originalD->getName(), .5);
|
||||
originalB = new Bone(originalB->getName(), .1);
|
||||
originalC->attachChild(originalD);
|
||||
originalA->attachChild(originalC);
|
||||
originalA->attachChild(originalB);
|
||||
|
||||
dynamic_cast<Bone*>(originalB)->setIkChainLength(2);
|
||||
dynamic_cast<Bone*>(originalB)->setIkTarget(originalD->getName());
|
||||
|
||||
skeleton->addBone(dynamic_cast<Bone*>(originalB), nullptr);
|
||||
skeleton->addBone(dynamic_cast<Bone*>(originalC), nullptr);
|
||||
skeleton->addBone(dynamic_cast<Bone*>(originalD), nullptr);
|
||||
originalA->addSkeleton(skeleton);
|
||||
@@ -128,10 +135,12 @@ namespace vb01{
|
||||
CPPUNIT_ASSERT(clonedA->getSkeleton(0));
|
||||
|
||||
Skeleton *clonedSkeleton = originalA->getSkeleton(0);
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(0)->getName() == dynamic_cast<Bone*>(originalC)->getName());
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(0)->getLength() == dynamic_cast<Bone*>(originalC)->getLength());
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(1)->getLength() == dynamic_cast<Bone*>(originalD)->getLength());
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(1)->getName() == dynamic_cast<Bone*>(originalD)->getName());
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(originalB->getName())->getIkChainLength() == dynamic_cast<Bone*>(originalB)->getIkChainLength());
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(originalB->getName())->getIkTarget() == dynamic_cast<Bone*>(originalB)->getIkTarget());
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(originalC->getName())->getName() == dynamic_cast<Bone*>(originalC)->getName());
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(originalC->getName())->getLength() == dynamic_cast<Bone*>(originalC)->getLength());
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(originalD->getName())->getLength() == dynamic_cast<Bone*>(originalD)->getLength());
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(originalD->getName())->getName() == dynamic_cast<Bone*>(originalD)->getName());
|
||||
}
|
||||
|
||||
void NodeTest::testClonedMeshSkeleton(){
|
||||
|
||||
Reference in New Issue
Block a user