def update(self, position):
        current_chunk = (int(position[X] // self.chunk_size), int(position[Y] // self.chunk_size))

        if self.current_chunk[X] != current_chunk[X] or self.current_chunk[Y] != current_chunk[Y]:
            new_chunks = dict()

            render_dist_min = self.render_distance//2
            render_dist_max = self.render_distance - render_dist_min

            for i in range(current_chunk[0] - render_dist_min, current_chunk[0] + render_dist_max):
                for j in range(current_chunk[1] - render_dist_min, current_chunk[1] + render_dist_max):
                    if (i, j) not in self.chunks:
                        new_chunks[(i, j)] = self.load_chunk(i, j)
                    else:
                        new_chunks[(i, j)] = self.chunks[(i, j)]

            for key, value in self.chunks.items():
                if key not in new_chunks.keys():
                    PybulletAPI.removeBody(value)

            self.chunks = new_chunks
            self.current_chunk = current_chunk
 def remove(self):
     for dot in self.dots:
         PybulletAPI.removeBody(dot)
Esempio n. 3
0
 def remove(self) -> None:
     p.removeBody(self._object_id)
     self._dvl.remove()
     self._buoyancy.remove()
     for thruster in self.thrusters.values():
         thruster.remove()