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

Method afterAsyncLoad

core/3d/MeshRenderer.cpp:127–178  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125}
126
127void MeshRenderer::afterAsyncLoad(void* param)
128{
129 MeshRenderer::AsyncLoadParam* asyncParam = (MeshRenderer::AsyncLoadParam*)param;
130 autorelease();
131 if (asyncParam)
132 {
133 if (asyncParam->result)
134 {
135 _meshes.clear();
136 _meshVertexDatas.clear();
137 AX_SAFE_RELEASE_NULL(_skeleton);
138 removeAllAttachNode();
139
140 // create in the main thread
141 auto& meshdatas = asyncParam->meshdatas;
142 auto& materialdatas = asyncParam->materialdatas;
143 auto& nodeDatas = asyncParam->nodeDatas;
144 if (initFrom(*nodeDatas, *meshdatas, *materialdatas))
145 {
146 auto meshdata = MeshRendererCache::getInstance()->getMeshRenderData(asyncParam->modelPath);
147 if (meshdata == nullptr)
148 {
149 // add to cache
150 auto data = new MeshRendererCache::MeshRenderData();
151 data->materialdatas = materialdatas;
152 data->nodedatas = nodeDatas;
153 data->meshVertexDatas = _meshVertexDatas;
154 for (const auto mesh : _meshes)
155 {
156 data->programStates.pushBack(mesh->getProgramState());
157 }
158
159 MeshRendererCache::getInstance()->addMeshRenderData(asyncParam->modelPath, data);
160
161 AX_SAFE_DELETE(meshdatas);
162 materialdatas = nullptr;
163 nodeDatas = nullptr;
164 }
165 }
166 AX_SAFE_DELETE(meshdatas);
167 AX_SAFE_DELETE(materialdatas);
168 AX_SAFE_DELETE(nodeDatas);
169
170 setModelTexture(asyncParam->modelPath, asyncParam->texPath);
171 }
172 else
173 {
174 AXLOGW("file load failed: {}\n", asyncParam->modelPath);
175 }
176 asyncParam->afterLoadCallback(this, asyncParam->callbackParam);
177 }
178}
179
180AABB MeshRenderer::getAABBRecursivelyImp(Node* node)
181{

Callers 1

createAsyncMethod · 0.80

Calls 7

getInstanceFunction · 0.85
getMeshRenderDataMethod · 0.80
pushBackMethod · 0.80
addMeshRenderDataMethod · 0.80
autoreleaseFunction · 0.50
clearMethod · 0.45
getProgramStateMethod · 0.45

Tested by

no test coverage detected