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.