Enforce world bounds for object positioning and update related tests
All checks were successful
Build Simulation and Test / Run All Tests (push) Successful in 30s

This commit is contained in:
Sam 2025-06-03 21:55:40 -05:00
parent 56415bb07a
commit fe4e15eac1
3 changed files with 10 additions and 4 deletions

View File

@ -83,5 +83,9 @@ def test_tick_all_calls_tick(world):
def test_add_object_out_of_bounds(world): def test_add_object_out_of_bounds(world):
entity = DummyEntity(Position(x=1000, y=1000)) entity = DummyEntity(Position(x=1000, y=1000))
with pytest.raises(ValueError):
world.add_object(entity) world.add_object(entity)
entity = world.get_objects()[0]
assert entity.position.x == 49 and entity.position.y == 49

View File

@ -111,7 +111,9 @@ class World:
# Ensure position is within world bounds, considering a center origin # Ensure position is within world bounds, considering a center origin
if position.x < -self.world_size[0] / 2 or position.x >= self.world_size[0] / 2 or position.y < - \ if position.x < -self.world_size[0] / 2 or position.x >= self.world_size[0] / 2 or position.y < - \
self.world_size[1] / 2 or position.y >= self.world_size[1] / 2: self.world_size[1] / 2 or position.y >= self.world_size[1] / 2:
raise ValueError(f"Position is out of world bounds. {position} is out of bounds.") # force position to be within bounds
position.x = max(-self.world_size[0] / 2, min(position.x, self.world_size[0] / 2 - 1))
position.y = max(-self.world_size[1] / 2, min(position.y, self.world_size[1] / 2 - 1))
return int(position.x // self.partition_size), int(position.y // self.partition_size) return int(position.x // self.partition_size), int(position.y // self.partition_size)