Beispiel #1
0
VManagedResource *VPrefabManager::CreateResource(const char *szFilename, VResourceSnapshotEntry *pExtraInfo)
{
  VPrefab *pPrefab = new VPrefab(this);
  pPrefab->SetFilename(szFilename);
  pPrefab->EnsureLoaded();
  return pPrefab;
}
Beispiel #2
0
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);
  }
Beispiel #3
0
/// 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;
}
Beispiel #4
0
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;
}