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

Function DispatchCallback

engine/render/src/render/render_script.cpp:3514–3564  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3512 };
3513
3514 void DispatchCallback(dmMessage::Message *message, void* user_ptr)
3515 {
3516 DispatchContext* context = (DispatchContext*)user_ptr;
3517 HRenderScriptInstance instance = context->m_Instance;
3518 if (message->m_Descriptor != 0)
3519 {
3520 dmDDF::Descriptor* descriptor = (dmDDF::Descriptor*)message->m_Descriptor;
3521 if (descriptor == dmRenderDDF::DrawText::m_DDFDescriptor || descriptor == dmRenderDDF::DrawDebugText::m_DDFDescriptor)
3522 {
3523 if (instance->m_RenderContext->m_SystemFontMap == 0)
3524 {
3525 dmLogWarning("The text can not be rendered since the system font is not set.");
3526 context->m_Result = RENDER_SCRIPT_RESULT_FAILED;
3527 return;
3528 }
3529
3530 DrawTextParams params;
3531 if (descriptor == dmRenderDDF::DrawText::m_DDFDescriptor)
3532 {
3533 dmRenderDDF::DrawText* dt = (dmRenderDDF::DrawText*)message->m_Data;
3534 const char* text = (const char*) ((uintptr_t) dt + (uintptr_t) dt->m_Text);
3535 params.m_Text = text;
3536 params.m_WorldTransform.setTranslation(dmVMath::Vector3(dt->m_Position));
3537 params.m_FaceColor = dmVMath::Vector4(0.0f, 0.0f, 1.0f, 1.0f);
3538 }
3539 else
3540 {
3541 dmRenderDDF::DrawDebugText* dt = (dmRenderDDF::DrawDebugText*)message->m_Data;
3542 const char* text = (const char*) ((uintptr_t) dt + (uintptr_t) dt->m_Text);
3543 params.m_Text = text;
3544 params.m_WorldTransform.setTranslation(dmVMath::Vector3(dt->m_Position));
3545 params.m_FaceColor = dt->m_Color;
3546 }
3547 DrawText(instance->m_RenderContext, instance->m_RenderContext->m_SystemFontMap, 0, 0, params);
3548 return;
3549 }
3550 else if (descriptor == dmRenderDDF::DrawLine::m_DDFDescriptor)
3551 {
3552 dmRenderDDF::DrawLine* dl = (dmRenderDDF::DrawLine*)message->m_Data;
3553 Line3D(instance->m_RenderContext, dl->m_StartPoint, dl->m_EndPoint, dl->m_Color, dl->m_Color);
3554 return;
3555 }
3556 else if (descriptor == dmRenderDDF::Resize::m_DDFDescriptor)
3557 {
3558 dmRenderDDF::Resize* resize_msg = (dmRenderDDF::Resize*)message->m_Data;
3559 dmGraphics::ResizeWindow(instance->m_RenderContext->m_GraphicsContext, resize_msg->m_Width, resize_msg->m_Height);
3560 return;
3561 }
3562 }
3563 context->m_Result = RunScript(instance, RENDER_SCRIPT_FUNCTION_ONMESSAGE, message);
3564 }
3565
3566 RenderScriptResult DispatchRenderScriptInstance(HRenderScriptInstance instance)
3567 {

Callers

nothing calls this directly

Calls 6

DrawTextFunction · 0.85
Line3DFunction · 0.85
ResizeWindowFunction · 0.85
RunScriptFunction · 0.70
Vector3Class · 0.50
Vector4Class · 0.50

Tested by

no test coverage detected