MCPcopy Create free account
hub / github.com/axmolengine/axmol / loadFromCache

Method loadFromCache

core/3d/MeshRenderer.cpp:195–234  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

193}
194
195bool MeshRenderer::loadFromCache(std::string_view path)
196{
197 auto meshdata = MeshRendererCache::getInstance()->getMeshRenderData(path);
198 if (meshdata)
199 {
200 for (auto&& it : meshdata->meshVertexDatas)
201 {
202 _meshVertexDatas.pushBack(it);
203 }
204 _skeleton = Skeleton3D::create(meshdata->nodedatas->skeleton);
205 AX_SAFE_RETAIN(_skeleton);
206
207 const bool singleMesh = (meshdata->nodedatas->nodes.size() == 1);
208 for (const auto& it : meshdata->nodedatas->nodes)
209 {
210 if (it)
211 {
212 createNode(it, this, *(meshdata->materialdatas), singleMesh);
213 }
214 }
215
216 for (const auto& it : meshdata->nodedatas->skeleton)
217 {
218 if (it)
219 {
220 createAttachMeshRendererNode(it, *(meshdata->materialdatas));
221 }
222 }
223
224 for (ssize_t i = 0, size = _meshes.size(); i < size; ++i)
225 {
226 // cloning is needed in order to have one state per mesh
227 auto glstate = meshdata->programStates.at(i);
228 _meshes.at(i)->setProgramState(glstate->clone());
229 }
230 return true;
231 }
232
233 return false;
234}
235
236bool MeshRenderer::loadFromFile(std::string_view path,
237 NodeDatas* nodedatas,

Callers 1

createAsyncMethod · 0.80

Calls 8

getInstanceFunction · 0.85
createFunction · 0.85
getMeshRenderDataMethod · 0.80
pushBackMethod · 0.80
sizeMethod · 0.45
atMethod · 0.45
setProgramStateMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected