mirror of
https://github.com/ApfelTeeSaft/vb01.git
synced 2026-08-27 03:43:42 +00:00
cloning node skeletons and meshes
This commit is contained in:
+31
-11
@@ -79,15 +79,12 @@ namespace vb01{
|
||||
}
|
||||
|
||||
void NodeTest::testClonedDrivers(){
|
||||
vector<Keyframe> keyframes = vector<Keyframe>{
|
||||
KeyframeChannel::createKeyframe(KeyframeInterpolation::LINEAR, 1, 1),
|
||||
KeyframeChannel::createKeyframe(KeyframeInterpolation::LINEAR, 2, 2),
|
||||
KeyframeChannel::createKeyframe(KeyframeInterpolation::LINEAR, 3, 3)
|
||||
};
|
||||
vector<Keyframe> keyframes;
|
||||
KeyframeChannelType channelType = KeyframeChannelType::POS_X;
|
||||
KeyframeChannel channel = KeyframeChannel::createKeyframeChannel(channelType, "D", keyframes);
|
||||
string animName = "D";
|
||||
KeyframeChannel channel = KeyframeChannel::createKeyframeChannel(channelType, animName, keyframes);
|
||||
Driver::VariableType driverType = Driver::POS_X;
|
||||
Driver *driver = new Driver(nullptr, channel, driverType);
|
||||
Driver *driver = new Driver(originalD, channel, driverType);
|
||||
originalB->addDriver(driver);
|
||||
|
||||
Node *clonedA = originalA->clone();
|
||||
@@ -101,7 +98,7 @@ namespace vb01{
|
||||
clonedB = desc;
|
||||
break;
|
||||
}
|
||||
else if(desc->getName() == "D"){
|
||||
else if(desc->getName() == animName){
|
||||
clonedD = desc;
|
||||
break;
|
||||
}
|
||||
@@ -110,17 +107,17 @@ namespace vb01{
|
||||
Driver *driverClone = clonedB->getDriver(0);
|
||||
CPPUNIT_ASSERT(driverClone->getAnimatable() == clonedD);
|
||||
CPPUNIT_ASSERT(driverClone->getKeyframeChannel().type == channelType);
|
||||
CPPUNIT_ASSERT(driverClone->getKeyframeChannel().animatable == animName);
|
||||
CPPUNIT_ASSERT(driverClone->getType() == driverType);
|
||||
}
|
||||
|
||||
void NodeTest::testClonedSkeletons(){
|
||||
Skeleton *skeleton = new Skeleton();
|
||||
skeleton->addBone((Bone*)originalC, nullptr);
|
||||
skeleton->addBone((Bone*)originalD, nullptr);
|
||||
skeleton->addBone((Bone*)originalC, (Bone*)originalC->getParent());
|
||||
skeleton->addBone((Bone*)originalD, (Bone*)originalD->getParent());
|
||||
originalA->addSkeleton(skeleton);
|
||||
|
||||
Node *clonedA = originalA->clone();
|
||||
CPPUNIT_ASSERT(!empty(clonedA->getSkeletons()));
|
||||
CPPUNIT_ASSERT(clonedA->getSkeleton(0));
|
||||
|
||||
Skeleton *clonedSkeleton = originalA->getSkeleton(0);
|
||||
@@ -128,6 +125,29 @@ namespace vb01{
|
||||
CPPUNIT_ASSERT(clonedSkeleton->getBone(1)->getName() == originalD->getName());
|
||||
}
|
||||
|
||||
void NodeTest::testClonedMeshSkeleton(){
|
||||
string name = "skeleton";
|
||||
Mesh *mesh = new Mesh(MeshData(nullptr, nullptr, 0));
|
||||
Skeleton *skeleton = new Skeleton(name);
|
||||
mesh->setSkeleton(skeleton);
|
||||
|
||||
originalD->attachMesh(mesh);
|
||||
originalD->addSkeleton(skeleton);
|
||||
|
||||
Node *clonedA = originalA->clone();
|
||||
Node *clonedD = nullptr;
|
||||
vector<Node*> clonedDescendands;
|
||||
clonedA->getDescendants(clonedDescendands);
|
||||
|
||||
for(Node *desc : clonedDescendands)
|
||||
if(desc->getName() == "D"){
|
||||
clonedD = desc;
|
||||
break;
|
||||
}
|
||||
|
||||
CPPUNIT_ASSERT(clonedD->getMesh(0)->getSkeleton()->getAttachableName() == name);
|
||||
}
|
||||
|
||||
void NodeTest::testGetAncestors(){
|
||||
vector<Node*> ancestors = ancestorD->getAncestors();
|
||||
CPPUNIT_ASSERT(ancestors[ancestors.size() - 1] == rootNode);
|
||||
|
||||
Reference in New Issue
Block a user