reenable animation and skins exports

Currently incorrect, however. May need to be removed
pull/1423/head
Daniel Hritzkiv 2017-09-01 17:49:04 -04:00
parent f09892ab63
commit ab08a7c3cb
No known key found for this signature in database
GPG Key ID: D1D19875679D5CBF
3 changed files with 36 additions and 17 deletions

View File

@ -928,9 +928,11 @@ namespace glTF2
friend class AssetWriter;
typedef typename std::gltf_unordered_map< unsigned int, unsigned int > Dict;
typedef typename std::gltf_unordered_map< std::string, unsigned int > IdDict;
std::vector<T*> mObjs; //! The read objects
Dict mObjsByOIndex; //! The read objects accessible by original index
IdDict mObjsById; //! The read objects accessible by id
const char* mDictId; //! ID of the dictionary object
const char* mExtId; //! ID of the extension defining the dictionary
Value* mDict; //! JSON dictionary object
@ -951,6 +953,7 @@ namespace glTF2
Ref<T> Retrieve(unsigned int i);
Ref<T> Get(unsigned int i);
Ref<T> Get(const char* id);
Ref<T> Create(const char* id);
Ref<T> Create(const std::string& id)

View File

@ -1,4 +1,4 @@
/*
/*
Open Asset Import Library (assimp)
----------------------------------------------------------------------
@ -193,14 +193,6 @@ inline void LazyDict<T>::DetachFromDocument()
mDict = 0;
}
template<class T>
Ref<T> LazyDict<T>::Get(unsigned int i)
{
return Ref<T>(mObjs, i);
}
template<class T>
Ref<T> LazyDict<T>::Retrieve(unsigned int i)
{
@ -234,12 +226,34 @@ Ref<T> LazyDict<T>::Retrieve(unsigned int i)
return Add(inst);
}
template<class T>
Ref<T> LazyDict<T>::Get(unsigned int i)
{
return Ref<T>(mObjs, i);
}
template<class T>
Ref<T> LazyDict<T>::Get(const char* id)
{
id = T::TranslateId(mAsset, id);
typename IdDict::iterator it = mObjsById.find(id);
if (it != mObjsById.end()) { // already created?
return Ref<T>(mObjs, it->second);
}
throw std::out_of_range("id \"" + std::string(id) + "\" Doesn't exist");
}
template<class T>
Ref<T> LazyDict<T>::Add(T* obj)
{
unsigned int idx = unsigned(mObjs.size());
mObjs.push_back(obj);
mObjsByOIndex[obj->oIndex] = idx;
mObjsById[obj->id] = idx;
mAsset.mUsedIds[obj->id] = true;
return Ref<T>(mObjs, idx);
}
@ -252,8 +266,10 @@ Ref<T> LazyDict<T>::Create(const char* id)
throw DeadlyImportError("GLTF: two objects with the same ID exist");
}
T* inst = new T();
unsigned int idx = unsigned(mObjs.size());
inst->id = id;
inst->index = static_cast<int>(mObjs.size());
inst->index = idx;
inst->oIndex = idx;
return Add(inst);
}

View File

@ -121,7 +121,7 @@ glTF2Exporter::glTF2Exporter(const char* filename, IOSystem* pIOSystem, const ai
ExportScene();
//ExportAnimations();
ExportAnimations();
AssetWriter writer(*mAsset);
@ -481,7 +481,7 @@ Ref<Node> FindSkeletonRootJoint(Ref<Skin>& skinRef)
return parentNodeRef;
}
/*void ExportSkin(Asset& mAsset, const aiMesh* aimesh, Ref<Mesh>& meshRef, Ref<Buffer>& bufferRef, Ref<Skin>& skinRef, std::vector<aiMatrix4x4>& inverseBindMatricesData)
void ExportSkin(Asset& mAsset, const aiMesh* aimesh, Ref<Mesh>& meshRef, Ref<Buffer>& bufferRef, Ref<Skin>& skinRef, std::vector<aiMatrix4x4>& inverseBindMatricesData)
{
if (aimesh->mNumBones < 1) {
return;
@ -558,7 +558,7 @@ Ref<Node> FindSkeletonRootJoint(Ref<Skin>& skinRef)
delete[] jointsPerVertex;
delete[] vertexWeightData;
delete[] vertexJointData;
}*/
}
void glTF2Exporter::ExportMeshes()
{
@ -663,9 +663,9 @@ void glTF2Exporter::ExportMeshes()
}
/*************** Skins ****************/
/*if(aim->HasBones()) {
if(aim->HasBones()) {
ExportSkin(*mAsset, aim, m, b, skinRef, inverseBindMatricesData);
}*/
}
}
//----------------------------------------
@ -892,7 +892,7 @@ inline void ExtractAnimationData(Asset& mAsset, std::string& animId, Ref<Animati
}
}
/* void glTF2Exporter::ExportAnimations()
void glTF2Exporter::ExportAnimations()
{
Ref<Buffer> bufferRef = mAsset->buffers.Get(unsigned (0));
@ -961,7 +961,7 @@ inline void ExtractAnimationData(Asset& mAsset, std::string& animId, Ref<Animati
// }
} // End: for-loop mNumAnimations
} */
}
#endif // ASSIMP_BUILD_NO_GLTF_EXPORTER