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);
}