Hi.
I was trying to use AnimChannels together with AnimationEvent and noticed it wasn’t applying them.
It seems they’re never set.
Here’s a patch for it (if it’s just not me not using it correctly):
[java]
Index: AnimationEvent.java
— AnimationEvent.java (revision 11001)
+++ AnimationEvent.java (working copy)
@@ -221,6 +221,24 @@
initialDuration = model.getControl(AnimControl.class).getAnimationLength(animationName);
this.channelIndex = channelIndex;
}
+
-
/**
-
* creates an animation event
-
*
-
* @param model the model on which the animation will be played
-
* @param animationName the name of the animation to play
-
* @param channelIndex the index of the channel default is 0. Events on the
-
* @param blendTime the time during the animation are gonna be blended
-
* same channelIndex will use the same channel.
-
*/
-
public AnimationEvent(Spatial model, String animationName, LoopMode loopMode, int channelIndex, float blendTime) {
-
this.model = model;
-
this.animationName = animationName;
-
this.loopMode = loopMode;
-
initialDuration = model.getControl(AnimControl.class).getAnimationLength(animationName);
-
this.channelIndex = channelIndex;
-
this.blendTime = blendTime;
-
}
/**
- creates an animation event
@@ -264,11 +282,16 @@
Object s = cinematic.getEventData(MODEL_CHANNELS, model);
if (s == null) {
s = new HashMap<Integer, AnimChannel>();
- creates an animation event
-
int numChannels = model.getControl(AnimControl.class).getNumChannels();
-
for(int i = 0; i < numChannels; i++){
-
((HashMap<Integer, AnimChannel>)s).put(i, model.getControl(AnimControl.class).getChannel(i));
-
} cinematic.putEventData(MODEL_CHANNELS, model, s); } Map<Integer, AnimChannel> map = (Map<Integer, AnimChannel>) s; this.channel = map.get(channelIndex);
-
if (this.channel == null) { if (model == null) { //the model is null we try to find it according to the name
[/java]
This particular patch also includes an additional constructor i wanted.