SmellEvent.py 911B

1234567891011121314151617181920212223
  1. from intelligine.cst import COL_SMELL, CARRIED_BY
  2. from intelligine.mechanism.TraversableDistanceFromMechanism import TraversableDistanceFromMechanism
  3. from intelligine.synergy.event.Event import Event
  4. from synergine.core.exceptions import NotConcernedEvent
  5. class SmellEvent(Event):
  6. _mechanism = TraversableDistanceFromMechanism
  7. _concern = COL_SMELL
  8. _each_cycle = 100
  9. _first_cycle_force = True
  10. def _prepare(self, object_id, context, parameters={}):
  11. if not parameters['points_distances'] or not self._concerned_object(context, object_id):
  12. raise NotConcernedEvent()
  13. return parameters
  14. def _concerned_object(self, context, object_id):
  15. # TODO: Un peu hardcodé etant donné que cet event concerne tout les COL_SMELL et pas que les transportable ...
  16. return not context.metas.value.get(CARRIED_BY, object_id, allow_empty=True, empty_value=False)