v3.4.1-pre — Live Graph Sync, Exact-ID Find & AI Script Notepad
Pre-release
Pre-release
IGI Editor v3.4.1-pre
Pre-release build of the IGI Editor. All file conversion is now routed through the bundled igi1conv.exe (v1.7.0); see the igi1conv release notes for the matching converter release.
3.4.1-pre — Live Graph Sync, Exact-ID Find & AI Script Notepad
🐛 Bug Fixes
- Live graph-overlay sync (F7 view follows the AIGraph task live). Moving the AIGraph task via the TaskTree property panel, the 2D position pad / Z slider, or Undo / Redo updates the renderer's
graph_overlay_offset_immediately so the 3D nodes and edges stay anchored to the task. - Exact-match
TaskFindByTaskID. Task IDs are pixel-perfect — typing"7"now matches only the task with id"7", not"73","700", or any other id containing"7". Other find modes (TextInTask,ByNote,TaskNameTypeId) keep their substring behaviour. - AI Script editor Ctrl shortcuts work. GLUT sends the ASCII control-character code for
Ctrl+letter(1=SOH/A, 3=ETX/C, 0x18=CAN/X, 0x16=SYN/V, 0x19=EM/Y, 0x1A=SUB/Z), not the letter itself. The handler now matches on both forms. - AI Script selection highlight draws on the right line. OpenGL Y is bottom-up; the blue band now wraps its vertices in
gl_y()so it sits on the selected characters, not at the top of the screen.
✨ New Features
- AI Script editor — full notepad surface, scoped to the AI Script text only. Gated on
prop_text_edit_field_ == kAIScriptTextFieldso other property text fields, the find bar,Ctrl+N, save bindings, andCtrl+Hkeep working unchanged.Ctrl+ASelect allCtrl+C/Ctrl+X/Ctrl+VCopy / cut / paste via Windows clipboardCtrl+ZUndo (AI-script-local stack, capped at 100 entries)Ctrl+Y/Ctrl+Shift+ZRedoShift+Left/Right/Up/Down/Home/EndExtend selectionCtrl+Home/Ctrl+EndStart / end of bufferBackspace/Delete/Enter/ printable typing — replace the active selection- Mouse: click places caret and clears selection;
Shift+Clickextends from existing anchor;Click+Dragis live drag-selection with auto-scroll at the box edges; clicking elsewhere drops the selection.
- AI Script editor — local undo/redo. Each mutating op (insert, paste, cut, delete, replace) pushes a full-text snapshot so
Ctrl+Z/Ctrl+Yare O(1) and byte-perfect. Edits stay in the live buffer; onlyCtrl+S/Ctrl+W(existing save bindings) commit to the.qvmon disk.
⌨️ New Keybindings (AI Script editor only)
| Event | Binding | Action |
|---|---|---|
AiScriptSelectAll |
Ctrl+A |
Select all in the AI Script text |
AiScriptCopy |
Ctrl+C |
Copy selection (or whole buffer) to clipboard |
AiScriptCut |
Ctrl+X |
Cut selection (or whole buffer) to clipboard |
AiScriptPaste |
Ctrl+V |
Paste from clipboard at caret |
AiScriptUndo |
Ctrl+Z |
Undo last AI Script edit |
AiScriptRedo |
Ctrl+Y / Ctrl+Shift+Z |
Redo last undone edit |
AiScriptExtendSel |
Shift+Left/Right/Up/Down/Home/End |
Extend selection (no auto-commit) |
AiScriptDragSel |
Click+Drag in AI Script text | Live drag-selection with edge auto-scroll |
3.4.0-pre — igi1conv-Only Parsers Migration
🛠️ Refactor
- Removed
source/parsers/folder entirely. Every file-conversion call in the editor now goes through the bundledigi1conv.exe(v1.7.0, located ateditor/tools/igi1conv/). The newsource/utils_igi1conv.{h,cpp}shared runner is the single spawner used by every consumer. - Single source of truth for asset conversion.
dat export,mtp dump,qvm decompile,qsc compile,res list/extract/append,graph export,tex to-png/to-tga,mef export,fnt export,terrain export-lmp/export-ctr. - In-process loaders kept only where no CLI subcommand can supply the runtime data the editor needs every frame:
mef_native→source/renderer/(rawParsedGeometryfor GL upload)fnt_parser→source/renderer/(per-glyph UV/advance for HUD draw)qsc_lexer,qsc_parser→source/level/(AI script token/AST walk)terrain_files→source/level/(LMP/CTR runtime loaders)qvm_parser,qvm_compiler,qvm_decompiler→source/level/(used byverify_level_core,--run-tests, and the qvm roundtrip gtest)
- Writer classes relocated to consumer folders (read side replaced by
igi1conv; write side kept in C++):dat_writer,graph_writer,mtp_writer,tex_writer,res_writer,res_compiler. - Dead code removed:
mef_parser,mef_exporter,mtp_tool.
📦 New API
igi1conv::namespace insource/utils_igi1conv.hexposes high-level wrappers for every subcommand the editor needs:ResList,ResExtract,ResAppend,ResPack,DatExportJson,DatToMtp,MtpDumpJson,MtpInfo,GraphExportJson,GraphInfo,TexDecode,TexToPng,TexToTga,TexInfo,QvmDecompile,QvmInfo,QvmDisasm,QscCompile,QscValidate,FntExportPng,FntInfo,TerrainExportLmp,TerrainExportCtr,TerrainInfo,MefExportObj,MefInfo.
🔧 Build / Toolchain
CMakeLists.txt: dropped thefile(GLOB SOURCES_PARSERS "source/parsers/*.*")line and thetarget_include_directories(... source/parsers ...)entry. Theigi_teststarget_sourceslist updated to point at the new locations.assets/editor/tools/igi1conv/ships with v1.7.0.
📁 File-level change summary
- 14 parsers relocated from
source/parsers/tosource/renderer/orsource/level/ - 3 dead parsers deleted (
mef_parser,mef_exporter,mtp_tool)
Tests
- 275 tests across 28 suites. 273 pass on level 1; the same 2 pre-existing writer byte-roundtrip failures carry over from
feature/graph-editor(GraphParserTest.WriteUnchangedIsByteIdentical,MtpWriterTest.PreservesUntouchedChunksByteForByte) and are unrelated to either of these releases.
Quick start
- Extract
igi1ed_v3.4.1-pre.7zto your IGI install folder. - Make sure
editor/tools/igi1conv/igi1conv.exeis present (bundled with the editor). - Run
igi1ed.exe --helpfor CLI options or launch the GUI.
What's in the archive
igi1ed.exe— main editor (GUI + headless CLI)igi_tests.exe— standalone GoogleTest binary (no source tree needed at runtime)editor/— full editor resources (docs, fonts, shaders, igi1conv + Qt runtime)fixtures/— test fixtures for the gtest suitefreeglut.dll,glew32.dll— OpenGL runtimeversion— version string