MCPcopy Create free account
hub / github.com/defold/defold / Dispatch

Function Dispatch

engine/resource/src/resource.cpp:381–411  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

379}
380
381static void Dispatch(dmMessage::Message* message, void* user_ptr)
382{
383 HFactory factory = (HFactory) user_ptr;
384
385 if (message->m_Descriptor)
386 {
387 dmDDF::Descriptor* descriptor = (dmDDF::Descriptor*)message->m_Descriptor;
388 if (descriptor == dmResourceDDF::Reload::m_DDFDescriptor)
389 {
390 // NOTE use offsets instead of reading via ddf message
391 // Message: | offset to string-offsets | count | string offset | string offset | ... | string #1 | string #2 | ... |
392 dmResourceDDF::Reload* reload_resources = (dmResourceDDF::Reload*) message->m_Data;
393 uint32_t count = reload_resources->m_Resources.m_Count;
394 uint8_t* str_offset_cursor = (uint8_t*)((uintptr_t)reload_resources + *(uint32_t*)reload_resources);
395 for (uint32_t i = 0; i < count; ++i)
396 {
397 const char* resource = (const char *) (uintptr_t)reload_resources + *(str_offset_cursor + i * sizeof(uint64_t));
398 ResourceDescriptor* resource_descriptor;
399 ReloadResource(factory, resource, &resource_descriptor);
400 }
401 }
402 else
403 {
404 dmLogError("Unknown message '%s' sent to socket '%s'.\n", descriptor->m_Name, RESOURCE_SOCKET_NAME);
405 }
406 }
407 else
408 {
409 dmLogError("Only system messages can be sent to the '%s' socket.\n", RESOURCE_SOCKET_NAME);
410 }
411}
412
413void UpdateFactory(HFactory factory)
414{

Callers 3

UpdateFactoryFunction · 0.70
TEST_FFunction · 0.50

Calls 1

ReloadResourceFunction · 0.85

Tested by 1

TEST_FFunction · 0.40