(Beta) Fixes for multiframework support

This commit is contained in:
Jim Shield
2025-03-01 12:58:43 +00:00
committed by GitHub
parent f9812a689e
commit 8eb98bff29
39 changed files with 7372 additions and 7188 deletions

View File

@@ -1,77 +1,77 @@
local cacheOrigScale = {}
local initialOffset = {}
--- Sets the scale of an entity.
---
--- This function scales an entity by adjusting its forward, right, and up vectors.
--- It also applies an initial offset to maintain the entity's position relative to the ground.
---
---@param entity number The entity ID to scale.
---@param scale number The scale factor to apply to the entity.
---
---@usage
--- ```lua
--- -- Scale an entity to twice its original size
--- SetEntityScale(entityId, 2.0)
--- ```
function SetEntityScale(entity, scale)
local forward, right, up = GetEntityMatrix(entity)
if not cacheOrigScale[entity] then
cacheOrigScale[entity] = {
forward = forward,
right = right,
up = up
}
end
local minDim, maxDim = GetModelDimensions(GetEntityModel(entity))
local originalHeight = maxDim.z - minDim.z
local newHeight = originalHeight * scale
initialOffset[entity] = (newHeight - originalHeight) / 3
local forwardTemp = cacheOrigScale[entity].forward * scale
local rightTemp = cacheOrigScale[entity].right * scale
local upTemp = cacheOrigScale[entity].up * scale
-- Apply the initial offset to the current position
local currentPosition = GetEntityCoords(entity)
local newPosition = vector3(currentPosition.x, currentPosition.y, currentPosition.z + initialOffset[entity])
SetEntityMatrix(entity, forwardTemp, rightTemp, upTemp, currentPosition)
end
--- Resets the scale of an entity to its original values.
---
--- This function restores an entity's original forward, right, and up vectors,
--- effectively undoing any scaling applied by `SetEntityScale`.
---
---@param entity number The entity ID to reset.
---
---@usage
--- ```lua
--- -- Reset the scale of an entity
--- resetScale(entityId)
--- ```
function resetScale(entity)
if cacheOrigScale[entity] then
SetEntityMatrix(entity, cacheOrigScale[entity].forward, cacheOrigScale[entity].right, cacheOrigScale[entity].up, GetEntityCoords(entity))
cacheOrigScale[entity] = nil
end
end
--[[
CreateThread(function()
-- Example usage:
-- local prop = makeProp({prop = "v_res_r_figcat", coords = vec4(-1025.88, -1417.58, 5.43, 76.30)}, false, false)
-- local ped = makePed(`a_c_cat_01`, vec4(-1022.42, -1429.97, 13.79, 68.36), true, false, nil)
-- SetEntityCollision(prop, false, true)
SetEntityScale(prop, 12)
--[[CreateThread(function()
while true do
Wait(1000)
resetScale(prop)
Wait(1000)
end
end)
end)
local cacheOrigScale = {}
local initialOffset = {}
--- Sets the scale of an entity.
---
--- This function scales an entity by adjusting its forward, right, and up vectors.
--- It also applies an initial offset to maintain the entity's position relative to the ground.
---
---@param entity number The entity ID to scale.
---@param scale number The scale factor to apply to the entity.
---
---@usage
--- ```lua
--- -- Scale an entity to twice its original size
--- SetEntityScale(entityId, 2.0)
--- ```
function SetEntityScale(entity, scale)
local forward, right, up = GetEntityMatrix(entity)
if not cacheOrigScale[entity] then
cacheOrigScale[entity] = {
forward = forward,
right = right,
up = up
}
end
local minDim, maxDim = GetModelDimensions(GetEntityModel(entity))
local originalHeight = maxDim.z - minDim.z
local newHeight = originalHeight * scale
initialOffset[entity] = (newHeight - originalHeight) / 3
local forwardTemp = cacheOrigScale[entity].forward * scale
local rightTemp = cacheOrigScale[entity].right * scale
local upTemp = cacheOrigScale[entity].up * scale
-- Apply the initial offset to the current position
local currentPosition = GetEntityCoords(entity)
local newPosition = vector3(currentPosition.x, currentPosition.y, currentPosition.z + initialOffset[entity])
SetEntityMatrix(entity, forwardTemp, rightTemp, upTemp, currentPosition)
end
--- Resets the scale of an entity to its original values.
---
--- This function restores an entity's original forward, right, and up vectors,
--- effectively undoing any scaling applied by `SetEntityScale`.
---
---@param entity number The entity ID to reset.
---
---@usage
--- ```lua
--- -- Reset the scale of an entity
--- resetScale(entityId)
--- ```
function resetScale(entity)
if cacheOrigScale[entity] then
SetEntityMatrix(entity, cacheOrigScale[entity].forward, cacheOrigScale[entity].right, cacheOrigScale[entity].up, GetEntityCoords(entity))
cacheOrigScale[entity] = nil
end
end
--[[
CreateThread(function()
-- Example usage:
-- local prop = makeProp({prop = "v_res_r_figcat", coords = vec4(-1025.88, -1417.58, 5.43, 76.30)}, false, false)
-- local ped = makePed(`a_c_cat_01`, vec4(-1022.42, -1429.97, 13.79, 68.36), true, false, nil)
-- SetEntityCollision(prop, false, true)
SetEntityScale(prop, 12)
--[[CreateThread(function()
while true do
Wait(1000)
resetScale(prop)
Wait(1000)
end
end)
end)
]]