camera clamping
parent
4d2a630fce
commit
93b2788c58
|
|
@ -51,4 +51,10 @@ public class Vector2f implements Serializable {
|
|||
public String toString() {
|
||||
return "<" + x + ", " + y + ">";
|
||||
}
|
||||
|
||||
public Vector2f clamp(Box box) {
|
||||
float x = Math.min(Math.max(this.x, box.x), box.x2);
|
||||
float y = Math.min(Math.max(this.y, box.y), box.y2);
|
||||
return new Vector2f(x, y);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ public class Camera extends GameObject implements ITransient, IMouseCaptureArea
|
|||
|
||||
private float minY, maxY;
|
||||
|
||||
private Box focusBounds = null;
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
IWorldBoundsAdapter worldBoundsAdapter = get(IWorldBoundsAdapter.class);
|
||||
|
|
@ -39,6 +41,10 @@ public class Camera extends GameObject implements ITransient, IMouseCaptureArea
|
|||
maxY = bounds.w;
|
||||
}
|
||||
|
||||
public void setFocusBounds(Box box) {
|
||||
this.focusBounds = box;
|
||||
}
|
||||
|
||||
public Vector2f getWorldMouse() {
|
||||
return screen2world(App.mouseX, App.mouseY);
|
||||
}
|
||||
|
|
@ -67,6 +73,10 @@ public class Camera extends GameObject implements ITransient, IMouseCaptureArea
|
|||
Vector2f dragDifference = screen2world(App.mouseX, App.mouseY).subtract(focus);
|
||||
focus = dragOrigin.subtract(dragDifference);
|
||||
}
|
||||
|
||||
if(focusBounds != null) {
|
||||
focus = focus.clamp(focusBounds);
|
||||
}
|
||||
}
|
||||
|
||||
public void focus(float x, float y) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package xyz.valnet.hadean.gameobjects;
|
||||
|
||||
import xyz.valnet.engine.math.Box;
|
||||
import xyz.valnet.engine.math.FastNoiseLite;
|
||||
import xyz.valnet.engine.math.Vector2i;
|
||||
import xyz.valnet.engine.math.Vector4f;
|
||||
|
|
@ -42,6 +43,7 @@ public class Terrain extends GameObject implements IPathable, IWorldBoundsAdapte
|
|||
@Override
|
||||
protected void start() {
|
||||
camera.focus(WORLD_SIZE / 2, WORLD_SIZE / 2);
|
||||
camera.setFocusBounds(new Box(0, 0, WORLD_SIZE, WORLD_SIZE));
|
||||
}
|
||||
|
||||
public Tile getTile(int x, int y) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue