Skip to main content

API Reference

This section documents the engine's public classes and functions, organized by subsystem. It's written from the engine source directly — where a class's intent isn't obvious from its name, the description below explains what it's for and how it's meant to be used.

As of v0.0.1, the engine's managers (GameObjectManager, MeshManager, TextureManager, ColbinManager, SoundManager, ModSoundManager, AnimationManager, BillboardManager, ParticleEmitterManager, FileLoader, ArchiveHelper, ControllerHelper, Collision, Raycast, SkeletonController, DebugMenu, and PerfMonitor) are non-static instance members owned by MadnightEngine, not static classes — call them off the global engine instance, e.g. g_madnightEngine.m_gameObjectManager.CreateGameObject(...) rather than GameObjectManager::CreateGameObject(...). See Updating the Engine → v0.0.1 for the full list of member names.

A couple of things remain classic singletons reached via Instance()/instance() — Renderer and Lighting — and a handful of types (GameObject, Camera, Billboard, ParticleEmitter, Menu, HUD elements) are regular value/instance types you create and own yourself, usually via a manager's Create* call. Several of those (GameObject, Billboard, Particle, ParticleEmitter) now have private constructors with their owning manager as a friend, so they can only be constructed through that manager's Create* call, not directly in game code.

  • Core — GameObject, GameObjectManager, billboards, particles, debug tooling
  • Render — Camera, Renderer, Lighting, colour helpers, clipping
  • Mesh & Animation — MeshManager, skeletons, AnimationManager, Quaternion
  • Physics & Collision — Collision, Raycast, ColbinManager, collision types
  • Controller — pad input helpers
  • Math — GTE-accelerated matrix/vector helpers, lerp, trig, RNG
  • Sound — SoundManager (VAG/SPU), ModSoundManager (MOD tracker music)
  • Textures — TextureManager
  • UI — GameplayHUD, HUD elements, Menu
  • Helpers — CD-ROM/archive loading, load queues, world-space unit literals

:::note Source of truth This reference was generated by reading the header files directly, since public API Doxygen coverage is still sparse in places. Where a comment in the source clarifies behaviour, it's quoted; where it doesn't, the description is inferred from the method's signature and usage elsewhere in the engine. If something here looks off, the header is the final word — and a PR filling in the Doxygen comment would make this page (and future regenerations of it) more accurate. :::