11
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BITFALL.Cosmetic;
|
||||
using BITFALL.Entities.Equipment;
|
||||
using BITFALL.Player.Movement;
|
||||
using BITKit.PlayerCamera;
|
||||
@@ -10,13 +11,27 @@ namespace BITKit.Entities.Player.Character
|
||||
{
|
||||
public class EntityCharacter : EntityPlayerBehavior
|
||||
{
|
||||
[Header(Constant.Header.Components)]
|
||||
[SerializeField] private Renderer[] fpvRenderer = Array.Empty<Renderer>();
|
||||
[SerializeField] private Renderer[] tpvRenderer = Array.Empty<Renderer>();
|
||||
[SerializeField] private Renderer[] fpvOverrideRenderers = Array.Empty<Renderer>();
|
||||
[SerializeField] private Transform[] tpvRendererGroup = Array.Empty<Transform>();
|
||||
[DictionaryReferenceConfig(nameof(Player_Mesh_Type_FPV))]
|
||||
public const string Player_Mesh_Type_FPV = nameof(Player_Mesh_Type_FPV);
|
||||
|
||||
[DictionaryReferenceConfig(nameof(Player_Mesh_Type_TPV))]
|
||||
public const string Player_Mesh_Type_TPV = nameof(Player_Mesh_Type_TPV);
|
||||
|
||||
[DictionaryReferenceConfig(nameof(Player_Mesh_Type_FPVOverride))]
|
||||
public const string Player_Mesh_Type_FPVOverride = nameof(Player_Mesh_Type_FPVOverride);
|
||||
|
||||
[DictionaryReferenceConfig(nameof(Player_Mesh_Type_TPV_Group))]
|
||||
public const string Player_Mesh_Type_TPV_Group = nameof(Player_Mesh_Type_TPV_Group);
|
||||
|
||||
private readonly List<Renderer> fpvRenderer = new();
|
||||
private readonly List<Renderer> tpvRenderer = new();
|
||||
private readonly List<Renderer> fpvOverrideRenderers = new();
|
||||
private readonly List<Renderer> tpvRendererGroup = new();
|
||||
|
||||
[Header(Constant.Header.Reference)]
|
||||
[SerializeReference, SubclassSelector] public IReference getDamage;
|
||||
|
||||
[Inject(true)] private ICosmeticService cosmeticService;
|
||||
|
||||
[Inject(true)] private IHealth _health;
|
||||
|
||||
@@ -32,6 +47,15 @@ namespace BITKit.Entities.Player.Character
|
||||
|
||||
private readonly ValidHandle allowFPVOverride = new();
|
||||
|
||||
public override void OnAwake()
|
||||
{
|
||||
base.OnAwake();
|
||||
if(cosmeticService is not null)
|
||||
cosmeticService.OnCosmeticsChanged += Rebuild;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
if (_health is not null)
|
||||
@@ -93,7 +117,8 @@ namespace BITKit.Entities.Player.Character
|
||||
});
|
||||
|
||||
allowFPVOverride.AddElement(_equipment);
|
||||
allowFPVOverride.Invoke();
|
||||
|
||||
Rebuild();
|
||||
}
|
||||
public override void OnPlayerInitialized()
|
||||
{
|
||||
@@ -153,5 +178,29 @@ namespace BITKit.Entities.Player.Character
|
||||
: shadowMode;
|
||||
}
|
||||
}
|
||||
[BIT]
|
||||
private void Rebuild()
|
||||
{
|
||||
fpvRenderer.Clear();
|
||||
tpvRenderer.Clear();
|
||||
fpvOverrideRenderers.Clear();
|
||||
tpvRendererGroup.Clear();
|
||||
foreach (var _tag in GetComponentsInChildren<Tag>(true))
|
||||
{
|
||||
if (_tag.TryGetComponent<Renderer>(out var _renderer) is false) continue;
|
||||
var tags = _tag.GetTags();
|
||||
if (tags.Contains(Player_Mesh_Type_FPV))
|
||||
fpvRenderer.Add(_renderer);
|
||||
if (tags.Contains(Player_Mesh_Type_TPV))
|
||||
tpvRenderer.Add(_renderer);
|
||||
if (tags.Contains(Player_Mesh_Type_FPVOverride))
|
||||
fpvOverrideRenderers.Add(_renderer);
|
||||
if (tags.Contains(Player_Mesh_Type_TPV_Group))
|
||||
tpvRendererGroup.Add(_renderer);
|
||||
}
|
||||
|
||||
UpdateMeshState();
|
||||
allowFPVOverride.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user