- Added extra switchers to rounds 1 and 2 to better control camera transitions. - Fixed improper camera switches on incorrect answers during round 2.
349 lines
10 KiB
C#
349 lines
10 KiB
C#
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDKBase;
|
|
|
|
|
|
[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 AllPlayersAssignStarterPointsTimerToggle;
|
|
[SerializeField] public CameraTimedSwitcher HostToMonitorTimerToggle;
|
|
[SerializeField] public CameraTimedSwitcher MapToHostAndAllPlayersTimerToggle;
|
|
[SerializeField] public CameraTimedSwitcher LightningStartToHostAndAllPlayersTimerToggle;
|
|
[SerializeField] public CameraTimedSwitcher TheChaseStartToHostAndAllPlayersTimerToggle;
|
|
[SerializeField] public CameraTimedSwitcher TheChaseMonitorToAllPlayersTimerToggle;
|
|
[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()
|
|
{
|
|
DisableAllSwitchers();
|
|
DisableAllTriggers();
|
|
|
|
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, AllPlayersAssignStarterPointsTimerToggle.gameObject);
|
|
Networking.SetOwner(Player, HostToMonitorTimerToggle.gameObject);
|
|
Networking.SetOwner(Player, MapToHostAndAllPlayersTimerToggle.gameObject);
|
|
Networking.SetOwner(Player, LightningStartToHostAndAllPlayersTimerToggle.gameObject);
|
|
Networking.SetOwner(Player, TheChaseStartToHostAndAllPlayersTimerToggle.gameObject);
|
|
Networking.SetOwner(Player, TheChaseMonitorToAllPlayersTimerToggle.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()
|
|
{
|
|
ActivateCameraSwitcher(HostAndAllPlayersTimerToggle);
|
|
}
|
|
|
|
public void ActivateHostIndividualPlayersCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(HostAndIndividualPlayersTimerToggle);
|
|
}
|
|
|
|
public void ActivateAllPlayersAssignStarterPointsCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(AllPlayersAssignStarterPointsTimerToggle);
|
|
}
|
|
|
|
public void ActivateHostToMonitorCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(HostToMonitorTimerToggle);
|
|
}
|
|
|
|
public void ActivateMapToHostAllPlayersCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(MapToHostAndAllPlayersTimerToggle);
|
|
}
|
|
|
|
public void ActivateLightningStartToHostAllPlayersCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(LightningStartToHostAndAllPlayersTimerToggle);
|
|
}
|
|
|
|
public void ActivateTheChaseStartToHostAllPlayersCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(TheChaseStartToHostAndAllPlayersTimerToggle);
|
|
}
|
|
|
|
public void ActivateTheChaseMonitorToAllPlayersCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(TheChaseMonitorToAllPlayersTimerToggle);
|
|
}
|
|
|
|
public void ActivateCorrectAnswerToHostAllPlayersCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(CorrectToHostAndAllPlayersTimerToggle);
|
|
}
|
|
|
|
public void ActivateIncorrectAnswerToHostAllPlayersCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(IncorrectToHostAndAllPlayersTimerToggle);
|
|
}
|
|
|
|
public void ActivateThinkAboutItCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(ThinkAboutItTimerToggle);
|
|
}
|
|
|
|
public void ActivateBuzzedInPlayerCameraSwitcher()
|
|
{
|
|
ActivateCameraSwitcher(BuzzedInPlayerTimerToggle);
|
|
}
|
|
|
|
|
|
public void ActivateHostCameraTrigger()
|
|
{
|
|
HostCameraTrigger.gameObject.SetActive(true);
|
|
}
|
|
public void DeactivateHostCameraTrigger()
|
|
{
|
|
HostCameraTrigger.gameObject.SetActive(false);
|
|
}
|
|
|
|
|
|
public void PlayOpening(bool Play)
|
|
{
|
|
if (Play)
|
|
{
|
|
ActivateOpeningCamera();
|
|
SwitchToPrimaryFocusCamera();
|
|
}
|
|
|
|
_PlayOpeningCallback = Play;
|
|
|
|
RequestSerialization();
|
|
}
|
|
|
|
public void PlayOpeningDoorway(bool Play)
|
|
{
|
|
if (Play)
|
|
{
|
|
ActivateOpeningCamera();
|
|
SwitchToPrimaryFocusCamera();
|
|
}
|
|
|
|
_PlayOpeningDoorwayCallback = Play;
|
|
|
|
RequestSerialization();
|
|
}
|
|
|
|
|
|
|
|
public override void DisableAllTriggers()
|
|
{
|
|
HostCameraTrigger.gameObject.SetActive(false);
|
|
}
|
|
|
|
public override void DisableAllSwitchers()
|
|
{
|
|
ActivateCameraSwitcher(null);
|
|
}
|
|
|
|
|
|
private bool _PlayOpeningCallback
|
|
{
|
|
set
|
|
{
|
|
_PlayOpening = value;
|
|
Debug.Log("[CameraControllerRound1] Playing Opening: " + (_PlayOpening ? "true" : "false"));
|
|
_CameraAnimator.SetBool("Play Opening", _PlayOpening);
|
|
}
|
|
get => _PlayOpening;
|
|
}
|
|
|
|
private bool _PlayOpeningDoorwayCallback
|
|
{
|
|
set
|
|
{
|
|
_PlayOpeningDoorway = value;
|
|
_CameraAnimator.SetBool("Play Opening Doorway", _PlayOpeningDoorway);
|
|
}
|
|
get => _PlayOpeningDoorway;
|
|
}
|
|
}
|