BITFALL/Assets/BITKit/Unity/Scripts/Entity/Components/Character/EntityCharacter.cs

53 lines
1.5 KiB
C#
Raw Normal View History

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;
}
}
}
}