diff --git a/redhorizon-shooter/source/nz/net/ultraq/redhorizon/shooter/Shooter.groovy b/redhorizon-shooter/source/nz/net/ultraq/redhorizon/shooter/Shooter.groovy index 3a2e33ee..124841f3 100644 --- a/redhorizon-shooter/source/nz/net/ultraq/redhorizon/shooter/Shooter.groovy +++ b/redhorizon-shooter/source/nz/net/ultraq/redhorizon/shooter/Shooter.groovy @@ -93,7 +93,7 @@ class Shooter { camera.follow(player) - var mapFile = resourceManager.loadFile('scg01ea.ini', IniFile) + var mapFile = resourceManager.loadFile('scm01ea.ini', IniFile) var map = new Map(mapFile as MapFile, resourceManager) scene << map } diff --git a/redhorizon-shooter/source/nz/net/ultraq/redhorizon/shooter/objects/Player.groovy b/redhorizon-shooter/source/nz/net/ultraq/redhorizon/shooter/objects/Player.groovy index f65fc4ac..f54d53db 100644 --- a/redhorizon-shooter/source/nz/net/ultraq/redhorizon/shooter/objects/Player.groovy +++ b/redhorizon-shooter/source/nz/net/ultraq/redhorizon/shooter/objects/Player.groovy @@ -66,6 +66,7 @@ class Player extends Node implements Rotatable, Temporal { private Vector2f velocity = new Vector2f() private Vector2f direction = new Vector2f() private Vector2f movement = new Vector2f() + private float movementHeading private Vector2f lookAt = new Vector2f() private Vector2f lastLookAt = new Vector2f() private Vector2f relativeLookAt = new Vector2f() @@ -158,6 +159,7 @@ class Player extends Node implements Rotatable, Temporal { Math.clamp(movement.x, MOVEMENT_RANGE.minX, MOVEMENT_RANGE.maxX), Math.clamp(movement.y, MOVEMENT_RANGE.minY, MOVEMENT_RANGE.maxY) ) + movementHeading = Math.toDegrees(velocity.angle(up)) as float } else { stop.execute() @@ -180,6 +182,9 @@ class Player extends Node implements Rotatable, Temporal { else if (direction.length()) { heading = Math.toDegrees(direction.angle(up)) as float } + else { + heading = movementHeading + } // Gamepad firing if (firing) { @@ -267,11 +272,17 @@ class Player extends Node implements Rotatable, Temporal { if (value < -MOVEMENT_THRESHOLD || value > MOVEMENT_THRESHOLD) { direction.x = value } + else { + direction.x = 0 + } }), new GamepadControl(GLFW_GAMEPAD_AXIS_RIGHT_Y, 'Heading along the Y axis', { value -> if (value < -MOVEMENT_THRESHOLD || value > MOVEMENT_THRESHOLD) { direction.y = -value } + else { + direction.y = 0 + } }), new GamepadControl(GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER, 'Fire', { value -> firing = value > -1f