@startuml classes !theme toy class GameEngine { - scenes: Record + addScene(scene: Scene): void + setScene(id: string): void + removeScene(scene: string | Scene): void + start(): void + pause(): void + destroy(): void } class Scene { + id: string + setCamera(id: String): void + addComponents(components: ...Component2D): void + removeComponents(components: ...(Component2D | string)): void } GameEngine "1" -- "0-*" Scene : "contains" class Component { + id: string + position: Vector2D + renderer: Renderer + position: Vector2D + scale: Vector2D + collider: Collider + origin: Vector2D + childs: Array + debug: boolean + init(): void + update(): void } Scene "1" -- "0-*" Component : "contains" class Camera extends Component { } class Pointer extends Component {} class Asset {} class Sound {} class Tileset {} Component -- Component Tileset -- Asset class Vector2D { + x: number + y: number } class Collider {} Component "1" -- "0-1" Collider Component "1" -- "0-*" Vector2D @enduml