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:

  • Begin
  • TickUpdate
  • Update
  • Spec
  • TestEditor

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_OnInspector is not wrapper-generated. Export it explicitly with extern "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