From 119413cd487fd5164165ed0be1ae15a59f31ee04 Mon Sep 17 00:00:00 2001 From: Jamie Greunbaum Date: Mon, 11 May 2026 03:42:07 -0400 Subject: [PATCH] Getting ready to finally learn how to do custom station animations. --- .../LightningRoundEffectsController.asset | 96 +++++++++++++++---- .../LightningRoundEffectsController.cs | 41 ++++++-- 2 files changed, 111 insertions(+), 26 deletions(-) diff --git a/Assets/UdonSharp/LightningRoundEffectsController.asset b/Assets/UdonSharp/LightningRoundEffectsController.asset index b4cccb1..c9754b5 100644 --- a/Assets/UdonSharp/LightningRoundEffectsController.asset +++ b/Assets/UdonSharp/LightningRoundEffectsController.asset @@ -44,7 +44,7 @@ MonoBehaviour: Data: - Name: Entry: 12 - Data: 7 + Data: 8 - Name: Entry: 7 Data: @@ -245,25 +245,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _PersonalRaincloud + Data: _LightningStrikeStation - Name: $v Entry: 7 Data: 16|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _PersonalRaincloud + Data: _LightningStrikeStation - Name: k__BackingField Entry: 7 Data: 17|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: UnityEngine.ParticleSystem, UnityEngine.ParticleSystemModule + Data: LightningStrikeStation, Assembly-CSharp - Name: Entry: 8 Data: - Name: k__BackingField Entry: 9 - Data: 17 + Data: 4 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -305,25 +305,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _Umbrella + Data: _PersonalRaincloud - Name: $v Entry: 7 Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _Umbrella + Data: _PersonalRaincloud - Name: k__BackingField Entry: 7 Data: 21|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: Umbrella, Assembly-CSharp + Data: UnityEngine.ParticleSystem, UnityEngine.ParticleSystemModule - Name: Entry: 8 Data: - Name: k__BackingField Entry: 9 - Data: 4 + Data: 21 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -365,16 +365,76 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _Effect + Data: _Umbrella - Name: $v Entry: 7 Data: 24|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _Effect + Data: _Umbrella - Name: k__BackingField Entry: 7 Data: 25|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: Umbrella, Assembly-CSharp + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 4 + - 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: 26|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 27|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: _Effect + - Name: $v + Entry: 7 + Data: 28|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _Effect + - Name: k__BackingField + Entry: 7 + Data: 29|System.RuntimeType, mscorlib - Name: Entry: 1 Data: LightningRoundEffect, Assembly-CSharp @@ -383,7 +443,7 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 7 - Data: 26|System.RuntimeType, mscorlib + Data: 30|System.RuntimeType, mscorlib - Name: Entry: 1 Data: System.Int32, mscorlib @@ -404,13 +464,13 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 27|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 31|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 1 - Name: Entry: 7 - Data: 28|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime + Data: 32|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime - Name: Entry: 8 Data: @@ -434,16 +494,16 @@ MonoBehaviour: Data: _Effect_Cached - Name: $v Entry: 7 - Data: 29|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 33|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _Effect_Cached - Name: k__BackingField Entry: 9 - Data: 25 + Data: 29 - Name: k__BackingField Entry: 9 - Data: 26 + Data: 30 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -458,7 +518,7 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 30|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 34|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 diff --git a/Assets/UdonSharp/LightningRoundEffectsController.cs b/Assets/UdonSharp/LightningRoundEffectsController.cs index da68531..cebafd3 100644 --- a/Assets/UdonSharp/LightningRoundEffectsController.cs +++ b/Assets/UdonSharp/LightningRoundEffectsController.cs @@ -22,6 +22,7 @@ public class LightningRoundEffectsController : UdonSharpBehaviour [SerializeField] private Animator _Animator; [Space] [SerializeField] private GameObject _LightningBolt; + [SerializeField] private LightningStrikeStation _LightningStrikeStation; [SerializeField] private ParticleSystem _PersonalRaincloud; [SerializeField] private Umbrella _Umbrella; @@ -32,6 +33,8 @@ public class LightningRoundEffectsController : UdonSharpBehaviour public override void OnOwnershipTransferred(VRCPlayerApi Player) { Networking.SetOwner(Player, _LightningBolt.gameObject); + Networking.SetOwner(Player, _LightningStrikeStation.gameObject); + Networking.SetOwner(Player, _PersonalRaincloud.gameObject); Networking.SetOwner(Player, _Umbrella.gameObject); base.OnOwnershipTransferred(Player); @@ -54,7 +57,7 @@ public class LightningRoundEffectsController : UdonSharpBehaviour public void PlayLightningRoundAnimation() { - _Effect = (LightningRoundEffect)Random.Range(0, (int)LightningRoundEffect.MAX_EFFECTS); + _Effect = LightningRoundEffect.LightningStrike;//(LightningRoundEffect)Random.Range(0, (int)LightningRoundEffect.MAX_EFFECTS); _PlayLightningRoundAnimation_Synced(); RequestSerialization(); } @@ -67,19 +70,18 @@ public class LightningRoundEffectsController : UdonSharpBehaviour switch (_Effect) { case LightningRoundEffect.Thunder: - _LightningBolt.SetActive(false); break; case LightningRoundEffect.LightningStrike: - _LightningBolt.SetActive(true); + _ActivateLightningStrike(); break; case LightningRoundEffect.ThunderAndRain: - _LightningBolt.SetActive(false); - _ActivateRain(); + _ActivateRainAndUmbrella(); break; default: // Deactivate everything and leave _Animator.SetBool("Lightning", false); _LightningBolt.SetActive(false); - _DeactivateRain(); + _DeactivateRainAndUmbrella(); + _DeactivateLightningStrike(); return; } @@ -96,13 +98,36 @@ public class LightningRoundEffectsController : UdonSharpBehaviour } - private void _ActivateRain() + private void _ActivateLightningStrike() + { + _LightningBolt.SetActive(true); + _LightningStrikeStation.gameObject.SetActive(true); + + if (Networking.IsOwner(_LightningStrikeStation.gameObject)) + { + Vector3 PlayerPosition = Networking.LocalPlayer.GetPosition(); + _LightningStrikeStation.transform.position = PlayerPosition; + _LightningBolt.transform.position = PlayerPosition; + _LightningStrikeStation.EnterStation(); + } + } + private void _DeactivateLightningStrike() + { + if (Networking.IsOwner(_LightningStrikeStation.gameObject)) + { + _LightningStrikeStation.RemoveFromStation(); + } + _LightningStrikeStation.gameObject.SetActive(false); + } + + + private void _ActivateRainAndUmbrella() { _Umbrella.gameObject.SetActive(true); _Umbrella.Respawn(); _PersonalRaincloud.Play(); } - private void _DeactivateRain() + private void _DeactivateRainAndUmbrella() { _Umbrella.gameObject.SetActive(false); _PersonalRaincloud.Stop();