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

Method initWithFile

core/3d/MeshRenderer.cpp:297–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

295}
296
297bool MeshRenderer::initWithFile(std::string_view path)
298{
299 _aabbDirty = true;
300 _meshes.clear();
301 _meshVertexDatas.clear();
302 AX_SAFE_RELEASE_NULL(_skeleton);
303 removeAllAttachNode();
304
305 if (loadFromCache(path))
306 return true;
307
308 MeshDatas* meshdatas = new MeshDatas();
309 MaterialDatas* materialdatas = new MaterialDatas();
310 NodeDatas* nodeDatas = new NodeDatas();
311 if (loadFromFile(path, nodeDatas, meshdatas, materialdatas))
312 {
313 if (initFrom(*nodeDatas, *meshdatas, *materialdatas))
314 {
315 // add to cache
316 auto data = new MeshRendererCache::MeshRenderData();
317 data->materialdatas = materialdatas;
318 data->nodedatas = nodeDatas;
319 data->meshVertexDatas = _meshVertexDatas;
320 for (const auto mesh : _meshes)
321 {
322 data->programStates.pushBack(mesh->getProgramState());
323 }
324
325 MeshRendererCache::getInstance()->addMeshRenderData(path, data);
326 AX_SAFE_DELETE(meshdatas);
327 _contentSize = getBoundingBox().size;
328 return true;
329 }
330 }
331 AX_SAFE_DELETE(meshdatas);
332 AX_SAFE_DELETE(materialdatas);
333 AX_SAFE_DELETE(nodeDatas);
334
335 return false;
336}
337
338bool MeshRenderer::initFrom(const NodeDatas& nodeDatas, const MeshDatas& meshdatas, const MaterialDatas& materialdatas)
339{

Callers 1

createMethod · 0.45

Calls 5

getInstanceFunction · 0.85
pushBackMethod · 0.80
addMeshRenderDataMethod · 0.80
clearMethod · 0.45
getProgramStateMethod · 0.45

Tested by

no test coverage detected