using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; namespace BITKit.Entities { public class EntityCharacter : EntityPlayerComponent { [Header(Constant.Header.Components)] public List fpvRenderer = new(); public List tpvRenderer = new(); [Header(Constant.Header.Reference)] [SerializeReference, SubclassSelector] public References _isAlive; [SerializeReference, SubclassSelector] public References _getDamage; public override void OnStart() { entity.AddListener(nameof(OnSetAlive), OnSetAlive); entity.AddListener(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(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; } } } }