Quellcode durchsuchen

Only animate when running

Tankernn vor 8 Jahren
Ursprung
Commit
474f03551b

+ 12 - 0
src/main/java/eu/tankernn/gameEngine/animation/animatedModel/AnimatedModel.java

@@ -1,5 +1,8 @@
 package eu.tankernn.gameEngine.animation.animatedModel;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.lwjgl.util.vector.Matrix4f;
 
 import eu.tankernn.gameEngine.animation.animation.Animation;
@@ -27,6 +30,7 @@ public class AnimatedModel extends TexturedModel {
 	private final int jointCount;
 
 	private final Animator animator;
+	private List<Animation> animations = new ArrayList<>();
 
 	/**
 	 * Creates a new entity capable of animation. The inverse bind transform for
@@ -87,6 +91,14 @@ public class AnimatedModel extends TexturedModel {
 	public void doAnimation(Animation animation) {
 		animator.doAnimation(animation);
 	}
+	
+	public void doAnimation(int animationId) {
+		doAnimation(animations.get(animationId));
+	}
+	
+	public void registerAnimation(Animation animation) {
+		animations.add(animation);
+	}
 
 	/**
 	 * Updates the animator for this entity, basically updating the animated

+ 2 - 0
src/main/java/eu/tankernn/gameEngine/animation/animation/Animator.java

@@ -55,6 +55,8 @@ public class Animator {
 	 *            - the new animation to carry out.
 	 */
 	public void doAnimation(Animation animation) {
+		if (this.currentAnimation != null && this.currentAnimation.equals(animation))
+			return;
 		this.animationTime = 0;
 		this.currentAnimation = animation;
 	}

+ 5 - 0
src/main/java/eu/tankernn/gameEngine/entities/Player.java

@@ -4,6 +4,7 @@ import org.lwjgl.input.Keyboard;
 import org.lwjgl.input.Mouse;
 import org.lwjgl.util.vector.Vector3f;
 
+import eu.tankernn.gameEngine.animation.animatedModel.AnimatedModel;
 import eu.tankernn.gameEngine.loader.models.AABB;
 import eu.tankernn.gameEngine.loader.models.TexturedModel;
 import eu.tankernn.gameEngine.renderEngine.DisplayManager;
@@ -66,11 +67,15 @@ public class Player extends Entity3D {
 	
 	protected void checkInputs() {
 		if (Keyboard.isKeyDown(Keyboard.KEY_W) || (Mouse.isButtonDown(0) && Mouse.isButtonDown(1))) {
+			if (this.getModel() instanceof AnimatedModel)
+				((AnimatedModel) getModel()).doAnimation(0);
 			this.currentSpeed = RUN_SPEED;
 		} else if (Keyboard.isKeyDown(Keyboard.KEY_S)) {
 			this.currentSpeed = -RUN_SPEED;
 		} else {
 			this.currentSpeed = 0;
+			if (this.getModel() instanceof AnimatedModel)
+				((AnimatedModel) getModel()).doAnimation(null);
 		}
 		
 		if (Keyboard.isKeyDown(Keyboard.KEY_A)) {