From 925afdf101d6993e35d6c32c52766c7c3f89ae5e Mon Sep 17 00:00:00 2001 From: jussi Date: Thu, 23 Nov 2023 18:36:05 +0200 Subject: Fixed snake example after Vector2Angle change. --- changelog | 1 + devnotes | 2 ++ examples/resources/lib/rectangle.lua | 7 +++++++ examples/resources/lib/vector2.lua | 4 ++-- examples/resources/lib/vector3.lua | 14 ++++++++++++++ examples/snake/main.lua | 7 +++---- 6 files changed, 29 insertions(+), 6 deletions(-) diff --git a/changelog b/changelog index cef5430..6ae6562 100644 --- a/changelog +++ b/changelog @@ -22,6 +22,7 @@ DETAILED CHANGES: - ADDED: SetTextLineSpacing. - ADDED: LoadSoundAlias and UnloadSoundAlias. - ADDED: GetApplicationDirectory. + - FIXED: Snake example after Vector2Angle change. ------------------------------------------------------------------------ Release: ReiLua version 0.6.0 Using Raylib 4.5 diff --git a/devnotes b/devnotes index 3592cc0..9a4a228 100644 --- a/devnotes +++ b/devnotes @@ -2,6 +2,8 @@ Current { } Backlog { + * Review events. Seems to be a lot of work for very little benefit if any. + Might just increase traffic between Lua and C needlessly. * Platform specific API documentation. * Platform desktop SDL. * Thread safe Lua RL.event calling. diff --git a/examples/resources/lib/rectangle.lua b/examples/resources/lib/rectangle.lua index 93f2bb3..dfdbef0 100644 --- a/examples/resources/lib/rectangle.lua +++ b/examples/resources/lib/rectangle.lua @@ -110,6 +110,7 @@ function Rectangle:area() return self.width * self.height end +--- Returns rectangle that fits both rectangles inside it function Rectangle:fit( rec ) local pos = Vector2:new( math.min( self.x, rec.x ), math.min( self.y, rec.y ) ) @@ -121,6 +122,12 @@ function Rectangle:fit( rec ) ) end +--- If rectangle is fully inside another rectangle +function Rectangle:isInside( rect ) + return rect.x <= self.x and self.x + self.width <= rect.x + rect.width + and rect.y <= self.y and self.y + self.height <= rect.y + rect.height +end + function Rectangle:checkCollisionRec( rec ) return RL.CheckCollisionRecs( self, rec ) end diff --git a/examples/resources/lib/vector2.lua b/examples/resources/lib/vector2.lua index e3df887..afb5fda 100644 --- a/examples/resources/lib/vector2.lua +++ b/examples/resources/lib/vector2.lua @@ -130,8 +130,8 @@ function Vector2:lineAngle( v2 ) return RL.Vector2LineAngle( self, v2 ) end -function Vector2:atan() - return math.atan( self.x, self.y ) +function Vector2:atan2() + return math.atan( self.y, self.x ) end function Vector2:scale( scale ) diff --git a/examples/resources/lib/vector3.lua b/examples/resources/lib/vector3.lua index 7059690..1b5cdd3 100644 --- a/examples/resources/lib/vector3.lua +++ b/examples/resources/lib/vector3.lua @@ -3,6 +3,8 @@ if table.unpack == nil then table.unpack = unpack end +local Vector2 = require( "vector2" ) + Vector3 = {} Vector3.meta = { __index = Vector3, @@ -78,6 +80,18 @@ function Vector3:clone() return Vector3:new( self.x, self.y, self.z ) end +function Vector3:getVectorXY() + return Vector2:new( self.x, self.y ) +end + +function Vector3:getVectorXZ() + return Vector2:new( self.x, self.z ) +end + +function Vector3:getVectorZY() + return Vector2:new( self.z, self.y ) +end + function Vector3:abs() return Vector3:new( math.abs( self.x ), math.abs( self.y ), math.abs( self.z ) ) end diff --git a/examples/snake/main.lua b/examples/snake/main.lua index 047cddf..a4086c1 100644 --- a/examples/snake/main.lua +++ b/examples/snake/main.lua @@ -175,14 +175,14 @@ end local function drawSnake() for i, seg in ipairs( snake.segments ) do - local angle = -seg.heading:atan() + RL.PI / 2 + local angle = seg.heading:atan2() local source = Rect:new( 16, 0, 8, 8 ) if i == 1 then -- Tail segment. Yes tail is actually the 'first' segment. source.x = 8 if 1 < #snake.segments then - angle = -snake.segments[ 2 ].heading:atan() + RL.PI / 2 + angle = snake.segments[ 2 ].heading:atan2() end elseif i < #snake.segments and seg.heading ~= snake.segments[ i+1 ].heading then -- Turned middle segments. source.x = 0 @@ -209,8 +209,7 @@ local function drawSnake() ) end -- Let's draw the head last to keep it on top. - -- local angle = -math.atan2( snake.heading.x, snake.heading.y ) + RL.PI / 2 - local angle = -snake.heading:atan() + RL.PI / 2 + local angle = snake.heading:atan2() RL.DrawTexturePro( snakeTexture, { 24, 0, 8, 8 }, -- cgit v1.2.3