소스 검색

Fix for handling multiple channels in AnimationEvent
new constructor (variant)
(First commit in github repo)

neph1 11 년 전
부모
커밋
ed6256ef47
1개의 변경된 파일23개의 추가작업 그리고 0개의 파일을 삭제
  1. 23 0
      jme3-core/src/main/java/com/jme3/cinematic/events/AnimationEvent.java

+ 23 - 0
jme3-core/src/main/java/com/jme3/cinematic/events/AnimationEvent.java

@@ -221,6 +221,24 @@ public class AnimationEvent extends AbstractCinematicEvent {
         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,6 +282,10 @@ public class AnimationEvent extends AbstractCinematicEvent {
             Object s = cinematic.getEventData(MODEL_CHANNELS, model);
             if (s == null) {
                 s = new HashMap<Integer, AnimChannel>();
+                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);
             }
 
@@ -319,6 +341,7 @@ public class AnimationEvent extends AbstractCinematicEvent {
             channel.setTime(t);
             channel.getControl().update(0);
         }
+
     }
 
     @Override