1
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BITFALL.Cosmetic;
|
||||
using BITKit;
|
||||
using BITKit.Entities;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BITFALL.Entities.Cosmetic
|
||||
{
|
||||
public class CosmeticArmModelBehaviour : EntityBehavior
|
||||
{
|
||||
[Inject] private ICosmeticService _cosmeticService;
|
||||
public override void OnAwake()
|
||||
{
|
||||
base.OnAwake();
|
||||
_cosmeticService.OnCosmeticsChange += OnCosmeticsChange;
|
||||
}
|
||||
public override void OnStart()
|
||||
{
|
||||
base.OnStart();
|
||||
OnCosmeticsChange();
|
||||
}
|
||||
|
||||
public override void OnDestroyComponent()
|
||||
{
|
||||
base.OnDestroyComponent();
|
||||
_cosmeticService.OnCosmeticsChange -= OnCosmeticsChange;
|
||||
}
|
||||
|
||||
private void OnCosmeticsChange()
|
||||
{
|
||||
foreach (var x in _cosmeticService
|
||||
.Modified
|
||||
.Values
|
||||
.OfType<ICosmetic>()
|
||||
.SelectMany(x=>x.Contents)
|
||||
.OfType<CosmeticArmModelContent>()
|
||||
)
|
||||
{
|
||||
foreach (var tag in GetComponentsInChildren<Tag>())
|
||||
{
|
||||
if(tag.GetTags().Contains("c_weapon_arm") is false) continue;
|
||||
if(tag.TryGetComponent<SkinnedMeshRenderer>(out var _renderer))
|
||||
{
|
||||
_renderer.sharedMaterials = x.SkinnedMeshRenderer.sharedMaterials;
|
||||
|
||||
var bones = x.SkinnedMeshRenderer.bones;
|
||||
|
||||
for (var i = 0; i < bones.Length; i++)
|
||||
{
|
||||
bones[i] = CosmeticModelBehaviour.GetRootBoneByName(_renderer.rootBone, bones[i].name);
|
||||
}
|
||||
|
||||
_renderer.sharedMesh = x.SkinnedMeshRenderer.sharedMesh;
|
||||
_renderer.bones = bones;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user