예제 #1
0
 def get_pick_up_constraint(self, sim):
     if self.constraint_pick_up is None:
         return
     final_constraint = Anywhere()
     for constraint in self.constraint_pick_up:
         constraint = self._get_adjusted_circle_constraint(sim, constraint)
         constraint = constraint.create_constraint(sim, target=self.owner)
         final_constraint = final_constraint.intersect(constraint)
     final_constraint = final_constraint._copy(_multi_surface=True)
     return final_constraint
예제 #2
0
 def get_carry_transition_constraint(self,
                                     sim,
                                     position,
                                     routing_surface,
                                     cost=0,
                                     mobile=True):
     constraints = self.DEFAULT_GEOMETRIC_TRANSITION_CONSTRAINT
     constraints = constraints.constraint_mobile if mobile else constraints.constraint_non_mobile
     final_constraint = Anywhere()
     for constraint in constraints:
         if mobile:
             constraint = self._get_adjusted_circle_constraint(
                 sim, constraint)
         final_constraint = final_constraint.intersect(
             constraint.create_constraint(None,
                                          None,
                                          target_position=position,
                                          routing_surface=routing_surface))
     final_constraint = final_constraint.generate_constraint_with_cost(cost)
     final_constraint = final_constraint._copy(_multi_surface=True)
     return final_constraint