bool MeshResource::CreateFromDesc() { if( !m_MeshDesc.pMeshGenerator ) return false; Result::Name res = m_MeshDesc.pMeshGenerator->Generate(); if( res != Result::SUCCESS ) return false; MeshFactory factory; BasicMesh *pMeshObject = factory.LoadMeshObjectFromArchive( m_MeshDesc.pMeshGenerator->MeshArchive(), m_MeshDesc.ResourcePath, m_MeshDesc.LoadOptionFlags, m_MeshDesc.MeshType ); if( pMeshObject ) { m_pMeshObject = shared_ptr<BasicMesh>( pMeshObject ); SetState( GraphicsResourceState::LOADED ); return true; } else return false; }
bool MeshResource::LoadFromDB( CBinaryDatabase<std::string>& db, const std::string& keyname ) { m_pMeshObject.reset(); string mesh_archive_key = keyname; // retrieve mesh archive from db C3DMeshModelArchive mesh_archive; db.GetData( mesh_archive_key, mesh_archive ); MeshFactory factory; BasicMesh *pMesh = factory.LoadMeshObjectFromArchive( mesh_archive, keyname, m_MeshDesc.LoadOptionFlags, m_MeshDesc.MeshType ); m_pMeshObject = boost::shared_ptr<BasicMesh>( pMesh ); return ( m_pMeshObject ? true : false ); }