1
This commit is contained in:
61
Unity/Scripts/Entity/Components/Character/EntityCharacter.cs
Normal file
61
Unity/Scripts/Entity/Components/Character/EntityCharacter.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering;
|
||||
using Sirenix.OdinInspector;
|
||||
using DG.Tweening;
|
||||
namespace BITKit.Entities
|
||||
{
|
||||
public class EntityCharacter : EntityComponent
|
||||
{
|
||||
[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 OnSpawn()
|
||||
{
|
||||
if (isLocalPlayer)
|
||||
{
|
||||
OnSetAlive(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetFPV(false);
|
||||
}
|
||||
}
|
||||
public override void OnDespawn()
|
||||
{
|
||||
SetFPV(false);
|
||||
}
|
||||
void OnSetAlive(bool alive)
|
||||
{
|
||||
SetFPV(isLocalPlayer ? alive : false);
|
||||
}
|
||||
void OnSetHP(int hp)
|
||||
{
|
||||
entity.Invoke<string>(Constant.Animation.Play, _getDamage);
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user