Remove Animator object
This commit is contained in:
@@ -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.material.Material;
|
||||||
import com.bartlomiejpluta.base.core.gl.object.mesh.Mesh;
|
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 com.bartlomiejpluta.base.core.world.object.RenderableObject;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.joml.Vector2f;
|
import org.joml.Vector2f;
|
||||||
@@ -30,4 +32,20 @@ public abstract class AnimationableObject extends RenderableObject {
|
|||||||
var spriteSize = getMaterial().getSpriteSize();
|
var spriteSize = getMaterial().getSpriteSize();
|
||||||
setSpritePosition(spriteSize.x * framePosition.x, spriteSize.y * framePosition.y);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.bartlomiejpluta.base.core.world.animation;
|
|
||||||
|
|
||||||
public interface Animator {
|
|
||||||
void animate(AnimationableObject objects);
|
|
||||||
}
|
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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.image.Image;
|
||||||
import com.bartlomiejpluta.base.core.logic.Updatable;
|
import com.bartlomiejpluta.base.core.logic.Updatable;
|
||||||
import com.bartlomiejpluta.base.core.ui.Window;
|
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.camera.Camera;
|
||||||
import com.bartlomiejpluta.base.core.world.movement.MovableObject;
|
import com.bartlomiejpluta.base.core.world.movement.MovableObject;
|
||||||
import com.bartlomiejpluta.base.core.world.movement.Movement;
|
import com.bartlomiejpluta.base.core.world.movement.Movement;
|
||||||
@@ -20,8 +19,6 @@ import java.util.Arrays;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GameMap implements Renderable, Updatable {
|
public class GameMap implements Renderable, Updatable {
|
||||||
private final Animator animator;
|
|
||||||
|
|
||||||
private final Camera camera;
|
private final Camera camera;
|
||||||
private final TileSet tileSet;
|
private final TileSet tileSet;
|
||||||
private final List<Layer> layers = new ArrayList<>();
|
private final List<Layer> layers = new ArrayList<>();
|
||||||
@@ -37,8 +34,7 @@ public class GameMap implements Renderable, Updatable {
|
|||||||
@Getter
|
@Getter
|
||||||
private final Vector2f stepSize;
|
private final Vector2f stepSize;
|
||||||
|
|
||||||
public GameMap(Animator animator, Camera camera, TileSet tileSet, int rows, int columns, float scale) {
|
public GameMap(Camera camera, TileSet tileSet, int rows, int columns, float scale) {
|
||||||
this.animator = animator;
|
|
||||||
this.camera = camera;
|
this.camera = camera;
|
||||||
this.tileSet = tileSet;
|
this.tileSet = tileSet;
|
||||||
this.scale = scale;
|
this.scale = scale;
|
||||||
@@ -74,7 +70,7 @@ public class GameMap implements Renderable, Updatable {
|
|||||||
Arrays.fill(passageMap[i], 0, columns, PassageAbility.ALLOW);
|
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;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.constant.UniformName;
|
||||||
import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager;
|
import com.bartlomiejpluta.base.core.gl.shader.manager.ShaderManager;
|
||||||
import com.bartlomiejpluta.base.core.ui.Window;
|
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.Direction;
|
||||||
import com.bartlomiejpluta.base.core.world.movement.MovableObject;
|
import com.bartlomiejpluta.base.core.world.movement.MovableObject;
|
||||||
import org.joml.Vector2i;
|
import org.joml.Vector2i;
|
||||||
@@ -11,13 +10,11 @@ import org.joml.Vector2i;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ObjectLayer implements Layer {
|
public class ObjectLayer implements Layer {
|
||||||
private final Animator animator;
|
|
||||||
private final List<MovableObject> objects;
|
private final List<MovableObject> objects;
|
||||||
|
|
||||||
private final PassageAbility[][] passageMap;
|
private final PassageAbility[][] passageMap;
|
||||||
|
|
||||||
public ObjectLayer(Animator animator, List<MovableObject> objects, PassageAbility[][] passageMap) {
|
public ObjectLayer(List<MovableObject> objects, PassageAbility[][] passageMap) {
|
||||||
this.animator = animator;
|
|
||||||
this.objects = objects;
|
this.objects = objects;
|
||||||
this.passageMap = passageMap;
|
this.passageMap = passageMap;
|
||||||
}
|
}
|
||||||
@@ -59,7 +56,6 @@ public class ObjectLayer implements Layer {
|
|||||||
public void render(Window window, ShaderManager shaderManager) {
|
public void render(Window window, ShaderManager shaderManager) {
|
||||||
for (var object : objects) {
|
for (var object : objects) {
|
||||||
shaderManager.setUniform(UniformName.UNI_MODEL_MATRIX, object.getModelMatrix());
|
shaderManager.setUniform(UniformName.UNI_MODEL_MATRIX, object.getModelMatrix());
|
||||||
animator.animate(object);
|
|
||||||
object.render(window, shaderManager);
|
object.render(window, shaderManager);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import com.bartlomiejpluta.base.core.logic.GameLogic;
|
|||||||
import com.bartlomiejpluta.base.core.profiling.fps.FPSMonitor;
|
import com.bartlomiejpluta.base.core.profiling.fps.FPSMonitor;
|
||||||
import com.bartlomiejpluta.base.core.ui.Window;
|
import com.bartlomiejpluta.base.core.ui.Window;
|
||||||
import com.bartlomiejpluta.base.core.util.mesh.MeshManager;
|
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.map.GameMap;
|
||||||
import com.bartlomiejpluta.base.core.world.tileset.manager.TileSetManager;
|
import com.bartlomiejpluta.base.core.world.tileset.manager.TileSetManager;
|
||||||
import com.bartlomiejpluta.base.game.world.entity.manager.EntityManager;
|
import com.bartlomiejpluta.base.game.world.entity.manager.EntityManager;
|
||||||
@@ -27,7 +26,6 @@ public class DefaultGameLogic implements GameLogic {
|
|||||||
private final TextureManager textureManager;
|
private final TextureManager textureManager;
|
||||||
private final EntityManager entityManager;
|
private final EntityManager entityManager;
|
||||||
private final ImageManager imageManager;
|
private final ImageManager imageManager;
|
||||||
private final Animator animator;
|
|
||||||
private final FPSMonitor fpsMonitor;
|
private final FPSMonitor fpsMonitor;
|
||||||
|
|
||||||
private GameMap map;
|
private GameMap map;
|
||||||
|
|||||||
Reference in New Issue
Block a user