From 5a4df194ec7359b85642c489f83835f0777b14e7 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Tue, 31 May 2005 23:14:08 +0000 Subject: [PATCH] Added some methods for controlling animations within a sprite. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3583 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../com/threerings/jme/sprite/Sprite.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/java/com/threerings/jme/sprite/Sprite.java b/src/java/com/threerings/jme/sprite/Sprite.java index e685f8f21..aab8a6ca1 100644 --- a/src/java/com/threerings/jme/sprite/Sprite.java +++ b/src/java/com/threerings/jme/sprite/Sprite.java @@ -22,6 +22,7 @@ package com.threerings.jme.sprite; import com.jme.scene.Node; +import com.jme.scene.Spatial; import com.samskivert.util.ObserverList; @@ -113,6 +114,54 @@ public class Sprite extends Node } } + /** + * Configures the speed of all controllers in our model hierarchy. + */ + public void setAnimationSpeed (float speed) + { + setAnimationSpeed(this, speed); + } + + /** + * Configures the speed of all controllers in our model hierarchy. + */ + public void setAnimationActive (boolean active) + { + setAnimationActive(this, active); + } + + /** + * Helper function for {@link #setAnimationSpeed(float)}. + */ + protected static void setAnimationSpeed (Spatial spatial, float speed) + { + for (int ii = 0; ii < spatial.getControllers().size(); ii++) { + spatial.getController(ii).setSpeed(speed); + } + if (spatial instanceof Node) { + Node node = (Node)spatial; + for (int ii = 0; ii < node.getQuantity(); ii++) { + setAnimationSpeed(node.getChild(ii), speed); + } + } + } + + /** + * Helper function for {@link #setAnimationActive(boolean)}. + */ + protected static void setAnimationActive (Spatial spatial, boolean active) + { + for (int ii = 0; ii < spatial.getControllers().size(); ii++) { + spatial.getController(ii).setActive(active); + } + if (spatial instanceof Node) { + Node node = (Node)spatial; + for (int ii = 0; ii < node.getQuantity(); ii++) { + setAnimationActive(node.getChild(ii), active); + } + } + } + /** Used to dispatch {@link PathObserver#pathCancelled}. */ protected static class CancelledOp implements ObserverList.ObserverOp {