CarmenSandiego/Assets/UdonSharp/Cameras/CameraControllerRound2.cs
Jamie Greunbaum 718cb33ac8 - Improved camera switcher enable/disable code.
- Added new round 1 switchers, and fixed overlap issues with the existing ones.
- Improved camera switch buttons on the host panel.
- Potato Mode button on the camera host panel now toggles properly.
- Potato Mode button renamed to the more appropriate Performance button.
- Glass shatter window effect now works from both directions.
- Round 1 window looks much prettier.
- Added the ability to scroll through overflowing text on the host card.
- Improved scrolling on the credits panel.
2026-03-19 05:26:17 -04:00

209 lines
6.4 KiB
C#

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class CameraControllerRound2 : CameraControllerBase
{
[Space]
[SerializeField] public Camera Player1Camera;
[SerializeField] public Camera Player2Camera;
[SerializeField] public Camera HostAndWinnerCamera;
[SerializeField] public Camera LocationBoardCamera;
[SerializeField] public Camera PrimaryFocusCamera;
[SerializeField] public Camera VideoPlayerCamera;
[Space]
[SerializeField] public CameraTimerSwitchTrigger HostAndAllPlayersCameraTrigger;
[SerializeField] public CameraSwitchTrigger HostAndWinnerCameraTrigger;
[Space]
[SerializeField] public CameraTimedSwitcher HostAllPlayersTimerToggle;
[SerializeField] public CameraTimedSwitcher HostPlayersAndWideShotTimerToggle;
[SerializeField] public CameraTimedSwitcher Player1AndLocationBoardTimerToggle;
[SerializeField] public CameraTimedSwitcher Player2AndLocationBoardTimerToggle;
[SerializeField] public CameraTimedSwitcher LocationBoardAndShortHostTimerToggle;
[SerializeField] public CameraTimedSwitcher LocationBoardAndLongHostTimerToggle;
[SerializeField] public CameraTimedSwitcher LocationBoardAndWinningPlayerTimerToggle;
[SerializeField] public CameraTimedSwitcher VideoPlayerToWinningPlayerTimerToggle;
[Space]
[SerializeField] public CameraAnchor Player1CameraAnchor;
[SerializeField] public CameraAnchor Player2CameraAnchor;
[SerializeField] public CameraAnchor HostAndWinnerCameraAnchor;
[SerializeField] public CameraAnchor LocationBoardCameraAnchor;
[SerializeField] public CameraAnchor ModemCameraAnchor;
[SerializeField] public CameraAnchor VideoPlayerCameraAnchor;
[Space]
[SerializeField] public CameraAnchor WideShotCameraAnchor;
[SerializeField] public CameraAnchor AllPlayersCameraAnchor;
public override void InitialiseCameras()
{
Player1CameraAnchor.AttachCamera(Player1Camera);
Player2CameraAnchor.AttachCamera(Player2Camera);
HostAndWinnerCameraAnchor.AttachCamera(HostAndWinnerCamera);
LocationBoardCameraAnchor.AttachCamera(LocationBoardCamera);
ModemCameraAnchor.AttachCamera(PrimaryFocusCamera);
VideoPlayerCameraAnchor.AttachCamera(VideoPlayerCamera);
}
public override void OnOwnershipTransferred(VRCPlayerApi Player)
{
Networking.SetOwner(Player, Player1Camera.gameObject);
Networking.SetOwner(Player, Player2Camera.gameObject);
Networking.SetOwner(Player, HostAndWinnerCamera.gameObject);
Networking.SetOwner(Player, LocationBoardCamera.gameObject);
Networking.SetOwner(Player, PrimaryFocusCamera.gameObject);
Networking.SetOwner(Player, VideoPlayerCamera.gameObject);
Networking.SetOwner(Player, HostAndAllPlayersCameraTrigger.gameObject);
Networking.SetOwner(Player, HostAllPlayersTimerToggle.gameObject);
Networking.SetOwner(Player, HostPlayersAndWideShotTimerToggle.gameObject);
Networking.SetOwner(Player, Player1AndLocationBoardTimerToggle.gameObject);
Networking.SetOwner(Player, Player2AndLocationBoardTimerToggle.gameObject);
Networking.SetOwner(Player, LocationBoardAndShortHostTimerToggle.gameObject);
Networking.SetOwner(Player, LocationBoardAndLongHostTimerToggle.gameObject);
Networking.SetOwner(Player, LocationBoardAndWinningPlayerTimerToggle.gameObject);
Networking.SetOwner(Player, VideoPlayerToWinningPlayerTimerToggle.gameObject);
Networking.SetOwner(Player, Player1CameraAnchor.gameObject);
Networking.SetOwner(Player, Player2CameraAnchor.gameObject);
Networking.SetOwner(Player, HostAndWinnerCameraAnchor.gameObject);
Networking.SetOwner(Player, LocationBoardCameraAnchor.gameObject);
Networking.SetOwner(Player, VideoPlayerCameraAnchor.gameObject);
Networking.SetOwner(Player, WideShotCameraAnchor.gameObject);
Networking.SetOwner(Player, AllPlayersCameraAnchor.gameObject);
base.OnOwnershipTransferred(Player);
}
public void SwitchToPlayer1Camera()
{
SwitchToLiveCamera(Player1Camera);
}
public void SwitchToPlayer2Camera()
{
SwitchToLiveCamera(Player2Camera);
}
public void SwitchToHostAndWinnerCamera()
{
SwitchToLiveCamera(HostAndWinnerCamera);
}
public void SwitchToLocationBoardCamera()
{
SwitchToLiveCamera(LocationBoardCamera);
}
public void SwitchToModemCamera()
{
SwitchToLiveCamera(PrimaryFocusCamera);
}
public void SwitchToVideoPlayerCamera()
{
SwitchToLiveCamera(VideoPlayerCamera);
}
public void ActivateWideShotCamera()
{
WideShotCameraAnchor.AttachCamera(PrimaryFocusCamera);
}
public void SwitchToWideShotCamera()
{
ActivateWideShotCamera();
SwitchToLiveCamera(PrimaryFocusCamera);
}
public void ActivateAllPlayersCamera()
{
AllPlayersCameraAnchor.AttachCamera(PrimaryFocusCamera);
}
public void SwitchToAllPlayersCamera()
{
ActivateAllPlayersCamera();
SwitchToLiveCamera(PrimaryFocusCamera);
}
public void ActivateHostAllPlayersCameraSwitcher()
{
ActivateCameraSwitcher(HostAllPlayersTimerToggle);
}
public void ActivateHostPlayersAndWideShotCameraSwitcher()
{
ActivateCameraSwitcher(HostPlayersAndWideShotTimerToggle);
}
public void ActivatePlayer1AndLocationBoardCameraSwitcher()
{
ActivateCameraSwitcher(Player1AndLocationBoardTimerToggle);
}
public void ActivatePlayer2AndLocationBoardCameraSwitcher()
{
ActivateCameraSwitcher(Player2AndLocationBoardTimerToggle);
}
public void ActivateLocationBoardAndShortHostCameraSwitcher()
{
ActivateCameraSwitcher(LocationBoardAndShortHostTimerToggle);
}
public void ActivateLocationBoardAndLongHostCameraSwitcher()
{
ActivateCameraSwitcher(LocationBoardAndLongHostTimerToggle);
}
public void ActivateLocationBoardAndWinningPlayerCameraSwitcher()
{
ActivateCameraSwitcher(LocationBoardAndWinningPlayerTimerToggle);
}
public void ActivateVideoPlayerToWinningPlayerCameraSwitcher()
{
ActivateCameraSwitcher(VideoPlayerToWinningPlayerTimerToggle);
}
public void ActivateHostAllPlayersCameraTrigger()
{
HostAndAllPlayersCameraTrigger.gameObject.SetActive(true);
}
public void DeactivateHostAllPlayersCameraTrigger()
{
HostAndAllPlayersCameraTrigger.gameObject.SetActive(false);
}
public void ActivateHostWinnerCameraTrigger()
{
HostAndWinnerCameraTrigger.gameObject.SetActive(true);
}
public void DeactivateHostWinnerCameraTrigger()
{
HostAndWinnerCameraTrigger.gameObject.SetActive(false);
}
public override void DisableAllTriggers()
{
HostAndAllPlayersCameraTrigger.gameObject.SetActive(false);
}
public override void DisableAllSwitchers()
{
ActivateCameraSwitcher(null);
}
}