diff options
| author | jussi | 2024-05-01 15:21:28 +0300 |
|---|---|---|
| committer | jussi | 2024-05-01 15:21:28 +0300 |
| commit | 4452bccfa63cf86c134aa616ee0bebcc66beca03 (patch) | |
| tree | a40befeb0393fd5599240ccb85a4500781d78c17 /examples/resources/lib/camera3d.lua | |
| parent | bdd660be01f3742befe15dff26929a77eeefe61d (diff) | |
| download | reilua-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.lua | 24 |
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 |
