Core/RelicRosterReviewStage.cs
namespace Prototype;
/// <summary>Isolated import review for the three independent enemy models.</summary>
public sealed class RelicRosterReviewStage : Component
{
protected override void OnStart()
{
PrototypeFactory.Box( "Review floor", new Vector3( 0, 0, -3 ), new Vector3( 500, 500, 6 ), new Color( .12f, .14f, .16f ), true );
var ids = new[] { "chaser", "gunner", "charger", "boss" };
for ( int i = 0; i < ids.Length; i++ )
{
var go = new GameObject( true, $"Relic {ids[i]}" );
go.WorldPosition = new Vector3( 0, (i - 1.5f) * 145, 0 );
go.Tags.Add( "enemy" );
go.Tags.Add( "enemy_model_proxy" );
go.Components.Create<EnemyBrain>().Configure( PrototypeCatalog.Enemy( (EnemyRole)i, 0 ) with { Speed = 0, Damage = 0 } );
var capsule = go.Components.Create<CapsuleCollider>();
capsule.Radius = 20; capsule.Start = Vector3.Up * 20; capsule.End = Vector3.Up * 55;
var renderer = go.Components.Create<SkinnedModelRenderer>();
var folder = i == 0 ? "chaser_stylized_v001" : $"{ids[i]}_relic_v001";
renderer.Model = Model.Load( $"models/review/{folder}/{ids[i]}.vmdl" );
renderer.UseAnimGraph = false;
renderer.Sequence.Name = "idle";
renderer.Sequence.Looping = true;
var hitboxes = go.Components.Create<ModelHitboxes>();
hitboxes.Renderer = renderer;
hitboxes.Target = go;
}
var fillObject = new GameObject( true, "Review fill" );
fillObject.WorldPosition = new Vector3( 120, -80, 155 );
var fill = fillObject.Components.Create<PointLight>();
fill.Radius = 550; fill.LightColor = new Color( 1.4f, 1.3f, 1.15f ); fill.Shadows = false;
}
}