using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; namespace BITKit.Entities.Player.Character { public class EntityCharacter : EntityPlayerComponent { [Header(Constant.Header.Components)] [SerializeField] private Renderer[] fpvRenderer = Array.Empty(); [SerializeField] private Renderer[] tpvRenderer = Array.Empty(); [Header(Constant.Header.Reference)] [SerializeReference, SubclassSelector] public References _getDamage; public override void OnStart() { var heal = entity.Get(); heal.OnSetAlive += OnSetAlive; heal.OnSetHealthPoint += 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; } } } }