72 lines
1.6 KiB
C#
72 lines
1.6 KiB
C#
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDKBase;
|
|
using VRC.Udon;
|
|
using VRC.Udon.Common;
|
|
|
|
|
|
public enum LightningRoundEffect
|
|
{
|
|
Thunder,
|
|
LightningStrike,
|
|
ThunderAndRain,
|
|
|
|
MAX_EFFECTS
|
|
}
|
|
|
|
|
|
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
|
|
public class LightningRoundEffectsController : UdonSharpBehaviour
|
|
{
|
|
[SerializeField] private AudioManager _AudioManager;
|
|
[SerializeField] private Animator _Animator;
|
|
[SerializeField] private GameObject _LightningBolt;
|
|
|
|
[UdonSynced] private LightningRoundEffect _Effect = LightningRoundEffect.Thunder;
|
|
|
|
|
|
public override void OnDeserialization(DeserializationResult Result)
|
|
{
|
|
_PlayLightningRoundAnimation_Synced();
|
|
|
|
base.OnDeserialization(Result);
|
|
}
|
|
|
|
|
|
public void PlayLightningRoundAnimation()
|
|
{
|
|
//_Effect = (LightningRoundEffect)Random.Range(0, (int)LightningRoundEffect.MAX_EFFECTS);
|
|
_Effect = LightningRoundEffect.Thunder;
|
|
|
|
_PlayLightningRoundAnimation_Synced();
|
|
RequestSerialization();
|
|
}
|
|
private void _PlayLightningRoundAnimation_Synced()
|
|
{
|
|
switch (_Effect)
|
|
{
|
|
case LightningRoundEffect.Thunder:
|
|
_LightningBolt.SetActive(false);
|
|
_AudioManager.PlaySFX(SFXEventType.Thunder);
|
|
break;
|
|
case LightningRoundEffect.LightningStrike:
|
|
_LightningBolt.SetActive(true);
|
|
_AudioManager.PlaySFX(SFXEventType.Thunder);
|
|
break;
|
|
case LightningRoundEffect.ThunderAndRain:
|
|
_LightningBolt.SetActive(false);
|
|
_AudioManager.PlaySFX(SFXEventType.Thunder);
|
|
break;
|
|
}
|
|
|
|
_Animator.SetBool("Lightning", true);
|
|
|
|
SendCustomEventDelayedSeconds(nameof(ResetLightningRoundAnimation), 2.0f);
|
|
}
|
|
public void ResetLightningRoundAnimation()
|
|
{
|
|
_Animator.SetBool("Lightning", false);
|
|
}
|
|
}
|