iFactory.Cutting.Unity/Assets/BITKit/Unity/Scripts/WorldNode/WorldNode.cs

63 lines
1.4 KiB
C#

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;
}
}