Skip to content

v3.3.0-pre

Pre-release
Pre-release

Choose a tag to compare

@haseeb-heaven haseeb-heaven released this 19 Jun 15:52

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 with Ctrl+Shift+A, adjust with Ctrl+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 via DispatchEventBindings using bindings loaded from editor\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 .qvm is 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_ with ai_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_view struct, 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 startupQEDAutoSaveEnabled and QEDAutoSaveInterval are now parsed on launch.
  • Terrain undo/redo didn't restore heightmap edits — added SnapshotHMP / RestoreHMP that byte-copies the HMP buffer.
  • Editor created a content folder in the install path — all asset cache stamps and terrain extract moved under editor\.

🐛 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 — both LoadAIScriptForSelected() and the renderer's selected_obj_is_ai flag now also check the object type (HumanSoldier, HumanSoldierFemale, HumanPlayer, HumanSoldierRPG, HumanAI) in addition to the ai_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 HumanAI taskId are logged; when HumanAI is found but its taskId is 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 * 4 centering 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=14 and compute label width dynamically from strlen(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 to strlen * 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.