add animations and textures
parent
886a704c17
commit
97c9ce1d5b
|
@ -334,6 +334,97 @@ void AssbinImporter::ReadBinaryMaterial(IOStream * stream, aiMaterial* mat)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------------
|
||||||
|
void AssbinImporter::ReadBinaryNodeAnim(IOStream * stream, aiNodeAnim* nd)
|
||||||
|
{
|
||||||
|
ai_assert( Read<uint32_t>(stream) == ASSBIN_CHUNK_AINODEANIM);
|
||||||
|
uint32_t size = Read<uint32_t>(stream);
|
||||||
|
|
||||||
|
nd->mNodeName = Read<aiString>(stream);
|
||||||
|
nd->mNumPositionKeys = Read<unsigned int>(stream);
|
||||||
|
nd->mNumRotationKeys = Read<unsigned int>(stream);
|
||||||
|
nd->mNumScalingKeys = Read<unsigned int>(stream);
|
||||||
|
nd->mPreState = (aiAnimBehaviour)Read<unsigned int>(stream);
|
||||||
|
nd->mPostState = (aiAnimBehaviour)Read<unsigned int>(stream);
|
||||||
|
|
||||||
|
if (nd->mNumPositionKeys) {
|
||||||
|
if (shortened) {
|
||||||
|
ReadBounds(stream,nd->mPositionKeys,nd->mNumPositionKeys);
|
||||||
|
|
||||||
|
} // else write as usual
|
||||||
|
else {
|
||||||
|
nd->mPositionKeys = new aiVectorKey[nd->mNumPositionKeys];
|
||||||
|
stream->Read(nd->mPositionKeys,1,nd->mNumPositionKeys*sizeof(aiVectorKey));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nd->mNumRotationKeys) {
|
||||||
|
if (shortened) {
|
||||||
|
ReadBounds(stream,nd->mRotationKeys,nd->mNumRotationKeys);
|
||||||
|
|
||||||
|
} // else write as usual
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nd->mRotationKeys = new aiQuatKey[nd->mNumRotationKeys];
|
||||||
|
stream->Read(nd->mRotationKeys,1,nd->mNumRotationKeys*sizeof(aiQuatKey));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nd->mNumScalingKeys) {
|
||||||
|
if (shortened) {
|
||||||
|
ReadBounds(stream,nd->mScalingKeys,nd->mNumScalingKeys);
|
||||||
|
|
||||||
|
} // else write as usual
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nd->mScalingKeys = new aiVectorKey[nd->mNumScalingKeys];
|
||||||
|
stream->Read(nd->mScalingKeys,1,nd->mNumScalingKeys*sizeof(aiVectorKey));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------------
|
||||||
|
void AssbinImporter::ReadBinaryAnim( IOStream * stream, aiAnimation* anim )
|
||||||
|
{
|
||||||
|
ai_assert( Read<uint32_t>(stream) == ASSBIN_CHUNK_AIANIMATION);
|
||||||
|
uint32_t size = Read<uint32_t>(stream);
|
||||||
|
|
||||||
|
anim->mName = Read<aiString> (stream);
|
||||||
|
anim->mDuration = Read<double> (stream);
|
||||||
|
anim->mTicksPerSecond = Read<double> (stream);
|
||||||
|
anim->mNumChannels = Read<unsigned int>(stream);
|
||||||
|
|
||||||
|
if (anim->mNumChannels)
|
||||||
|
{
|
||||||
|
anim->mChannels = new aiNodeAnim*[ anim->mNumChannels ];
|
||||||
|
for (unsigned int a = 0; a < anim->mNumChannels;++a) {
|
||||||
|
anim->mChannels[a] = new aiNodeAnim();
|
||||||
|
ReadBinaryNodeAnim(stream,anim->mChannels[a]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AssbinImporter::ReadBinaryTexture(IOStream * stream, aiTexture* tex)
|
||||||
|
{
|
||||||
|
ai_assert( Read<uint32_t>(stream) == ASSBIN_CHUNK_AITEXTURE);
|
||||||
|
uint32_t size = Read<uint32_t>(stream);
|
||||||
|
|
||||||
|
tex->mWidth = Read<unsigned int>(stream);
|
||||||
|
tex->mHeight = Read<unsigned int>(stream);
|
||||||
|
stream->Read( tex->achFormatHint, sizeof(char), 4 );
|
||||||
|
|
||||||
|
if(!shortened) {
|
||||||
|
if (!tex->mHeight) {
|
||||||
|
tex->pcData = new aiTexel[ tex->mWidth ];
|
||||||
|
stream->Read(tex->pcData,1,tex->mWidth);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tex->pcData = new aiTexel[ tex->mWidth*tex->mHeight ];
|
||||||
|
stream->Read(tex->pcData,1,tex->mWidth*tex->mHeight*4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene )
|
void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene )
|
||||||
{
|
{
|
||||||
ai_assert( Read<uint32_t>(stream) == ASSBIN_CHUNK_AISCENE);
|
ai_assert( Read<uint32_t>(stream) == ASSBIN_CHUNK_AISCENE);
|
||||||
|
@ -370,21 +461,28 @@ void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene )
|
||||||
ReadBinaryMaterial(stream,scene->mMaterials[i]);
|
ReadBinaryMaterial(stream,scene->mMaterials[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
|
|
||||||
// Read all animations
|
// Read all animations
|
||||||
|
if (scene->mNumAnimations)
|
||||||
|
{
|
||||||
|
scene->mAnimations = new aiAnimation*[scene->mNumAnimations];
|
||||||
for (unsigned int i = 0; i < scene->mNumAnimations;++i) {
|
for (unsigned int i = 0; i < scene->mNumAnimations;++i) {
|
||||||
const aiAnimation* anim = scene->mAnimations[i];
|
scene->mAnimations[i] = new aiAnimation();
|
||||||
ReadBinaryAnim(stream,anim);
|
ReadBinaryAnim(stream,scene->mAnimations[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Read all textures
|
// Read all textures
|
||||||
|
if (scene->mNumTextures)
|
||||||
|
{
|
||||||
|
scene->mTextures = new aiTexture*[scene->mNumTextures];
|
||||||
for (unsigned int i = 0; i < scene->mNumTextures;++i) {
|
for (unsigned int i = 0; i < scene->mNumTextures;++i) {
|
||||||
const aiTexture* mesh = scene->mTextures[i];
|
scene->mTextures[i] = new aiTexture();
|
||||||
ReadBinaryTexture(stream,mesh);
|
ReadBinaryTexture(stream,scene->mTextures[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
// Read lights
|
// Read lights
|
||||||
for (unsigned int i = 0; i < scene->mNumLights;++i) {
|
for (unsigned int i = 0; i < scene->mNumLights;++i) {
|
||||||
const aiLight* l = scene->mLights[i];
|
const aiLight* l = scene->mLights[i];
|
||||||
|
|
|
@ -80,6 +80,9 @@ public:
|
||||||
void ReadBinaryBone( IOStream * stream, aiBone* bone );
|
void ReadBinaryBone( IOStream * stream, aiBone* bone );
|
||||||
void ReadBinaryMaterial(IOStream * stream, aiMaterial* mat);
|
void ReadBinaryMaterial(IOStream * stream, aiMaterial* mat);
|
||||||
void ReadBinaryMaterialProperty(IOStream * stream, aiMaterialProperty* prop);
|
void ReadBinaryMaterialProperty(IOStream * stream, aiMaterialProperty* prop);
|
||||||
|
void ReadBinaryNodeAnim(IOStream * stream, aiNodeAnim* nd);
|
||||||
|
void ReadBinaryAnim( IOStream * stream, aiAnimation* anim );
|
||||||
|
void ReadBinaryTexture(IOStream * stream, aiTexture* tex);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end of namespace Assimp
|
} // end of namespace Assimp
|
||||||
|
|
Loading…
Reference in New Issue