Editor Main
Core editor bootstrap module. Sets up the global `editor` object, manages extension loading, preferences, edit modes, window registration, selection system, history/undo, and the editor activate/deact
Core editor bootstrap module. Sets up the global editor object, manages extension loading, preferences, edit modes, window registration, selection system, history/undo, and the editor activate/deactivate lifecycle.
Module Overview
| Aspect | Detail |
|---|---|
| File | extensions/editor/main.lua |
| Returns | M table (assigned to global editor) |
| Dependencies | core_camera |
| Role | Editor framework initialization and lifecycle management |
Key State
| Field | Type | Description |
|---|---|---|
M.initialized | boolean | Whether the editor has been fully initialized |
M.active | boolean | Whether the editor is currently active |
M.safeMode | boolean | Safe mode limits which extensions load |
M.extensionNames | table | List of loaded editor extension names |
M.allExtensionNames | table | All discovered editor extension names |
M.preferencesRegistry | object | Preference storage and notification system |
Public Functions - Lifecycle
| Function | Description |
|---|---|
M.initializeModules() | Full editor initialization - loads extensions, preferences, state |
M.setEditorActive(activate, safeMode) | Enters/exits editor mode |
M.isEditorActive() | Returns whether editor is active |
M.toggleActive() | Toggles editor on/off |
Public Functions - Extensions
| Function | Description |
|---|---|
M.loadEditorExtensions(extNames) | Loads editor extensions from a list of names |
M.loadEditorExtension(name) | Loads a single extension by name |
M.unloadEditorExtension(name) | Unloads a single extension |
Public Functions - Preferences
| Function | Description |
|---|---|
M.saveExtensionsSettings() | Saves extension settings |
M.loadExtensionsSettings() | Loads extension settings |
M.loadPreferences() | Loads from settings/editor/preferences.json |
M.savePreferences() | Saves to settings/editor/preferences.json |
Public Functions - Logging
| Function | Description |
|---|---|
M.log(msg) | Info-level editor log |
M.logDebug(msg) | Debug-level editor log |
M.logWarn(msg) | Warning-level editor log |
M.logError(msg) | Error-level editor log |
Extension Discovery
-- Extensions are discovered from:
local extensionFiles = FS:findFiles('/lua/ge/extensions/editor/', '*.lua', 0, false, false)
-- A file is an editor extension if it contains:
-- M.onEditor* or M.onExtension* function declarations
-- Safe mode only loads these extensions:
local safeModeExtensionNames = {
"editor_extensionsEditor", "editor_fileDialog", "editor_worldEditorHelper",
"editor_createObjectTool", "editor_gizmoHelper", "editor_logHelper",
"editor_mainMenu", "editor_mainToolbar", "editor_mainUpdate",
"editor_preferences", "editor_objectTool", "editor_sceneTree",
"editor_inspector", "editor_layoutManager"
}Configuration Paths
| Path | Purpose |
|---|---|
settings/editor/preferences.json | Editor preferences |
settings/editor/currentState.json | Persisted editor state |
settings/editor/extensions.json | Extension enable/disable settings |
Hook System
The editor broadcasts hooks to all loaded extensions:
onEditorInitialized,onEditorActivated,onEditorDeactivatedonEditorGui,onEditorMainMenuBaronEditorObjectSelectionChanged,onEditorInspectorFieldChangedonEditorRegisterPreferences,onEditorPreferenceValueChangedonEditorHeadlessMainMenuBar,onEditorHeadlessChange
Module Variables
M.dependencies(table) -{"core_camera"}.M.additionalActionMaps(table) - Extra action maps to push when editor activates.M.extensionsSettings(any) - Extension enable/disable settings.M.guiModule(any) - Reference toeditor/api/guimodule.M.coreModule(any) - Reference toeditor/api/coremodule.M.assetsModule(any) - Reference toeditor/api/assetsmodule.M.cameraModule(any) - Reference toeditor/api/cameramodule.M.dataBlockModule(any) - Reference toeditor/api/dataBlockmodule.M.decalModule(any) - Reference toeditor/api/decalmodule.M.gizmoModule(any) - Reference toeditor/api/gizmomodule.M.materialModule(any) - Reference toeditor/api/materialmodule.M.navigationModule(any) - Reference toeditor/api/navigationmodule.M.objectModule(any) - Reference toeditor/api/objectmodule.M.roadRiverModule(any) - Reference toeditor/api/roadRivermodule.M.sketchModule(any) - Reference toeditor/api/sketchmodule.M.terrainModule(any) - Reference toeditor/api/terrainmodule.M.forestModule(any) - Reference toeditor/api/forestmodule.M.modulesInitialized(boolean) - Whether API modules have been initialized.
Functions
M.logInfo(msg)
Info-level editor log (alias for M.log).
msg(string)
M.initializeModules()
Initializes all editor API modules (gui, core, assets, camera, etc.).
M.setEditorActive(activate, safeMode)
Sets the editor active or inactive.
activate(boolean)safeMode(boolean)
M.isEditorActive()
Checks if editor is currently active.
Returns: boolean
M.saveState(filePath)
Saves editor state to file.
filePath(string)
M.loadState(filePath)
Loads editor state from file.
filePath(string)
Returns: table
M.loadExtensionsSettings()
Loads extension enable/disable settings from settings/editor/extensions.json.
M.saveExtensionsSettings()
Saves extension enable/disable settings to settings/editor/extensions.json.
M.loadEditorExtensions(names)
Loads multiple editor extensions by name.
names(table)
M.shutdown()
Shuts down the editor, unloads extensions.
M.onClientStartMission()
Callback for client start mission event.
M.onClientEndMission()
Callback for client end mission event.
M.onExit()
Callback for exit event.
M.onPreWindowClose()
Callback for pre window close event.
M.onExtensionLoaded()
Callback for extension loaded event.
M.onExtensionUnloaded()
Callback for extension unloaded event.
M.onSerialize()
Callback for serialize event.
Returns: table
M.onDeserialized(data)
Callback for deserialized event.
data(table)
M.onFirstUpdate()
Callback for first update event.
M.onUpdate()
Callback for update event.
M.toggleActive()
Toggles editor active/inactive state.
M.loadEditorExtension(name)
Loads a single editor extension by name.
name(string)
M.savePreferences()
Saves preferences to settings/editor/preferences.json.
M.loadPreferences()
Loads preferences from settings/editor/preferences.json.
See Also
- Editor AI Tests - Related reference
- Editor AI Visualization - Related reference
- Editor – Assembly Spline Tool - Related reference
- World Editor Guide - Guide
Editor Log Helper
Displays live log statistics (error and warning counts) in the editor's main menu bar. Uses `Lua:getDevLogStats()` to fetch counters.
Editor Main Menu
Manages the editor's main menu bar, notification system, window menu organization, layout management UI, and scene metrics display. Depends on `editor_layoutManager` for layout persistence.