Renderable
Renderable-Objekte stellen die Schnittstelle dar über die Entity-Objekte ihre grafische Repräsentation manipulieren.
Grundlegende Überlegung
Der Aufbau aus SceneNodes usw. ist nur dem Renderable bekannt, die Entity kann davon nichts erfahren.
Animationenszustände sind intern komplexer aufgebaut als über das Interface ansprechbar. Nach außen verdeckt sind (optionale) Animationen die z.B. Übergänge zwischen verschiedenen Zuständen flüssig erscheinen lassen.
Interface-Entwurf
attachRenderable(vector3 position, renderable renderable), detachRenderable(renderable renderable)
setHealthState(string stateName) - Ändert Material- und Texturparameter wie in der Renderable-Definition spezifiziert.
setOwner(int playerNumber) - Ändert intern Parameter um die Spielerfarbe zu ändern.
setGateOpen(bool isOpen, float time) - Falls nicht schon im Zustand, öffne/schließe alle Tore/Luken in der spezifizierten Zeit.
rotateCannon(int cannonId, float vertAngle, float horzAngle) - Rotiert den der Kannonen-Id zugeordneten Bone bzw. die SceneNode.
hasHealthState(string stateName), hasCannon(int cannonId), hasAnim(string animName) - Abfragen um die Fähigkeiten des Renderables zu überprüfen..
setAnimIdle() - Spielt zufällig idle-Animationen.
setAnimShoot(time shotSpeed, time shootDelay) - Spielt zufällig abwechselnd Schuss-Animationen und Schusspausen-Animationen.
setAnimMove(float speed) - Spielt Bewegungsanimation ab und setzt evtl. Shader-Parameter.
setAnimCustom(string animName, time playSpeed) - Spielt die spezifizierte Animation einmal ab und wechselt dann in den vorherigen Zustand.
setCustomAnimLoop(string animName, time playSpeed) - Spielt die spezifizierte Animation in einer Schleife.