Remove Animator object

This commit is contained in:
2021-02-15 10:28:36 +01:00
parent 27ee72713a
commit f75d56ee01
6 changed files with 21 additions and 36 deletions

View File

@@ -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);
}
}
}

View File

@@ -1,5 +0,0 @@
package com.bartlomiejpluta.base.core.world.animation;
public interface Animator {
void animate(AnimationableObject objects);
}

View File

@@ -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);
}
}
}

View File

@@ -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<Layer> 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;
}

View File

@@ -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<MovableObject> objects;
private final PassageAbility[][] passageMap;
public ObjectLayer(Animator animator, List<MovableObject> objects, PassageAbility[][] passageMap) {
this.animator = animator;
public ObjectLayer(List<MovableObject> 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);
}
}