Reference lib.
This commit is contained in:
@@ -31,6 +31,7 @@ DETAILED CHANGES:
|
|||||||
- ADDED: SetShaderValueWithBuffer and SetShaderValueVWithBuffer.
|
- ADDED: SetShaderValueWithBuffer and SetShaderValueVWithBuffer.
|
||||||
- ADDED: Gui Icons enumeration.
|
- ADDED: Gui Icons enumeration.
|
||||||
- ADDED: SwapBufferEndianness.
|
- ADDED: SwapBufferEndianness.
|
||||||
|
- ADDED: Reference lib.
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
Release: ReiLua version 0.8.0 Using Raylib 5.0 and Forked Raygui 4.0
|
Release: ReiLua version 0.8.0 Using Raylib 5.0 and Forked Raygui 4.0
|
||||||
|
|||||||
96
examples/resources/lib/reference.lua
Normal file
96
examples/resources/lib/reference.lua
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
local Reference = {}
|
||||||
|
local metatable = {
|
||||||
|
__index = Reference,
|
||||||
|
__tostring = function( r )
|
||||||
|
return tostring( r.t[ r.k ] )
|
||||||
|
end,
|
||||||
|
__add = function( r, v )
|
||||||
|
return r.t[ r.k ] + v
|
||||||
|
end,
|
||||||
|
__sub = function( r, v )
|
||||||
|
return r.t[ r.k ] - v
|
||||||
|
end,
|
||||||
|
__mul = function( r, v )
|
||||||
|
return r.t[ r.k ] * v
|
||||||
|
end,
|
||||||
|
__div = function( r, v )
|
||||||
|
return r.t[ r.k ] / v
|
||||||
|
end,
|
||||||
|
__mod = function( r, v )
|
||||||
|
return math.fmod( r.t[ r.k ], v )
|
||||||
|
end,
|
||||||
|
__pow = function( r, v )
|
||||||
|
return r.t[ r.k ] ^ v
|
||||||
|
end,
|
||||||
|
__unm = function( r )
|
||||||
|
return -r.t[ r.k ]
|
||||||
|
end,
|
||||||
|
__eq = function( r, v )
|
||||||
|
return r.t[ r.k ] == v
|
||||||
|
end,
|
||||||
|
__len = function( r )
|
||||||
|
return #r.t[ r.k ]
|
||||||
|
end,
|
||||||
|
__lt = function( r, v )
|
||||||
|
return r.t[ r.k ] < v
|
||||||
|
end,
|
||||||
|
__le = function( r, v )
|
||||||
|
return r.t[ r.k ] <= v
|
||||||
|
end,
|
||||||
|
__concat = function( a, b )
|
||||||
|
return tostring( a )..tostring( b )
|
||||||
|
end,
|
||||||
|
__call = function( r, ... )
|
||||||
|
return r.t[ r.k ]( ... )
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Table and key. Note that k should be name of the variable so the type must be string.
|
||||||
|
function Reference:new( t, k )
|
||||||
|
local object = setmetatable( {}, metatable )
|
||||||
|
|
||||||
|
object.t = t
|
||||||
|
object.k = k
|
||||||
|
|
||||||
|
return object
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Set new reference. Table and key. Note that k should be name of the variable so the type must be string.
|
||||||
|
function Reference:ref( t, k )
|
||||||
|
self.t = t
|
||||||
|
self.k = k
|
||||||
|
end
|
||||||
|
|
||||||
|
function Reference:set( v )
|
||||||
|
self.t[ self.k ] = v
|
||||||
|
end
|
||||||
|
|
||||||
|
function Reference:get()
|
||||||
|
return self.t[ self.k ]
|
||||||
|
end
|
||||||
|
|
||||||
|
function Reference:unpack()
|
||||||
|
return self.t, self.k
|
||||||
|
end
|
||||||
|
|
||||||
|
function Reference:clone()
|
||||||
|
return Reference:new( self.t, self.k )
|
||||||
|
end
|
||||||
|
|
||||||
|
function Reference:addEq( v )
|
||||||
|
self.t[ self.k ] = self.t[ self.k ] + v
|
||||||
|
end
|
||||||
|
|
||||||
|
function Reference:subEq( v )
|
||||||
|
self.t[ self.k ] = self.t[ self.k ] - v
|
||||||
|
end
|
||||||
|
|
||||||
|
function Reference:mulEq( v )
|
||||||
|
self.t[ self.k ] = self.t[ self.k ] * v
|
||||||
|
end
|
||||||
|
|
||||||
|
function Reference:divEq( v )
|
||||||
|
self.t[ self.k ] = self.t[ self.k ] / v
|
||||||
|
end
|
||||||
|
|
||||||
|
return Reference
|
||||||
Reference in New Issue
Block a user