v3.3.0-pre
Pre-release
Pre-release
v3.3.0-pre — Auto-Save, Unified Undo/Redo & AI Script Hotkey Support
✨ New Features
- Auto-Save System — New pause-menu "Auto Save" row with toggle (
Save Enable/Save Disable) and interval spinner (10s steps, 10s–3600s). Toggle withCtrl+Shift+A, adjust withCtrl+Shift+]/Ctrl+Shift+[. When enabled the editor auto-saves the current level at the configured interval. - SaveState (Ctrl+W) & SaveObjectFile (Ctrl+S) work from
qedkeybindings.qsc— All save hotkeys are dispatched viaDispatchEventBindingsusing bindings loaded fromeditor\qed\qedkeybindings.qsc, no hardcoded keys. - AI script saves via Ctrl+W / Ctrl+S — The text editor pre-checks save bindings and commits the in-flight AI edit before letting the key reach the dispatcher. The AI script
.qvmis now saved correctly when pressing SaveState while the AI textbox is focused. - ESC closing the property panel commits AI script edits — previously ESC discarded the in-flight edit buffer; now it commits to
ai_script_text_withai_script_dirty_=true.
🐛 Bug Fixes (initial release)
- AI Script not saved via Ctrl+W / Ctrl+S — text editor was swallowing the key as a printable character.
- ESC discarded AI script edits — fixed.
- Undo/Redo broke building ATTA positions — restored ATTA proxies are now re-flushed to the MEF binary.
- Pause-menu AutoSave row not updating display — missing fields in the pause-mode
task_tree_viewstruct, fixed. - ResetLevel did not fully reset graphs / AI / textures — changed to full folder replacement (
remove_all+ recursive copy) so deleted graph nodes, removed AI scripts, and other stale files are all reverted. - AutoSave config not reloaded on startup —
QEDAutoSaveEnabledandQEDAutoSaveIntervalare now parsed on launch. - Terrain undo/redo didn't restore heightmap edits — added
SnapshotHMP/RestoreHMPthat byte-copies the HMP buffer. - Editor created a
contentfolder in the install path — all asset cache stamps and terrain extract moved undereditor\.
🐛 Bug Fixes (post-release patches)
- HumanAI not found when nested under a non-AI child (e.g.
HumanSoldier → GunM16A2 → HumanAI) —LoadAIScriptForSelected()now walks the children tree recursively (BFS, up to 15 levels deep) instead of only checking direct children. If not found within 15 levels a warning is logged with the parent name and taskId. - AI script editor section never appeared for HumanSoldiers whose modelId isn't tagged
AITYPE_in IGIModels.json — bothLoadAIScriptForSelected()and the renderer'sselected_obj_is_aiflag now also check the object type (HumanSoldier,HumanSoldierFemale,HumanPlayer,HumanSoldierRPG,HumanAI) in addition to theai_model_ids_set, so the AI Script section renders for every AI container regardless of modelId. - AI script load diagnostic logging — on success, the loaded path and resolved
HumanAItaskId are logged; whenHumanAIis found but itstaskIdis empty, a warning is logged.
⌨️ Pause Menu Reorder & UI Polish
- Pause menu now lists rows in this order: Resume → Font → Select Level → Auto Save → Model Search → Terrain Options → Reset Level → Save Level → Quit
- Row spacing increased from 35px to 38px for a cleaner, less cramped layout; first row starts at a slightly higher position for better top padding
- Title "IGI EDITOR" and subtitle "PAUSED" are now centered by measured text width (was hardcoded offset)
- Terrain header and checkbox rows use the same
strlen * 4centering as plain buttons, so all text is consistently aligned - Auto Save label shortened from "Auto Save Enable" / "Auto Save Disable" to "Save Enable" / "Save Disable" for a cleaner row
- Click hit-zones updated to ±16px to match the new 38px row spacing
🎯 Pause Menu Alignment Fixes (post-release)
- Spinner rows now share identical layout: Font / Select Level / Save Enable all use the same
btn_w=22,gap=6,val_w=44,label_gap=14and compute label width dynamically fromstrlen(lbl) * 6. The whole label+spinner group is centered in the 460px menu, so the- [val] +group sits at the same horizontal position in every spinner row. - Model Search text input box no longer overflows the menu border — the whole label+box group is centered.
- Centering math corrected: button-label centering was using
strlen * 4(only correct for 6-7 char strings like "PAUSED") which shifted longer strings like "Reset Level" and "Save Level" off-center. Changed tostrlen * 3(half of the 6px font width) so all plain buttons center correctly relative to the menu's vertical axis. Title "IGI EDITOR" and subtitle "PAUSED" use the same correct formula.
⌨️ New Keybindings
| Event | Binding | Action |
|---|---|---|
ToggleAutoSave |
<Ctrl><Shift><A> |
Toggle auto-save on/off |
AutoSaveIntervalUp |
<Ctrl><Shift><]> |
Increase auto-save interval by 10s |
AutoSaveIntervalDown |
<Ctrl><Shift><[> |
Decrease auto-save interval by 10s |
📦 Download
Extract igi1ed_v3.3.0-pre.zip into your IGI1 install path (or use the editor's editor/ tree). The release zip intentionally excludes igi_tests.exe and the fixtures/ test folder — it contains the editor binary, DLLs, version file, and the full editor/ tree. See README.md for setup.