2023-08-27 02:58:19 +08:00
|
|
|
using System;
|
2023-06-08 14:09:50 +08:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
using UnityEngine.Rendering;
|
2023-08-27 02:58:19 +08:00
|
|
|
namespace BITKit.Entities.Player.Character
|
2023-06-08 14:09:50 +08:00
|
|
|
{
|
2023-08-12 01:43:24 +08:00
|
|
|
public class EntityCharacter : EntityPlayerComponent
|
2023-06-08 14:09:50 +08:00
|
|
|
{
|
|
|
|
[Header(Constant.Header.Components)]
|
2023-08-27 02:58:19 +08:00
|
|
|
[SerializeField] private Renderer[] fpvRenderer = Array.Empty<Renderer>();
|
|
|
|
[SerializeField] private Renderer[] tpvRenderer = Array.Empty<Renderer>();
|
2023-06-08 14:09:50 +08:00
|
|
|
[Header(Constant.Header.Reference)]
|
|
|
|
[SerializeReference, SubclassSelector] public References _getDamage;
|
|
|
|
public override void OnStart()
|
|
|
|
{
|
2023-08-27 02:58:19 +08:00
|
|
|
var heal = entity.Get<IHealth>();
|
|
|
|
heal.OnSetAlive += OnSetAlive;
|
|
|
|
heal.OnSetHealthPoint += OnSetHP;
|
2023-06-08 14:09:50 +08:00
|
|
|
}
|
2023-08-23 01:59:40 +08:00
|
|
|
|
2023-08-12 01:43:24 +08:00
|
|
|
public override void OnPlayerInitialized()
|
2023-06-08 14:09:50 +08:00
|
|
|
{
|
2023-08-23 01:59:40 +08:00
|
|
|
OnSetAlive(true);
|
2023-06-08 14:09:50 +08:00
|
|
|
}
|
2023-08-23 01:59:40 +08:00
|
|
|
|
2023-08-12 01:43:24 +08:00
|
|
|
public override void OnPlayerDispose()
|
2023-06-08 14:09:50 +08:00
|
|
|
{
|
|
|
|
SetFPV(false);
|
|
|
|
}
|
2023-08-23 01:59:40 +08:00
|
|
|
private void OnSetAlive(bool alive)
|
2023-06-08 14:09:50 +08:00
|
|
|
{
|
2023-08-23 01:59:40 +08:00
|
|
|
SetFPV(alive);
|
2023-06-08 14:09:50 +08:00
|
|
|
}
|
2023-08-23 01:59:40 +08:00
|
|
|
private void OnSetHP(int hp)
|
2023-06-08 14:09:50 +08:00
|
|
|
{
|
|
|
|
entity.Invoke<string>(Constant.Animation.Play, _getDamage);
|
|
|
|
}
|
2023-08-23 01:59:40 +08:00
|
|
|
private void SetFPV(bool isFpv)
|
2023-06-08 14:09:50 +08:00
|
|
|
{
|
|
|
|
var shadowMode = isFpv ?
|
|
|
|
ShadowCastingMode.ShadowsOnly :
|
|
|
|
ShadowCastingMode.On;
|
|
|
|
foreach (var x in fpvRenderer)
|
|
|
|
{
|
|
|
|
x.enabled = isFpv;
|
|
|
|
}
|
|
|
|
foreach (var x in tpvRenderer)
|
|
|
|
{
|
|
|
|
x.shadowCastingMode = shadowMode;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|