Skip to content

ContentTool 1.2.0

Choose a tag to compare

@UberMorgott UberMorgott released this 06 Sep 19:00
· 187 commits to main since this release

ContentTool 1.2.0 adds an in-game bench to check replacement meshes and take a project from validation to packaging.

Work from the loaded game

  • Open the bench with ct_bench open from a loaded geoscape, or press Ctrl+Alt+B.
  • FIT keeps the weapon-fit tools; MODEL DOCTOR and LIFECYCLE are new.
  • The bench guide covers the three tabs.

Check a mesh before you bake

  • Model Doctor compares your replacement mesh against a shipped prototype slot.
  • Pick a prototype, a variant and a slot, then choose your GLB with Browse....
  • There are now 350 variants across 36 prototypes. Armour sets have separate variants, such as Human / PX_HeavyStarting.
  • Before 1.2.0, only one variant per manager was listed, which left most armour sets unreachable.
  • The header tells you whether the result is BY NAME - your weights will be used, nearest-bone, not rigged, or IMPORT REFUSED (N reason(s)).
  • Rows name the problem: missing or extra bones, a 1-triangle shard where the target has two materials, no armature, or a rigged file on a static target.
  • Foreign rigs, including Khronos sample models, never get a false BY NAME and never throw. They are refused or downgraded with the reason.
  • In the SHIP section, CREATE, BAKE & APPLY writes a ready mod folder beside ContentTool with ppcontent.json, meta.json and your GLB, then bakes it and applies it live.
  • The Model Doctor guide covers the checks and shipping step.

Run the project loop in one panel

  • The Lifecycle tab has Validate, Bake, Apply, Verify and Package rows.
  • Use Run all for the whole loop, per-row Run for one stage, or Cancel to stop.
  • The status line only shows what the stages said.
  • Validate now catches a texture outside Content\Textures\, a mesh outside Content\Meshes\, and two source files with the same stem offline, before bake time.
  • A .glb without an armature is reported as a note during validation.
  • Apply reports restart required when the game already holds an older copy of the bundle. Verify refuses until you restart.
  • Package writes to %LOCALAPPDATA%\ContentTool\Packages\<projectId>\<yyyyMMdd-HHmmss>-<runId>.
  • The panel uses the same producers as ct_project, ct_route7 apply, ct_route7 verify and ct_package. Those console commands are unchanged and still documented.
  • The Lifecycle tab guide covers each stage.

Follow a real armour replacement

  • The worked armour-set example takes a PX Heavy torso, both legs and albedo from a Blender export to the final green run.
  • It includes the mistakes the tool caught: no armature, a nearest-bone export, a texture in the wrong folder, a 1-triangle shard, and a texture row naming an asset that does not exist.

Keep the verdict visible and the bench usable

  • A suspicious submesh, such as a tiny shard beside a real part, is now a WARNING instead of a bake failure. The run still tells you about it.
  • Long ct_project verdicts no longer blank the in-game console. At most 60 lines are printed, and the last lines, including ALL PASS or N FAILURE(S), always survive.
  • The full verdict goes to <persistentDataPath>\ContentTool\Logs\console-<stamp>.txt; the console names the file.
  • Bench gizmos and handles are drawn at output resolution from OnGUI, removing ghost trails under temporal upscalers such as DLSS via Renderforge.
  • The Doctor header no longer clips mid-word. Expected import refusals produce one warning line instead of an error with a stack trace.
  • Cancel stays reachable while a stage waits for the panel to paint. Switching tabs no longer trips an IMGUI layout error.

Install

  • Unzip so that Mods\ContentTool\ContentTool.dll and Mods\ContentTool\meta.json exist under your Phoenix Point Mods folder.
  • Enable ContentTool in the in-game mod manager, then restart.
  • Mods that depend on ContentTool list com.morgott.ContentTool in their meta.json Dependencies.