From 8bc733459e9a784e6cdc4195d2d4378fb9bf5d72 Mon Sep 17 00:00:00 2001 From: Jamie Greunbaum Date: Sat, 30 Aug 2025 23:42:45 -0400 Subject: [PATCH] - Added a pedestal to round 1 podiums to keep player eye heights more equal. - Fixed an issue that seems to cause loading case files to crash. --- Assembly-CSharp.csproj | 1 + Assets/Models/SM_PlayerPedestal.fbx | Bin 0 -> 11740 bytes Assets/Models/SM_PlayerPedestal.fbx.meta | 109 ++++++++ Assets/Prefabs/Bench.prefab | 24 +- Assets/Prefabs/Border Plane.prefab | 6 +- Assets/Prefabs/CustomSeat.prefab | 6 +- Assets/Prefabs/Player Podium.prefab | 145 ++++++++++ Assets/Scenes/witwics.unity | 236 ++++++++++++++-- Assets/UdonSharp/Game Managers/CaseManager.cs | 2 +- .../Game Managers/GameManagerBase.cs | 1 - Assets/UdonSharp/Podium/PlayerPedestal.asset | 53 ++++ .../Podium/PlayerPedestal.asset.meta | 8 + Assets/UdonSharp/Podium/PlayerPedestal.cs | 12 + .../UdonSharp/Podium/PlayerPedestal.cs.meta | 11 + Assets/UdonSharp/Podium/PlayerPodium.asset | 256 +++++++++++------- Assets/UdonSharp/Podium/PlayerPodium.cs | 24 ++ 16 files changed, 750 insertions(+), 144 deletions(-) create mode 100644 Assets/Models/SM_PlayerPedestal.fbx create mode 100644 Assets/Models/SM_PlayerPedestal.fbx.meta create mode 100644 Assets/UdonSharp/Podium/PlayerPedestal.asset create mode 100644 Assets/UdonSharp/Podium/PlayerPedestal.asset.meta create mode 100644 Assets/UdonSharp/Podium/PlayerPedestal.cs create mode 100644 Assets/UdonSharp/Podium/PlayerPedestal.cs.meta diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 819e955..876fed7 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -76,6 +76,7 @@ + diff --git a/Assets/Models/SM_PlayerPedestal.fbx b/Assets/Models/SM_PlayerPedestal.fbx new file mode 100644 index 0000000000000000000000000000000000000000..85abb54ea873160a8b29de7ce31f49ce4ae8b463 GIT binary patch literal 11740 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 Entry: 1 - Data: _AuxiliaryVideoScreen + Data: _Pedestal - Name: k__BackingField - Entry: 7 - Data: 50|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: UnityEngine.Transform, UnityEngine.CoreModule - - Name: - Entry: 8 - Data: + Entry: 9 + Data: 11 - Name: k__BackingField Entry: 9 - Data: 50 + Data: 11 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -767,13 +761,13 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 51|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 50|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 1 - Name: Entry: 7 - Data: 52|UnityEngine.SerializeField, UnityEngine.CoreModule + Data: 51|UnityEngine.SerializeField, UnityEngine.CoreModule - Name: Entry: 8 Data: @@ -794,19 +788,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _AuxiliaryMapScreen + Data: _AuxiliaryVideoScreen - Name: $v Entry: 7 - Data: 53|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 52|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _AuxiliaryMapScreen + Data: _AuxiliaryVideoScreen - Name: k__BackingField - Entry: 9 - Data: 50 + Entry: 7 + Data: 53|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Transform, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: - Name: k__BackingField Entry: 9 - Data: 50 + Data: 53 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -848,16 +848,70 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _OwnershipInteract + Data: _AuxiliaryMapScreen - Name: $v Entry: 7 Data: 56|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _AuxiliaryMapScreen + - Name: k__BackingField + Entry: 9 + Data: 53 + - Name: k__BackingField + Entry: 9 + Data: 53 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 57|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 58|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: _OwnershipInteract + - Name: $v + Entry: 7 + Data: 59|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _OwnershipInteract - Name: k__BackingField Entry: 7 - Data: 57|System.RuntimeType, mscorlib + Data: 60|System.RuntimeType, mscorlib - Name: Entry: 1 Data: CustomEventInteraction, Assembly-CSharp @@ -881,13 +935,13 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 58|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 61|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 1 - Name: Entry: 7 - Data: 59|UnityEngine.SerializeField, UnityEngine.CoreModule + Data: 62|UnityEngine.SerializeField, UnityEngine.CoreModule - Name: Entry: 8 Data: @@ -911,7 +965,7 @@ MonoBehaviour: Data: _BuzzedInEffect - Name: $v Entry: 7 - Data: 60|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 63|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _BuzzedInEffect @@ -935,13 +989,13 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 61|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 64|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 3 - Name: Entry: 7 - Data: 62|UnityEngine.SpaceAttribute, UnityEngine.CoreModule + Data: 65|UnityEngine.SpaceAttribute, UnityEngine.CoreModule - Name: height Entry: 4 Data: 8 @@ -950,67 +1004,13 @@ MonoBehaviour: Data: - Name: Entry: 7 - Data: 63|UnityEngine.HeaderAttribute, UnityEngine.CoreModule + Data: 66|UnityEngine.HeaderAttribute, UnityEngine.CoreModule - Name: header Entry: 1 Data: Effects - Name: Entry: 8 Data: - - Name: - Entry: 7 - Data: 64|UnityEngine.SerializeField, UnityEngine.CoreModule - - Name: - Entry: 8 - Data: - - Name: - Entry: 13 - Data: - - Name: - Entry: 8 - Data: - - Name: - Entry: 8 - Data: - - Name: - Entry: 8 - Data: - - Name: - Entry: 7 - Data: - - Name: $k - Entry: 1 - Data: _ScorecardObject - - Name: $v - Entry: 7 - Data: 65|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - - Name: k__BackingField - Entry: 1 - Data: _ScorecardObject - - Name: k__BackingField - Entry: 9 - Data: 11 - - Name: k__BackingField - Entry: 9 - Data: 11 - - Name: k__BackingField - Entry: 7 - Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib - - Name: - Entry: 6 - Data: - - Name: - Entry: 8 - Data: - - Name: k__BackingField - Entry: 5 - Data: true - - Name: _fieldAttributes - Entry: 7 - Data: 66|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - - Name: - Entry: 12 - Data: 1 - Name: Entry: 7 Data: 67|UnityEngine.SerializeField, UnityEngine.CoreModule @@ -1034,25 +1034,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _NameplateUI + Data: _ScorecardObject - Name: $v Entry: 7 Data: 68|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _NameplateUI + Data: _ScorecardObject - Name: k__BackingField - Entry: 7 - Data: 69|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: TMPro.TextMeshProUGUI, Unity.TextMeshPro - - Name: - Entry: 8 - Data: + Entry: 9 + Data: 11 - Name: k__BackingField Entry: 9 - Data: 69 + Data: 11 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -1067,13 +1061,13 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 70|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 69|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 1 - Name: Entry: 7 - Data: 71|UnityEngine.SerializeField, UnityEngine.CoreModule + Data: 70|UnityEngine.SerializeField, UnityEngine.CoreModule - Name: Entry: 8 Data: @@ -1094,19 +1088,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _ScorecardUI + Data: _NameplateUI - Name: $v Entry: 7 - Data: 72|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 71|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _ScorecardUI + Data: _NameplateUI - Name: k__BackingField - Entry: 9 - Data: 69 + Entry: 7 + Data: 72|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: TMPro.TextMeshProUGUI, Unity.TextMeshPro + - Name: + Entry: 8 + Data: - Name: k__BackingField Entry: 9 - Data: 69 + Data: 72 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -1143,6 +1143,60 @@ MonoBehaviour: - Name: Entry: 8 Data: + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: _ScorecardUI + - Name: $v + Entry: 7 + Data: 75|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _ScorecardUI + - Name: k__BackingField + Entry: 9 + Data: 72 + - Name: k__BackingField + Entry: 9 + Data: 72 + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 5 + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 76|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 77|UnityEngine.SerializeField, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: - Name: Entry: 13 Data: diff --git a/Assets/UdonSharp/Podium/PlayerPodium.cs b/Assets/UdonSharp/Podium/PlayerPodium.cs index 1285d36..2da140e 100644 --- a/Assets/UdonSharp/Podium/PlayerPodium.cs +++ b/Assets/UdonSharp/Podium/PlayerPodium.cs @@ -29,6 +29,7 @@ public class PlayerPodium : UdonSharpBehaviour [SerializeField] private ChoiceCardGroup _ChoiceCards; [SerializeField] private RiskCardGroup _RiskCards; [SerializeField] private Buzzer _Buzzer; + [SerializeField] private GameObject _Pedestal; [SerializeField] private Transform _AuxiliaryVideoScreen; [SerializeField] private Transform _AuxiliaryMapScreen; @@ -61,6 +62,16 @@ public class PlayerPodium : UdonSharpBehaviour base.OnPlayerLeft(Player); } + public override void OnAvatarEyeHeightChanged(VRCPlayerApi Player, float PrevEyeHeightAsMeters) + { + if (Player.playerId == _PlayerID) + { + AdjustPedestalHeight(Player); + } + + base.OnAvatarEyeHeightChanged(Player, PrevEyeHeightAsMeters); + } + public void SetPlayerName() { @@ -77,6 +88,9 @@ public class PlayerPodium : UdonSharpBehaviour PlayerName = Networking.LocalPlayer.displayName; _PlayerID = Networking.LocalPlayer.playerId; + _Pedestal.SetActive(true); + AdjustPedestalHeight(Networking.LocalPlayer); + EnableOwnershipTransfer = false; RequestSerialization(); @@ -89,12 +103,22 @@ public class PlayerPodium : UdonSharpBehaviour _PlayerID = -1; EnableOwnershipTransfer = true; + _Pedestal.SetActive(false); RequestSerialization(); } public int GetPlayerID() { return _PlayerID; } + private void AdjustPedestalHeight(VRCPlayerApi Player) + { + _Pedestal.transform.localPosition = new Vector3( + _Pedestal.transform.localPosition.x, + -Player.GetAvatarEyeHeightAsMeters(), + _Pedestal.transform.localPosition.z + ); + } + [NetworkCallable] public void DisplayScore() {