/** * Defines the Component abstract class, which is the base for all components. */ module components.component; import core.properties, core.gameobject; import graphics.shaders; /** * Interface for components to implement. */ abstract class Component { this( GameObject owner ) { this.owner = owner; } /** * Function called on update. */ abstract void update(); /** * Function called on shutdown. */ abstract void shutdown(); /** * The GameObject that owns this component. */ mixin Property!( "GameObject", "owner", "public" ); }