Lifecycle Hooks

All hooks are optional. If a hook is missing, it is simply not called.

Hook Reference

Hook Generation Description
Script_OnInspector(ScriptContext&) Manual export required ImGui inspector UI
Script_Begin(ScriptContext&, float) Wrapper from Begin Called once per instance
Script_TickUpdate(ScriptContext&, float) Wrapper from TickUpdate Called every frame (preferred)
Script_Update(ScriptContext&, float) Wrapper from Update Fallback if TickUpdate missing
Script_Spec(ScriptContext&, float) Wrapper from Spec Runs when Spec toggle enabled
Script_TestEditor(ScriptContext&, float) Wrapper from TestEditor Editor-time execution

Runtime Notes

  • Begin runs once per object instance (per script component instance).
  • TickUpdate runs every frame (preferred).
  • Update runs only if TickUpdate is not exported.
  • Spec/TestEditor run every frame only while their global toggles are enabled (main menu → Scripts).

Example

Scripts/LifecycleExample.cpp CPP
1 400">class="text-violet-400">#include "ScriptRuntime.h"
2 400">class="text-violet-400">#include "ThirdParty/imgui/imgui.h"
3
4 // Called once when script starts
5 400">void Begin(400">ScriptContext& ctx, 400">float dt) {
6 (400">void)dt;
7 ctx.AddConsoleMessage("Script initialized!", ConsoleMessageType::Info);
8 }
9
10 // Called every frame
11 400">void TickUpdate(400">ScriptContext& ctx, 400">float dt) {
12 400">if (!ctx.object) 400">return;
13 // Frame logic here
14 }
15
16 // Editor-time execution
17 400">void TestEditor(400">ScriptContext& ctx, 400">float dt) {
18 400">if (!ctx.object) 400">return;
19 // Editor preview logic
20 }
21
22 // Manual export for inspector UI
23 400">extern "C" 400">void Script_OnInspector(400">ScriptContext& ctx) {
24 400">ImGui::Text("Custom inspector UI");
25 ctx.MarkDirty();
26 }