Skip to content

v3.4.1-pre — Live Graph Sync, Exact-ID Find & AI Script Notepad

Pre-release
Pre-release

Choose a tag to compare

@haseeb-heaven haseeb-heaven released this 21 Jun 04:19

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_ == kAIScriptTextField so other property text fields, the find bar, Ctrl+N, save bindings, and Ctrl+H keep working unchanged.
    • Ctrl+A Select all
    • Ctrl+C / Ctrl+X / Ctrl+V Copy / cut / paste via Windows clipboard
    • Ctrl+Z Undo (AI-script-local stack, capped at 100 entries)
    • Ctrl+Y / Ctrl+Shift+Z Redo
    • Shift+Left/Right/Up/Down/Home/End Extend selection
    • Ctrl+Home / Ctrl+End Start / end of buffer
    • Backspace / Delete / Enter / printable typing — replace the active selection
    • Mouse: click places caret and clears selection; Shift+Click extends from existing anchor; Click+Drag is 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+Y are O(1) and byte-perfect. Edits stay in the live buffer; only Ctrl+S / Ctrl+W (existing save bindings) commit to the .qvm on 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 bundled igi1conv.exe (v1.7.0, located at editor/tools/igi1conv/). The new source/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_nativesource/renderer/ (raw ParsedGeometry for GL upload)
    • fnt_parsersource/renderer/ (per-glyph UV/advance for HUD draw)
    • qsc_lexer, qsc_parsersource/level/ (AI script token/AST walk)
    • terrain_filessource/level/ (LMP/CTR runtime loaders)
    • qvm_parser, qvm_compiler, qvm_decompilersource/level/ (used by verify_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 in source/utils_igi1conv.h exposes 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 the file(GLOB SOURCES_PARSERS "source/parsers/*.*") line and the target_include_directories(... source/parsers ...) entry. The igi_tests target_sources list 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/ to source/renderer/ or source/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

  1. Extract igi1ed_v3.4.1-pre.7z to your IGI install folder.
  2. Make sure editor/tools/igi1conv/igi1conv.exe is present (bundled with the editor).
  3. Run igi1ed.exe --help for 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 suite
  • freeglut.dll, glew32.dll — OpenGL runtime
  • version — version string