63 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|