//-------------------------------------------------------------------- // Desc: Load new template into memory, template with the same identifier // will not be created twice. // // Params: sMeshFileName the identifier string //-------------------------------------------------------------------- MeshEntity* CParaWorldAsset::LoadMesh(const string& sIdentifier, const string& fileName) { string sFileName; CParaFile::ToCanonicalFilePath(sFileName, fileName, false); if (m_bUseAssetSearch) DoAssetSearch(sFileName, CParaFile::GetCurDirectory(CParaFile::APP_MODEL_DIR).c_str()); pair<MeshEntity*, bool> res = GetMeshManager().CreateEntity(sIdentifier, sFileName); if (res.second == true) { MeshEntity* pNewEntity = res.first; pNewEntity->Init(); } return res.first; }
Entity *MeshEntity::DuplicateEntity() { MeshEntity *ent = (MeshEntity*)this->GetObjectClass()->Create(FALSE); List<BYTE> data; BufferOutputSerializer sSave(data); this->Serialize(sSave); BufferInputSerializer sLoad(data); ent->Serialize(sLoad); ent->GenerateUniqueName(); ent->bLightmapped = FALSE; ent->Init(); return ent; }