Merge pull request #4635 from Abextm/camera-pitch-fix
mixins: Fix camera pitch relaxer not fully relaxing after a screen shake
This commit is contained in:
@@ -49,6 +49,8 @@ public abstract class CameraMixin implements RSClient
|
|||||||
@Inject
|
@Inject
|
||||||
static int lastPitch = 128;
|
static int lastPitch = 128;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
static int lastPitchTarget = 128;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setCameraPitchRelaxerEnabled(boolean enabled)
|
public void setCameraPitchRelaxerEnabled(boolean enabled)
|
||||||
@@ -68,12 +70,33 @@ public abstract class CameraMixin implements RSClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@FieldHook("cameraPitchTarget")
|
@FieldHook("cameraPitchTarget")
|
||||||
@Inject
|
@Inject
|
||||||
|
static void onCameraPitchTargetChanged(int idx)
|
||||||
|
{
|
||||||
|
int newPitch = client.getCameraPitchTarget();
|
||||||
|
int pitch = newPitch;
|
||||||
|
if (pitchRelaxEnabled)
|
||||||
|
{
|
||||||
|
// This works because the vanilla camera movement code only moves %2
|
||||||
|
if (lastPitchTarget > STANDARD_PITCH_MAX && newPitch == STANDARD_PITCH_MAX)
|
||||||
|
{
|
||||||
|
pitch = lastPitchTarget;
|
||||||
|
if (pitch > NEW_PITCH_MAX)
|
||||||
|
{
|
||||||
|
pitch = NEW_PITCH_MAX;
|
||||||
|
}
|
||||||
|
client.setCameraPitchTarget(pitch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastPitchTarget = pitch;
|
||||||
|
}
|
||||||
|
|
||||||
|
@FieldHook("cameraPitch")
|
||||||
|
@Inject
|
||||||
static void onCameraPitchChanged(int idx)
|
static void onCameraPitchChanged(int idx)
|
||||||
{
|
{
|
||||||
int newPitch = client.getCameraPitchTarget();
|
int newPitch = client.getCameraPitch();
|
||||||
int pitch = newPitch;
|
int pitch = newPitch;
|
||||||
if (pitchRelaxEnabled)
|
if (pitchRelaxEnabled)
|
||||||
{
|
{
|
||||||
@@ -85,7 +108,7 @@ public abstract class CameraMixin implements RSClient
|
|||||||
{
|
{
|
||||||
pitch = NEW_PITCH_MAX;
|
pitch = NEW_PITCH_MAX;
|
||||||
}
|
}
|
||||||
client.setCameraPitchTarget(pitch);
|
client.setCameraPitch(pitch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lastPitch = pitch;
|
lastPitch = pitch;
|
||||||
|
|||||||
@@ -55,6 +55,9 @@ public interface RSClient extends RSGameEngine, Client
|
|||||||
@Override
|
@Override
|
||||||
int getCameraPitch();
|
int getCameraPitch();
|
||||||
|
|
||||||
|
@Import("cameraPitch")
|
||||||
|
void setCameraPitch(int cameraPitch);
|
||||||
|
|
||||||
@Import("cameraYaw")
|
@Import("cameraYaw")
|
||||||
@Override
|
@Override
|
||||||
int getCameraYaw();
|
int getCameraYaw();
|
||||||
|
|||||||
Reference in New Issue
Block a user