Art/anim: skinned Drowner enemy via EnemyRigTools (LANTERN)

EnemyRigTools.BuildDrowner (menu ProjectM/Animation) — SciFiSpace Crew_Male
body (same rig/atlas/avatar as the player) through the proven DR-023 path:
EnemyDrowner.prefab = ownerless interpolated ghost + AnimatedLitShader
(Skinned-Palette) gloam material + AC_EnemyTopDown + RigDefinitionAuthoring.
Structurally identical to the shipping werewolf/charger enemies -> animates
in-game via the same EG/Rukhanka path. (Renders only in the baked ECS world,
not a plain scene; ArtStaging keeps the static bake for art review.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-14 22:00:38 -07:00
parent 593897d978
commit cb224be81b
5 changed files with 5981 additions and 0 deletions
@@ -81,6 +81,24 @@ namespace ProjectM.EditorTools
Debug.Log("[EnemyRigTools] Charger built -> EnemyChargerMuscle.prefab; add it to WaveDirector.EnemyPrefabs[] in the gameplay subscene.");
}
/// <summary>LANTERN Drowner: SciFiSpace Crew_Male body (SAME rig/atlas/avatar as the player) via the standard
/// DR-023 path, gloam-pallor tint. Reuses the committed AC_EnemyTopDown controller. Template = grunt Enemy.prefab
/// (kind Grunt). RootY -1.13 (~ -0.9 player offset / 0.8 template scale) - tune feet in Play.</summary>
[MenuItem("ProjectM/Animation/Enemy Rigs - Build Drowner (LANTERN)")]
public static void BuildDrowner()
{
const string atlas = "Assets/Synty/PolygonSciFiSpace/Textures/PolygonSciFiSpace_Texture_01_A.png";
const string mat = "Assets/_Project/Materials/M_Enemy_Drowner_Animated.mat";
const string synty = "Assets/Synty/PolygonSciFiSpace/Prefabs/Characters/SM_Chr_Crew_Male_01.prefab";
MakeMat(mat, atlas, new Color(0.42f, 0.68f, 0.6f, 1f)); // drowned gloam pallor (cold sickly teal-green)
AssetDatabase.SaveAssets();
BuildOne(new Variant { Name = "Drowner (SciFiSpace Crew)", Template = "Assets/_Project/Prefabs/Enemy.prefab", Synty = synty, Output = "Assets/_Project/Prefabs/EnemyDrowner.prefab", Material = mat, RootY = -1.13f, Scale = 0f });
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Debug.Log("[EnemyRigTools] Drowner built -> EnemyDrowner.prefab; add to WaveDirector.EnemyPrefabs[] to spawn it.");
}
// ---- 1. Materials ------------------------------------------------------------------------------------
[MenuItem("ProjectM/Animation/Enemy Rigs - 1 Build Materials")]