mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-17 05:56:02 +01:00
(Beta) Fixes for multiframework support
This commit is contained in:
@@ -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)
|
||||
]]
|
||||
Reference in New Issue
Block a user