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);
            }
        }
        private static void InsertGameObject(GameObject go)
        {
            if (!go.Enabled || go.IgnoreCulling)
            {
                return;
            }

            RectangleF bounds = go.Bounds;

            if (bounds.Width > TileSize || bounds.Height > TileSize)
            {
                largeObjectTile.Insert(go);
            }
            else
            {
                SpatialPartition tile = FetchPartition(go.PartitionPosition)
                                        ?? TakeFromPool(ToPartitionPoint(go.PartitionPosition));
                tile.Insert(go);
            }
        }