#if UNITY_5_3_OR_NEWER using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace BITKit.WorldNode { public sealed class UnityNode : MonoBehaviour,IWorldNode { [SerializeReference, SubclassSelector] private IWorldNodeService worldNodeService = new WorldNodeService(); [SerializeReference, SubclassSelector] private IWorldNode worldNode; public int Id { get; set; } public IWorldNode WorldNode => worldNode; public object WorldObject { get => gameObject; set=>throw new InvalidOperationException("Cannot set WorldObject"); } private void Start() { if (worldNode is null) { Debug.LogWarning("WorldNode is null"); return; } Id = gameObject.GetInstanceID(); worldNode.Id = Id; worldNode.WorldObject = gameObject; worldNode.Initialize(); worldNodeService.RegisterNode(worldNode); Destroy(this); } } } #endif