v1.2.0: added camera offset functionality
This commit is contained in:
parent
2b99fe67fa
commit
44e145c9d4
|
@ -52,6 +52,7 @@ public class Camera extends Gizmo {
|
|||
public float[] matrix;
|
||||
|
||||
public PointF scroll;
|
||||
public PointF centerOffset;
|
||||
|
||||
private float shakeMagX = 10f;
|
||||
private float shakeMagY = 10f;
|
||||
|
@ -122,6 +123,7 @@ public class Camera extends Gizmo {
|
|||
screenHeight = (int)(height * zoom);
|
||||
|
||||
scroll = new PointF();
|
||||
centerOffset = new PointF();
|
||||
|
||||
matrix = new float[16];
|
||||
Matrix.setIdentity( matrix );
|
||||
|
@ -139,12 +141,15 @@ public class Camera extends Gizmo {
|
|||
}
|
||||
|
||||
public void zoom( float value, float fx, float fy ) {
|
||||
|
||||
|
||||
PointF offsetAdjust = centerOffset.clone();
|
||||
centerOffset.scale(zoom).invScale(value);
|
||||
|
||||
zoom = value;
|
||||
width = (int)(screenWidth / zoom);
|
||||
height = (int)(screenHeight / zoom);
|
||||
|
||||
snapTo( fx, fy );
|
||||
snapTo( fx - offsetAdjust.x, fy - offsetAdjust.y );
|
||||
}
|
||||
|
||||
public void resize( int width, int height ) {
|
||||
|
@ -165,7 +170,7 @@ public class Camera extends Gizmo {
|
|||
super.update();
|
||||
|
||||
if (followTarget != null){
|
||||
panTarget = followTarget.center();
|
||||
panTarget = followTarget.center().offset(centerOffset);
|
||||
}
|
||||
|
||||
if (panIntensity > 0f){
|
||||
|
@ -202,9 +207,17 @@ public class Camera extends Gizmo {
|
|||
scroll.offset(point);
|
||||
panIntensity = 0f;
|
||||
}
|
||||
|
||||
public void setCenterOffset( float x, float y ){
|
||||
scroll.x += x - centerOffset.x;
|
||||
scroll.y += y - centerOffset.y;
|
||||
centerOffset.set(x, y);
|
||||
panIntensity = 0f;
|
||||
followTarget = null;
|
||||
}
|
||||
|
||||
public void snapTo(float x, float y ) {
|
||||
scroll.set( x - width / 2, y - height / 2 );
|
||||
scroll.set( x - width / 2, y - height / 2 ).offset(centerOffset);
|
||||
panIntensity = 0f;
|
||||
followTarget = null;
|
||||
}
|
||||
|
@ -214,7 +227,7 @@ public class Camera extends Gizmo {
|
|||
}
|
||||
|
||||
public void panTo( PointF dst, float intensity ){
|
||||
panTarget = dst;
|
||||
panTarget = dst.offset(centerOffset);
|
||||
panIntensity = intensity;
|
||||
followTarget = null;
|
||||
}
|
||||
|
|
|
@ -764,6 +764,15 @@ public class GameScene extends PixelScene {
|
|||
|
||||
if (scene == null) return;
|
||||
|
||||
//move the camera center up a bit if we're on full UI and it is taking up lots of space
|
||||
if (scene.inventory != null && scene.inventory.visible
|
||||
&& (uiCamera.width < 460 && uiCamera.height < 300)){
|
||||
Camera.main.setCenterOffset(0, Math.min(300-uiCamera.height, 460-uiCamera.width) / Camera.main.zoom);
|
||||
} else {
|
||||
Camera.main.setCenterOffset(0, 0);
|
||||
}
|
||||
//Camera.main.panTo(Dungeon.hero.sprite.center(), 5f);
|
||||
|
||||
//primarily for phones displays with notches
|
||||
//TODO Android never draws into notch atm, perhaps allow it for center notches?
|
||||
RectF insets = DeviceCompat.getSafeInsets();
|
||||
|
|
Loading…
Reference in New Issue
Block a user