Skip to content

Releases: GuillermoOM/HODEditorJS

Version 1.2.11

Choose a tag to compare

@GuillermoOM GuillermoOM released this 25 Oct 22:42
  • Animation duration is now editable after creation: click the duration badge in the Animations tab (Enter/blur commits, Esc cancels, min 0.1s). Shortening past placed keyframes asks for confirmation and clamps them to the new duration; lengthening leaves keyframes untouched; invalid input is rejected

Version 1.2.10

Choose a tag to compare

@GuillermoOM GuillermoOM released this 25 Oct 22:21
  • DAE import now parses dock paths (DOCK/SEG nodes) instead of dropping them and leaking them into the joint hierarchy
  • Fixed in-game access violation on DAE-sourced files (game-tested): file version is now 512 as HODOR writes (was 1400), mesh/texture pool streams are always XPress-compressed, COLD collision chunk matches HODOR's exact layout, and navlight style comes from _Type (was _Flags, unknown styles crashed the engine at match start)
  • New validate_hod structural validator binary: re-walks raw HOD chunks without the loader's silent repairs and reports engine-unsafe constructs before in-game testing

Version 1.2.9

Choose a tag to compare

@GuillermoOM GuillermoOM released this 25 Oct 20:39
  • Correct per-shader texture slots from SHADERS.MAP ground truth: ship/matte/badge/bay keep 4 slots (REFL is a channel packed inside the glow texture, not a texture; SPEC on ship is likewise a glow channel), shipglow/badgeglow restored to 5 slots in real order (diffuse, spec, glow, team, normal) so texture-group changes no longer silently drop SPEC/TEAM/NORM on save, badge restored to 4 slots
  • Thruster off-state textures keep canonical HOD names ($diffuseOff/$glowOff); removed the invented $specular param name
  • Background shader families (bg_planet/planetmelt/moon/cosmic, fx, dust, nis) now expose their real slots; thruster DIFX/GLOX and bg CLD1/WARP/PROG/MASK suffixes recognized
  • Viewport preview keeps thruster ON-state textures visible and no longer misroutes SPEC maps
  • If a shipglow/badge material lost SPEC/TEAM/NORM bindings in a previously saved file, reload the original HOD and re-apply the texture group

v1.2.8 - HOD Shader Alias Resolution

Choose a tag to compare

@GuillermoOM GuillermoOM released this 22 Oct 19:48

HOD Shader Alias Resolution

  • Shader discovery now reads hod_alias.manifest and mod_alias.manifest, so HOD shader aliases such as matteScissor resolve to their backing programs.
  • Alias names now appear in the material shader selector, and aliases reuse the backing program's texture slots.
  • The Inspector keeps shader names already assigned to loaded materials selectable while preserving their original casing.
  • Matte fallback texture slots now include Diffuse, Glow, Team, and Normal maps.

Verification

  • npm run build passed.
  • cargo test --manifest-path src-tauri/Cargo.toml --lib passed (3/3).
  • HWRM probe resolved mattescissor with Diff, Glow, Team, Norm, Env0, Env1, and Shadow.
  • User confirmed testing/meg_bentus_ruined.hod works correctly in the editor.

No parser or serialization changes, so verify_lossless was not applicable.

v1.2.7 - Mesh MTL Import, Add Node & Engine Nozzle Fixes

Choose a tag to compare

@GuillermoOM GuillermoOM released this 20 Oct 21:19

Mesh OBJ imports now bring their materials with them, and hierarchy editing fixes cover auto-named node types and engine nozzles.

Mesh OBJ/MTL import

  • usemtl groups in imported OBJ files are preserved as separate mesh parts. Existing HOD materials are reused by name; otherwise a placeholder material is created.
  • Added Import MTL Materials to the mesh inspector. It matches newmtl names to HOD materials and resolves each map_Kd path by filename against textures already loaded in the HOD, ignoring folders, extensions, _DIFF, and compression suffixes.
  • MTL import never reads image files from disk. If no loaded texture matches, the existing material texture assignment is kept and the missing texture is listed in the import report.

Hierarchy fixes

  • Add Node is now enabled for auto-named node types (collision, engine_nozzle, and the repair/capture/salvage point templates), which hide the Node Name field.
  • Deleting an engine nozzle row now removes its backing joint and the attached burn, glow, shape, and nav-light data instead of leaving the model unchanged.

v1.2.6 - HOD 2.0 Large POOL Load Fix

Choose a tag to compare

@GuillermoOM GuillermoOM released this 17 Oct 04:27

Fixes a HOD 2.0 load failure for files with large compressed texture pools.

  • Fixed IFF boundary read error: failed to fill whole buffer when loading HOD 2.0 files whose POOL chunk exceeds 16 MB (e.g. bst_mothership.hod, ~32 MB POOL). Chunk size endianness is now resolved by testing whether the big-endian size fits the bytes remaining in the stream, falling back to little-endian only for the documented NRML BMSH variant, instead of a fixed 16 MB heuristic that could flip valid big-endian sizes.
  • Verified with cargo test --lib (32 tests), verify_lossless, and a 505-file HOD corpus sweep: zero chunk-read errors. bst_mothership.hod now loads with all 39 meshes, 193 joints, 53 textures, materials, navlights, markers, glows, dockpaths, and its collision mesh.

Manual test: testing/bst_mothership/bst_mothership.hod loads correctly in the editor (textures, meshes, collision, and nodes all verified).

v1.2.5 - HOD 1.0 Classic Parsing Fixes

Choose a tag to compare

@GuillermoOM GuillermoOM released this 06 Oct 19:11

What's Changed

Classic HW2 (HOD 1.0) Parsing Fixes

  • Generic STAT Shader Parameters: Materials in classic HW2 HODs now parse arbitrary param_type / value_size / value records with optional names. Texture slots are bound from every param_type == 5 record, and material parameters round-trip through save. This fixes crashes on files like bullet_splash.hod and dropped material maps on asteroid4.hod.
  • Texture Name Collision Fix: Layer selectors like fth_export.psd[1] now keep their [N] suffix (fth_export[1]DXT5) instead of colliding with the base name. Previously the DIFF and GLOW maps of a material could collapse into one texture slot, making models render blue with the glow map bound as the diffuse.

Developer Experience

  • Parser modularized: the monolithic hod.rs is now 16 focused modules (types, math, texture_codec, animation, model_methods, engine_nozzles, parse, serialize, ...) with the public API unchanged. Parser unit tests grew from 14 to 28.
  • Machine-local configuration: verify_lossless now resolves its fixture paths from an untracked local-environment file (docs/local-environment.md explains the convention), so a fresh clone works with cargo test out of the box.
  • Repository cleanup: one-off scratch scripts removed, testing fixtures documented instead of tracked, and docs updated for generic (non-machine-specific) development.

v1.2.4 - Docking Path Bugfix

Choose a tag to compare

@GuillermoOM GuillermoOM released this 13 Jul 23:59
da8dba8

What's Changed

  • Docking Path Creation Fix: Fixed failure when saving a HOD with a docking path (#1)

v1.2.3 - Viewport Gizmo Dragging and Bugfixes

Choose a tag to compare

@GuillermoOM GuillermoOM released this 04 Jun 06:33

What's Changed

  • Viewport Gizmo Dragging: Added the ability to seamlessly move and rotate joints directly in the 3D viewport using a visual gizmo.
  • Animations Gizmo Dragging: Dragging of keyframed joints in the viewport for improved animation editing experience.
  • New Weapon Assembly: Improved weapon assembly following the weapon structure standards for HWRM. Following this structure: Position -> [Direction, Latitude -> [Muzzle], Rest]
  • Texture Group inspector fixes: Fixed some small bugs on changing types, now will properly load all existing types from shaders in the directory path linked in config.
  • And other minor visual adjustments...

Current Issues

  • Saving HOD from Imported DAE: Importing a DAE and saving directly as HOD will make a broken HOD file that will crash the game. I recommend importing the DAE file and exporting the nodes as JSON, exporting OBJ and Materials then creating a new HOD with everything imported back (not DAE).

v1.2.2 - Dynamic Shader Parameters

Choose a tag to compare

@GuillermoOM GuillermoOM released this 04 Jun 00:10

Features and Fixes

  • Added dynamic parsing of shader parameters from HWRM pipelines (.prog / .fx files).
  • Now you can link the shader directory from HWRM and your mod for the editor to dynamically read all available shaders to use on materials, as well as all texture mapping types.
  • The Texture Group assignments dynamically inject expected textures (like _SCORCHED, _ENV0, _MASK) seamlessly.
  • Fixed the shader path directory selection.