Skip to content

Commit 622449d

Browse files
committed
enforce at least 4 waypoints for the carrier group
1 parent a6d364f commit 622449d

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

core/utils/helper.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import random
2525
import math
2626

27+
from copy import deepcopy
2728
from croniter import croniter
2829
from datetime import datetime, timedelta
2930
from importlib import import_module
@@ -1001,3 +1002,7 @@ def _unwrap_list(value):
10011002
elif isinstance(self._data, list):
10021003
return _unwrap_list(self._data)
10031004
return self._data
1005+
1006+
def clone(self):
1007+
"""Deeply clone the DictWrapper object."""
1008+
return DictWrapper(deepcopy(self.to_dict()))

core/utils/mizedit/carrier_relocator.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ def rotate_group_around(group: DictWrapper, pivot: tuple[float, float], degrees_
9090
for unit in group.units:
9191
distance = distance_to_point(pivot[0], pivot[1], unit.x, unit.y)
9292
heading = heading_between_points(pivot[0], pivot[1], unit.x, unit.y)
93-
new_heading = Heading.from_degrees(heading + degrees_change).degrees
93+
new_heading = Heading.from_degrees(heading + degrees_change).radians
9494

9595
unit.x, unit.y = point_from_heading(pivot[0], pivot[1], new_heading, distance)
96-
unit.heading = Heading.from_degrees(unit.heading + degrees_change).degrees
96+
unit.heading = Heading.from_degrees(unit.heading + degrees_change).radians
9797

9898

9999
def relocate_carrier(_: dict, reference: dict, **kwargs):
@@ -115,13 +115,16 @@ def relocate_carrier(_: dict, reference: dict, **kwargs):
115115
)
116116
group_position_before_change = (route.points[0].x, route.points[0].y)
117117

118-
if len(route.points) < 4:
119-
logger.error(f"Carrier group {reference['name']} missing waypoint")
120-
return
121-
# TODO
118+
while len(route.points) < 4:
119+
route.points.append(route.points[-1].clone())
122120

123-
route.points[0].x = reference['x'] = carrier_start_pos[0]
124-
route.points[0].y = reference['y'] = carrier_start_pos[1]
121+
# update the groups position
122+
reference['x'] = carrier_start_pos[0]
123+
reference['y'] = carrier_start_pos[1]
124+
125+
# change the waypoints
126+
route.points[0].x = carrier_start_pos[0]
127+
route.points[0].y = carrier_start_pos[1]
125128
route.points[0].speed = cruise.speed.meters_per_second
126129

127130
route.points[1].x = carrier_end_pos[0]

0 commit comments

Comments
 (0)