champions-of-luneraria/Assets/Luneraria/View/LuneUnitLibrary.cs
Martin Stickelbroeck 3871b3e2e6 U2C Simulation/View Binding
Fester Simulationstakt und Ansichten, die nur lesen; Nachweis, dass die Partie
bei jeder Bildrate dieselbe ist.

- LuneClock: Akkumulator, ganze Schritte zu 0,05 s, Alpha zum Interpolieren.
- LuneMatchRunner: Host-Ablauf einer Bot-Partie (Planung über die
  Befehlsschnittstelle, Kampf im festen Takt, Abrechnung, nächste Runde);
  LuneMatchDriver reicht in Update nur Bildzeit weiter.
- LuneTrace: Fingerabdruck der Partie (jeder Schritt, jede Abrechnung) und der
  reine Kernlauf zum Vergleich.
- Ansichten: LuneMatchView, LuneUnitView (interpolierte Position, Blickrichtung,
  Clips aus Kampfereignissen, Teamring, Lebensbalken), LuneBuildingView mit
  Einsturz und Ruine aus den autoritativen HP, Turmblitze, LuneCameraRig wie
  lune_camera.gd, vorläufige Debug-Anzeige (kein HUD; U3 portiert das G3-HUD).
- Einheitenbibliothek: Kohlenbeißer aus 131 Teilen zu einem Mesh, Animator-
  Controller mit den Blender-Clips, Ring- und Balkenmeshes, Markermaterialien.
- Tests: EditMode (30/60/120 fps, unbegrenzt, Ruckler, 8x Tempo; Seed 2 und
  Seed 9 ab Runde 21) und PlayMode in der Szene bei echten Bildraten 30, 60,
  120 und unbegrenzt: überall derselbe Fingerabdruck wie der Kern.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 17:31:18 +02:00

46 lines
1.5 KiB
C#

using Luneraria.Core;
using UnityEngine;
namespace Luneraria.View
{
/// <summary>
/// What a unit looks like in U2 (only the six representative assets are imported): the boss
/// is the Schlundkrone, heroes use the rigged Funkenlanze, every other unit the Kohlenbeißer
/// (g01, parts combined into one mesh). Team rings and bars tell the sides apart, as in Godot.
/// </summary>
public sealed class LuneUnitLibrary : ScriptableObject
{
public GameObject Rigid;
public GameObject Hero;
public RuntimeAnimatorController HeroController;
public GameObject Boss;
public RuntimeAnimatorController BossController;
public LuneMaterialSet Materials;
public LuneGround Ground;
public Mesh RingRound;
public Mesh RingDiamond;
public Mesh RingHexagon;
public Mesh Quad;
public Material[] TeamRing = new Material[3];
public Material HeroRing;
public Material BarBack;
public Material[] BarFill = new Material[3];
public Material[] Bolt = new Material[3];
public GameObject PrefabFor(LuneUnit unit, out RuntimeAnimatorController controller)
{
controller = null;
if (unit.Kind == "boss")
{
controller = BossController;
return Boss;
}
if (unit.Kind == "hero")
{
controller = HeroController;
return Hero;
}
return Rigid;
}
}
}