def update(self, dt): self.internal_map.process_queue() sector = sectorize(self.position) if sector != self.sector: self.internal_map.change_sectors(self.sector, sector) if self.sector is None: self.internal_map.process_entire_queue() self.sector = sector
def _remove_block(self, position, immediate=True): """ Remove the block at the given `position`. Args: position (tuple): The (x, y, z) position of the block to remove. immediate (bool): Whether or not to remove the block immediately. """ del self.whole_map[position] self.sectors[sectorize(position)].remove(position) if immediate: if position in self.partial_map: self.hide_block(position) self._check_neighbors(position)
def _add_block(self, position, texture, immediate=True): """ Add a block with the given `texture` and `position` to the world. Note that block is a 1x1x1 cube and its position is its centroid. Args: position (tuple): The (x, y, z) position of the block to add. texture (list): The coordinates of the texture squares, e.g. TILE. immediate (bool): Whether or not to draw the block immediately. """ if position in self.whole_map: # Not called for current static map assert False, 'Duplicated block!' self._remove_block(position, immediate) self.whole_map[position] = texture self.sectors.setdefault(sectorize(position), []).append(position) if immediate: if self._is_exposed(position): self.show_block(position) self._check_neighbors(position)