Untitled
--!Type(ClientAndServer) --!SerializeField local cameras : {GameObject} = nil local CameraManager = {} local cameraRequestEvent = Event.new("CameraRequest") local cameraResponseEvent = Event.new("CameraResponse") -- Number of cameras to use for random switching local cameraCount = 3 -- Method to set the active camera function CameraManager.SetActiveCamera(index: number) for i, camera in ipairs(cameras) do if camera then camera:SetActive(i == index) end end -- Send the active camera index to the server CameraManager.SendActiveCameraIndexToServer(index) end -- Method to send the active camera index to the server function CameraManager.SendActiveCameraIndexToServer(index: number) -- Fire an event to notify the server cameraRequestEvent:Fire(index) end -- Method to randomly change the active camera every 10 seconds with a delay function CameraManager.StartRandomCameraSwitching() local function switchCamera() if cameraCount > 0 then local randomIndex = math.random(1, cameraCount) Timer.After(0.1, function() -- Add a 0.1 second delay CameraManager.SetActiveCamera(randomIndex) end) else print("No cameras available to switch.") end end -- Start the timer to switch cameras every 10 seconds Timer.Every(10, switchCamera) end -- Server-side logic function CameraManager:serverawake() -- Listen for camera request events from clients cameraRequestEvent:Connect(function(index) -- Set the active camera index and notify all clients ServerCameraManager.SetActiveCameraIndex(index) cameraResponseEvent:FireAllClients(index) end) -- Initialize the random camera switching only in server awake CameraManager.StartRandomCameraSwitching() end ServerCameraManager = {} -- Variable to store the active camera index ServerCameraManager.activeCameraIndex = 1 -- Method to set the active camera index and notify clients function ServerCameraManager.SetActiveCameraIndex(index: number) ServerCameraManager.activeCameraIndex = index ServerCameraManager.NotifyClients(index) end -- Method to notify clients about the active camera index function ServerCameraManager.NotifyClients(index: number) -- Fire an event to notify all clients cameraResponseEvent:FireAllClients(index) end return CameraManager
Leave a Comment