CarmenSandiego/Assets/UdonSharp/Cameras/CameraControllerRound1.cs
Jamie Greunbaum 75f79c4959 - Added logo and camera movements to the start of a new game.
- Improved look of the location board in round 2.
- Fixed "Only Camera Capture" layer to possibly actually do that.
2026-02-16 19:59:06 -05:00

379 lines
12 KiB
C#

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 Animator _CameraAnimator;
[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;
[Space]
[SerializeField] public CameraAnchor OpeningCameraAnchor;
[SerializeField] public CameraAnchor AllPlayersViewCameraAnchor;
[SerializeField] public CameraAnchor VideoMusicClueCameraAnchor;
[SerializeField] public CameraAnchor ACMECrimenetComputerCameraAnchor;
[SerializeField] public CameraAnchor FilingCabinetCameraAnchor;
[SerializeField] public CameraAnchor ModemCameraAnchor;
[UdonSynced, FieldChangeCallback(nameof(PlayOpeningCallback))] private bool _PlayOpening = false;
[UdonSynced, FieldChangeCallback(nameof(PlayOpeningDoorwayCallback))] private bool _PlayOpeningDoorway = false;
public override void InitialiseCameras()
{
Player1CameraAnchor.AttachCamera(Player1Camera);
Player2CameraAnchor.AttachCamera(Player2Camera);
Player3CameraAnchor.AttachCamera(Player3Camera);
HostCameraAnchor.AttachCamera(HostCamera);
DefaultWideShotCameraAnchor.AttachCamera(PrimaryFocusCamera);
VideoPlayerCameraAnchor.AttachCamera(VideoPlayerCamera);
PlayOpening(false);
PlayOpeningDoorway(false);
}
public override void DeinitialiseCameras()
{
PlayOpening(false);
PlayOpeningDoorway(false);
base.DeinitialiseCameras();
}
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, _CameraAnimator.gameObject);
Networking.SetOwner(Player, OpeningCameraAnchor.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 SwitchToPrimaryFocusCamera()
{
SwitchToLiveCamera(PrimaryFocusCamera);
}
public void SwitchToVideoPlayerCamera()
{
SwitchToLiveCamera(VideoPlayerCamera);
}
public void ActivateOpeningCamera()
{
OpeningCameraAnchor.AttachCamera(PrimaryFocusCamera);
}
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 void PlayOpening(bool Play)
{
PlayOpeningCallback = Play;
RequestSerialization();
}
public void PlayOpeningDoorway(bool Play)
{
PlayOpeningDoorwayCallback = Play;
RequestSerialization();
}
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;
}
private bool PlayOpeningCallback
{
set
{
_PlayOpening = value;
_CameraAnimator.SetBool("Play Opening", _PlayOpening);
if (_PlayOpening)
{
ActivateOpeningCamera();
SwitchToPrimaryFocusCamera();
}
}
get => _PlayOpening;
}
private bool PlayOpeningDoorwayCallback
{
set
{
_PlayOpeningDoorway = value;
_CameraAnimator.SetBool("Play Opening Doorway", _PlayOpeningDoorway);
if (_PlayOpeningDoorway)
{
ActivateOpeningCamera();
SwitchToPrimaryFocusCamera();
}
}
get => _PlayOpeningDoorway;
}
}