Exemplo n.º 1
0
bool MeshLoader::Load(const VSceneListEntry& entry)
{
  Helper::SetupScene(entry);

  // load vmesh
  VisStaticMesh_cl* pRes = VisStaticMesh_cl::GetResourceManager().LoadStaticMeshFile(entry.sScenePath);
  if (pRes == NULL) 
    return false;
  
  // force loading of .colmesh file if it exists
  if (pRes->GetCollisionMesh(true)) 
    hkvLog::Info("Loaded collision mesh");
  else
    hkvLog::Info("No collision mesh loaded");

  // get a instance
  hkvMat4 mTransform;
  VisStaticMeshInstance_cl *pInst = pRes->CreateInstance(mTransform);

  // create the visibility zone
  const hkvAlignedBBox& bbox = pInst->GetBoundingBox();
  int iZones = Vision::GetSceneManager()->GetNumVisibilityZones();
  VisVisibilityZone_cl* pVisZone;
  if (iZones > 0)
  {
    pVisZone = Vision::GetSceneManager()->GetVisibilityZone(0);
  } 
  else
  {
    pVisZone = new VisVisibilityZone_cl(bbox);
    Vision::GetSceneManager()->AddVisibilityZone(pVisZone);
  }

  // add submeshes to vis zone
  for (int i = 0; i < pInst->GetSubmeshInstanceCount(); ++i)
  {
    pVisZone->AddStaticGeometryInstance(pInst->GetSubmeshInstance(i));
  }

  Helper::LookAtBox(bbox);
  return true;
}