API & Examples

Core APIs

ServiceLocator

// Register
ServiceLocator.Register(new Time());
// Get
var time = ServiceLocator.Get

AssetManager

var tex = AssetManager.AcquireTexture("player.png");
var font = AssetManager.AcquireFont("DefaultFont");
var sfx = AssetManager.AcquireSound("jump.wav");

Note: Fonts typically require a built .xnb (use MGCB). If a font is missing at runtime, place the generated .xnb into DemoGame/Content/ or build the content pipeline assets.

Built-in Primitive Textures

// No external files required
  var cube = AssetManager.AcquireBuiltinTexture(BuiltinTextureShape.Cube, 64);
  var circle = AssetManager.AcquireBuiltinTexture(BuiltinTextureShape.Circle, 64);
  var triangle = AssetManager.AcquireBuiltinTexture(BuiltinTextureShape.Triangle, 64);

  // Release when done
  AssetManager.ReleaseBuiltinTexture(BuiltinTextureShape.Circle, 64);

Scene Example

public class GameScene : Scene {
  private Sprite? player;
  protected override void Start() {
    player = new Sprite(AssetManager.AcquireTexture("player.png"));
  }
  public override void Update() {
    var input = ServiceLocator.Get();
    var keyboard = input.GetDevice();
    if (keyboard?.GetKey(Keys.Right) == true) { /* move */ }
  }
  public override void Render(Renderer2D renderer) {
    player?.Draw(renderer, new Vector2(100,100));
  }
}

Environment

To start the Showcase directly, set environment variable RENBE_SHOWCASE=1 before running the demo:

RENBE_SHOWCASE=1 dotnet run --project DemoGame\DemoGame.csproj

Demo

See the DemoGame project for a working example of scenes, UI, asset loading, and input wiring.