NearEvent.py 832B

123456789101112131415161718192021
  1. from synergine.synergy.event.Event import Event
  2. from xyzworld.mechanism.ArroundMechanism import ArroundMechanism
  3. class NearEvent(Event):
  4. _near_name = None
  5. _near_map = lambda self, near_object_id, context: False
  6. def __init__(self, actions):
  7. super().__init__(actions)
  8. self._mechanism = ArroundMechanism
  9. def map(self, context, parameters, stop_at_first = False, filter = lambda near_object_id, context: True):
  10. for near_object_id in parameters['objects_ids_near']:
  11. if self._near_map(near_object_id, context) and filter(near_object_id, context):
  12. if self._near_name not in parameters:
  13. parameters[self._near_name] = []
  14. parameters[self._near_name].append(near_object_id)
  15. if stop_at_first:
  16. return