mirror of https://github.com/ClassiCube/ClassiCube
see if this fixes mouse issues with varying frame time
This commit is contained in:
parent
0d7ae92c7c
commit
ab09c64919
|
|
@ -311,7 +311,7 @@ namespace ClassicalSharp {
|
||||||
accumulator += delta;
|
accumulator += delta;
|
||||||
Vertices = 0;
|
Vertices = 0;
|
||||||
|
|
||||||
Camera.UpdateMouse();
|
Camera.UpdateMouse(delta);
|
||||||
if (!window.Focused && !Gui.ActiveScreen.HandlesAllInput) {
|
if (!window.Focused && !Gui.ActiveScreen.HandlesAllInput) {
|
||||||
Gui.SetNewScreen(new PauseScreen(this));
|
Gui.SetNewScreen(new PauseScreen(this));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ namespace ClassicalSharp {
|
||||||
public abstract bool IsThirdPerson { get; }
|
public abstract bool IsThirdPerson { get; }
|
||||||
public virtual bool Zoom(float amount) { return false; }
|
public virtual bool Zoom(float amount) { return false; }
|
||||||
|
|
||||||
public abstract void UpdateMouse();
|
public abstract void UpdateMouse(double deltaTime);
|
||||||
public abstract void RegrabMouse();
|
public abstract void RegrabMouse();
|
||||||
|
|
||||||
public abstract void ResetRotOffset();
|
public abstract void ResetRotOffset();
|
||||||
|
|
@ -88,17 +88,16 @@ namespace ClassicalSharp {
|
||||||
const float adjust = 0.025f;
|
const float adjust = 0.025f;
|
||||||
|
|
||||||
static float speedX = 0, speedY = 0;
|
static float speedX = 0, speedY = 0;
|
||||||
protected Vector2 CalcMouseDelta() {
|
protected Vector2 CalcMouseDelta(double scale) {
|
||||||
float sensitivity = sensiFactor * game.MouseSensitivity;
|
float sensitivity = sensiFactor * game.MouseSensitivity;
|
||||||
|
|
||||||
if (game.SmoothCamera) {
|
if (game.SmoothCamera) {
|
||||||
speedX += delta.X * adjust;
|
speedX += delta.X * adjust;
|
||||||
speedX *= slippery;
|
speedX *= slippery;
|
||||||
speedY += delta.Y * adjust;
|
speedY += delta.Y * adjust;
|
||||||
speedY *= slippery;
|
speedY *= slippery;
|
||||||
} else {
|
} else {
|
||||||
speedX = delta.X;
|
speedX = delta.X * (float)(scale * 0.5f);
|
||||||
speedY = delta.Y;
|
speedY = delta.Y * (float)(scale * 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
float dx = speedX * sensitivity, dy = speedY * sensitivity;
|
float dx = speedX * sensitivity, dy = speedY * sensitivity;
|
||||||
|
|
@ -106,8 +105,8 @@ namespace ClassicalSharp {
|
||||||
return new Vector2(dx, dy);
|
return new Vector2(dx, dy);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateMouseRotation() {
|
void UpdateMouseRotation(double scale) {
|
||||||
Vector2 rot = CalcMouseDelta();
|
Vector2 rot = CalcMouseDelta(scale);
|
||||||
if (game.Input.AltDown && IsThirdPerson) {
|
if (game.Input.AltDown && IsThirdPerson) {
|
||||||
rotOffset.X += rot.X; rotOffset.Y += rot.Y;
|
rotOffset.X += rot.X; rotOffset.Y += rot.Y;
|
||||||
return;
|
return;
|
||||||
|
|
@ -124,7 +123,11 @@ namespace ClassicalSharp {
|
||||||
game.LocalPlayer.SetLocation(update, false);
|
game.LocalPlayer.SetLocation(update, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void UpdateMouse() {
|
double camAccumulator;
|
||||||
|
public override void UpdateMouse(double deltaTime) {
|
||||||
|
camAccumulator += deltaTime;
|
||||||
|
if (camAccumulator < 1.0/120.0) return;
|
||||||
|
|
||||||
if (game.Gui.ActiveScreen.HandlesAllInput) {
|
if (game.Gui.ActiveScreen.HandlesAllInput) {
|
||||||
delta = Point.Empty;
|
delta = Point.Empty;
|
||||||
} else if (game.window.Focused) {
|
} else if (game.window.Focused) {
|
||||||
|
|
@ -132,7 +135,9 @@ namespace ClassicalSharp {
|
||||||
delta = new Point(pos.X - previous.X, pos.Y - previous.Y);
|
delta = new Point(pos.X - previous.X, pos.Y - previous.Y);
|
||||||
CentreMousePosition();
|
CentreMousePosition();
|
||||||
}
|
}
|
||||||
UpdateMouseRotation();
|
|
||||||
|
UpdateMouseRotation(120.0 * camAccumulator);
|
||||||
|
camAccumulator = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void CalcViewBobbing(float t, float velTiltScale) {
|
protected void CalcViewBobbing(float t, float velTiltScale) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue