222 lines
5.8 KiB
C#
222 lines
5.8 KiB
C#
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDK3.UdonNetworkCalling;
|
|
using VRC.SDKBase;
|
|
using VRC.Udon;
|
|
|
|
|
|
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
|
|
public class CameraControllerRound3 : CameraControllerBase
|
|
{
|
|
[Space]
|
|
|
|
[SerializeField] public Camera PlayerCamera;
|
|
[SerializeField] public Camera HostCamera;
|
|
[SerializeField] public Camera OverheadCamera;
|
|
[SerializeField] public Camera FrontCamera;
|
|
[SerializeField] public Camera PrimaryFocusCamera;
|
|
[SerializeField] public Camera VideoPlayerCamera;
|
|
[Space]
|
|
[SerializeField] public GameObject PlayfieldSwitchTriggerGroup;
|
|
[Space]
|
|
[SerializeField] public CameraTimedSwitcher HostPlayerTimerToggle;
|
|
[Space]
|
|
[SerializeField] public Animator _CameraAnimator;
|
|
[Space]
|
|
[SerializeField] public CameraAnchor HostStartingCameraAnchor;
|
|
[SerializeField] public CameraAnchor PlayerStartingCameraAnchor;
|
|
[SerializeField] public CameraAnchor OverheadCameraAnchor;
|
|
[SerializeField] public CameraAnchor FrontCameraAnchor;
|
|
[SerializeField] public CameraAnchor NewspaperCameraAnchor;
|
|
[SerializeField] public CameraAnchor VideoPlayerCameraAnchor;
|
|
[Space]
|
|
[SerializeField] public CameraAnchor[] HostCameraAnchorSequence;
|
|
[SerializeField] public CameraAnchor[] PlayerCameraAnchorSequence;
|
|
|
|
[UdonSynced, FieldChangeCallback(nameof(ActivatePlayfieldSwitchTriggerGroup))] private bool _ActivatePlayfieldSwitchTriggerGroup = false;
|
|
[UdonSynced, FieldChangeCallback(nameof(MarkerCameraAnchorPosition))] private int _MarkerCameraAnchorPosition = -1;
|
|
|
|
[UdonSynced, FieldChangeCallback(nameof(PlayIFeelGoodCallback))] private bool _PlayIFeelGood = false;
|
|
[UdonSynced, FieldChangeCallback(nameof(PlayDoItRockapellaCallback))] private bool _PlayDoItRockapella = false;
|
|
|
|
|
|
public override void InitialiseCameras()
|
|
{
|
|
HostStartingCameraAnchor.AttachCamera(PlayerCamera);
|
|
PlayerStartingCameraAnchor.AttachCamera(HostCamera);
|
|
OverheadCameraAnchor.AttachCamera(OverheadCamera);
|
|
FrontCameraAnchor.AttachCamera(FrontCamera);
|
|
NewspaperCameraAnchor.AttachCamera(PrimaryFocusCamera);
|
|
VideoPlayerCameraAnchor.AttachCamera(VideoPlayerCamera);
|
|
|
|
HostCameraAnchorSequence[0].AttachCamera(HostCamera);
|
|
PlayerCameraAnchorSequence[0].AttachCamera(PlayerCamera);
|
|
|
|
ActivatePlayfieldSwitchTriggerGroup = false;
|
|
}
|
|
|
|
public override void DeinitialiseCameras()
|
|
{
|
|
PlayIFeelGood(false);
|
|
PlayDoItRockapella(false);
|
|
|
|
base.DeinitialiseCameras();
|
|
}
|
|
|
|
public override void OnOwnershipTransferred(VRCPlayerApi Player)
|
|
{
|
|
Networking.SetOwner(Player, PlayerCamera.gameObject);
|
|
Networking.SetOwner(Player, HostCamera.gameObject);
|
|
Networking.SetOwner(Player, OverheadCamera.gameObject);
|
|
Networking.SetOwner(Player, FrontCamera.gameObject);
|
|
Networking.SetOwner(Player, PrimaryFocusCamera.gameObject);
|
|
Networking.SetOwner(Player, VideoPlayerCamera.gameObject);
|
|
|
|
Networking.SetOwner(Player, PlayfieldSwitchTriggerGroup);
|
|
|
|
Networking.SetOwner(Player, HostPlayerTimerToggle.gameObject);
|
|
|
|
Networking.SetOwner(Player, _CameraAnimator.gameObject);
|
|
|
|
Networking.SetOwner(Player, HostStartingCameraAnchor.gameObject);
|
|
Networking.SetOwner(Player, PlayerStartingCameraAnchor.gameObject);
|
|
Networking.SetOwner(Player, OverheadCameraAnchor.gameObject);
|
|
Networking.SetOwner(Player, FrontCameraAnchor.gameObject);
|
|
Networking.SetOwner(Player, NewspaperCameraAnchor.gameObject);
|
|
Networking.SetOwner(Player, VideoPlayerCameraAnchor.gameObject);
|
|
|
|
base.OnOwnershipTransferred(Player);
|
|
}
|
|
|
|
|
|
public void SwitchToPlayerCamera()
|
|
{
|
|
SwitchToLiveCamera(PlayerCamera);
|
|
}
|
|
|
|
public void SwitchToHostCamera()
|
|
{
|
|
SwitchToLiveCamera(HostCamera);
|
|
}
|
|
|
|
public void SwitchToOverheadCamera()
|
|
{
|
|
SwitchToLiveCamera(OverheadCamera);
|
|
}
|
|
|
|
public void SwitchToFrontCamera()
|
|
{
|
|
SwitchToLiveCamera(FrontCamera);
|
|
}
|
|
|
|
public void SwitchToVideoPlayerCamera()
|
|
{
|
|
SwitchToLiveCamera(VideoPlayerCamera);
|
|
}
|
|
|
|
|
|
private void _OnPlayfieldSwitchTriggerGroupChanged()
|
|
{
|
|
PlayfieldSwitchTriggerGroup.SetActive(ActivatePlayfieldSwitchTriggerGroup);
|
|
RequestSerialization();
|
|
}
|
|
|
|
|
|
public void ActivateWideShotCamera()
|
|
{
|
|
//DefaultWideShotCameraAnchor.AttachCamera(PrimaryFocusCamera);
|
|
}
|
|
public void SwitchToWideShotCamera()
|
|
{
|
|
//DisableAllSwitchers();
|
|
//ActivateWideShotCamera();
|
|
//SwitchToLiveCamera(PrimaryFocusCamera);
|
|
}
|
|
|
|
|
|
public void ActivateHostPlayerCameraSwitcher()
|
|
{
|
|
HostPlayerTimerToggle.Activate = true;
|
|
}
|
|
|
|
|
|
public void PlayIFeelGood(bool Play)
|
|
{
|
|
PlayIFeelGoodCallback = Play;
|
|
RequestSerialization();
|
|
}
|
|
|
|
public void PlayDoItRockapella(bool Play)
|
|
{
|
|
PlayDoItRockapellaCallback = Play;
|
|
RequestSerialization();
|
|
}
|
|
|
|
|
|
public override void DisableAllTriggers()
|
|
{
|
|
ActivatePlayfieldSwitchTriggerGroup = false;
|
|
}
|
|
|
|
public override void DisableAllSwitchers()
|
|
{
|
|
HostPlayerTimerToggle.Activate = false;
|
|
}
|
|
|
|
|
|
public bool ActivatePlayfieldSwitchTriggerGroup
|
|
{
|
|
set
|
|
{
|
|
_ActivatePlayfieldSwitchTriggerGroup = value;
|
|
_OnPlayfieldSwitchTriggerGroupChanged();
|
|
}
|
|
get => _ActivatePlayfieldSwitchTriggerGroup;
|
|
}
|
|
|
|
public int MarkerCameraAnchorPosition
|
|
{
|
|
set
|
|
{
|
|
_MarkerCameraAnchorPosition = value;
|
|
_ChangeMarkerCameraPosition();
|
|
}
|
|
get => _MarkerCameraAnchorPosition;
|
|
}
|
|
private void _ChangeMarkerCameraPosition()
|
|
{
|
|
HostCameraAnchorSequence[MarkerCameraAnchorPosition].AttachCamera(HostCamera);
|
|
PlayerCameraAnchorSequence[MarkerCameraAnchorPosition].AttachCamera(PlayerCamera);
|
|
RequestSerialization();
|
|
}
|
|
|
|
private bool PlayIFeelGoodCallback
|
|
{
|
|
set
|
|
{
|
|
_PlayIFeelGood = value;
|
|
_CameraAnimator.SetBool("Play I Feel Good", _PlayIFeelGood);
|
|
if (_PlayIFeelGood)
|
|
{
|
|
SwitchToOverheadCamera();
|
|
}
|
|
}
|
|
get => _PlayIFeelGood;
|
|
}
|
|
|
|
private bool PlayDoItRockapellaCallback
|
|
{
|
|
set
|
|
{
|
|
_PlayDoItRockapella = value;
|
|
_CameraAnimator.SetBool("Play Do It Rockapella", _PlayDoItRockapella);
|
|
if (_PlayDoItRockapella)
|
|
{
|
|
SwitchToOverheadCamera();
|
|
}
|
|
}
|
|
get => _PlayDoItRockapella;
|
|
}
|
|
}
|