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