namespace Celeste64; /// /// Draws any Models provided here, if the Actor's World Bounds is visible in the Camera /// public interface IHaveModels { public void CollectModels(List<(Actor Actor, Model Model)> populate); } /// /// Draws any Sprites provided here, if the Actor's World Bounds is visible in the Camera /// public interface IHaveSprites { public void CollectSprites(List populate); } /// /// Draws UI above the gameplay (regardless of where the Actor is) /// public interface IHaveUI { public void RenderUI(Batcher batch, Rect bounds); } /// /// Solid Platforms will search for any Actor implementing these, and move them with it /// public interface IRidePlatforms { public void RidingPlatformSetVelocity(in Vec3 value); public void RidingPlatformMoved(in Vec3 delta); public bool RidingPlatformCheck(Actor platform); } /// /// Player searches for these and calls Pickup when they're near it /// public interface IPickup { public float PickupRadius { get; } public void Pickup(Player player); } /// /// Player pushes out of these. Creates a Cylindar-shape from relative 0,0,0 /// public interface IHavePushout { public float PushoutHeight { get; set; } public float PushoutRadius { get; set; } } /// /// Actor is notified of Audio Timeline Events /// public interface IListenToAudioCallback { public void AudioCallbackEvent(int beatIndex); } /// /// Actor is recycled instead of destroyed. Call World.Request to get a new one. /// public interface IRecycle { } /// /// Strawberries search for any of these within their Target GroupName, and /// waits until they're all satisfied or destroyed. /// public interface IUnlockStrawberry { public bool Satisfied { get; } } /// /// Actors with this interface will cast a small point shadow downwards /// public interface ICastPointShadow { public float PointShadowAlpha { get; set; } } /// /// Player searches for these and calls HandleDash if it collides at high velocity /// public interface IDashTrigger { public bool BouncesPlayer { get; } public void HandleDash(Vec3 velocity); }