VManagedResource *VPrefabManager::CreateResource(const char *szFilename, VResourceSnapshotEntry *pExtraInfo) { VPrefab *pPrefab = new VPrefab(this); pPrefab->SetFilename(szFilename); pPrefab->EnsureLoaded(); return pPrefab; }
void VPrefabInstance::Serialize( VArchive& ar ) { VisBaseEntity_cl::Serialize(ar); char prefabVersion = 0; if(ar.IsLoading()) { char loc_sFilename[FS_MAX_PATH]; ar >> prefabVersion; VASSERT_MSG(prefabVersion==0, "Invalid version number, please re-export") ar.ReadStringBinary(loc_sFilename); VPrefab* loadedPrefab = VPrefabManager::GlobalManager().LoadPrefab(loc_sFilename); VPrefabInstanceInfo info; info.m_pParentObject = this; info.m_bOutputInstances = false; info.m_vInstancePos = GetPosition(); info.m_vInstanceEuler = GetOrientation(); loadedPrefab->Instantiate(info); }
/// Creates an entity from a prefab file. VisBaseEntity_cl* RPG_GameManager::CreateEntityFromPrefab(const VString& prefabName, const hkvVec3& position, const hkvVec3& orientation) { if(!prefabName.IsEmpty()) { VPrefab* prefab = VPrefabManager::GlobalManager().LoadPrefab(prefabName); VPrefabInstanceInfo info; { info.m_bOutputInstances = true; info.m_vInstancePos = position; info.m_vInstanceEuler = orientation; } prefab->Instantiate(info); VisBaseEntity_cl* entity = static_cast<VisBaseEntity_cl*>(info.m_Instances[0]); return entity; } return NULL; }
bool PrefabLoader::Load(const VSceneListEntry& entry) { Helper::SetupScene(entry); float fLarge = 100000000.f; hkvAlignedBBox large(hkvVec3(-fLarge), hkvVec3(fLarge)); VisVisibilityZone_cl* pVisZone = new VisVisibilityZone_cl(large); Vision::GetSceneManager()->AddVisibilityZone(pVisZone); // load the prefab file and instantiate once VPrefab* pPrefab = VPrefabManager::GlobalManager().LoadPrefab(entry.sScenePath); if (pPrefab == NULL) return false; VPrefabInstanceInfo info; if (!pPrefab->Instantiate(info)) hkvLog::Info("Failed to instantiate prefab"); hkvAlignedBBox scenebox; Vision::GetSceneManager()->GetDynamicSceneExtents(scenebox); Helper::LookAtBox(scenebox); return true; }