added missing files

This commit is contained in:
devZoGok
2022-03-28 07:29:01 +03:00
parent 85a6b846bc
commit feaae8e272
4 changed files with 34 additions and 12 deletions
+1
View File
@@ -32,6 +32,7 @@ namespace vb01{
inline Material* getMaterial(){return material;} inline Material* getMaterial(){return material;}
inline bool isReflective(){return reflective;} inline bool isReflective(){return reflective;}
inline bool isCastShadow(){return castShadow;} inline bool isCastShadow(){return castShadow;}
inline MeshData::ShapeKey* getShapeKey(int i){return &shapeKeys[i];}
inline Skeleton* getSkeleton(){return skeleton;} inline Skeleton* getSkeleton(){return skeleton;}
inline Texture* getPrefilterMap(){return prefilterMap;} inline Texture* getPrefilterMap(){return prefilterMap;}
inline Texture* getIrradianceMap(){return irradianceMap;} inline Texture* getIrradianceMap(){return irradianceMap;}
+22 -2
View File
@@ -120,8 +120,28 @@ namespace vb01{
clonedDescendants[i]->attachMesh(m); clonedDescendants[i]->attachMesh(m);
} }
for(Driver *driver : original->getDrivers()){ }
Driver *dr = new Driver(nullptr, driver->getKeyframeChannel(), driver->getType());
for(int i = 0; i < numDescendants; i++){
for(Driver *driver : originalDescendants[i]->getDrivers()){
Animatable *animatable = nullptr;
for(int j = 0; j < numDescendants; j++){
if(originalDescendants[j] == driver->getAnimatable()){
animatable = clonedDescendants[j];
break;
}
for(int k = 0; k < originalDescendants[j]->getNumMeshes(); k++){
for(int l = 0; l < originalDescendants[j]->getMesh(k)->getMeshBase().numShapeKeys; l++)
if(originalDescendants[j]->getMesh(k)->getShapeKey(l) == driver->getAnimatable()){
animatable = clonedDescendants[j]->getMesh(k)->getShapeKey(l);
break;
}
}
}
Driver *dr = new Driver(animatable, driver->getKeyframeChannel(), driver->getType());
clonedDescendants[i]->addDriver(dr); clonedDescendants[i]->addDriver(dr);
} }
} }
+1
View File
@@ -51,6 +51,7 @@ namespace vb01{
inline std::vector<Mesh*>& getMeshes(){return meshes;} inline std::vector<Mesh*>& getMeshes(){return meshes;}
inline std::vector<Skeleton*>& getSkeletons(){return skeletons;} inline std::vector<Skeleton*>& getSkeletons(){return skeletons;}
inline Mesh* getMesh(int i){return meshes[i];} inline Mesh* getMesh(int i){return meshes[i];}
inline int getNumMeshes(){return meshes.size();}
inline Node* getParent(){return parent;} inline Node* getParent(){return parent;}
inline void setParent(Node *par){this->parent = par;} inline void setParent(Node *par){this->parent = par;}
inline Node* getChild(int i){return children[i];} inline Node* getChild(int i){return children[i];}
+10 -10
View File
@@ -83,8 +83,12 @@ namespace vb01{
KeyframeChannelType channelType = KeyframeChannelType::POS_X; KeyframeChannelType channelType = KeyframeChannelType::POS_X;
string animName = "D"; string animName = "D";
KeyframeChannel channel = KeyframeChannel::createKeyframeChannel(channelType, animName, keyframes); KeyframeChannel channel = KeyframeChannel::createKeyframeChannel(channelType, animName, keyframes);
Driver::VariableType driverType = Driver::POS_X;
Driver *driver = new Driver(originalD, channel, driverType); int numKeys = 1;
Mesh *mesh = new Mesh(MeshData(nullptr, nullptr, 0, "", nullptr, 0, "", new MeshData::ShapeKey[numKeys], numKeys));
originalD->attachMesh(mesh);
Driver *driver = new Driver(mesh->getShapeKey(0), channel, Driver::POS_X);
originalB->addDriver(driver); originalB->addDriver(driver);
Node *clonedA = originalA->clone(); Node *clonedA = originalA->clone();
@@ -94,21 +98,17 @@ namespace vb01{
Node *clonedD = nullptr; Node *clonedD = nullptr;
for(Node *desc : clonedDescendands){ for(Node *desc : clonedDescendands){
if(desc->getName() == "B"){ if(desc->getName() == "B")
clonedB = desc; clonedB = desc;
break; else if(desc->getName() == animName)
}
else if(desc->getName() == animName){
clonedD = desc; clonedD = desc;
break;
}
} }
Driver *driverClone = clonedB->getDriver(0); Driver *driverClone = clonedB->getDriver(0);
CPPUNIT_ASSERT(driverClone->getAnimatable() == clonedD); CPPUNIT_ASSERT(driverClone->getAnimatable() == clonedD->getMesh(0)->getShapeKey(0));
CPPUNIT_ASSERT(driverClone->getKeyframeChannel().type == channelType); CPPUNIT_ASSERT(driverClone->getKeyframeChannel().type == channelType);
CPPUNIT_ASSERT(driverClone->getKeyframeChannel().animatable == animName); CPPUNIT_ASSERT(driverClone->getKeyframeChannel().animatable == animName);
CPPUNIT_ASSERT(driverClone->getType() == driverType); CPPUNIT_ASSERT(driverClone->getType() == Driver::POS_X);
} }
void NodeTest::testClonedSkeletons(){ void NodeTest::testClonedSkeletons(){