Crusader_Decomp/docs/map_renderer/editor-object-survey.md
2026-04-02 01:15:16 +02:00

4.7 KiB

Editor/Helper Object Survey

This pass widened the renderer research beyond egg and NPC spawner objects and focused on editor/helper shapes that already carry useful classification data in the exported scene payload.

Evidence Base

  • The renderer already exports shapeDefinitions[*] entries with kind, family, dimensions, visibilityTags, traits, and the matching catalog entry.
  • The public catalogs already distinguish many non-gameplay helper families that are currently easy to miss in the UI.
  • Representative catalog anchors in Remorse include:
    • 0x005A, 0x005B, 0x005C, 0x005D, 0x0066-0x0069: invisible/editor wall objects
    • 0x01B8: camera
    • 0x0290, 0x0336: LIGHT_BRIDGE_*
    • 0x0251, 0x0318, 0x0337, 0x0361: placeholder cubes and placeholder UI/editor markers
    • 0x0108, 0x0113, 0x01B9, 0x01BA, 0x025F, 0x0260, 0x02F0, 0x0373, 0x0399, 0x03A1, 0x04C8: wallgun_shape_* helper cluster

What This Means For The Renderer

  • A lot of the useful information is already present without more reverse-engineering. The main problem was presentation, not raw data availability.
  • Editor/helper objects often carry meaningful mapNum, npcNum, quality, or nextItem values even when they are not DTABLE-backed NPC spawners. Those raw linkage values are worth exposing because they help separate placeholder geometry from logic markers.
  • Catalog names already identify several broad classes that deserve different handling in the UI:
    • invisible walls/editor walls
    • camera/helper markers
    • light bridge / forcefield / editor-authored bridge surfaces
    • placeholder cubes and placeholder UI markers
    • auto-derived helper shapes tied to specific USECODE families like WALLGUN

Focused Caution: Suspicious Map Objects Are Not Always Helpers

  • The map-13 jump-start follow-up around the rare jump-through wall found one especially suspicious nearby placement: fixed:4767, shape 0x0135, frame 0, at world 47966,53598,97 in the decoded retail cache.
  • That object looks tempting as an editor/helper candidate when viewed only from map placement, but the decoded reference data says otherwise: 0x0135 is shape:309, a terrain item with dimensions 4 x 4 x 0 and traits solid, fixed, and land.
  • The useful classification came from USECODE rather than from the exported editor/helper buckets. In the extracted corpus, class 0x0135 is FFFLOOR, an environmental hazard/controller family with live gotHit, equip, and unequip bodies.
  • The nearby map-13 companion object is not an editor wall flag or a hidden collision override either. The closest local trigger on the same upper platform is the family-4 egg fixed:4770 (shape 17, egg id 37, subtype selector QLo 4), which currently resolves to CHANGER, not to a direct wall-solidity helper.
  • Practical renderer implication: when a placement looks suspicious in map context, do not assume it belongs in the editor/helper bucket just because it sits beside editor markers. 0x0135 is a good counterexample: it is a gameplay-side environmental floor tile that only becomes legible once the USECODE class is identified.

Implemented UI Enrichment

The tooltip now exposes generalized metadata for editor/helper objects instead of reserving extra detail almost entirely for NPC spawners:

  • Dimensions: shape dimensions from the exported shape definition
  • Tags: exported visibility tags such as editor, helper, egg, roof, and oob
  • Traits: exported rendering/collision traits such as occluding, translucent, solid, fixed, and nonzero animation type
  • Role hint: a cautious catalog-backed note for important helper families like invisible walls, cameras, light bridges, placeholders, WALLGUN helper shapes, 0x04D0 NPC spawners, and 0x024F monster eggs
  • Raw linkage: map, npc, quality, and next fields for editor/helper/egg objects so unresolved objects still expose their control data

Practical Next Targets

  • Add dedicated filters or list views for helper subfamilies such as invisible walls, camera markers, light bridges, and placeholder cubes.
  • Add shape-family frequency summaries so repeated helper markers can be audited across a map.
  • Decode more shape-specific field semantics for the still-unresolved editor objects, especially the remaining non-promoted invisible-wall, camera/helper, and music-controller families, and keep folding any new results back into the dedicated USECODE-link note.
  • Find the No Regret replacement for the Remorse 0x024F monster-egg workflow instead of assuming the same shape is reused.

0x04B1 now has a stable CMD_LINK -> TRIGGER.slot_20 viewer target, and 0x04E3 is already promoted as SKILLBOX::equip, so they no longer belong in the unresolved editor-object bucket here.