summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjussi2024-03-17 10:38:30 +0200
committerjussi2024-03-17 10:38:30 +0200
commitae1d0b65f16b24f2e0db39cb8baef4af57b2a12f (patch)
tree80358810635da19821bdb38ece2098c2dd48f1ff
parentca238975dc63d2dddcd2b17ad627bedc95dd158c (diff)
downloadreilua-enhanced-ae1d0b65f16b24f2e0db39cb8baef4af57b2a12f.tar.gz
reilua-enhanced-ae1d0b65f16b24f2e0db39cb8baef4af57b2a12f.tar.bz2
reilua-enhanced-ae1d0b65f16b24f2e0db39cb8baef4af57b2a12f.zip
Round and pubsub lib.
-rw-r--r--API.md22
-rw-r--r--README.md6
-rw-r--r--ReiLua_API.lua8
-rw-r--r--changelog12
-rw-r--r--devnotes4
-rw-r--r--docgen.lua5
-rw-r--r--examples/heightmap/main.lua4
-rw-r--r--examples/lightmap/main.lua9
-rw-r--r--examples/raygui_extensions/main.lua4
-rw-r--r--examples/resources/lib/color.lua9
-rw-r--r--examples/resources/lib/pubsub.lua34
-rw-r--r--examples/resources/lib/utillib.lua5
-rw-r--r--examples/snake/main.lua2
-rw-r--r--examples/window/main.lua6
-rw-r--r--include/rmath.h1
-rw-r--r--src/core.c4
-rw-r--r--src/lua_core.c1
-rw-r--r--src/rmath.c15
18 files changed, 123 insertions, 28 deletions
diff --git a/API.md b/API.md
index fcfd5f3..f655d92 100644
--- a/API.md
+++ b/API.md
@@ -273,6 +273,18 @@ ModelAnimation
---
+> AutomationEvent = Userdata
+
+Automation event
+
+---
+
+> AutomationEventList = Userdata
+
+Automation event list
+
+---
+
> Buffer = Buffer userdata
Data buffer for C primitive types. Type should be one of the Buffer types.
@@ -4591,7 +4603,7 @@ Get automation event list count
> event = RL.GetAutomationEvent( AutomationEventList list, int index )
-Get automation event from automation event list
+Get automation event from automation event list. Return as lightuserdata
- Failure return nil
- Success return AutomationEvent
@@ -8077,6 +8089,14 @@ Get current music time played (in seconds)
---
+> result = RL.Round( float value )
+
+Round float value
+
+- Success return float
+
+---
+
> result = RL.Clamp( float value, float min, float max )
Clamp float value
diff --git a/README.md b/README.md
index 139b281..eea77d7 100644
--- a/README.md
+++ b/README.md
@@ -52,10 +52,10 @@ end
function RL.update( delta )
if RL.IsKeyPressed( RL.KEY_ENTER ) then
local winSize = RL.GetScreenSize()
+ local measuredSize = RL.MeasureTextEx( RL.GetFontDefault(), text, textSize, 2 )
- textSize = RL.MeasureText( text, textSize )
textColor = RL.BLUE
- textPos = { winSize[1] / 2 - textSize[1] / 2, winSize[2] / 2 - textSize[2] / 2 }
+ textPos = { winSize[1] / 2 - measuredSize[1] / 2, winSize[2] / 2 - measuredSize[2] / 2 }
end
if RL.IsKeyPressed( RL.KEY_SPACE ) then
@@ -87,7 +87,7 @@ ReiLua_API.lua can be put into project folder to provide annotations when using
Some objects allocate memory that needs to be freed when object is no longer needed. By default objects like Textures are unloaded by the Lua garbage collector. It is generatty however recommended to handle this manually in more complex projects. You can change the behavior with:
```
-SetGCUnload()
+RL.SetGCUnload()
```
## Interpreter Mode
diff --git a/ReiLua_API.lua b/ReiLua_API.lua
index 3f8b2e9..b919a70 100644
--- a/ReiLua_API.lua
+++ b/ReiLua_API.lua
@@ -2033,7 +2033,7 @@ function RL.GetAutomationEventListCapacity( list ) end
---@return any count
function RL.GetAutomationEventListCount( list ) end
----Get automation event from automation event list
+---Get automation event from automation event list. Return as lightuserdata
---- Failure return nil
---- Success return AutomationEvent
---@param list any
@@ -5299,6 +5299,12 @@ function RL.GetMusicTimePlayed( music ) end
-- Math - Utils
+---Round float value
+---- Success return float
+---@param value number
+---@return any result
+function RL.Round( value ) end
+
---Clamp float value
---- Success return float
---@param value number
diff --git a/changelog b/changelog
index 87ad600..091498b 100644
--- a/changelog
+++ b/changelog
@@ -2,13 +2,8 @@
Release: ReiLua version 0.8.0 Using Raylib 5.0 and Forked Raygui 4.0
------------------------------------------------------------------------
KEY CHANGES:
- - CHANGE: GetBufferData takes also position and length arguments.
- - ADDED: LoadImageFromData.
- CHANGE: Process renamed to update to be more inline with naming of raylib and common convention.
- - ADDED: Raygui lib tooltip.
- ADDED: apiScanner.lua for searching unimplemented functions from raylib.
- - ADDED & CHANGE: ImageText. ImageTextEx is now equivalent to raylib function and old ImageText.
- - ADDED & CHANGE: MeasureText. MeasureTextEx is now equivalent to raylib function and old MeasureText.
- ADDED Automation events.
DETAILED CHANGES:
@@ -32,6 +27,13 @@ DETAILED CHANGES:
- ADDED: Custom frame control functions.
- REMOVED: GetPixelColor. Deviates too much from raylib function.
- ADDED: EnableEventWaiting and DisableEventWaiting.
+ - CHANGE: GetBufferData takes also position and length arguments.
+ - ADDED & CHANGE: ImageText. ImageTextEx is now equivalent to raylib function and old ImageText.
+ - ADDED & CHANGE: MeasureText. MeasureTextEx is now equivalent to raylib function and old MeasureText.
+ - ADDED: LoadImageFromData.
+ - ADDED: Raygui lib tooltip.
+ - ADDED: Round.
+ - ADDED: PubSub lib.
------------------------------------------------------------------------
Release: ReiLua version 0.7.0 Using Raylib 5.0 and Forked Raygui 4.0
diff --git a/devnotes b/devnotes
index 02e4f4a..5bb301e 100644
--- a/devnotes
+++ b/devnotes
@@ -3,8 +3,8 @@ Current {
Backlog {
* Raygui lib
- * Check if could remove flickering from changing draw order by making queue for order changing and only
- change them after everything is drawn.
+ * Check if could remove flickering from changing draw order by making queue for order
+ changing and only change them after everything is drawn.
* Platform desktop SDL
* Text input not working on gui. Could this be Raylib issue?
* Haptic functions.
diff --git a/docgen.lua b/docgen.lua
index 12476f9..b79d19b 100644
--- a/docgen.lua
+++ b/docgen.lua
@@ -246,6 +246,10 @@ apiFile:write( "\n> NPatchInfo = { { 0, 0, 24, 24 }, 8, 8, 8, 8, NPATCH_NINE_PAT
NPatchInfo, n-patch layout info\n\n---\n" )
apiFile:write( "\n> ModelAnimations = Userdata\n\
ModelAnimation\n\n---\n" )
+apiFile:write( "\n> AutomationEvent = Userdata\n\
+Automation event\n\n---\n" )
+apiFile:write( "\n> AutomationEventList = Userdata\n\
+Automation event list\n\n---\n" )
apiFile:write( "\n> Buffer = Buffer userdata\n\
Data buffer for C primitive types. Type should be one of the Buffer types.\n\n---\n" )
@@ -368,7 +372,6 @@ for _, src in ipairs( sourceFiles ) do
local splits = split( src, "/" )
apiFile = io.open( "../"..splits[ #splits ]..".md", "a" )
- -- apiFile = io.open( "../"..src..".md", "w" )
end
repeat
diff --git a/examples/heightmap/main.lua b/examples/heightmap/main.lua
index db03e97..91c532f 100644
--- a/examples/heightmap/main.lua
+++ b/examples/heightmap/main.lua
@@ -40,8 +40,6 @@ function RL.init()
camera:setTarget( { 0, 0, 0 } )
camera:setUp( { 0, 1, 0 } )
camera.mode = camera.MODES.ORBITAL
- -- camera.mode = camera.MODES.FREE
- -- camera.mode = camera.MODES.FIRST_PERSON
heigthImage = RL.LoadImage( RL.GetBasePath().."../resources/images/heightmap.png" )
@@ -78,7 +76,7 @@ function RL.init()
material = RL.LoadMaterialDefault()
RL.SetMaterialTexture( material, RL.MATERIAL_MAP_ALBEDO, groundTexture )
- matrix = RL.MatrixMultiply( RL.MatrixIdentity(), RL.MatrixTranslate( { -4, 0, -4 } ) )
+ matrix = RL.MatrixTranslate( { -4, 0, -4 } )
end
function RL.update( delta )
diff --git a/examples/lightmap/main.lua b/examples/lightmap/main.lua
index b7f3a93..20a2729 100644
--- a/examples/lightmap/main.lua
+++ b/examples/lightmap/main.lua
@@ -31,15 +31,12 @@ function RL.init()
camera:setTarget( { 0, 0, 0 } )
camera:setUp( { 0, 1, 0 } )
camera.mode = camera.MODES.ORBITAL
- -- camera.mode = camera.MODES.FREE
- -- camera.mode = camera.MODES.FIRST_PERSON
- local ts = PLANE_SIZE
local meshData = {
vertices = { { 0, 0, 0 }, { 0, 0, PLANE_SIZE }, { PLANE_SIZE, 0, PLANE_SIZE },
{ 0, 0, 0 }, { PLANE_SIZE, 0, PLANE_SIZE }, { PLANE_SIZE, 0, 0 } },
- texcoords = { { 0, 0 }, { 0, ts }, { ts, ts },
- { 0, 0 }, { ts, ts }, { ts, 0 } },
+ texcoords = { { 0, 0 }, { 0, PLANE_SIZE }, { PLANE_SIZE, PLANE_SIZE },
+ { 0, 0 }, { PLANE_SIZE, PLANE_SIZE }, { PLANE_SIZE, 0 } },
texcoords2 = { { 0, 0 }, { 0, 1 }, { 1, 1 },
{ 0, 0 }, { 1, 1 }, { 1, 0 } },
colors = { RL.WHITE, RL.WHITE, RL.WHITE,
@@ -80,7 +77,7 @@ function RL.init()
},
}
material = RL.CreateMaterial( materialData )
- matrix = RL.MatrixMultiply( RL.MatrixIdentity(), RL.MatrixTranslate( { -4, 0, -4 } ) )
+ matrix = RL.MatrixTranslate( { -PLANE_SIZE / 2, 0, -PLANE_SIZE / 2 } )
end
function RL.update( delta )
diff --git a/examples/raygui_extensions/main.lua b/examples/raygui_extensions/main.lua
index a7dfa15..35cf48a 100644
--- a/examples/raygui_extensions/main.lua
+++ b/examples/raygui_extensions/main.lua
@@ -79,7 +79,9 @@ local function addPropertyList()
nil,
{
properties = {
- { RL.SCROLLBAR, RL.ARROWS_VISIBLE, RL.ARROWS_VISIBLE },
+ -- { RL.SCROLLBAR, RL.ARROWS_VISIBLE, RL.ARROWS_VISIBLE },
+ { RL.LISTVIEW, RL.BORDER_COLOR_FOCUSED, RL.GuiGetStyle( RL.LISTVIEW, RL.BORDER_COLOR_NORMAL ) },
+ { RL.LISTVIEW, RL.BORDER_COLOR_PRESSED, RL.GuiGetStyle( RL.LISTVIEW, RL.BORDER_COLOR_NORMAL ) },
}
}
)
diff --git a/examples/resources/lib/color.lua b/examples/resources/lib/color.lua
index 9369a34..a508fa3 100644
--- a/examples/resources/lib/color.lua
+++ b/examples/resources/lib/color.lua
@@ -144,4 +144,13 @@ function Color:alphaBlend( dst, src, tint )
return Color:new( RL.ColorAlphaBlend( dst, src, tint ) )
end
+function Color:lerp( color, amount )
+ return Color:new(
+ RL.Lerp( self.r, color.r, amount ),
+ RL.Lerp( self.g, color.g, amount ),
+ RL.Lerp( self.b, color.b, amount ),
+ RL.Lerp( self.a, color.a, amount )
+ )
+end
+
return Color
diff --git a/examples/resources/lib/pubsub.lua b/examples/resources/lib/pubsub.lua
new file mode 100644
index 0000000..2847d92
--- /dev/null
+++ b/examples/resources/lib/pubsub.lua
@@ -0,0 +1,34 @@
+local PubSub = {}
+PubSub.__index = PubSub
+
+function PubSub:new()
+ local object = setmetatable( {}, self )
+
+ object.signals = {}
+
+ return object
+end
+
+function PubSub:add( name )
+ self.signals[ name ] = {}
+end
+
+function PubSub:subscribe( name, func )
+ table.insert( self.signals[ name ], func )
+end
+
+function PubSub:unSubscribe( name, uFunc )
+ for i, func in ipairs( self.signals[ name ] ) do
+ if func == uFunc then
+ table.remove( self.signals[ name ], i )
+ end
+ end
+end
+
+function PubSub:publish( name, ... )
+ for _, func in ipairs( self.signals[ name ] ) do
+ func( ... )
+ end
+end
+
+return PubSub
diff --git a/examples/resources/lib/utillib.lua b/examples/resources/lib/utillib.lua
index 0b54e12..73bb11c 100644
--- a/examples/resources/lib/utillib.lua
+++ b/examples/resources/lib/utillib.lua
@@ -1,5 +1,10 @@
-- Define useful global functions.
+-- For luaJit compatibility.
+if table.unpack == nil then
+ table.unpack = unpack
+end
+
local utillib = {}
function utillib.tableClone( org )
diff --git a/examples/snake/main.lua b/examples/snake/main.lua
index 3a3243f..d28901d 100644
--- a/examples/snake/main.lua
+++ b/examples/snake/main.lua
@@ -248,4 +248,6 @@ function RL.draw()
0.0,
RL.WHITE
)
+
+ RL.DrawFPS( { 20, 20 } )
end
diff --git a/examples/window/main.lua b/examples/window/main.lua
index ec2377b..77ac64c 100644
--- a/examples/window/main.lua
+++ b/examples/window/main.lua
@@ -11,10 +11,10 @@ end
function RL.update( delta )
if RL.IsKeyPressed( RL.KEY_ENTER ) then
local winSize = RL.GetScreenSize()
+ local measuredSize = RL.MeasureTextEx( RL.GetFontDefault(), text, textSize, 2 )
- textSize = RL.MeasureText( text, textSize )
textColor = RL.BLUE
- textPos = { winSize[1] / 2 - textSize[1] / 2, winSize[2] / 2 - textSize[2] / 2 }
+ textPos = { winSize[1] / 2 - measuredSize[1] / 2, winSize[2] / 2 - measuredSize[2] / 2 }
end
if RL.IsKeyPressed( RL.KEY_SPACE ) then
@@ -25,5 +25,5 @@ end
function RL.draw()
RL.ClearBackground( RL.RAYWHITE )
- RL.DrawText( text, textPos, textSize, textColor )
+ RL.DrawText( text, textPos, textSize, textColor )
end
diff --git a/include/rmath.h b/include/rmath.h
index 9dd8482..249bcce 100644
--- a/include/rmath.h
+++ b/include/rmath.h
@@ -4,6 +4,7 @@ int imin( int a, int b );
int imax( int a, int b );
/* Utils. */
+int lmathRound( lua_State* L );
int lmathClamp( lua_State* L );
int lmathLerp( lua_State* L );
int lmathNormalize( lua_State* L );
diff --git a/src/core.c b/src/core.c
index d985701..b839937 100644
--- a/src/core.c
+++ b/src/core.c
@@ -2096,7 +2096,7 @@ int lcoreGetAutomationEventListCount( lua_State* L ) {
/*
> event = RL.GetAutomationEvent( AutomationEventList list, int index )
-Get automation event from automation event list
+Get automation event from automation event list. Return as lightuserdata
- Failure return nil
- Success return AutomationEvent
@@ -2106,7 +2106,7 @@ int lcoreGetAutomationEvent( lua_State* L ) {
int index = luaL_checkinteger( L, 2 );
if ( 0 <= index && index < list->count ) {
- uluaPushAutomationEvent( L, list->events[ index ] );
+ lua_pushlightuserdata( L, &list->events[ index ] );
}
else {
TraceLog( LOG_WARNING, "GetAutomationEvent index %d out of bounds", index );
diff --git a/src/lua_core.c b/src/lua_core.c
index 0c15c18..d632897 100644
--- a/src/lua_core.c
+++ b/src/lua_core.c
@@ -1893,6 +1893,7 @@ void luaRegister() {
/* Math. */
/* Utils. */
+ assingGlobalFunction( "Round", lmathRound );
assingGlobalFunction( "Clamp", lmathClamp );
assingGlobalFunction( "Lerp", lmathLerp );
assingGlobalFunction( "Normalize", lmathNormalize );
diff --git a/src/rmath.c b/src/rmath.c
index 2b05c7e..7617d45 100644
--- a/src/rmath.c
+++ b/src/rmath.c
@@ -16,6 +16,21 @@ inline int imax( int a, int b ) {
*/
/*
+> result = RL.Round( float value )
+
+Round float value
+
+- Success return float
+*/
+int lmathRound( lua_State* L ) {
+ float value = luaL_checknumber( L, 1 );
+
+ lua_pushnumber( L, round( value ) );
+
+ return 1;
+}
+
+/*
> result = RL.Clamp( float value, float min, float max )
Clamp float value