From 32e8b68ea03c72fdd3a35b3c1c7a09fa6b35cf87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Kraneis?= Date: Sun, 7 Jun 2020 21:14:19 +0200 Subject: [PATCH] Adding getters/setters to AnimComposer (#1376) * Add getCurrentAction * Add removeCurrentAction (default layer) * Add setTime (default layer) * Add getTime (default layer) * Improve documentation --- .../main/java/com/jme3/anim/AnimComposer.java | 85 ++++++++++++++++++- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/jme3-core/src/main/java/com/jme3/anim/AnimComposer.java b/jme3-core/src/main/java/com/jme3/anim/AnimComposer.java index a8ccdf7d3..dc417d5f8 100644 --- a/jme3-core/src/main/java/com/jme3/anim/AnimComposer.java +++ b/jme3-core/src/main/java/com/jme3/anim/AnimComposer.java @@ -48,10 +48,16 @@ import java.io.IOException; import java.util.*; /** - * Created by Nehon on 20/12/2017. + * AnimComposer is a Spatial control that allows manipulation of + * {@link Armature armature} (skeletal) animation. + * + * @author Nehon */ public class AnimComposer extends AbstractControl { + /** + * The name of the default layer. + */ public static final String DEFAULT_LAYER = "Default"; private Map animClipMap = new HashMap<>(); @@ -63,6 +69,12 @@ public class AnimComposer extends AbstractControl { layers.put(DEFAULT_LAYER, new Layer(this)); } + /** + * Tells if an animation is contained in the list of animations. + * + * @param name The name of the animation. + * @return true, if the named animation is in the list of animations. + */ public boolean hasAnimClip(String name) { return animClipMap.containsKey(name); } @@ -102,6 +114,12 @@ public class AnimComposer extends AbstractControl { animClipMap.remove(anim.getName()); } + /** + * Run an action on the default layer. + * + * @param name The name of the action to run. + * @return The action corresponding to the given name. + */ public Action setCurrentAction(String name) { return setCurrentAction(name, DEFAULT_LAYER); } @@ -125,6 +143,37 @@ public class AnimComposer extends AbstractControl { return currentAction; } + /** + * Return the current action on the default layer. + * + * @return The action corresponding to the given name. + */ + public Action getCurrentAction() { + return getCurrentAction(DEFAULT_LAYER); + } + + /** + * Return current action on specified layer. + * + * @param layerName The layer on which action should run. + * @return The action corresponding to the given name. + */ + public Action getCurrentAction(String layerName) { + Layer l = layers.get(layerName); + if (l == null) { + throw new IllegalArgumentException("Unknown layer " + layerName); + } + + return l.currentAction; + } + + /** + * Remove current action on default layer. + */ + public void removeCurrentAction() { + removeCurrentAction(DEFAULT_LAYER); + } + /** * Remove current action on specified layer. * @@ -140,8 +189,19 @@ public class AnimComposer extends AbstractControl { l.currentAction = null; } + /** + * Returns current time of the default layer. + * + * @return The current time. + */ + public double getTime() { + return getTime(DEFAULT_LAYER); + } + /** * Returns current time of the specified layer. + * + * @param layerName The layer from which to get the time. */ public double getTime(String layerName) { Layer l = layers.get(layerName); @@ -150,9 +210,16 @@ public class AnimComposer extends AbstractControl { } return l.time; } + + /** + * Sets current time on the default layer. + */ + public void setTime(double time) { + setTime(DEFAULT_LAYER, time); + } /** - * Sets current time on the specified layer. + * Sets current time on the specified layer. */ public void setTime(String layerName, double time) { Layer l = layers.get(layerName); @@ -221,6 +288,12 @@ public class AnimComposer extends AbstractControl { return action; } + /** + * Tells if an action is contained in the list of actions. + * + * @param name The name of the action. + * @return true, if the named action is in the list of actions. + */ public boolean hasAction(String name) { return actions.containsKey(name); } @@ -250,12 +323,20 @@ public class AnimComposer extends AbstractControl { layers.remove(name); } + /** + * Creates an action that will interpolate over an entire sequence + * of tweens in order. + */ public BaseAction actionSequence(String name, Tween... tweens) { BaseAction action = new BaseAction(Tweens.sequence(tweens)); actions.put(name, action); return action; } + /** + * Creates an action that blends the named clips using the given blend + * space. + */ public BlendAction actionBlended(String name, BlendSpace blendSpace, String... clips) { BlendableAction[] acts = new BlendableAction[clips.length]; for (int i = 0; i < acts.length; i++) {