Hygiene B4c: clean dedup helpers (knockback, bakers, editor rig)

- KnockbackUtil.Stamp: shared knockback-stamp used by AbilityFireSystem + MeleeComboSystem (guard + planar normalize + write; speed passed in).
- BakerStructureExt: AddPlacedStructure/AddDamageable extensions on Baker<T>; rewired Turret/Structure/Harvester/Conveyor/Fabricator bakers (baked data + serialized fields unchanged).
- EnemyPrefabBakeExt.AddEnemyPrefabPool: shared prefab-buffer bake for ZoneEnemyDirector/WaveDirector authoring (fields stay flat — no serialization change).
- Editor AnimRigUtil (HasParam + root-yaw overlay clip) shared by PlayerRigTools/EnemyRigTools; EnemyRigTools.MakeMat now GUID-preserving (CopySerialized over existing) — the composite AnimatorController copy left as-is with a caveat comment.

466/466 EditMode tests pass, 0 warnings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-08 21:26:23 -07:00
parent e27a495530
commit 21a4c71413
19 changed files with 189 additions and 121 deletions
@@ -60,15 +60,7 @@ namespace ProjectM.Authoring
ClusterTightRadius = authoring.ClusterTightRadius,
});
var buffer = AddBuffer<WaveEnemyPrefab>(entity);
if (authoring.EnemyPrefabs != null)
{
foreach (var prefab in authoring.EnemyPrefabs)
{
if (prefab != null)
buffer.Add(new WaveEnemyPrefab { Prefab = GetEntity(prefab, TransformUsageFlags.Dynamic) });
}
}
this.AddEnemyPrefabPool<WaveDirectorAuthoring, WaveEnemyPrefab>(entity, authoring.EnemyPrefabs, e => new WaveEnemyPrefab { Prefab = e });
AddComponent(entity, new WaveState
{
@@ -58,15 +58,7 @@ namespace ProjectM.Authoring
ClusterTightRadius = authoring.ClusterTightRadius,
});
var buffer = AddBuffer<ZoneEnemyPrefab>(entity);
if (authoring.EnemyPrefabs != null)
{
foreach (var prefab in authoring.EnemyPrefabs)
{
if (prefab != null)
buffer.Add(new ZoneEnemyPrefab { Prefab = GetEntity(prefab, TransformUsageFlags.Dynamic) });
}
}
this.AddEnemyPrefabPool<ZoneEnemyDirectorAuthoring, ZoneEnemyPrefab>(entity, authoring.EnemyPrefabs, e => new ZoneEnemyPrefab { Prefab = e });
AddComponent(entity, new ZoneEnemyState
{