Started to expose DOM to C# API with support for custom nodes. Currently crash when doing FindNodeByID<T>

This commit is contained in:
antopilo
2024-09-13 00:51:34 -04:00
parent 9e87dca9ce
commit 3b148b76c4
18 changed files with 390 additions and 90 deletions

View File

@@ -65,7 +65,7 @@ namespace Nuake
// Instantiate UI widgets
for (auto& uiWidget : CanvasParser::Get().GetAllCustomWidgetInstance())
{
scriptingEngineNet.RegisterCustomWidgetInstance(uiWidget.first, uiWidget.second);
scriptingEngineNet.RegisterCustomWidgetInstance(uiWidget.first.first, uiWidget.first.second, uiWidget.second);
}
// Call OnInit on entity script instances
@@ -84,10 +84,11 @@ namespace Nuake
// Call OnInit on UI widgets
for (auto& widget : CanvasParser::Get().GetAllCustomWidgetInstance())
{
const UUID& widgetInstanceUUID = widget.first;
if (scriptingEngineNet.HasCustomWidgetInstance(widgetInstanceUUID))
const UUID& canvasInstanceUUID = widget.first.first;
const UUID& widgetInstanceUUID = widget.first.second;
if (scriptingEngineNet.HasCustomWidgetInstance(canvasInstanceUUID, widgetInstanceUUID))
{
auto widgetInstance = scriptingEngineNet.GetCustomWidgetInstance(widgetInstanceUUID);
auto widgetInstance = scriptingEngineNet.GetCustomWidgetInstance(canvasInstanceUUID, widgetInstanceUUID);
widgetInstance.InvokeMethod("OnInit");
}
}
@@ -157,6 +158,17 @@ namespace Nuake
scriptInstance.InvokeMethod("OnUpdate", ts.GetSeconds());
}
for (auto& widget : CanvasParser::Get().GetAllCustomWidgetInstance())
{
const UUID& canvasInstanceUUID = widget.first.first;
const UUID& widgetInstanceUUID = widget.first.second;
if (scriptingEngineNet.HasCustomWidgetInstance(canvasInstanceUUID, widgetInstanceUUID))
{
auto widgetInstance = scriptingEngineNet.GetCustomWidgetInstance(canvasInstanceUUID, widgetInstanceUUID);
widgetInstance.InvokeMethod("OnTick", ts.GetSeconds());
}
}
DispatchPhysicCallbacks();
}