2025-03-01 12:58:43 +00:00
|
|
|
--- Creates a temporary camera at a specified position, pointing towards given coordinates.
|
|
|
|
|
--
|
|
|
|
|
-- This function creates a camera at a position relative to an entity or at a specified position and orients it to look at the target coordinates.
|
|
|
|
|
-- The camera is only created if `Config.Crafting.craftCam` is enabled in the configuration.
|
|
|
|
|
--
|
|
|
|
|
---@param ent entityId|coords The base position for the camera. Can be an entity handle or a `vector3` position.
|
|
|
|
|
-- If `ent` is an entity, the camera position is calculated as an offset from the entity's position using `GetOffsetFromEntityInWorldCoords`.
|
|
|
|
|
-- If `ent` is a `vector3`, it is used directly as the camera's position.
|
|
|
|
|
--
|
|
|
|
|
---@param coords vector3 The target `vector3` coordinates that the camera will point at.
|
|
|
|
|
--
|
|
|
|
|
---@return cam camID The handle of the created camera, or `nil` if the camera was not created (e.g., if `Config.Crafting.craftCam` is `false`).
|
|
|
|
|
--
|
|
|
|
|
---@usage
|
|
|
|
|
-- ```lua
|
|
|
|
|
-- local cam = createTempCam(entity, targetCoords)
|
|
|
|
|
-- ```
|
|
|
|
|
function createTempCam(ent, coords)
|
|
|
|
|
local cam = nil
|
|
|
|
|
if Config.Crafting.craftCam then
|
|
|
|
|
if debugMode then
|
|
|
|
|
triggerNotify(nil, "ModCam Created", "success")
|
|
|
|
|
end
|
|
|
|
|
local camCoords = nil
|
2025-03-26 21:43:48 +00:00
|
|
|
local pointCoords = nil
|
2025-03-01 12:58:43 +00:00
|
|
|
if type(ent) ~= "vector3" then
|
|
|
|
|
camCoords = GetOffsetFromEntityInWorldCoords(ent, 1.0, -0.3, 0.8)
|
|
|
|
|
else
|
|
|
|
|
camCoords = ent
|
|
|
|
|
end
|
2025-03-26 21:43:48 +00:00
|
|
|
|
2025-03-01 12:58:43 +00:00
|
|
|
cam = CreateCamWithParams("DEFAULT_SCRIPTED_CAMERA", camCoords.x, camCoords.y, camCoords.z + 0.5, 1.0, 0.0, 0.0, 60.00, false, 0)
|
2025-03-26 21:43:48 +00:00
|
|
|
|
|
|
|
|
if type(coords) == "number" then
|
|
|
|
|
SetCamCoord(cam, GetCamCoord(cam) + vec3(0, 0, 1.0))
|
|
|
|
|
PointCamAtEntity(cam, coords)
|
|
|
|
|
else
|
|
|
|
|
PointCamAtCoord(cam, coords)
|
|
|
|
|
end
|
2025-03-01 12:58:43 +00:00
|
|
|
end
|
|
|
|
|
return cam
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--- Activates and starts rendering the temporary camera.
|
|
|
|
|
--
|
|
|
|
|
-- This function sets the specified camera as active and begins rendering it with a smooth transition.
|
|
|
|
|
-- The camera is only activated if `Config.Crafting.craftCam` is enabled in the configuration.
|
|
|
|
|
--
|
|
|
|
|
---@param cam camID The handle of the camera to activate and render.
|
|
|
|
|
--
|
|
|
|
|
---@usage
|
|
|
|
|
-- ```lua
|
|
|
|
|
-- startTempCam(cam)
|
|
|
|
|
-- ```
|
|
|
|
|
function startTempCam(cam)
|
|
|
|
|
if Config.Crafting.craftCam then
|
|
|
|
|
SetCamActive(cam, true)
|
|
|
|
|
RenderScriptCams(true, true, 1000, true, true)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--- Deactivates the temporary camera and stops rendering.
|
|
|
|
|
--
|
|
|
|
|
-- This function waits for one second, then stops rendering script cameras and destroys all cameras.
|
|
|
|
|
-- The delay allows for any transitions or animations to complete.
|
|
|
|
|
--
|
|
|
|
|
-- The camera is only deactivated if `Config.Crafting.craftCam` is enabled in the configuration.
|
|
|
|
|
--
|
|
|
|
|
---@usage
|
|
|
|
|
-- ```lua
|
|
|
|
|
-- stopTempCam()
|
|
|
|
|
-- ```
|
|
|
|
|
function stopTempCam()
|
|
|
|
|
if Config.Crafting.craftCam then
|
|
|
|
|
CreateThread(function()
|
|
|
|
|
Wait(1000)
|
|
|
|
|
RenderScriptCams(false, true, 500, true, true)
|
|
|
|
|
DestroyAllCams()
|
|
|
|
|
end)
|
|
|
|
|
end
|
2025-02-21 13:47:15 +00:00
|
|
|
end
|