- Modem camera transition now has zoom animations.

- Added a CameraAnchor and follower for the winning player in round 2.
- Round 2 now has a more reliable check for when the call ends.
- CameraAnchor can now follow different areas of a player's body.
- CameraTimedSwitcher can now choose to always reactivate when asked.
- Glass shatter effect now only works for hosts.
- CaseVideoSyncPlayer will no longer crash when skipping too fast in round 1.
- Fixed an erroneous camera switcher activation in round 3.
- Made a minor wording change to Eartha Brute's wanted poster.
This commit is contained in:
2026-03-25 04:08:23 -04:00
parent 69bc79ef7a
commit e485d0d992
37 changed files with 2939 additions and 1237 deletions
@@ -93,6 +93,7 @@ public class GameManagerRound1 : GameManagerBase
_CameraControllerRound1.InitialiseCameras();
_CameraControllerRound1.ActivateHostCameraTrigger();
_CameraControllerRound1.PlayOpening(true);
_CameraControllerRound1.PlayModemZoom(false);
DisableInteraction();
@@ -109,6 +110,9 @@ public class GameManagerRound1 : GameManagerBase
_Modem.Activate(false);
_CameraControllerRound1.DeinitialiseCameras();
_CameraControllerRound1.PlayOpening(false);
_CameraControllerRound1.PlayOpeningDoorway(false);
_CameraControllerRound1.PlayModemZoom(false);
base.DeinitialiseGameMode();
}
@@ -1466,7 +1470,7 @@ public class GameManagerRound1 : GameManagerBase
_Modem.Teleport();
SendCustomEventDelayedSeconds(nameof(_ContinueToRound2_Private), 2.5f);
_CameraControllerRound1.DisableAllSwitchers();
_CameraControllerRound1.SwitchToModemCamera();
_CameraControllerRound1.PlayModemZoom(true);
}
public void _ContinueToRound2_Private()
{
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 26
Data: 27
- Name:
Entry: 7
Data:
@@ -1304,19 +1304,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _PanelToReveal_Cache
Data: _PlayingJailCall
- Name: $v
Entry: 7
Data: 84|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _PanelToReveal_Cache
Data: _PlayingJailCall
- Name: <UserType>k__BackingField
Entry: 9
Data: 69
Data: 32
- Name: <SystemType>k__BackingField
Entry: 9
Data: 69
Data: 32
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1352,25 +1352,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: COLOR_STANDARD
Data: _PanelToReveal_Cache
- Name: $v
Entry: 7
Data: 86|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_STANDARD
Data: _PanelToReveal_Cache
- Name: <UserType>k__BackingField
Entry: 7
Data: 87|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.Color, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
Entry: 9
Data: 69
- Name: <SystemType>k__BackingField
Entry: 9
Data: 87
Data: 69
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1385,7 +1379,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 88|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 87|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -1406,19 +1400,25 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: COLOR_RED
Data: COLOR_STANDARD
- Name: $v
Entry: 7
Data: 89|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 88|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_RED
Data: COLOR_STANDARD
- Name: <UserType>k__BackingField
Entry: 9
Data: 87
Entry: 7
Data: 89|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.Color, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 87
Data: 89
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1454,19 +1454,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: COLOR_YELLOW
Data: COLOR_RED
- Name: $v
Entry: 7
Data: 91|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_YELLOW
Data: COLOR_RED
- Name: <UserType>k__BackingField
Entry: 9
Data: 87
Data: 89
- Name: <SystemType>k__BackingField
Entry: 9
Data: 87
Data: 89
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1502,19 +1502,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: COLOR_GREEN
Data: COLOR_YELLOW
- Name: $v
Entry: 7
Data: 93|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_GREEN
Data: COLOR_YELLOW
- Name: <UserType>k__BackingField
Entry: 9
Data: 87
Data: 89
- Name: <SystemType>k__BackingField
Entry: 9
Data: 87
Data: 89
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1545,6 +1545,54 @@ MonoBehaviour:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: COLOR_GREEN
- Name: $v
Entry: 7
Data: 95|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_GREEN
- Name: <UserType>k__BackingField
Entry: 9
Data: 89
- Name: <SystemType>k__BackingField
Entry: 9
Data: 89
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 96|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
@@ -39,6 +39,8 @@ public class GameManagerRound2 : GameManagerBase
private CameraControllerRound2 _CameraControllerRound2 = null;
private bool _PlayingJailCall = false;
private int _PanelToReveal_Cache = -1;
private readonly Color COLOR_STANDARD = new Color(0.78431f, 0.78431f, 0.78431f);
@@ -62,6 +64,7 @@ public class GameManagerRound2 : GameManagerBase
base.InitialiseGameMode();
_StageIndex = 0;
_PlayingJailCall = false;
InitialiseLocationBoard();
@@ -74,16 +77,21 @@ public class GameManagerRound2 : GameManagerBase
_CameraControllerRound2.DisableAllSwitchers();
_CameraControllerRound2.SwitchToModemCamera();
_CameraControllerRound2.ActivateHostAllPlayersCameraTrigger();
_CameraControllerRound2.PlayModemZoom(true);
_CameraControllerRound2.WinningPlayerCamera_StopFollowingPlayers();
RequestSerialization();
}
public override void DeinitialiseGameMode()
{
_PlayingJailCall = false;
_JailPhone.Activate = false;
_JailChain.Show = false;
_CameraControllerRound2.DeinitialiseCameras();
_CameraControllerRound2.PlayModemZoom(false);
base.DeinitialiseGameMode();
}
@@ -163,6 +171,7 @@ public class GameManagerRound2 : GameManagerBase
private void DisplayBriefing()
{
_CameraControllerRound2.PlayModemZoom(false);
_CameraControllerRound2.DeactivateHostAllPlayersCameraTrigger();
_CameraControllerRound2.ActivateHostPlayersAndWideShotCameraSwitcher();
@@ -311,6 +320,7 @@ public class GameManagerRound2 : GameManagerBase
_CameraControllerRound2.ActivateLocationBoardAndWinningPlayerCameraSwitcher();
_CameraControllerRound2.ActivateHostWinnerCameraTrigger();
_CameraControllerRound2.WinningPlayerCamera_FollowPlayers(Winner);
AdvanceRound();
@@ -368,6 +378,8 @@ public class GameManagerRound2 : GameManagerBase
Interface.HeaderUI.text = "Round is over.";
Interface.CommentUI.text = "Let's go to the map!";
_CameraControllerRound2.WinningPlayerCamera_StopFollowingPlayers();
_CaseManager.ContinueToRound3();
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All,
@@ -515,19 +527,19 @@ public class GameManagerRound2 : GameManagerBase
public void PlayJailCall()
{
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "PlayJailCall", _CaseManager.GetCrook(), _CaseManager.GetFinalRoundContinent());
SendCustomEventDelayedSeconds(nameof(CheckIfJailCallIsOver), 1.0f);
_PlayingJailCall = true;
_CameraControllerRound2.SwitchToHostAndWinnerCamera();
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "PlayJailCall", _CaseManager.GetCrook(), _CaseManager.GetFinalRoundContinent());
SendCustomEventDelayedSeconds(nameof(JailCallIsOver), _AudioManager.CurrentSFXLength());
_CameraControllerRound2.DisableAllSwitchers();
_CameraControllerRound2.SwitchToWinningPlayerCamera();
}
public void CheckIfJailCallIsOver()
public void JailCallIsOver()
{
if (_AudioManager.IsSFXPlaying())
{
SendCustomEventDelayedSeconds(nameof(CheckIfJailCallIsOver), 1.0f);
}
else
if (_PlayingJailCall)
{
_PlayingJailCall = false;
_CameraControllerRound2.DisableAllSwitchers();
_CameraControllerRound2.SwitchToHostAndWinnerCamera();
}
@@ -253,7 +253,6 @@ public class GameManagerRound3 : GameManagerBase
UpdateInterface();
_CameraControllerRound3.DisableAllSwitchers();
_CameraControllerRound3.ActivateHostPlayerCameraSwitcher();
_CameraControllerRound3.ActivatePlayfieldSwitchTriggerGroup = true;
InitialiseGameplayCameraFollowers();