Add concealment meter and skinned collider baker; reorganize assets

- ConcealmentMeter: standalone component measuring the percentage of the
  character volume embedded inside environment geometry (bake -> voxelize via
  column ray-stabbing parity -> classify interior voxels against box/sphere/
  capsule/convex colliders and terrain). Always-on, throttled, gizmo debug.
- SkinnedColliderBaker: sole per-frame collider bake owner for skinned rigs.
  MeshPainter now delegates baking and only borrows BakedMesh for the GPU
  raster and cache refresh, so the collider stays fresh outside paint mode.
- Move pose assets to Assets/Poses, retire unused Insect scripts to
  Assets/Unused, restore Paintman.controller; mode scripts and scene updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 4.8 committed 2026-06-26 12:37:02 +02:00
1 parent def10541ab
commit dcfd668422
29 files changed
+2160 -1656

No files matched your search

+6 -6
View File
@@ -22,8 +22,8 @@ public class GameModeManager : MonoBehaviour
[Tooltip("Mesh painter. Empty = found automatically.")]
public MeshPainter painter;
[Tooltip("Insect / surface-walk controller. Empty = found automatically.")]
public InsectController insect;
//[Tooltip("Insect / surface-walk controller. Empty = found automatically.")]
//public InsectController insect;
[Header("Switching")]
[Tooltip("Key that cycles to the next mode.")]
@@ -39,7 +39,7 @@ public class GameModeManager : MonoBehaviour
public PlayerCharacterController Player => player;
public ThirdPersonOrbitInput CameraInput => cameraInput;
public MeshPainter Painter => painter;
public InsectController Insect => insect;
//public InsectController Insect => insect;
/// <summary>Raised after a mode switch finishes (the new mode's Enter has already run).
/// Argument = the now-active mode. Used by UI (e.g. the paint HUD) to follow the mode.</summary>
@@ -57,7 +57,7 @@ public class GameModeManager : MonoBehaviour
if (!player) player = FindFirstObjectByType<PlayerCharacterController>();
if (!cameraInput) cameraInput = FindFirstObjectByType<ThirdPersonOrbitInput>();
if (!painter) painter = FindFirstObjectByType<MeshPainter>();
if (!insect) insect = FindFirstObjectByType<InsectController>();
//if (!insect) insect = FindFirstObjectByType<InsectController>();
BuildModes();
}
@@ -82,8 +82,8 @@ public class GameModeManager : MonoBehaviour
// Insect mode only joins the Tab cycle when a surface walker is present, so a scene
// without one behaves exactly as before (no dead, player-freezing mode in the cycle).
if (insect)
_modes.Add(new InsectMode());
//if (insect)
// _modes.Add(new InsectMode());
foreach (var m in _modes)
m.Bind(this);