EntityGroup* LoadModel(unsigned int index, Entity* parent = 0) const { if(index >= mModelList.Size()) return NULL; Model* model = &mModelList[index]; if(model->mPartList.Size() == 0) return NULL; EntityGroup* group = new EntityGroup(); group->SetID(index); bool zms = false; for(unsigned int i = 0; i < model->mPartList.Size(); ++i){ T* entity = new T(); ModelPart* part = &model->mPartList[i]; Mesh* mesh = &mMeshList[part->mMesh]; Material* material = &mMaterialList[part->mMaterial]; entity->SetMesh(mesh->mPath); entity->SetMaterial(*material); entity->SetTransform(part->mTransform); group->AddChild(entity); if(part->mBoneID == -1 && mBoneID != -1) part->mBoneID = (short)mBoneID; if(part->mDummyID == -1 && mDummyID != -1) part->mDummyID = (short)mDummyID; if(parent){ SkeletalEntity* skel = (SkeletalEntity*)parent; if(part->mBoneID != -1) skel->BindEntityToBone(entity, part->mBoneID); else if(part->mDummyID != -1) skel->BindEntityToDummy(entity, part->mDummyID); } } return group; }