| 379 | } |
| 380 | |
| 381 | static 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 | |
| 413 | void UpdateFactory(HFactory factory) |
| 414 | { |