49 lines
2.2 KiB
Lua
49 lines
2.2 KiB
Lua
--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
|
|
local ____exports = {}
|
|
--- Серверный спавн карты `light_fix` в центре мира по X/Y, якорь Z = LIGHT_FIX_SPAWN_Z под землёй.
|
|
-- Один экземпляр на матч: повторные вызовы снимают предыдущий spawn group и спавнят снова.
|
|
local function ceilMapNumber(____, value)
|
|
return value + (64 - value % 64) % 64
|
|
end
|
|
--- Опциональная точка на карте маппера (если есть — X/Y, со снапом по сетке; Z задаётся отдельно).
|
|
local LIGHT_FIX_WORLD_ENTITY = "point_light_fix_world_center"
|
|
--- Высота якоря под картой: не видно игрокам, логика освещения может подтягиваться.
|
|
local LIGHT_FIX_SPAWN_Z = -1000
|
|
local lightFixSpawnGroupHandle
|
|
--- Центр мира по границам карты + снап 64 по X/Y; Z под землёй.
|
|
local function getLightFixSpawnOrigin(self)
|
|
local named = Entities:FindByName(nil, LIGHT_FIX_WORLD_ENTITY)
|
|
if named and named.GetAbsOrigin then
|
|
local o = named:GetAbsOrigin()
|
|
return Vector(
|
|
ceilMapNumber(nil, o.x),
|
|
ceilMapNumber(nil, o.y),
|
|
LIGHT_FIX_SPAWN_Z
|
|
)
|
|
end
|
|
local cx = (GetWorldMinX() + GetWorldMaxX()) * 0.5
|
|
local cy = (GetWorldMinY() + GetWorldMaxY()) * 0.5
|
|
local x = ceilMapNumber(nil, cx)
|
|
local y = ceilMapNumber(nil, cy)
|
|
return Vector(x, y, LIGHT_FIX_SPAWN_Z)
|
|
end
|
|
--- Спавнит `light_fix` в центре мира (коллбеки пустые — полный цикл загрузки).
|
|
-- `playerId` оставлен в сигнатуре для вызывающего кода; позиция не зависит от игрока.
|
|
function ____exports.spawnLightFixForPlayer(self, _playerId)
|
|
if not IsServer() then
|
|
return
|
|
end
|
|
local origin = getLightFixSpawnOrigin(nil)
|
|
lightFixSpawnGroupHandle = DOTA_SpawnMapAtPosition(
|
|
"light_fix",
|
|
origin,
|
|
false,
|
|
function()
|
|
end,
|
|
function()
|
|
end,
|
|
nil
|
|
)
|
|
end
|
|
return ____exports
|