using UdonSharp; using UnityEngine; using VRC.SDKBase; using VRC.Udon; [UdonBehaviourSyncMode(BehaviourSyncMode.Manual)] public class CameraControllerRound1 : CameraControllerBase { [Space] [SerializeField] public Camera Player1Camera; [SerializeField] public Camera Player2Camera; [SerializeField] public Camera Player3Camera; [SerializeField] public Camera HostCamera; [SerializeField] public Camera PrimaryFocusCamera; [SerializeField] public Camera VideoPlayerCamera; [Space] [SerializeField] public CameraTimerSwitchTrigger HostCameraTrigger; [Space] [SerializeField] public CameraTimedSwitcher HostAndAllPlayersTimerToggle; [SerializeField] public CameraTimedSwitcher HostAndIndividualPlayersTimerToggle; [SerializeField] public CameraTimedSwitcher MapToHostAndAllPlayersTimerToggle; [SerializeField] public CameraTimedSwitcher LightningStartToHostAndAllPlayersTimerToggle; [SerializeField] public CameraTimedSwitcher CorrectToHostAndAllPlayersTimerToggle; [SerializeField] public CameraTimedSwitcher IncorrectToHostAndAllPlayersTimerToggle; [SerializeField] public CameraTimedSwitcher ThinkAboutItTimerToggle; [SerializeField] public CameraTimedSwitcher BuzzedInPlayerTimerToggle; [Space] [SerializeField] public CameraAnchor Player1CameraAnchor; [SerializeField] public CameraAnchor Player2CameraAnchor; [SerializeField] public CameraAnchor Player3CameraAnchor; [SerializeField] public CameraAnchor HostCameraAnchor; [SerializeField] public CameraAnchor DefaultWideShotCameraAnchor; [SerializeField] public CameraAnchor VideoPlayerCameraAnchor; [SerializeField] public CameraAnchor AllPlayersViewCameraAnchor; [SerializeField] public CameraAnchor VideoMusicClueCameraAnchor; [SerializeField] public CameraAnchor ACMECrimenetComputerCameraAnchor; [SerializeField] public CameraAnchor FilingCabinetCameraAnchor; [SerializeField] public CameraAnchor ModemCameraAnchor; public override void InitialiseCameras() { Player1CameraAnchor.AttachCamera(Player1Camera); Player2CameraAnchor.AttachCamera(Player2Camera); Player3CameraAnchor.AttachCamera(Player3Camera); HostCameraAnchor.AttachCamera(HostCamera); DefaultWideShotCameraAnchor.AttachCamera(PrimaryFocusCamera); VideoPlayerCameraAnchor.AttachCamera(VideoPlayerCamera); } public override void OnOwnershipTransferred(VRCPlayerApi Player) { Networking.SetOwner(Player, Player1Camera.gameObject); Networking.SetOwner(Player, Player2Camera.gameObject); Networking.SetOwner(Player, Player3Camera.gameObject); Networking.SetOwner(Player, HostCamera.gameObject); Networking.SetOwner(Player, PrimaryFocusCamera.gameObject); Networking.SetOwner(Player, VideoPlayerCamera.gameObject); Networking.SetOwner(Player, HostCameraTrigger.gameObject); Networking.SetOwner(Player, HostAndAllPlayersTimerToggle.gameObject); Networking.SetOwner(Player, HostAndIndividualPlayersTimerToggle.gameObject); Networking.SetOwner(Player, MapToHostAndAllPlayersTimerToggle.gameObject); Networking.SetOwner(Player, LightningStartToHostAndAllPlayersTimerToggle.gameObject); Networking.SetOwner(Player, CorrectToHostAndAllPlayersTimerToggle.gameObject); Networking.SetOwner(Player, IncorrectToHostAndAllPlayersTimerToggle.gameObject); Networking.SetOwner(Player, ThinkAboutItTimerToggle.gameObject); Networking.SetOwner(Player, BuzzedInPlayerTimerToggle.gameObject); Networking.SetOwner(Player, Player1CameraAnchor.gameObject); Networking.SetOwner(Player, Player2CameraAnchor.gameObject); Networking.SetOwner(Player, Player3CameraAnchor.gameObject); Networking.SetOwner(Player, HostCameraAnchor.gameObject); Networking.SetOwner(Player, DefaultWideShotCameraAnchor.gameObject); Networking.SetOwner(Player, VideoPlayerCameraAnchor.gameObject); Networking.SetOwner(Player, AllPlayersViewCameraAnchor.gameObject); Networking.SetOwner(Player, VideoMusicClueCameraAnchor.gameObject); Networking.SetOwner(Player, ACMECrimenetComputerCameraAnchor.gameObject); Networking.SetOwner(Player, FilingCabinetCameraAnchor.gameObject); Networking.SetOwner(Player, ModemCameraAnchor.gameObject); base.OnOwnershipTransferred(Player); } public void SwitchToPlayer1Camera() { SwitchToLiveCamera(Player1Camera); } public void SwitchToPlayer2Camera() { SwitchToLiveCamera(Player2Camera); } public void SwitchToPlayer3Camera() { SwitchToLiveCamera(Player3Camera); } public void SwitchToHostCamera() { SwitchToLiveCamera(HostCamera); } public void SwitchToVideoPlayerCamera() { SwitchToLiveCamera(VideoPlayerCamera); } public void ActivateWideShotCamera() { DefaultWideShotCameraAnchor.AttachCamera(PrimaryFocusCamera); } public void SwitchToWideShotCamera() { ActivateWideShotCamera(); SwitchToLiveCamera(PrimaryFocusCamera); } public void ActivateVideoMusicClueCamera() { VideoMusicClueCameraAnchor.AttachCamera(PrimaryFocusCamera); } public void SwitchToVideoMusicClueCamera() { ActivateVideoMusicClueCamera(); SwitchToLiveCamera(PrimaryFocusCamera); } public void ActivateACMECrimenetComputerCamera() { ACMECrimenetComputerCameraAnchor.AttachCamera(PrimaryFocusCamera); } public void SwitchToACMECrimenetComputerCamera() { ActivateACMECrimenetComputerCamera(); SwitchToLiveCamera(PrimaryFocusCamera); } public void ActivateFilingCabinetCamera() { FilingCabinetCameraAnchor.AttachCamera(PrimaryFocusCamera); } public void SwitchToFilingCabinetCamera() { ActivateFilingCabinetCamera(); SwitchToLiveCamera(PrimaryFocusCamera); } public void ActivateAllPlayersCamera() { AllPlayersViewCameraAnchor.AttachCamera(PrimaryFocusCamera); } public void SwitchToAllPlayersCamera() { ActivateAllPlayersCamera(); SwitchToLiveCamera(PrimaryFocusCamera); } public void ActivateModemCamera() { ModemCameraAnchor.AttachCamera(PrimaryFocusCamera); } public void SwitchToModemCamera() { ActivateModemCamera(); SwitchToLiveCamera(PrimaryFocusCamera); } public void ActivateHostAllPlayersCameraSwitcher() { ActivateAllPlayersCamera(); HostAndAllPlayersTimerToggle.Activate = true; HostAndIndividualPlayersTimerToggle.Activate = false; MapToHostAndAllPlayersTimerToggle.Activate = false; LightningStartToHostAndAllPlayersTimerToggle.Activate = false; CorrectToHostAndAllPlayersTimerToggle.Activate = false; IncorrectToHostAndAllPlayersTimerToggle.Activate = false; ThinkAboutItTimerToggle.Activate = false; BuzzedInPlayerTimerToggle.Activate = false; } public void ActivateHostIndividualPlayersCameraSwitcher() { HostAndAllPlayersTimerToggle.Activate = false; HostAndIndividualPlayersTimerToggle.Activate = true; MapToHostAndAllPlayersTimerToggle.Activate = false; LightningStartToHostAndAllPlayersTimerToggle.Activate = false; CorrectToHostAndAllPlayersTimerToggle.Activate = false; IncorrectToHostAndAllPlayersTimerToggle.Activate = false; ThinkAboutItTimerToggle.Activate = false; BuzzedInPlayerTimerToggle.Activate = false; } public void ActivateMapToHostAllPlayersCameraSwitcher() { HostAndAllPlayersTimerToggle.Activate = false; HostAndIndividualPlayersTimerToggle.Activate = false; MapToHostAndAllPlayersTimerToggle.Activate = true; LightningStartToHostAndAllPlayersTimerToggle.Activate = false; CorrectToHostAndAllPlayersTimerToggle.Activate = false; IncorrectToHostAndAllPlayersTimerToggle.Activate = false; ThinkAboutItTimerToggle.Activate = false; BuzzedInPlayerTimerToggle.Activate = false; } public void ActivateLightningStartToHostAllPlayersCameraSwitcher() { ActivateWideShotCamera(); HostAndAllPlayersTimerToggle.Activate = false; HostAndIndividualPlayersTimerToggle.Activate = false; MapToHostAndAllPlayersTimerToggle.Activate = false; LightningStartToHostAndAllPlayersTimerToggle.Activate = true; CorrectToHostAndAllPlayersTimerToggle.Activate = false; IncorrectToHostAndAllPlayersTimerToggle.Activate = false; ThinkAboutItTimerToggle.Activate = false; BuzzedInPlayerTimerToggle.Activate = false; } public void ActivateCorrectAnswerToHostAllPlayersCameraSwitcher() { HostAndAllPlayersTimerToggle.Activate = false; HostAndIndividualPlayersTimerToggle.Activate = false; MapToHostAndAllPlayersTimerToggle.Activate = false; LightningStartToHostAndAllPlayersTimerToggle.Activate = false; CorrectToHostAndAllPlayersTimerToggle.Activate = true; IncorrectToHostAndAllPlayersTimerToggle.Activate = false; ThinkAboutItTimerToggle.Activate = false; BuzzedInPlayerTimerToggle.Activate = false; } public void ActivateIncorrectAnswerToHostAllPlayersCameraSwitcher() { HostAndAllPlayersTimerToggle.Activate = false; HostAndIndividualPlayersTimerToggle.Activate = false; MapToHostAndAllPlayersTimerToggle.Activate = false; LightningStartToHostAndAllPlayersTimerToggle.Activate = false; CorrectToHostAndAllPlayersTimerToggle.Activate = false; IncorrectToHostAndAllPlayersTimerToggle.Activate = true; ThinkAboutItTimerToggle.Activate = false; BuzzedInPlayerTimerToggle.Activate = false; } public void ActivateThinkAboutItCameraSwitcher() { HostAndAllPlayersTimerToggle.Activate = false; HostAndIndividualPlayersTimerToggle.Activate = false; MapToHostAndAllPlayersTimerToggle.Activate = false; LightningStartToHostAndAllPlayersTimerToggle.Activate = false; CorrectToHostAndAllPlayersTimerToggle.Activate = false; IncorrectToHostAndAllPlayersTimerToggle.Activate = false; ThinkAboutItTimerToggle.Activate = true; BuzzedInPlayerTimerToggle.Activate = false; } public void ActivateBuzzedInPlayerCameraSwitcher() { HostAndAllPlayersTimerToggle.Activate = false; HostAndIndividualPlayersTimerToggle.Activate = false; MapToHostAndAllPlayersTimerToggle.Activate = false; LightningStartToHostAndAllPlayersTimerToggle.Activate = false; CorrectToHostAndAllPlayersTimerToggle.Activate = false; IncorrectToHostAndAllPlayersTimerToggle.Activate = false; ThinkAboutItTimerToggle.Activate = false; BuzzedInPlayerTimerToggle.Activate = true; } public void ActivateHostCameraTrigger() { HostCameraTrigger.gameObject.SetActive(true); } public void DeactivateHostCameraTrigger() { HostCameraTrigger.gameObject.SetActive(false); } public override void DisableAllTriggers() { HostCameraTrigger.gameObject.SetActive(false); } public override void DisableAllSwitchers() { HostAndAllPlayersTimerToggle.Activate = false; HostAndIndividualPlayersTimerToggle.Activate = false; MapToHostAndAllPlayersTimerToggle.Activate = false; LightningStartToHostAndAllPlayersTimerToggle.Activate = false; CorrectToHostAndAllPlayersTimerToggle.Activate = false; IncorrectToHostAndAllPlayersTimerToggle.Activate = false; ThinkAboutItTimerToggle.Activate = false; BuzzedInPlayerTimerToggle.Activate = false; } }