private void CreateSector(TilePosition posSector, bool inmediate)
        {
            TilePosition sectorOffset = new TilePosition(posSector.x << SECTOR_SIZE_BITS, posSector.y << SECTOR_SIZE_BITS, posSector.z << SECTOR_SIZE_BITS);

            Sector sector = new Sector(world, posSector, sectorOffset);

            sectors[posSector.x | (posSector.y << xSectorsBits) | (posSector.z << xySectorsBits)] = sector;

            if (inmediate == false)
                pendingSectorsUpdate.Add(sector);
            else
                sector.UpdateMesh();
        }
        public override void Update()
        {
            TilePosition playerTilePosition = Graphics.Vector3ToTilePosition(player.position);

            Sector playerSector = sectorManager.GetSectorTile(playerTilePosition);

            if (playerSector != currentPlayerSector)
            {
                currentPlayerSector = playerSector;

                List<Sector> newVisibleVectors = FindSectorsNearPlayer();

                //Disable sectors far away
                for (int i = visibleSectors.Count - 1; i >= 0; i--)
                {
                    Sector sector = visibleSectors[i];

                    int pos = newVisibleVectors.IndexOf(sector);

                    if (pos < 0)
                    {
                        sectorManagerUnity.ReturnSectorUnityToCache((SectorUnity) sector.GetSectorGraphics());
                        visibleSectors.RemoveAt(i);
                    }
                    else
                    {
                        newVisibleVectors.RemoveAt(pos);
                    }
                }

                //Enable sectors near
                for (int i = newVisibleVectors.Count - 1; i >= 0; i--)
                {
                    Sector sector = newVisibleVectors[i];

                    visibleSectors.Add(sector);

                    sectorManagerUnity.GetSectorUnityFromCache(sector);
                }
            }
        }
        static private int CompareSectorsByDistanceToPlayer(Sector sector1, Sector sector2)
        {
            int dist1 = (currentPlayerPositionForSort - sector1.tileOffset).GetDistanceSquared();
            int dist2 = (currentPlayerPositionForSort - sector2.tileOffset).GetDistanceSquared();

            return dist2.CompareTo(dist1);
        }
        public override void Clear()
        {
            visibleSectors.Clear();

            currentPlayerSector = null;
        }