Files
ox_lib/imports/marker/client.lua
Sergio f59beb2af6 feat(imports/marker): Added invert property (#4)
MarkerType alias was replaced for an enum.
The type property in MarkerProps class is now optional, MarkerType or an integer (UpsideDownCone if missing).
The properties inside color are now defined as integers.
Added invert property, documented by CFX as drawOnEnts.
Added marker_mt metatable that stores default properties and draw method.

Signed-off-by: Sergio <89666307+feelfreetofee@users.noreply.github.com>
2025-05-04 17:59:18 +02:00

117 lines
2.8 KiB
Lua

--[[
https://github.com/overextended/ox_lib
This file is licensed under LGPL-3.0 or higher <https://www.gnu.org/licenses/lgpl-3.0.en.html>
Copyright © 2025 Linden <https://github.com/thelindat>
]]
---@diagnostic disable: param-type-mismatch
lib.marker = {}
---@enum (key) MarkerType
local markerTypes = {
UpsideDownCone = 0,
VerticalCylinder = 1,
ThickChevronUp = 2,
ThinChevronUp = 3,
CheckeredFlagRect = 4,
CheckeredFlagCircle = 5,
VerticleCircle = 6,
PlaneModel = 7,
LostMCTransparent = 8,
LostMC = 9,
Number0 = 10,
Number1 = 11,
Number2 = 12,
Number3 = 13,
Number4 = 14,
Number5 = 15,
Number6 = 16,
Number7 = 17,
Number8 = 18,
Number9 = 19,
ChevronUpx1 = 20,
ChevronUpx2 = 21,
ChevronUpx3 = 22,
HorizontalCircleFat = 23,
ReplayIcon = 24,
HorizontalCircleSkinny = 25,
HorizontalCircleSkinny_Arrow = 26,
HorizontalSplitArrowCircle = 27,
DebugSphere = 28,
DollarSign = 29,
HorizontalBars = 30,
WolfHead = 31,
QuestionMark = 32,
PlaneSymbol = 33,
HelicopterSymbol = 34,
BoatSymbol = 35,
CarSymbol = 36,
MotorcycleSymbol = 37,
BikeSymbol = 38,
TruckSymbol = 39,
ParachuteSymbol = 40,
Unknown41 = 41,
SawbladeSymbol = 42,
Unknown43 = 43,
}
---@class MarkerProps
---@field type? MarkerType | integer
---@field coords { x: number, y: number, z: number }
---@field width? number
---@field height? number
---@field color? { r: integer, g: integer, b: integer, a: integer }
---@field rotation? { x: number, y: number, z: number }
---@field direction? { x: number, y: number, z: number }
---@field bobUpAndDown? boolean
---@field faceCamera? boolean
---@field rotate? boolean
---@field textureDict? string
---@field textureName? string
---@field invert? boolean
local vector3_zero = vector3(0, 0, 0)
local marker_mt = {
type = 0,
width = 2.,
height = 1.,
color = {r = 255, g = 100, b = 0, a = 100},
rotation = vector3_zero,
direction = vector3_zero,
bobUpAndDown = false,
faceCamera = false,
rotate = false,
invert = false,
}
marker_mt.__index = marker_mt
function marker_mt:draw()
DrawMarker(
self.type,
self.coords.x, self.coords.y, self.coords.z,
self.direction.x, self.direction.y, self.direction.z,
self.rotation.x, self.rotation.y, self.rotation.z,
self.width, self.width, self.height,
self.color.r, self.color.g, self.color.b, self.color.a,
self.bobUpAndDown, self.faceCamera, 2, self.rotate, self.textureDict, self.textureName, self.invert)
end
---@param options MarkerProps
function lib.marker.new(options)
options.type =
type(options.type) == 'string' and markerTypes[options.type]
or type(options.type) == 'number' and options.type or nil
local self = setmetatable(options, marker_mt)
self.width += .0
self.height += .0
return self
end
return lib.marker