Fix MovableSprite position and coordinates evaluation

This commit is contained in:
2021-03-20 21:16:42 +01:00
parent a99ab3afb0
commit 1a6e1bd08d
2 changed files with 23 additions and 3 deletions

View File

@@ -30,8 +30,8 @@ public abstract class BaseLayer implements Layer, Updatable {
@Override
public void pushAnimation(Animation animation) {
animations.add(animation);
animation.setStepSize(stepSize.x(), stepSize.y());
animations.add(animation);
}
@Override

View File

@@ -9,6 +9,7 @@ import com.bartlomiejpluta.base.engine.world.animation.model.AnimatedSprite;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import org.joml.Vector2f;
import org.joml.Vector2fc;
import org.joml.Vector2i;
import org.joml.Vector2ic;
@@ -86,7 +87,21 @@ public abstract class MovableSprite extends AnimatedSprite implements Updatable
public void setCoordinates(int x, int y) {
coordinates.x = x;
coordinates.y = y;
setPosition((x + 0.5f) * coordinateStepSize.x, (y + 0.5f) * coordinateStepSize.y);
super.setPosition((x + 0.5f) * coordinateStepSize.x, (y + 0.5f) * coordinateStepSize.y);
}
@Override
public void setPosition(float x, float y) {
super.setPosition(x, y);
coordinates.x = (int) (x / coordinateStepSize.x);
coordinates.y = (int) (y / coordinateStepSize.y);
}
@Override
public void setPosition(Vector2fc position) {
super.setPosition(position);
coordinates.x = (int) (position.x() / coordinateStepSize.x);
coordinates.y = (int) (position.y() / coordinateStepSize.y);
}
public void setCoordinates(Vector2ic coordinates) {
@@ -96,7 +111,12 @@ public abstract class MovableSprite extends AnimatedSprite implements Updatable
public void setStepSize(float x, float y) {
coordinateStepSize.x = x;
coordinateStepSize.y = y;
setCoordinates(coordinates);
if (!position.equals(0, 0)) {
setPosition(position);
} else {
setCoordinates(coordinates);
}
}
public int chebyshevDistance(Vector2ic coordinates) {