function SyncCamDataRead takes nothing returns nothing
if BlzGetTriggerSyncPrefix() == "SyncCamX" then
set udg_PlayerCamX[GetConvertedPlayerId(GetTriggerPlayer())] = S2R(BlzGetTriggerSyncData())
elseif BlzGetTriggerSyncPrefix() == "SyncCamY" then
set udg_PlayerCamY[GetConvertedPlayerId(GetTriggerPlayer())] = S2R(BlzGetTriggerSyncData())
else
set udg_PlayerCamDist[GetConvertedPlayerId(GetTriggerPlayer())] = S2R(BlzGetTriggerSyncData())
endif
endfunction
function SyncCamDataSend takes nothing returns nothing
call BlzSendSyncData("SyncCamX", R2S(GetCameraTargetPositionX()))
call BlzSendSyncData("SyncCamY", R2S(GetCameraTargetPositionY()))
call BlzSendSyncData("SyncCamDist", R2S(GetCameraEyePositionZ()))
endfunction
function SyncCamDataInit takes nothing returns nothing
local integer playerIndex = 0
local trigger trig = CreateTrigger()
call TriggerAddAction(trig, function SyncCamDataRead)
loop
call BlzTriggerRegisterPlayerSyncEvent(trig, Player(playerIndex), "SyncCamX", false)
call BlzTriggerRegisterPlayerSyncEvent(trig, Player(playerIndex), "SyncCamY", false)
call BlzTriggerRegisterPlayerSyncEvent(trig, Player(playerIndex), "SyncCamDist", false)
set playerIndex = playerIndex + 1
exitwhen playerIndex == bj_MAX_PLAYER_SLOTS
endloop
call TimerStart(CreateTimer(), 0.1, true, function SyncCamDataSend) // Adjust interval
endfunction