Refactor AnimatedSprite | make animation stop when engine is paused
This commit is contained in:
@@ -2,6 +2,7 @@ package com.bartlomiejpluta.base.engine.world.animation;
|
|||||||
|
|
||||||
import com.bartlomiejpluta.base.api.game.camera.Camera;
|
import com.bartlomiejpluta.base.api.game.camera.Camera;
|
||||||
import com.bartlomiejpluta.base.api.game.screen.Screen;
|
import com.bartlomiejpluta.base.api.game.screen.Screen;
|
||||||
|
import com.bartlomiejpluta.base.api.internal.logic.Updatable;
|
||||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||||
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
import com.bartlomiejpluta.base.engine.core.gl.object.material.Material;
|
||||||
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh;
|
import com.bartlomiejpluta.base.engine.core.gl.object.mesh.Mesh;
|
||||||
@@ -10,7 +11,8 @@ import lombok.EqualsAndHashCode;
|
|||||||
import org.joml.Vector2fc;
|
import org.joml.Vector2fc;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public abstract class AnimatedSprite extends Sprite {
|
public abstract class AnimatedSprite extends Sprite implements Updatable {
|
||||||
|
private int time;
|
||||||
|
|
||||||
public AnimatedSprite(Mesh mesh, Material material) {
|
public AnimatedSprite(Mesh mesh, Material material) {
|
||||||
super(mesh, material);
|
super(mesh, material);
|
||||||
@@ -23,6 +25,11 @@ public abstract class AnimatedSprite extends Sprite {
|
|||||||
|
|
||||||
public abstract Vector2fc[] getSpriteAnimationFramesPositions();
|
public abstract Vector2fc[] getSpriteAnimationFramesPositions();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(float dt) {
|
||||||
|
time += dt * 1000;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(Screen screen, Camera camera, ShaderManager shaderManager) {
|
public void render(Screen screen, Camera camera, ShaderManager shaderManager) {
|
||||||
animate();
|
animate();
|
||||||
@@ -33,7 +40,7 @@ public abstract class AnimatedSprite extends Sprite {
|
|||||||
if (shouldAnimate()) {
|
if (shouldAnimate()) {
|
||||||
var positions = getSpriteAnimationFramesPositions();
|
var positions = getSpriteAnimationFramesPositions();
|
||||||
var delay = getAnimationSpeed();
|
var delay = getAnimationSpeed();
|
||||||
var currentPosition = (int) (System.currentTimeMillis() % (positions.length * delay)) / delay;
|
var currentPosition = ((time % (positions.length * delay)) / delay);
|
||||||
var current = positions[currentPosition];
|
var current = positions[currentPosition];
|
||||||
material.setSpritePosition(current);
|
material.setSpritePosition(current);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ public abstract class MovableSprite extends AnimatedSprite implements Updatable
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(float dt) {
|
public void update(float dt) {
|
||||||
|
super.update(dt);
|
||||||
|
|
||||||
if (movement != null) {
|
if (movement != null) {
|
||||||
if (moveTime > 0) {
|
if (moveTime > 0) {
|
||||||
--moveTime;
|
--moveTime;
|
||||||
|
|||||||
Reference in New Issue
Block a user