How Compilation Works
Modularity compiles scripts into shared libraries and loads them by symbol name at runtime.
File Locations
- Source:
Scripts/directory - Output:
Cache/ScriptBin/directory
Platform-Specific Binaries
- Windows:
.dll - Linux:
.so
Wrapper Generation
To reduce boilerplate, Modularity auto-generates a wrapper for these hook names if it detects them in your script:
BeginTickUpdateUpdateSpecTestEditor
That wrapper exports Script_Begin, Script_TickUpdate, etc. This means you can write plain functions:
1
400">void TickUpdate(400">ScriptContext& ctx, 400">float dt) {
2
(400">void)dt;
3
400">if (!ctx.object) 400">return;
4
}
Important:
Script_OnInspectoris not wrapper-generated. Export it explicitly withextern "C".- Scripted editor windows (
RenderEditorWindow,ExitRenderEditorWindow) are also not wrapper-generated.
Manual Compilation (CLI)
Linux
Terminal BASH
1
g++ -std=c++20 -fPIC -O0 -g -I../src -I../include -c SampleInspector.cpp -o ../Cache/ScriptBin/SampleInspector.o
2
g++ -shared ../Cache/ScriptBin/SampleInspector.o -o ../Cache/ScriptBin/SampleInspector.so -ldl -lpthread
Windows
Command Prompt BAT
1
cl /nologo /std:c++20 /EHsc /MD /Zi /Od /I ..\src /I ..\include /c SampleInspector.cpp /Fo ..\Cache\ScriptBin\SampleInspector.obj
2
link /nologo /DLL ..\Cache\ScriptBin\SampleInspector.obj /OUT:..\Cache\ScriptBin\SampleInspector.dll User32.lib Advapi32.lib