MatrixPOP
Jump to navigation
Jump to search
This class allows you to handle matrixes without using MTA's OOP functions
This class is called POP because it doesn't use any OOP functions while keeping Lua's class structure.
Syntax
MatrixPOP MatrixPOP( element eheElement )
Required Arguments
Returns
Returns a matrix class
Returns false if the element is not streamed in, and not a vehicle, ped or object.
Code
MatrixPOP = setmetatable({},{ __metatable = 'MatrixPOP', __call = function(self,ply) local matrixObj = {} setmetatable(matrixObj, self) self.__index = self if not isElement(ply) or ( getElementType(ply) ~= 'player' and getElementType(ply) ~= 'vehicle' and getElementType(ply) ~= 'object' ) then return false end matrixObj.matrix = getElementMatrix(ply) matrixObj.rotation = { getElementRotation(ply) } return matrixObj end }) function MatrixPOP:getRotation() if not self then return false end return Vector3(self.rotation[1],self.rotation[2],self.rotation[3]) end function MatrixPOP:getLeft() if not self then return false end local matrix = self.matrix[1] return Vector4(matrix[1], matrix[2], matrix[3], 1) end function MatrixPOP:getForward() if not self then return false end local matrix = self.matrix[2] return Vector4(matrix[1], matrix[2], matrix[3], 1) end function MatrixPOP:getUp() if not self then return false end local matrix = self.matrix[3] return Vector4(matrix[1], matrix[2], matrix[3], 1) end function MatrixPOP:getPosition() if not self then return false end local matrix = self.matrix[4] return Vector4(matrix[1], matrix[2], matrix[3], 1) end function MatrixPOP:__tostring() local matrix = self.matrix local m1 = matrix[1] local m2 = matrix[2] local m3 = matrix[3] local m4 = matrix[4] m1 = ('{ %s, %s, %s }'):format(m1[1],m1[2],m1[3]) m2 = ('{ %s, %s, %s }'):format(m2[1],m2[2],m2[3]) m3 = ('{ %s, %s, %s }'):format(m3[1],m3[2],m3[3]) m4 = ('{ %s, %s, %s }'):format(m4[1],m4[2],m4[3]) return ('MatrixPOP: {\n%s,\n%s,\n%s,\n%s\n}'):format(m1,m2,m3,m4) end collectgarbage('setpause',100)
Example
Transform player's matrix into MatrixPOP
Click to collapse [-]
ExampleaddEventHandler('onPlayerJoin',root,function() local matrix = MatrixPOP(source) local position = matrix:getPosition() outputChatBox(('Your coordinates are: %s, %s, %s'):format(position.x, position.y, position.z) end)
See Also
- Singleton » This class allows to restrict the instantiation of a specific class to one object.
- CThread » This class represents a simple coroutine manager which can be used to limit method calls / loop.
- Importer » This class make easy to use exported functions.
- Observable » Observable variables. Call function on variable value change.
- MatrixPOP » This class allows to use simple matrix without using MTA's OOP functions