Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 25 additions & 13 deletions scripts/game/managers/CursorManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -125,27 +125,39 @@ public void UpdateCursor(Vector2 inputDelta, int cursorIndex = 0)

public void UpdateAutoplayCursor(Vector2 position)
{
if (!position.IsFinite())
return;

EmitSignalOnCursorUpdated(position);

var attempt = runner.Attempt;
attempt.RawCursorPosition = position;
attempt.CursorPosition = position.Clamp(-Constants.BOUNDS, Constants.BOUNDS);

var origin = new Vector3(0, 0, attempt.CameraMode.Name == "Spin" ? 4f : 3.75f);
float parallax = (float)settings.CameraParallax;
camera.Position = origin + new Vector3(attempt.CursorPosition.X, attempt.CursorPosition.Y, 0) * parallax;
position = position.Clamp(-Constants.BOUNDS, Constants.BOUNDS);

if (attempt.CameraMode.Name != "Spin")
if (attempt.CameraMode is CameraSpin)
{
camera.Rotation = Vector3.Zero;
}
Vector3 target = new(position.X, position.Y, 0);
Vector3 previousCursor = new(attempt.CursorPosition.X, attempt.CursorPosition.Y, 0);
var origin = new Vector3(0, 0, 3.5f) + previousCursor * (float)attempt.Settings.CameraParallax;

Vector3 cursorPos = new(attempt.CursorPosition.X, attempt.CursorPosition.Y, 0);
var targetRotation = Basis.LookingAt(target - origin, Vector3.Up);
var targetEuler = targetRotation.GetEuler();
float pitch = targetEuler.X - camera.Rotation.X;
float yaw = Mathf.AngleDifference(camera.Rotation.Y, targetEuler.Y);

if (cursorPos.IsFinite())
{
cursors[0].Position = cursorPos;
var mouseDelta = new Vector2(-yaw, -pitch) * (120f * Mathf.Pi);

attempt.CameraMode.Process(attempt, replayManager, camera, cursors[0], mouseDelta, 1f);
return;
}

attempt.RawCursorPosition = position;
attempt.CursorPosition = position;

Vector3 cursorPosition = new(position.X, position.Y, 0);
camera.Position = new Vector3(0, 0, 3.76f) + cursorPosition * (float)settings.CameraParallax;
camera.Rotation = Vector3.Zero;

cursors[0].Position = cursorPosition;
}

// Reset everything to zero so it doesn't have infinite sensitivity
Expand Down
2 changes: 1 addition & 1 deletion scripts/scenes/Game.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public override void _Ready()

PlayerInputController.OnMouseMove += (relative, absolute) =>
{
if (!Runner.Playing || Attempt.IsReplay)
if (!Runner.Playing || Attempt.IsReplay || Attempt.Modifiers.Exists(mod => mod is AutoplayModifier))
return;

if (Attempt.Settings.AbsoluteInput)
Expand Down
2 changes: 1 addition & 1 deletion scripts/shaders/combo_progress.gdshader
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ void fragment() {

float dist_to_line = distance(UV, middle + dotp * normalize(point_diff));
float line_alpha = smoothstep((thickness / 256.0) + fwidth(dist_to_line), (thickness / 256.0) - fwidth(dist_to_line), dist_to_line);

if (abs(dotp) <= distance(point_diff, vec2(0.0, 0.0)) / 2.0 + thickness) {
COLOR = mix(COLOR, vec4(background_colour.rgb, 1.0), line_alpha);
}
Expand Down
Loading