diff options
| author | jussi | 2023-10-30 22:40:20 +0200 |
|---|---|---|
| committer | jussi | 2023-10-30 22:40:20 +0200 |
| commit | c3295e014d979c0213b3fb7e4837b5356bc8fdb4 (patch) | |
| tree | 66ee22c7140761a17bf174d71fecfb94c1378b1d /examples | |
| parent | 6e0d577d63b221797cdc7f392718dd1c4fb384b4 (diff) | |
| download | reilua-enhanced-c3295e014d979c0213b3fb7e4837b5356bc8fdb4.tar.gz reilua-enhanced-c3295e014d979c0213b3fb7e4837b5356bc8fdb4.tar.bz2 reilua-enhanced-c3295e014d979c0213b3fb7e4837b5356bc8fdb4.zip | |
Reintroducing Unload functions. Is*Ready functions. GC_UNLOAD setting and check function.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/ReiLuaGui_test/main.lua | 160 | ||||
| -rw-r--r-- | examples/basic_lighting/main.lua | 2 | ||||
| -rw-r--r-- | examples/bunnymark/main.lua | 4 | ||||
| -rw-r--r-- | examples/events/main.lua | 2 | ||||
| -rw-r--r-- | examples/free_camera3d/main.lua | 3 | ||||
| -rw-r--r-- | examples/gui/main.lua | 2 | ||||
| -rw-r--r-- | examples/image_draw/main.lua | 14 | ||||
| -rw-r--r-- | examples/iqm_test/main.lua | 2 | ||||
| -rw-r--r-- | examples/lightmap/main.lua | 24 | ||||
| -rw-r--r-- | examples/pixelated/main.lua | 54 | ||||
| -rw-r--r-- | examples/point_triangle_collision/main.lua | 120 | ||||
| -rw-r--r-- | examples/pong/main.lua | 105 | ||||
| -rw-r--r-- | examples/pong_vec/main.lua | 132 | ||||
| -rw-r--r-- | examples/ray/main.lua | 2 | ||||
| -rw-r--r-- | examples/resources/lib/gui.lua | 2 | ||||
| -rw-r--r-- | examples/snake/main.lua | 2 | ||||
| -rw-r--r-- | examples/window/main.lua | 2 |
17 files changed, 80 insertions, 552 deletions
diff --git a/examples/ReiLuaGui_test/main.lua b/examples/ReiLuaGui_test/main.lua deleted file mode 100644 index 8ea6563..0000000 --- a/examples/ReiLuaGui_test/main.lua +++ /dev/null @@ -1,160 +0,0 @@ -package.path = package.path..";"..RL.GetBasePath().."../resources/lib/?.lua" - -util = require( "utillib" ) -Vec2 = require( "vector2" ) -Rect = require( "rectangle" ) -Color = require( "color" ) -Gui = require( "gui" ) - -local container = {} --- local circleTexture = RL.LoadTexture( RL.GetBasePath().."../resources/images/circle.png" ) -local circleTexture = RL.LoadTexture( RL.GetBasePath().."../resources/images/plain-circle.png" ) -local checkTexture = RL.LoadTexture( RL.GetBasePath().."../resources/images/check-mark.png" ) -local borderTexture = RL.LoadTexture( RL.GetBasePath().."../resources/images/ui_border.png" ) -local textInput - -RL.GenTextureMipmaps( circleTexture ) -RL.GenTextureMipmaps( checkTexture ) -RL.SetTextureFilter( circleTexture, RL.TEXTURE_FILTER_TRILINEAR ) -RL.SetTextureFilter( checkTexture, RL.TEXTURE_FILTER_TRILINEAR ) - -function initGui() - -- local label = Gui.label:new( { text = "Dog", bounds = { 32, 32, 96, 96 }, drawBounds = true, Haling = Gui.ALING.CENTER, Valing = Gui.ALING.TOP } ) - local panel = Gui.element:new( { bounds = Rect:new( 60, 32, 128, 128 ), drawBounds = true } ) - - container = Gui.container:new( { - bounds = Rect:new( 256, 120, 128, 128 ), - -- spacing = 14, - -- drawScrollRect = true, - -- HAling = Gui.ALING.RIGHT, - -- HAling = Gui.ALING.CENTER, - -- type = Gui.CONTAINER.HORIZONTAL, - -- VAling = Gui.ALING.CENTER, - -- type = Gui.CONTAINER.GRID, - -- columns = 2, - -- rows = 2, - scrollable = true, - showScrollbar = true, - } ) - - -- local container = Gui.container:new( { bounds = Rect:new( 256, 120, 128, 128 ), drawBounds = true, type = Gui.CONTAINER.HORIZONTAL } ) - - -- local itemBounds = { 0, 0, container.bounds.width - container.spacing * 2, 36 } - local itemBounds = Rect:new( 0, 0, 64, 36 ) - - local dog = Gui.element:new( { - bounds = Rect:new( 0, 0, 128, 36 ), - onClicked = function() panel:setPosition( Vec2:new( 290, 120 ) ) end, - onMouseOver = function( self ) self.items[1].color = RL.RED end, - notMouseOver = function( self ) self.items[1].color = RL.BLACK end, - drawBounds = true, - } ) - - dog:add( Gui.text:new( { text = "Dog", HAling = Gui.ALING.LEFT } ) ) - - dog:add( Gui.texture:new( { - bounds = dog.bounds:clone(), - texture = borderTexture, - HAling = Gui.ALING.CENTER, - VAling = Gui.ALING.CENTER, - visible = true, - nPatchInfo = { source = { 0, 0, 24, 24 }, left = 8, top = 8, right = 8, bottom = 8, layout = RL.NPATCH_NINE_PATCH }, - } ) ) - - dog:add( Gui.texture:new( { bounds = Rect:new( 0, 0, 24, 24 ), texture = circleTexture, HAling = Gui.ALING.RIGHT, color = Color:new( 150, 150, 255 ) } ) ) - dog:add( Gui.texture:new( { bounds = Rect:new( 0, 0, 24, 24 ), texture = checkTexture, HAling = Gui.ALING.RIGHT, visible = true } ) ) - -- dog:add( Gui.text:new( { text = "Cat", HAling = Gui.ALING.RIGHT } ) ) - -- dog:add( Gui.shape:new( { bounds = Rect:new( 0, 0, 128, 36 ), shape = Gui.SHAPE.RECTANGLE_ROUNDED, color = Color:new( GREEN ) } ) ) - - container:add( dog ) - - -- container:add( Gui.element:new( { - -- text = "Cat", - -- bounds = Rect:new( 0, 0, 78, 24 ), - -- onClicked = function() panel:setPosition( Vec2:new( 290, 120 ) ) end, - -- onMouseOver = function( self ) self.color = RED end, - -- notMouseOver = function( self ) self.color = BLACK end, - -- drawBounds = true, - -- } ) ) - - for i = 1, 5 do - local element = Gui.element:new( { - bounds = Rect:new( 0, 0, 120, 30 ), - onClicked = function() panel:setPosition( Vec2:new( 340, 380 ) ) end, - onMouseOver = function( self ) self.color = Color:new( RL.DARKBLUE ) end, - notMouseOver = function( self ) self.color = Color:new( RL.LIGHTGRAY ) end, - drawBounds = true, - } ) - - element:add( Gui.text:new( { text = "Giraffe" } ) ) - container:add( element ) - end - - local container2 = Gui.container:new( { - bounds = Rect:new( 0, 0, 154, 64 ), - type = Gui.CONTAINER.HORIZONTAL, - } ) - - local element = Gui.element:new( { - bounds = itemBounds:clone(), - onMouseOver = function( self ) self.color = Color:new( RL.DARKBLUE ) end, - notMouseOver = function( self ) self.color = Color:new( RL.LIGHTGRAY ) end, - drawBounds = true, - } ) - element:add( Gui.text:new( { text = "Dog" } ) ) - container2:add( element ) - - element = Gui.element:new( { - bounds = Rect:new( 0, 0, 78, 24 ), - -- bounds = Rect:new( 0, 0, 78, 64 ), - onMouseOver = function( self ) self.color = Color:new( RL.DARKBLUE ) end, - notMouseOver = function( self ) self.color = Color:new( RL.LIGHTGRAY ) end, - drawBounds = true, - } ) - element:add( Gui.text:new( { text = "Cat" } ) ) - container2:add( element ) - - container:add( container2 ) - - panel:set2Top() - - -- Text input. - - textInput = Gui.element:new( { - bounds = Rect:new( 64, 360, 300, 32 ), - drawBounds = true, - color = Color:new( RL.LIGHTGRAY ), - onClicked = function() Gui.setInputFocus( textInput ) end, - inputFocus = function() textInput.color = Color:new( RL.BLUE ) end, - -- inputFocus = function() container:delete() end, - -- inputFocus = function() panel:set2Back() end, - inputUnfocus = function() textInput.color = Color:new( RL.LIGHTGRAY ) end, - } ) - - textInput:add( Gui.text:new( { text = "", maxTextLen = 16, allowLineBreak = false } ) ) -end - -function RL.init() - local monitor = 0 - local mPos = RL.GetMonitorPosition( monitor ) - local mSize = RL.GetMonitorSize( monitor ) - winSize = RL.GetScreenSize() - - RL.SetWindowTitle( "ReiLuaGui Test" ) - RL.SetWindowState( RL.FLAG_WINDOW_RESIZABLE ) - RL.SetWindowState( RL.FLAG_VSYNC_HINT ) - RL.SetWindowSize( winSize ) - RL.SetWindowPosition( { mPos[1] + mSize[1] / 2 - winSize[1] / 2, mPos[2] + mSize[2] / 2 - winSize[2] / 2 } ) - - initGui() -end - -function RL.process( delta ) - Gui.process( Vec2:new( RL.GetMousePosition() ) ) -end - -function RL.draw() - RL.ClearBackground( RL.RAYWHITE ) - - Gui.draw() -end diff --git a/examples/basic_lighting/main.lua b/examples/basic_lighting/main.lua index d85291e..0d7b77c 100644 --- a/examples/basic_lighting/main.lua +++ b/examples/basic_lighting/main.lua @@ -136,5 +136,5 @@ function RL.draw() camera:endMode3D() - RL.DrawText( RL.defaultFont, "Use keys [Y][R][G][B] to toggle lights", { 10, 10 }, 20, 4, RL.DARKGRAY ) + RL.DrawText( RL.GetFontDefault(), "Use keys [Y][R][G][B] to toggle lights", { 10, 10 }, 20, 4, RL.DARKGRAY ) end diff --git a/examples/bunnymark/main.lua b/examples/bunnymark/main.lua index 9f877e6..03f53ad 100644 --- a/examples/bunnymark/main.lua +++ b/examples/bunnymark/main.lua @@ -83,7 +83,7 @@ function RL.draw() end RL.DrawRectangle( { 0, 0, screenWidth, 40 }, RL.BLACK) - RL.DrawText( RL.defaultFont, "bunnies: " .. #bunnies, { 120, 10 }, 20, 2, RL.GREEN ) - RL.DrawText( RL.defaultFont, "batched draw calls: " .. math.ceil( 1 + #bunnies / MAX_BATCH_ELEMENTS ), { 320, 10 }, 20, 2, RL.RED ) + RL.DrawText( RL.GetFontDefault(), "bunnies: " .. #bunnies, { 120, 10 }, 20, 2, RL.GREEN ) + RL.DrawText( RL.GetFontDefault(), "batched draw calls: " .. math.ceil( 1 + #bunnies / MAX_BATCH_ELEMENTS ), { 320, 10 }, 20, 2, RL.RED ) RL.DrawFPS( { 10, 10 } ) end diff --git a/examples/events/main.lua b/examples/events/main.lua index 8a8fb34..052edc1 100644 --- a/examples/events/main.lua +++ b/examples/events/main.lua @@ -100,5 +100,5 @@ function RL.draw() RL.ClearBackground( RL.RED ) end - RL.DrawText( RL.defaultFont, text, textPos, 20, 2, RL.BLACK ) + RL.DrawText( RL.GetFontDefault(), text, textPos, 20, 2, RL.BLACK ) end diff --git a/examples/free_camera3d/main.lua b/examples/free_camera3d/main.lua index 6478ebb..4881cc5 100644 --- a/examples/free_camera3d/main.lua +++ b/examples/free_camera3d/main.lua @@ -68,5 +68,6 @@ function RL.draw() text = text.."\nPress T to toggle target visible.\nVisible: "..tostring( targetVisible ) - RL.DrawText( RL.defaultFont, text, { 16, 16 }, 30, 4, RL.WHITE ) + -- RL.DrawText( RL.defaultFont, text, { 16, 16 }, 30, 4, RL.WHITE ) + RL.DrawText( RL.GetFontDefault(), text, { 16, 16 }, 30, 4, RL.WHITE ) end diff --git a/examples/gui/main.lua b/examples/gui/main.lua index 01e063e..371d35d 100644 --- a/examples/gui/main.lua +++ b/examples/gui/main.lua @@ -26,7 +26,7 @@ function RL.init() local mSize = RL.GetMonitorSize( monitor ) local winSize = { 1920, 1080 } - RL.GuiSetFont( RL.defaultFont ) + RL.GuiSetFont( RL.GetFontDefault() ) RL.SetWindowState( RL.FLAG_WINDOW_RESIZABLE ) RL.SetWindowState( RL.FLAG_VSYNC_HINT ) RL.SetWindowSize( winSize ) diff --git a/examples/image_draw/main.lua b/examples/image_draw/main.lua index ac8e7e6..ba8881a 100644 --- a/examples/image_draw/main.lua +++ b/examples/image_draw/main.lua @@ -1,9 +1,9 @@ local monitor = 0 -local texture = -1 -local image = -1 -local catImage = -1 -local catCopy = -1 -local textImage = -1 +local texture = nil +local image = nil +local catImage = nil +local catCopy = nil +local textImage = nil function RL.init() local mPos = RL.GetMonitorPosition( monitor ) @@ -24,14 +24,14 @@ function RL.init() RL.ImageDrawRectangle( image, { 120, 64, 32, 64 }, RL.BLUE ) RL.ImageDrawRectangleLines( image, { 160, 64, 32, 64 }, 2.0, RL.BLUE ) RL.ImageDraw( image, catImage, { 143, 25, 230, 250 }, { 200, 200, 230, 250 }, RL.WHITE ) - RL.ImageDrawTextEx( image, RL.defaultFont, "Hello", { 300, 32 }, 48.0, 1.0, RL.WHITE ) + RL.ImageDrawTextEx( image, RL.GetFontDefault(), "Hello", { 300, 32 }, 48.0, 1.0, RL.WHITE ) local src = { 80, 70, 96, 96 } catCopy = RL.ImageFromImage( catImage, src ) RL.ImageDraw( image, catCopy, src, { 600, 200, src[3], src[4] }, RL.WHITE ) - textImage = RL.ImageText( RL.defaultFont, "Cat", 10, 4, RL.WHITE ) + textImage = RL.ImageText( RL.GetFontDefault(), "Cat", 10, 4, RL.WHITE ) local imageSize = RL.GetImageSize( textImage ) RL.ImageDraw( image, textImage, { 0, 0, imageSize[1], imageSize[2] }, { 250, 40, imageSize[1], imageSize[2] }, RL.WHITE ) diff --git a/examples/iqm_test/main.lua b/examples/iqm_test/main.lua index 229c1c4..22341a4 100644 --- a/examples/iqm_test/main.lua +++ b/examples/iqm_test/main.lua @@ -80,7 +80,7 @@ function RL.draw() RL.DrawModelEx( model, { 0, 0, 0 }, { 1.0, 0.0, 0.0 }, -90.0, { 1.0, 1.0, 1.0 }, RL.WHITE ) RL.EndMode3D() - RL.DrawText( RL.defaultFont, + RL.DrawText( RL.GetFontDefault(), "Enter: Change animation\ Space: Play animation\ Up arrow: Inreace animation speed\ diff --git a/examples/lightmap/main.lua b/examples/lightmap/main.lua index 6d946a5..56b6772 100644 --- a/examples/lightmap/main.lua +++ b/examples/lightmap/main.lua @@ -5,12 +5,12 @@ Cam3D = require( "camera3d" ) local PLANE_SIZE = 8 local monitor = 0 -local camera = -1 -local tileTexture = -1 -local mesh = -1 -local material = -1 -local lightmap = -1 -local shader = -1 +local camera = {} +local tileTexture = nil +local mesh = nil +local material = nil +local lightmap = nil +local shader = nil local matrix = {} @@ -80,8 +80,6 @@ function RL.init() } material = RL.CreateMaterial( materialData ) - print( "material", material ) - matrix = RL.MatrixMultiply( RL.MatrixIdentity(), RL.MatrixTranslate( { -4, 0, -4 } ) ) end @@ -99,18 +97,8 @@ end function RL.draw() RL.ClearBackground( { 25, 50, 50 } ) - -- RL.UpdateCamera3D( camera, RL.CAMERA_ORBITAL ) - -- RL.UpdateCamera3D( camera, RL.CAMERA_FREE ) - -- RL.UpdateCamera3D( camera, RL.CAMERA_FIRST_PERSON ) camera:beginMode3D() RL.DrawMesh( mesh, material, matrix ) camera:endMode3D() end - -function RL.exit() - material = nil - collectgarbage( "collect" ) - tileTexture = nil - collectgarbage( "collect" ) -end
\ No newline at end of file diff --git a/examples/pixelated/main.lua b/examples/pixelated/main.lua deleted file mode 100644 index 174b2b9..0000000 --- a/examples/pixelated/main.lua +++ /dev/null @@ -1,54 +0,0 @@ -local tex = -1 -local pos = { 32, 32 } -local speed = 60.0 -local monitor = 0 -local mPos = RL.GetMonitorPosition( monitor ) -local mSize = RL.GetMonitorSize( monitor ) -local framebuffer = nil -local res = { 320, 180 } -local scale = 5 -local winSize = { res[1] * scale, res[2] * scale } - -function RL.init() - RL.SetWindowState( RL.FLAG_WINDOW_RESIZABLE ) - RL.SetWindowState( RL.FLAG_VSYNC_HINT ) - RL.SetWindowPosition( { mPos[1] + mSize[1] / 2 - winSize[1] / 2, mPos[2] + mSize[2] / 2 - winSize[2] / 2 } ) - RL.SetWindowSize( winSize ) - tex = RL.LoadTexture( RL.GetBasePath().."../resources/images/cat.png" ) - -- Create framebuffer. - framebuffer = RL.LoadRenderTexture( res ) -end - -function RL.process( delta ) - if RL.IsKeyDown( RL.KEY_RIGHT ) then - pos[1] = pos[1] + delta * speed - elseif RL.IsKeyDown( RL.KEY_LEFT ) then - pos[1] = pos[1] - delta * speed - end - - if RL.IsKeyDown( RL.KEY_UP ) then - pos[2] = pos[2] - delta * speed - elseif RL.IsKeyDown( RL.KEY_DOWN ) then - pos[2] = pos[2] + delta * speed - end - - if RL.IsWindowResized() then - winSize = RL.GetScreenSize() - end -end - -function RL.draw() - RL.ClearBackground( { 0, 0, 0 } ) - - RL.BeginTextureMode( framebuffer ) - RL.ClearBackground( { 100, 150, 100 } ) - RL.DrawPixel( { 100, 100 }, { 255, 50, 100 } ) - RL.DrawLine( { 120, 100 }, { 140, 150 }, 2.4, { 255, 150, 255 } ) - RL.DrawRectangle( { 200, 120, 40, 50 }, { 100, 170, 255 } ) - RL.DrawTexturePro( tex, { 166, 138, 128, 128 }, { pos[1], pos[2], 128, 128 }, { 16, 16 }, 0.0, RL.WHITE ) - RL.DrawText( RL.defaultFont, "Cat MIAU!!", { 16, 32 }, 10, 1, { 255, 180, 155 } ) - RL.DrawTriangle( { 0, 32 }, { 32, 16 }, { 0, 0 }, RL.RED ) - RL.EndTextureMode() - - RL.DrawTexturePro( RL.GetRenderTextureTexture( framebuffer ), { 0, 0, res[1], -res[2] }, { 0, 0, winSize[1], winSize[2] }, { 0, 0 }, 0.0, { 255, 255, 255 } ) -end diff --git a/examples/point_triangle_collision/main.lua b/examples/point_triangle_collision/main.lua deleted file mode 100644 index 9a302dc..0000000 --- a/examples/point_triangle_collision/main.lua +++ /dev/null @@ -1,120 +0,0 @@ -package.path = package.path..";"..RL.GetBasePath().."../resources/lib/?.lua" - -util = require "utillib" -Vec2 = require "vector2" -Vec3 = require "vector3" - -local MOVE_SPEED = 0.5 - -local monitor = 0 -local camera = -1 -local tri = { - a = Vec3:new( 0, 0, 0 ), - -- a = Vec3:new( 0, 1, 0 ), - b = Vec3:new( 0, 0, 2 ), - c = Vec3:new( 1, 0, 0 ), - normal = Vec3:new( 0, 0, 0 ), -} -local point = { - pos = Vec3:new( 0.2, 0.3, 0.2 ), - radius = 0.05, - lineLen = 0.5, - color = RL.RED, -} - -local debugText = "" - -local function calcNormal( tri ) - tri.normal = Vec3:new( RL.Vector3Normalize( RL.Vector3CrossProduct( tri.b - tri.a, tri.c - tri.a ) ) ) -end - -function RL.init() - local mPos = RL.GetMonitorPosition( monitor ) - local mSize = RL.GetMonitorSize( monitor ) - local winSize = { 1920, 1080 } - - RL.SetWindowState( RL.FLAG_WINDOW_RESIZABLE ) - RL.SetWindowState( RL.FLAG_VSYNC_HINT ) - RL.SetWindowPosition( { mPos[1] + mSize[1] / 2 - winSize[1] / 2, mPos[2] + mSize[2] / 2 - winSize[2] / 2 } ) - RL.SetWindowSize( winSize ) - camera = RL.CreateCamera3D() - RL.SetCamera3DPosition( camera, { 0, 1, 2 } ) - RL.SetCamera3DTarget( camera, { 0, 0, 0 } ) - RL.SetCamera3DUp( camera, { 0, 1, 0 } ) - - calcNormal( tri ) -end - -local function checkCollisionPointTriangle( p, a, b, c, n ) - local result = Vec3:new( 0, 0, 0 ) - - local v0 = Vec3:new( b.x - a.x, b.y - a.y, b.z - a.z ) -- Vector3Subtract( b, a ) - local v1 = Vec3:new( c.x - a.x, c.y - a.y, c.z - a.z ) -- Vector3Subtract( c, a ) - local v2 = Vec3:new( p.x - a.x, p.y - a.y, p.z - a.z ) -- Vector3Subtract( p, a ) - local d00 = v0.x * v0.x + v0.y * v0.y + v0.z * v0.z -- Vector3DotProduct( v0, v0 ) - local d01 = v0.x * v1.x + v0.y * v1.y + v0.z * v1.z -- Vector3DotProduct( v0, v1 ) - local d11 = v1.x * v1.x + v1.y * v1.y + v1.z * v1.z -- Vector3DotProduct( v1, v1 ) - local d20 = v2.x * v0.x + v2.y * v0.y + v2.z * v0.z -- Vector3DotProduct( v2, v0 ) - local d21 = v2.x * v1.x + v2.y * v1.y + v2.z * v1.z -- Vector3DotProduct( v2, v1 ) - - local denom = d00 * d11 - d01 * d01 - local distance = v2.x * n.x + v2.y * n.y + v2.z * n.z -- Vector3DotProduct( v2, n ) - - debugText = debugText.."distance "..distance.."\n" - debugText = debugText.."v0 "..v0.x..", "..v0.y..", "..v0.z.."\n" - debugText = debugText.."v1 "..v1.x..", "..v1.y..", "..v1.z.."\n" - debugText = debugText.."v2 "..v2.x..", "..v2.y..", "..v2.z.."\n" - - result.y = ( d11 * d20 - d01 * d21) / denom - result.z = ( d00 * d21 - d01 * d20) / denom - result.x = 1.0 - ( result.z + result.y ) - - debugText = debugText.."result "..result.x..", "..result.y..", "..result.z.."\n" - - return 0.0 < result.x and 0.0 < result.y and 0.0 < result.z and distance < 0.0, distance -end - -function RL.process( delta ) - debugText = "" - - if RL.IsKeyDown( string.byte( "D" ) ) then - point.pos.x = point.pos.x + MOVE_SPEED * delta - elseif RL.IsKeyDown( string.byte( "A" ) ) then - point.pos.x = point.pos.x - MOVE_SPEED * delta - end - if RL.IsKeyDown( string.byte( "S" ) ) then - point.pos.z = point.pos.z + MOVE_SPEED * delta - elseif RL.IsKeyDown( string.byte( "W" ) ) then - point.pos.z = point.pos.z - MOVE_SPEED * delta - end - if RL.IsKeyDown( string.byte( "R" ) ) then - point.pos.y = point.pos.y + MOVE_SPEED * delta - elseif RL.IsKeyDown( string.byte( "F" ) ) then - point.pos.y = point.pos.y - MOVE_SPEED * delta - end - - if checkCollisionPointTriangle( point.pos, tri.a, tri.b, tri.c, tri.normal ) then - point.color = RL.RED - else - point.color = RL.GREEN - end -end - -function RL.draw() - RL.ClearBackground( { 100, 150, 100 } ) - - RL.BeginMode3D( camera ) - RL.DrawGrid( 8, 1 ) - RL.DrawTriangle3D( tri.a, tri.b, tri.c, { 200, 100, 100 } ) - - RL.DrawLine3D( { point.pos.x - point.lineLen, point.pos.y, point.pos.z }, - { point.pos.x + point.lineLen, point.pos.y, point.pos.z }, RL.BLUE ) - RL.DrawLine3D( { point.pos.x, point.pos.y - point.lineLen, point.pos.z }, - { point.pos.x, point.pos.y + point.lineLen, point.pos.z }, RL.BLUE ) - RL.DrawLine3D( { point.pos.x, point.pos.y, point.pos.z - point.lineLen }, - { point.pos.x, point.pos.y, point.pos.z + point.lineLen }, RL.BLUE ) - RL.DrawSphereWires( point.pos, point.radius, 3, 8, point.color ) - RL.EndMode3D() - - RL.DrawText( RL.defaultFont, debugText, { 10, 10 }, 30, 4, RL.WHITE ) -end diff --git a/examples/pong/main.lua b/examples/pong/main.lua index 80c4346..4dd3462 100644 --- a/examples/pong/main.lua +++ b/examples/pong/main.lua @@ -1,5 +1,11 @@ +-- Pong example using Vector2 library. + +package.path = package.path..";"..RL.GetBasePath().."../resources/lib/?.lua" + +Vec2 = require "vector2" + -- Settings. -local winSize = { 800, 600 } +local winSize = Vec2:new( 800, 600 ) local monitor = 0 -- Constants. @@ -8,54 +14,54 @@ local BALL_SPEED = 330 -- Game objects. local playerLeft = { - pos = { 0, 0 }, - size = { 10, 70 }, + pos = Vec2:new( 0, 0 ), + size = Vec2:new( 10, 70 ), score = 0, } local playerRight = { - pos = { 0, 0 }, - size = { 10, 70 }, + pos = Vec2:new( 0, 0 ), + size = Vec2:new( 10, 70 ), score = 0, } local ball = { - pos = { 0, 0 }, + pos = Vec2:new( 0, 0 ), radius = 8.0, - vel = { 0, 0 }, + vel = Vec2:new( 0, 0 ), } local function reset() -- Initialize player positions. - playerLeft.pos[1] = playerLeft.size[1] - playerLeft.pos[2] = winSize[2] / 2 - playerLeft.size[2] / 2 - - playerRight.pos[1] = winSize[1] - playerRight.size[1] * 2 - playerRight.pos[2] = winSize[2] / 2 - playerRight.size[2] / 2 + playerLeft.pos.x = playerLeft.size.x + playerLeft.pos.y = winSize.y / 2 - playerLeft.size.y / 2 + + playerRight.pos.x = winSize.x - playerRight.size.x * 2 + playerRight.pos.y = winSize.y / 2 - playerRight.size.y / 2 -- Set ball to center. - ball.pos = { winSize[1] / 2, winSize[2] / 2 } + ball.pos:set( winSize.x / 2, winSize.y / 2 ) -- Short for if math random result 1, set BALL_SPEED otherwise set -BALL_SPEED. -- Could be replaced by normal if statement for easier readability. - ball.vel[1] = math.random( 0, 1 ) == 1 and BALL_SPEED or -BALL_SPEED + ball.vel.x = math.random( 0, 1 ) == 1 and BALL_SPEED or -BALL_SPEED -- Start slow. - ball.vel[2] = 0 + ball.vel.y = 0 end local function ballHit( padPos, padSize ) - ball.vel[1] = -ball.vel[1] + ball.vel.x = -ball.vel.x - local padCenter = padPos[2] + padSize[2] / 2 - local relHitPos = ball.pos[2] - padCenter - ball.vel[2] = BALL_SPEED * relHitPos / padSize[2] * 2 + local padCenter = padPos.y + padSize.y / 2 + local relHitPos = ball.pos.y - padCenter + ball.vel.y = BALL_SPEED * relHitPos / padSize.y * 2 end function RL.init() -- Set window to center of monitor. - local mPos = RL.GetMonitorPosition( monitor ) - local mSize = RL.GetMonitorSize( monitor ) + local mPos = Vec2:new( RL.GetMonitorPosition( monitor ) ) + local mSize = Vec2:new( RL.GetMonitorSize( monitor ) ) - RL.SetWindowState( RL.FLAG_VSYNC_HINT ) + RL.SetConfigFlags( RL.FLAG_VSYNC_HINT ) RL.SetWindowSize( winSize ) - RL.SetWindowPosition( { mPos[1] + mSize[1] / 2 - winSize[1] / 2, mPos[2] + mSize[2] / 2 - winSize[2] / 2 } ) + RL.SetWindowPosition( { mPos.x + mSize.x / 2 - winSize.x / 2, mPos.y + mSize.y / 2 - winSize.y / 2 } ) RL.SetWindowTitle( "Pong" ) -- Initialize ball pos. @@ -65,46 +71,45 @@ end function RL.process( delta ) -- Left player controls. - if RL.IsKeyDown( string.byte( "W" ) ) and 0 < playerLeft.pos[2] then - playerLeft.pos[2] = playerLeft.pos[2] - PLAYER_SPEED * delta - elseif RL.IsKeyDown( string.byte( "S" ) ) and playerLeft.pos[2] + playerLeft.size[2] < winSize[2] then - playerLeft.pos[2] = playerLeft.pos[2] + PLAYER_SPEED * delta + if RL.IsKeyDown( RL.KEY_W ) and 0 < playerLeft.pos.y then + playerLeft.pos.y = playerLeft.pos.y - PLAYER_SPEED * delta + elseif RL.IsKeyDown( RL.KEY_S ) and playerLeft.pos.y + playerLeft.size.y < winSize.y then + playerLeft.pos.y = playerLeft.pos.y + PLAYER_SPEED * delta end -- Right player controls. - if RL.IsKeyDown( RL.KEY_UP ) and 0 < playerRight.pos[2] then - playerRight.pos[2] = playerRight.pos[2] - PLAYER_SPEED * delta - elseif RL.IsKeyDown( RL.KEY_DOWN ) and playerRight.pos[2] + playerRight.size[2] < winSize[2] then - playerRight.pos[2] = playerRight.pos[2] + PLAYER_SPEED * delta + if RL.IsKeyDown( RL.KEY_UP ) and 0 < playerRight.pos.y then + playerRight.pos.y = playerRight.pos.y - PLAYER_SPEED * delta + elseif RL.IsKeyDown( RL.KEY_DOWN ) and playerRight.pos.y + playerRight.size.y < winSize.y then + playerRight.pos.y = playerRight.pos.y + PLAYER_SPEED * delta end -- Move ball. - ball.pos = { ball.pos[1] + ball.vel[1] * delta, - ball.pos[2] + ball.vel[2] * delta } + ball.pos = ball.pos + ball.vel:scale( delta ) -- Bounce from window edge. - if ( ball.pos[2] < ball.radius and ball.vel[2] < 0 ) - or ( winSize[2] < ball.pos[2] + ball.radius and 0 < ball.vel[2] ) then - ball.vel[2] = -ball.vel[2] + if ( ball.pos.y < ball.radius and ball.vel.y < 0 ) + or ( winSize.y < ball.pos.y + ball.radius and 0 < ball.vel.y ) then + ball.vel.y = -ball.vel.y end -- Bounce from players. - local playerLeftRect = { playerLeft.pos[1], playerLeft.pos[2], - playerLeft.size[1], playerLeft.size[2] } - local playerRightRect = { playerRight.pos[1], playerRight.pos[2], - playerRight.size[1], playerRight.size[2] } + local playerLeftRect = { playerLeft.pos.x, playerLeft.pos.y, + playerLeft.size.x, playerLeft.size.y } + local playerRightRect = { playerRight.pos.x, playerRight.pos.y, + playerRight.size.x, playerRight.size.y } - if RL.CheckCollisionCircleRec( ball.pos, ball.radius, playerLeftRect ) and ball.vel[1] < 0 then + if RL.CheckCollisionCircleRec( ball.pos, ball.radius, playerLeftRect ) and ball.vel.x < 0 then ballHit( playerLeft.pos, playerLeft.size ) - elseif RL.CheckCollisionCircleRec( ball.pos, ball.radius, playerRightRect ) and 0 < ball.vel[1] then + elseif RL.CheckCollisionCircleRec( ball.pos, ball.radius, playerRightRect ) and 0 < ball.vel.x then ballHit( playerRight.pos, playerRight.size ) end -- Score. - if ball.pos[1] < 0 then + if ball.pos.x < 0 then playerRight.score = playerRight.score + 1 reset() - elseif winSize[1] < ball.pos[1] then + elseif winSize.x < ball.pos.x then playerLeft.score = playerLeft.score + 1 reset() end @@ -114,14 +119,14 @@ function RL.draw() RL.ClearBackground( RL.BLACK ) -- Draw players. - RL.DrawRectangle( { playerLeft.pos[1], playerLeft.pos[2], playerLeft.size[1], playerLeft.size[2] }, RL.WHITE ) - RL.DrawRectangle( { playerRight.pos[1], playerRight.pos[2], playerRight.size[1], playerRight.size[2] }, RL.WHITE ) + RL.DrawRectangle( { playerLeft.pos.x, playerLeft.pos.y, playerLeft.size.x, playerLeft.size.y }, RL.WHITE ) + RL.DrawRectangle( { playerRight.pos.x, playerRight.pos.y, playerRight.size.x, playerRight.size.y }, RL.WHITE ) -- Draw ball. Ball position will be the center in drawCircle. RL.DrawCircle( ball.pos, ball.radius, RL.WHITE ) - -- Draw scire - RL.DrawText( RL.defaultFont, playerLeft.score, { 50, 10 }, 40, 2, RL.WHITE ) - local rightTextSize = RL.MeasureText( RL.defaultFont, playerRight.score, 40, 2 ) - RL.DrawText( RL.defaultFont, playerRight.score, { winSize[1] - 50 - rightTextSize[1], 10 }, 40, 2, RL.WHITE ) + -- Draw score. + RL.DrawText( RL.GetFontDefault(), tostring( playerLeft.score ), { 50, 10 }, 40, 2, RL.WHITE ) + local rightTextSize = Vec2:new( RL.MeasureText( RL.GetFontDefault(), tostring( playerRight.score ), 40, 2 ) ) + RL.DrawText( RL.GetFontDefault(), tostring( playerRight.score ), { winSize.x - 50 - rightTextSize.x, 10 }, 40, 2, RL.WHITE ) end diff --git a/examples/pong_vec/main.lua b/examples/pong_vec/main.lua deleted file mode 100644 index 0b8ff62..0000000 --- a/examples/pong_vec/main.lua +++ /dev/null @@ -1,132 +0,0 @@ --- Pong example using Vector2 library. - -package.path = package.path..";"..RL.GetBasePath().."../resources/lib/?.lua" - -Vec2 = require "vector2" - --- Settings. -local winSize = Vec2:new( 800, 600 ) -local monitor = 0 - --- Constants. -local PLAYER_SPEED = 300 -local BALL_SPEED = 330 - --- Game objects. -local playerLeft = { - pos = Vec2:new( 0, 0 ), - size = Vec2:new( 10, 70 ), - score = 0, -} -local playerRight = { - pos = Vec2:new( 0, 0 ), - size = Vec2:new( 10, 70 ), - score = 0, -} -local ball = { - pos = Vec2:new( 0, 0 ), - radius = 8.0, - vel = Vec2:new( 0, 0 ), -} - -local function reset() - -- Initialize player positions. - playerLeft.pos.x = playerLeft.size.x - playerLeft.pos.y = winSize.y / 2 - playerLeft.size.y / 2 - - playerRight.pos.x = winSize.x - playerRight.size.x * 2 - playerRight.pos.y = winSize.y / 2 - playerRight.size.y / 2 - - -- Set ball to center. - ball.pos:set( winSize.x / 2, winSize.y / 2 ) - -- Short for if math random result 1, set BALL_SPEED otherwise set -BALL_SPEED. - -- Could be replaced by normal if statement for easier readability. - ball.vel.x = math.random( 0, 1 ) == 1 and BALL_SPEED or -BALL_SPEED - -- Start slow. - ball.vel.y = 0 -end - -local function ballHit( padPos, padSize ) - ball.vel.x = -ball.vel.x - - local padCenter = padPos.y + padSize.y / 2 - local relHitPos = ball.pos.y - padCenter - ball.vel.y = BALL_SPEED * relHitPos / padSize.y * 2 -end - -function RL.init() - -- Set window to center of monitor. - local mPos = Vec2:new( RL.GetMonitorPosition( monitor ) ) - local mSize = Vec2:new( RL.GetMonitorSize( monitor ) ) - - RL.SetConfigFlags( RL.FLAG_VSYNC_HINT ) - RL.SetWindowSize( winSize ) - RL.SetWindowPosition( { mPos.x + mSize.x / 2 - winSize.x / 2, mPos.y + mSize.y / 2 - winSize.y / 2 } ) - RL.SetWindowTitle( "Pong" ) - - -- Initialize ball pos. - math.randomseed( os.time() ) - reset() -end - -function RL.process( delta ) - -- Left player controls. - if RL.IsKeyDown( RL.KEY_W ) and 0 < playerLeft.pos.y then - playerLeft.pos.y = playerLeft.pos.y - PLAYER_SPEED * delta - elseif RL.IsKeyDown( RL.KEY_S ) and playerLeft.pos.y + playerLeft.size.y < winSize.y then - playerLeft.pos.y = playerLeft.pos.y + PLAYER_SPEED * delta - end - - -- Right player controls. - if RL.IsKeyDown( RL.KEY_UP ) and 0 < playerRight.pos.y then - playerRight.pos.y = playerRight.pos.y - PLAYER_SPEED * delta - elseif RL.IsKeyDown( RL.KEY_DOWN ) and playerRight.pos.y + playerRight.size.y < winSize.y then - playerRight.pos.y = playerRight.pos.y + PLAYER_SPEED * delta - end - - -- Move ball. - ball.pos = ball.pos + ball.vel:scale( delta ) - - -- Bounce from window edge. - if ( ball.pos.y < ball.radius and ball.vel.y < 0 ) - or ( winSize.y < ball.pos.y + ball.radius and 0 < ball.vel.y ) then - ball.vel.y = -ball.vel.y - end - - -- Bounce from players. - local playerLeftRect = { playerLeft.pos.x, playerLeft.pos.y, - playerLeft.size.x, playerLeft.size.y } - local playerRightRect = { playerRight.pos.x, playerRight.pos.y, - playerRight.size.x, playerRight.size.y } - - if RL.CheckCollisionCircleRec( ball.pos, ball.radius, playerLeftRect ) and ball.vel.x < 0 then - ballHit( playerLeft.pos, playerLeft.size ) - elseif RL.CheckCollisionCircleRec( ball.pos, ball.radius, playerRightRect ) and 0 < ball.vel.x then - ballHit( playerRight.pos, playerRight.size ) - end - - -- Score. - if ball.pos.x < 0 then - playerRight.score = playerRight.score + 1 - reset() - elseif winSize.x < ball.pos.x then - playerLeft.score = playerLeft.score + 1 - reset() - end -end - -function RL.draw() - RL.ClearBackground( RL.BLACK ) - - -- Draw players. - RL.DrawRectangle( { playerLeft.pos.x, playerLeft.pos.y, playerLeft.size.x, playerLeft.size.y }, RL.WHITE ) - RL.DrawRectangle( { playerRight.pos.x, playerRight.pos.y, playerRight.size.x, playerRight.size.y }, RL.WHITE ) - - -- Draw ball. Ball position will be the center in drawCircle. - RL.DrawCircle( ball.pos, ball.radius, RL.WHITE ) - - -- Draw score. - RL.DrawText( RL.defaultFont, tostring( playerLeft.score ), { 50, 10 }, 40, 2, RL.WHITE ) - local rightTextSize = Vec2:new( RL.MeasureText( RL.defaultFont, tostring( playerRight.score ), 40, 2 ) ) - RL.DrawText( RL.defaultFont, tostring( playerRight.score ), { winSize.x - 50 - rightTextSize.x, 10 }, 40, 2, RL.WHITE ) -end diff --git a/examples/ray/main.lua b/examples/ray/main.lua index 6bee146..52924df 100644 --- a/examples/ray/main.lua +++ b/examples/ray/main.lua @@ -53,7 +53,7 @@ function RL.draw() RL.DrawGrid( 8, 1 ) RL.DrawRay( ray, { 255, 100, 100 } ) - RL.DrawMesh( sphereMesh, RL.defaultMaterial, RL.MatrixIdentity() ) + RL.DrawMesh( sphereMesh, RL.GetMaterialDefault(), RL.MatrixIdentity() ) RL.DrawSphereWires( rayCol.point, 0.05, 4, 8, RL.BLUE ) RL.DrawLine3D( rayCol.point, RL.Vector3Add( rayCol.point, rayCol.normal ), RL.GREEN ) RL.EndMode3D() diff --git a/examples/resources/lib/gui.lua b/examples/resources/lib/gui.lua index bca87bd..996001c 100644 --- a/examples/resources/lib/gui.lua +++ b/examples/resources/lib/gui.lua @@ -40,7 +40,7 @@ Gui = { }, mouseButton = RL.MOUSE_BUTTON_LEFT, - font = RL.defaultFont, + font = RL.GetFontDefault(), fontSize = 20, padding = 2, spacing = 4, diff --git a/examples/snake/main.lua b/examples/snake/main.lua index e90c732..5aa22b3 100644 --- a/examples/snake/main.lua +++ b/examples/snake/main.lua @@ -213,7 +213,7 @@ function RL.draw() drawApple() if gameState == STATE.OVER then - RL.DrawText( RL.defaultFont, "Press Enter to\nrestart", { 10, 10 }, 10, 2, RL.WHITE ) + RL.DrawText( RL.GetFontDefault(), "Press Enter to\nrestart", { 10, 10 }, 10, 2, RL.WHITE ) end RL.EndTextureMode() diff --git a/examples/window/main.lua b/examples/window/main.lua index 4be48f6..c6161e9 100644 --- a/examples/window/main.lua +++ b/examples/window/main.lua @@ -24,5 +24,5 @@ end function RL.draw() RL.ClearBackground( RL.RAYWHITE ) - RL.DrawText( RL.defaultFont, text, textPos, 20, 2, textColor ) + RL.DrawText( RL.GetFontDefault(), text, textPos, 20, 2, textColor ) end |
