public static void Insert(IPartitionObject obj) { if (obj is Component c && !c.Enabled) { return; } if (obj is GameObject go) { InsertGameObject(go); } else { SpatialPartition tile = FetchPartition(obj.PartitionPosition) ?? TakeFromPool(ToPartitionPoint(obj.PartitionPosition)); tile.Insert(obj); } }
/// <summary> /// Removes a GameObject from the grid system. /// </summary> /// <param name="go">GameObject to remove.</param> internal void Remove(IPartitionObject obj) { PartitionTile partitionTile = obj.CurrentPartitionTile; partitionTile?.Remove(obj); }
/// <summary> /// Inserts a GameObject into the grid system. /// </summary> /// <param name="go">GameObject to add.</param> internal void Insert(IPartitionObject obj) { PartitionTile partitionTile = GetTile(obj.PartitionPosition - Position); partitionTile?.Insert(obj); }