MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / ProcessDestroyQueue

Method ProcessDestroyQueue

ogsr_engine/xr_3da/xr_object_list.cpp:196–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

194}
195
196void CObjectList::ProcessDestroyQueue()
197{
198 // Destroy
199 if (!destroy_queue.empty())
200 {
201 // Info
202 for (auto oit = objects_active.begin(); oit != objects_active.end(); oit++)
203 for (int it = destroy_queue.size() - 1; it >= 0; it--)
204 {
205 (*oit)->net_Relcase(destroy_queue[it]);
206 }
207 for (auto oit = objects_sleeping.begin(); oit != objects_sleeping.end(); oit++)
208 for (int it = destroy_queue.size() - 1; it >= 0; it--)
209 (*oit)->net_Relcase(destroy_queue[it]);
210
211 for (int it = destroy_queue.size() - 1; it >= 0; it--)
212 Sound->object_relcase(destroy_queue[it]);
213
214 auto It = m_relcase_callbacks.begin();
215 auto Ite = m_relcase_callbacks.end();
216 for (; It != Ite; ++It)
217 {
218 VERIFY(*(*It).m_ID == (It - m_relcase_callbacks.begin()));
219 auto dIt = destroy_queue.begin();
220 auto dIte = destroy_queue.end();
221 for (; dIt != dIte; ++dIt)
222 {
223 (*It).m_Callback(*dIt);
224 g_hud->net_Relcase(*dIt);
225 }
226 }
227
228 // Destroy
229 for (int it = destroy_queue.size() - 1; it >= 0; it--)
230 {
231 CObject* O = destroy_queue[it];
232
233 O->setDestroy(TRUE); //https://github.com/OGSR/OGSR_Engine_private/commit/406a9d3766bbb726d39c9a73f4038634261d65a4
234
235 if (debug_destroy)
236 Msg("Destroying object[%x][%x] [%d][%s] frame[%d]", smart_cast<void*>(O), O, O->ID(), *O->cName(), Device.dwFrame);
237
238 O->net_Destroy();
239 Destroy(O);
240 }
241 destroy_queue.clear();
242 }
243}
244
245void CObjectList::net_Register(CObject* O)
246{

Callers 1

g_sv_SpawnMethod · 0.80

Calls 12

MsgFunction · 0.85
DestroyFunction · 0.85
object_relcaseMethod · 0.80
setDestroyMethod · 0.80
emptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
net_RelcaseMethod · 0.45
cNameMethod · 0.45
net_DestroyMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected