diff --git a/kraken/nodes/KRModel.cpp b/kraken/nodes/KRModel.cpp index 1104cd1..8bd2b7d 100755 --- a/kraken/nodes/KRModel.cpp +++ b/kraken/nodes/KRModel.cpp @@ -322,6 +322,7 @@ void KRModel::preStream(const KRViewport& viewport, std::list for (int i = 0; i < kMeshLODCount; i++) { if (m_meshes[i].isBound()) { m_meshes[i].get()->preStream(resourceRequests, lod_coverage); + resourceRequests.emplace_back(m_meshes[i].get(), 0); // TODO: Pass in LOD level to drive streaming priority of meshes } } diff --git a/kraken/resources/mesh/KRMesh.cpp b/kraken/resources/mesh/KRMesh.cpp index f9c1033..d35d4eb 100755 --- a/kraken/resources/mesh/KRMesh.cpp +++ b/kraken/resources/mesh/KRMesh.cpp @@ -187,6 +187,17 @@ void KRMesh::getMaterials() } } +void KRMesh::requestResidency(uint32_t usage, float lodCoverage) +{ + KRResource::requestResidency(usage, lodCoverage); + + for (Submesh& mesh : m_submeshes) { + for (shared_ptr& vbo : mesh.vbo_data_blocks) { + vbo->requestResidency(lodCoverage); + } + } +} + void KRMesh::preStream(std::list& resourceRequests, float lodCoverage) { getSubmeshes(); @@ -195,12 +206,6 @@ void KRMesh::preStream(std::list& resourceRequests, float lod for (std::set::iterator mat_itr = m_uniqueMaterials.begin(); mat_itr != m_uniqueMaterials.end(); mat_itr++) { (*mat_itr)->preStream(resourceRequests, lodCoverage); } - - for (Submesh& mesh : m_submeshes) { - for (shared_ptr& vbo : mesh.vbo_data_blocks) { - vbo->requestResidency(lodCoverage); - } - } } kraken_stream_level KRMesh::getStreamLevel() diff --git a/kraken/resources/mesh/KRMesh.h b/kraken/resources/mesh/KRMesh.h index e2d1a70..bc47766 100755 --- a/kraken/resources/mesh/KRMesh.h +++ b/kraken/resources/mesh/KRMesh.h @@ -76,6 +76,7 @@ public: kraken_stream_level getStreamLevel(); void preStream(std::list& resourceRequests, float lodCoverage); + void requestResidency(uint32_t usage, float lodCoverage) final; bool hasTransparency();