You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.7 KiB
C#
57 lines
1.7 KiB
C#
3 weeks ago
|
using System;
|
||
|
using Unity.BossRoom.Gameplay.Configuration;
|
||
|
using Unity.Netcode;
|
||
|
using Unity.Netcode.Components;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace Unity.BossRoom.Gameplay.GameplayObjects.Character
|
||
|
{
|
||
|
public class ServerAnimationHandler : NetworkBehaviour
|
||
|
{
|
||
|
[SerializeField]
|
||
|
NetworkAnimator m_NetworkAnimator;
|
||
|
|
||
|
[SerializeField]
|
||
|
VisualizationConfiguration m_VisualizationConfiguration;
|
||
|
|
||
|
[SerializeField]
|
||
|
NetworkLifeState m_NetworkLifeState;
|
||
|
|
||
|
public NetworkAnimator NetworkAnimator => m_NetworkAnimator;
|
||
|
|
||
|
public override void OnNetworkSpawn()
|
||
|
{
|
||
|
if (IsServer)
|
||
|
{
|
||
|
m_NetworkLifeState.LifeState.OnValueChanged += OnLifeStateChanged;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void OnLifeStateChanged(LifeState previousValue, LifeState newValue)
|
||
|
{
|
||
|
switch (newValue)
|
||
|
{
|
||
|
case LifeState.Alive:
|
||
|
NetworkAnimator.SetTrigger(m_VisualizationConfiguration.AliveStateTriggerID);
|
||
|
break;
|
||
|
case LifeState.Fainted:
|
||
|
NetworkAnimator.SetTrigger(m_VisualizationConfiguration.FaintedStateTriggerID);
|
||
|
break;
|
||
|
case LifeState.Dead:
|
||
|
NetworkAnimator.SetTrigger(m_VisualizationConfiguration.DeadStateTriggerID);
|
||
|
break;
|
||
|
default:
|
||
|
throw new ArgumentOutOfRangeException(nameof(newValue), newValue, null);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public override void OnNetworkDespawn()
|
||
|
{
|
||
|
if (IsServer && m_NetworkLifeState != null)
|
||
|
{
|
||
|
m_NetworkLifeState.LifeState.OnValueChanged -= OnLifeStateChanged;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|