BITKit/Packages/Runtime~/Unity/Scripts/Entity/Components/Character/EntityCharacter.cs

54 lines
1.5 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
namespace BITKit.Entities
{
public class EntityCharacter : EntityPlayerComponent
{
[Header(Constant.Header.Components)]
public List<Renderer> fpvRenderer = new();
public List<Renderer> tpvRenderer = new();
[Header(Constant.Header.Reference)]
[SerializeReference, SubclassSelector] public References _isAlive;
[SerializeReference, SubclassSelector] public References _getDamage;
public override void OnStart()
{
entity.AddListener<bool>(nameof(OnSetAlive), OnSetAlive);
entity.AddListener<int>(nameof(OnSetHP), OnSetHP);
}
public override void OnPlayerInitialized()
{
OnSetAlive(true);
}
public override void OnPlayerDispose()
{
SetFPV(false);
}
private void OnSetAlive(bool alive)
{
SetFPV(alive);
}
private void OnSetHP(int hp)
{
entity.Invoke<string>(Constant.Animation.Play, _getDamage);
}
private void SetFPV(bool isFpv)
{
var shadowMode = isFpv ?
ShadowCastingMode.ShadowsOnly :
ShadowCastingMode.On;
foreach (var x in fpvRenderer)
{
x.enabled = isFpv;
}
foreach (var x in tpvRenderer)
{
x.shadowCastingMode = shadowMode;
}
}
}
}