using D2D; using D2D.Utilities; using DG.Tweening; using System; using UnityEngine; using static D2D.Utilities.CommonGameplayFacade; public class NeutralMember : Unit { [SerializeField] private SexyOverlap neutralOverlap; [SerializeField] private LayerMask playerLayer; [SerializeField] private SkinnedMeshRenderer meshRenderer; public Action OnDespawn; private Color activeColor; private Color deactivatedColor = Color.white; private void Awake() { activeColor = meshRenderer.material.color; meshRenderer.material.DOColor(deactivatedColor, 0); } private void Update() { if (neutralOverlap.HasTouch && neutralOverlap.Touched.gameObject != this) { AddNeutralToSquad(); enabled = false; neutralOverlap.gameObject.SetActive(false); Despawn(); } if (Vector3.Distance(transform.position, _formation.transform.position) > _gameData.neutralDespawnDistance) { Despawn(); Destroy(gameObject); } } private void AddNeutralToSquad() { _squad.AddMember(Get()); gameObject.SetLayerRecursively(playerLayer.ToLayer()); meshRenderer.material.DOColor(activeColor, .5f); } private void Despawn() { OnDespawn?.Invoke(); } }