const MCE::FBX::SceneNode* Scene::GetBoneNode( int id ) const { const MCE::FBX::SceneNode* bone_node = NULL; int bone_index = -1; int num_objects = NumObjects(); for( int i = 0; i < num_objects; ++i ) { MCE::FBX::SceneObject* object = m_objects[ i ]; if( object ) { MCE::FBX::SceneObjectType::SceneObjectTypes object_type = object->Type(); if( object_type == MCE::FBX::SceneObjectType::BONE ) { ++bone_index; if( bone_index == id ) { bone_node = object->GetNode(); break; } } } } return bone_node; }
void AnimTable::CalculateDefinineAnims() { std::vector<const RigAnim*> anims(MaxAnimIndex()); for (int object = 0; object < NumObjects(); ++object) { const size_t num_anims = GatherObjectAnims(object, &anims[0]); CreateDefiningAnim(&anims[0], num_anims, &defining_anims_[object]); } }
int Scene::AddObject( MCE::FBX::SceneObject* object ) { FBX_ASSERT( object, "Null object" ); object->SetScene( this ); int id = NumObjects(); m_objects.push_back( object ); return id; }
Scene::~Scene() { int num_objects = NumObjects(); for( int i = 0; i < num_objects; ++i ) { MCE::FBX::SceneObject* object = m_objects[ i ]; delete object; object = NULL; } int num_collision_meshes = NumCollisionMeshes(); for( int i = 0; i < num_collision_meshes; ++i ) { MCE::FBX::Mesh* collision_mesh = m_collision_meshes[ i ]; delete collision_mesh; collision_mesh = NULL; } }
int Scene::GetUniqueObjectId() const { int id = NumObjects(); return id; }
const MCE::FBX::SceneObject* Scene::GetSceneObject( int id ) const { FBX_ASSERT( ( id >= 0 ) && ( id < NumObjects() ), "Index out of bounds" ); const MCE::FBX::SceneObject* object = m_objects[ id ]; return object; }