using System; using System.Collections; using System.Collections.Generic; using System.Text; using UnityEngine; namespace BITKit.WorldNodes { public interface IWorldNode { Vector3 Position { get; } } [ExecuteAlways] public class WorldNode : MonoBehaviour,IWorldNode { [SerializeField, ReadOnly] private string report; [SerializeField,ReadOnly] private bool isRegistered; private void OnEnable() { var reportBuilder = new StringBuilder(); reportBuilder.AppendLine(nameof(OnEnable)); var instanceId = GetInstanceID(); reportBuilder.AppendLine($"InstanceId{instanceId}"); switch (instanceId) { case <0: isRegistered = true; WorldNodeService.WorldNodeList.Add(this); reportBuilder.AppendLine(report); break; case >0: reportBuilder.AppendLine($"WorldNode {name} will not registered"); break; } report = reportBuilder.ToString(); } private void OnDisable() { var reportBuilder = new StringBuilder(); reportBuilder.AppendLine(nameof(OnDisable)); if (isRegistered) { WorldNodeService.WorldNodeList.Remove(this); reportBuilder.AppendLine( $"WorldNode {name} unregistered"); isRegistered = false; } else { reportBuilder.AppendLine($"WorldNode {name} is not registered"); } report = reportBuilder.ToString(); } public Vector3 Position => transform.position; } }