mirror of
https://github.com/ApfelTeeSaft/vb01.git
synced 2026-08-26 19:33:45 +00:00
added missing files
This commit is contained in:
@@ -32,6 +32,7 @@ namespace vb01{
|
||||
inline Material* getMaterial(){return material;}
|
||||
inline bool isReflective(){return reflective;}
|
||||
inline bool isCastShadow(){return castShadow;}
|
||||
inline MeshData::ShapeKey* getShapeKey(int i){return &shapeKeys[i];}
|
||||
inline Skeleton* getSkeleton(){return skeleton;}
|
||||
inline Texture* getPrefilterMap(){return prefilterMap;}
|
||||
inline Texture* getIrradianceMap(){return irradianceMap;}
|
||||
|
||||
@@ -120,8 +120,28 @@ namespace vb01{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ namespace vb01{
|
||||
inline std::vector<Mesh*>& getMeshes(){return meshes;}
|
||||
inline std::vector<Skeleton*>& getSkeletons(){return skeletons;}
|
||||
inline Mesh* getMesh(int i){return meshes[i];}
|
||||
inline int getNumMeshes(){return meshes.size();}
|
||||
inline Node* getParent(){return parent;}
|
||||
inline void setParent(Node *par){this->parent = par;}
|
||||
inline Node* getChild(int i){return children[i];}
|
||||
|
||||
+10
-10
@@ -83,8 +83,12 @@ namespace vb01{
|
||||
KeyframeChannelType channelType = KeyframeChannelType::POS_X;
|
||||
string animName = "D";
|
||||
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);
|
||||
|
||||
Node *clonedA = originalA->clone();
|
||||
@@ -94,21 +98,17 @@ namespace vb01{
|
||||
Node *clonedD = nullptr;
|
||||
|
||||
for(Node *desc : clonedDescendands){
|
||||
if(desc->getName() == "B"){
|
||||
if(desc->getName() == "B")
|
||||
clonedB = desc;
|
||||
break;
|
||||
}
|
||||
else if(desc->getName() == animName){
|
||||
else if(desc->getName() == animName)
|
||||
clonedD = desc;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
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().animatable == animName);
|
||||
CPPUNIT_ASSERT(driverClone->getType() == driverType);
|
||||
CPPUNIT_ASSERT(driverClone->getType() == Driver::POS_X);
|
||||
}
|
||||
|
||||
void NodeTest::testClonedSkeletons(){
|
||||
|
||||
Reference in New Issue
Block a user