Example #1
0
		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;
		}