@startuml "Core Engine Relations" top to bottom direction skinparam linetype ortho skinparam nodesep 100 title Core Engine Relations interface Engine.Core.IEntity extends Engine.Core.IInitializable {} interface Engine.Core.IUniverseObject extends Engine.Core.IEntity, Engine.Core.INameable {} interface Engine.Core.INameable {} Engine.Core.IUniverseObject --> Engine.Core.IBehaviourController: has Engine.Core.IBehaviourController "1" --> "0..*" Engine.Core.IBehaviour: has interface Engine.Core.IBehaviourController {} interface Engine.Core.IBehaviour {} interface Engine.Core.IBehaviour2D extends Engine.Core.IBehaviour {} interface Engine.Core.IBehaviour3D extends Engine.Core.IBehaviour {} interface Engine.Core.IUniverse {} Engine.Core.IUniverse "1" -r-> "0..*" Engine.Core.IUniverseObject: has ' together { ' interface Engine.Core.IAssignable {} ' interface Engine.Core.IHasStateEnable extends Engine.Core.IAssignable {} ' interface Engine.Core.IHasUniverse extends Engine.Core.IAssignable {} ' interface Engine.Core.IHasUniverseObject extends Engine.Core.IAssignable {} ' interface Engine.Core.IHasBehaviourController extends Engine.Core.IAssignable {} ' ' Engine.Core.IHasStateEnable --> Engine.Core.IStateEnable: has ' ' Engine.Core.IHasUniverse --> Engine.Core.IUniverse: has ' ' Engine.Core.IHasUniverseObject --> Engine.Core.IUniverseObject: has ' ' Engine.Core.IHasBehaviourController --> Engine.Core.IBehaviourController: has ' } together { interface Engine.Core.ITransform2D {} interface Engine.Core.ICamera2D {} interface Engine.Core.ICoroutineYield {} interface Engine.Core.IStateEnable {} interface Engine.Core.IInitializable {} interface Engine.Core.IBehaviourCollector {} } @enduml