summaryrefslogtreecommitdiff
path: root/examples/resources/lib/camera3d.lua
diff options
context:
space:
mode:
authorjussi2024-05-01 15:21:28 +0300
committerjussi2024-05-01 15:21:28 +0300
commit4452bccfa63cf86c134aa616ee0bebcc66beca03 (patch)
treea40befeb0393fd5599240ccb85a4500781d78c17 /examples/resources/lib/camera3d.lua
parentbdd660be01f3742befe15dff26929a77eeefe61d (diff)
downloadreilua-enhanced-4452bccfa63cf86c134aa616ee0bebcc66beca03.tar.gz
reilua-enhanced-4452bccfa63cf86c134aa616ee0bebcc66beca03.tar.bz2
reilua-enhanced-4452bccfa63cf86c134aa616ee0bebcc66beca03.zip
Bitwise operations for cross Lua compatibility.
Diffstat (limited to 'examples/resources/lib/camera3d.lua')
-rw-r--r--examples/resources/lib/camera3d.lua24
1 files changed, 18 insertions, 6 deletions
diff --git a/examples/resources/lib/camera3d.lua b/examples/resources/lib/camera3d.lua
index 2c84b31..8c15fa7 100644
--- a/examples/resources/lib/camera3d.lua
+++ b/examples/resources/lib/camera3d.lua
@@ -1,6 +1,5 @@
-Util = require( "utillib" )
-Vec2 = require( "vector2" )
-Vec3 = require( "vector3" )
+local Vec2 = require( "vector2" )
+local Vec3 = require( "vector3" )
Camera3D = {}
Camera3D.meta = {
@@ -17,6 +16,8 @@ Camera3D.KEYS = {
BACKWARD = RL.KEY_S,
RIGHT = RL.KEY_D,
LEFT = RL.KEY_A,
+ UP = RL.KEY_R,
+ DOWN = RL.KEY_F,
PAN = RL.KEY_LEFT_SHIFT,
FAST = RL.KEY_LEFT_SHIFT,
}
@@ -91,17 +92,19 @@ function Camera3D:getUpward()
end
function Camera3D:update( delta )
+ delta = 1 / 60 -- Hack for framerate independance.
+
if self.mode == self.MODES.FREE then
if RL.IsMouseButtonDown( RL.MOUSE_BUTTON_MIDDLE ) then
local mouseDelta = Vec2:newT( RL.GetMouseDelta() )
-
+
if RL.IsKeyDown( self.KEYS.PAN ) then
mouseDelta = mouseDelta:scale( self.MOUSE_MOVE_SPEED * delta )
local forward = RL.GetCamera3DForward( self.camera )[2]
RL.Camera3DMoveRight( self.camera, -mouseDelta.x, true )
- RL.Camera3DMoveUp( self.camera, mouseDelta.y * -( ( 1 - math.abs( forward ) ) * Util.sign( forward ) ) )
- RL.Camera3DMoveForward( self.camera, mouseDelta.y * math.abs( forward ), true )
+ RL.Camera3DMoveUp( self.camera, mouseDelta.y * ( 1 - math.abs( forward ) ) )
+ RL.Camera3DMoveForward( self.camera, mouseDelta.y * -forward, true )
else
mouseDelta = mouseDelta:scale( self.TURN_SPEED * delta )
@@ -125,6 +128,7 @@ function Camera3D:update( delta )
RL.SetMousePosition( Vec2:newT( RL.GetScreenSize() ):scale( 0.5 ) )
local distance = self.KEYBOARD_MOVE_SPEED * delta
+ local forward = RL.GetCamera3DForward( self.camera )[2]
if RL.IsKeyDown( self.KEYS.FAST ) then
distance = distance * self.KEYBOARD_MOVE_SPEED_MULTI
@@ -141,6 +145,14 @@ function Camera3D:update( delta )
elseif RL.IsKeyDown( self.KEYS.LEFT ) then
RL.Camera3DMoveRight( self.camera, -distance, true )
end
+
+ if RL.IsKeyDown( self.KEYS.UP ) then
+ RL.Camera3DMoveUp( self.camera, distance * ( 1 - math.abs( forward ) ) )
+ RL.Camera3DMoveForward( self.camera, distance * -forward, true )
+ elseif RL.IsKeyDown( self.KEYS.DOWN ) then
+ RL.Camera3DMoveUp( self.camera, -distance * ( 1 - math.abs( forward ) ) )
+ RL.Camera3DMoveForward( self.camera, -distance * -forward, true )
+ end
elseif self.mode == self.MODES.ORBITAL then
RL.Camera3DYaw( self.camera, self.ORBITAL_SPEED * delta, true )
end