diff --git a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/AnimationableObject.java b/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/AnimationableObject.java index 02c7d466..2871b47b 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/AnimationableObject.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/AnimationableObject.java @@ -2,6 +2,8 @@ package com.bartlomiejpluta.base.core.world.animation; import com.bartlomiejpluta.base.core.gl.object.material.Material; import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh; +import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager; +import com.bartlomiejpluta.base.core.ui.Window; import com.bartlomiejpluta.base.core.world.object.RenderableObject; import lombok.EqualsAndHashCode; import org.joml.Vector2f; @@ -30,4 +32,20 @@ public abstract class AnimationableObject extends RenderableObject { var spriteSize = getMaterial().getSpriteSize(); setSpritePosition(spriteSize.x * framePosition.x, spriteSize.y * framePosition.y); } + + @Override + public void render(Window window, ShaderManager shaderManager) { + animate(); + super.render(window, shaderManager); + } + + private void animate() { + if (shouldAnimate()) { + var positions = getSpriteAnimationFramesPositions(); + var delay = getAnimationSpeed(); + var currentPosition = (int) (System.currentTimeMillis() % (positions.length * delay)) / delay; + var current = positions[currentPosition]; + setAnimationFrame(current); + } + } } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/Animator.java b/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/Animator.java deleted file mode 100644 index 8a258c6a..00000000 --- a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/Animator.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.bartlomiejpluta.base.core.world.animation; - -public interface Animator { - void animate(AnimationableObject objects); -} diff --git a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/DefaultAnimator.java b/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/DefaultAnimator.java deleted file mode 100644 index 87a49020..00000000 --- a/engine/src/main/java/com/bartlomiejpluta/base/core/world/animation/DefaultAnimator.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.bartlomiejpluta.base.core.world.animation; - -import org.springframework.stereotype.Component; - -@Component -public class DefaultAnimator implements Animator { - - @Override - public void animate(AnimationableObject object) { - if(object.shouldAnimate()) { - var positions = object.getSpriteAnimationFramesPositions(); - var delay = object.getAnimationSpeed(); - var currentPosition = (int) (System.currentTimeMillis() % (positions.length * delay)) / delay; - var current = positions[currentPosition]; - object.setAnimationFrame(current); - } - } -} diff --git a/engine/src/main/java/com/bartlomiejpluta/base/core/world/map/GameMap.java b/engine/src/main/java/com/bartlomiejpluta/base/core/world/map/GameMap.java index 606cdaa1..b8ece507 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/core/world/map/GameMap.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/core/world/map/GameMap.java @@ -6,7 +6,6 @@ import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager; import com.bartlomiejpluta.base.core.image.Image; import com.bartlomiejpluta.base.core.logic.Updatable; import com.bartlomiejpluta.base.core.ui.Window; -import com.bartlomiejpluta.base.core.world.animation.Animator; import com.bartlomiejpluta.base.core.world.camera.Camera; import com.bartlomiejpluta.base.core.world.movement.MovableObject; import com.bartlomiejpluta.base.core.world.movement.Movement; @@ -20,8 +19,6 @@ import java.util.Arrays; import java.util.List; public class GameMap implements Renderable, Updatable { - private final Animator animator; - private final Camera camera; private final TileSet tileSet; private final List layers = new ArrayList<>(); @@ -37,8 +34,7 @@ public class GameMap implements Renderable, Updatable { @Getter private final Vector2f stepSize; - public GameMap(Animator animator, Camera camera, TileSet tileSet, int rows, int columns, float scale) { - this.animator = animator; + public GameMap(Camera camera, TileSet tileSet, int rows, int columns, float scale) { this.camera = camera; this.tileSet = tileSet; this.scale = scale; @@ -74,7 +70,7 @@ public class GameMap implements Renderable, Updatable { Arrays.fill(passageMap[i], 0, columns, PassageAbility.ALLOW); } - layers.add(new ObjectLayer(animator, new ArrayList<>(), passageMap)); + layers.add(new ObjectLayer(new ArrayList<>(), passageMap)); return this; } diff --git a/engine/src/main/java/com/bartlomiejpluta/base/core/world/map/ObjectLayer.java b/engine/src/main/java/com/bartlomiejpluta/base/core/world/map/ObjectLayer.java index 698ce8e3..fe4c1332 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/core/world/map/ObjectLayer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/core/world/map/ObjectLayer.java @@ -3,7 +3,6 @@ package com.bartlomiejpluta.base.core.world.map; import com.bartlomiejpluta.base.core.gl.shader.constant.UniformName; import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager; import com.bartlomiejpluta.base.core.ui.Window; -import com.bartlomiejpluta.base.core.world.animation.Animator; import com.bartlomiejpluta.base.core.world.movement.Direction; import com.bartlomiejpluta.base.core.world.movement.MovableObject; import org.joml.Vector2i; @@ -11,13 +10,11 @@ import org.joml.Vector2i; import java.util.List; public class ObjectLayer implements Layer { - private final Animator animator; private final List objects; private final PassageAbility[][] passageMap; - public ObjectLayer(Animator animator, List objects, PassageAbility[][] passageMap) { - this.animator = animator; + public ObjectLayer(List objects, PassageAbility[][] passageMap) { this.objects = objects; this.passageMap = passageMap; } @@ -59,7 +56,6 @@ public class ObjectLayer implements Layer { public void render(Window window, ShaderManager shaderManager) { for (var object : objects) { shaderManager.setUniform(UniformName.UNI_MODEL_MATRIX, object.getModelMatrix()); - animator.animate(object); object.render(window, shaderManager); } } diff --git a/game/src/main/java/com/bartlomiejpluta/base/game/logic/DefaultGameLogic.java b/game/src/main/java/com/bartlomiejpluta/base/game/logic/DefaultGameLogic.java index cb503858..d5ddc0dc 100644 --- a/game/src/main/java/com/bartlomiejpluta/base/game/logic/DefaultGameLogic.java +++ b/game/src/main/java/com/bartlomiejpluta/base/game/logic/DefaultGameLogic.java @@ -8,7 +8,6 @@ import com.bartlomiejpluta.base.core.logic.GameLogic; import com.bartlomiejpluta.base.core.profiling.fps.FPSMonitor; import com.bartlomiejpluta.base.core.ui.Window; import com.bartlomiejpluta.base.core.util.mesh.MeshManager; -import com.bartlomiejpluta.base.core.world.animation.Animator; import com.bartlomiejpluta.base.core.world.map.GameMap; import com.bartlomiejpluta.base.core.world.tileset.manager.TileSetManager; import com.bartlomiejpluta.base.game.world.entity.manager.EntityManager; @@ -27,7 +26,6 @@ public class DefaultGameLogic implements GameLogic { private final TextureManager textureManager; private final EntityManager entityManager; private final ImageManager imageManager; - private final Animator animator; private final FPSMonitor fpsMonitor; private GameMap map;