using System; using System.Collections; using System.Collections.Generic; using BITKit; using Quadtree; using Quadtree.Items; using UnityEngine; namespace BITFALL.Industry { public class UnityTechServiceBase : MonoBehaviour where T : IItem> { private static readonly CacheList _devices = new(); public static void Register(T device) { _devices.Add(device); _quadtreeRoot.Insert(device); } public static void UnRegister(T device) { _devices.Remove(device); _quadtreeRoot.Remove(device); } public static T[] SearchDevice(Vector3 position, float radius) { return _quadtreeRoot.Find(new Bounds(position, Vector3.one * radius)).ToArray(); } private static readonly QuadtreeRoot> _quadtreeRoot = new(default, Vector3.one * 1024f); [SerializeReference, SubclassSelector] private ITicker ticker; protected void Start() { ticker.Add(OnTick); destroyCancellationToken.Register(Dispose); } protected virtual void OnTick(float obj){} protected virtual void Dispose() { ticker.Remove(OnTick); } } }