def __init__(self, interaction, tests, max_line_of_sight_radius, map_divisions, simplification_ratio, boundary_epsilon, facing_offset): super().__init__(max_line_of_sight_radius, map_divisions, simplification_ratio, boundary_epsilon) self._max_line_of_sight_radius = max_line_of_sight_radius self._interaction = interaction self._tests = tests self._privacy_constraints = [] self._allowed_sims = WeakSet() self._disallowed_sims = WeakSet() self._violators = WeakSet() self._late_violators = WeakSet() self.is_active = False self.has_shooed = False self.central_object = None self._pushed_interactions = [] services.privacy_service().add_instance(self)
def find_violating_vehicles(self): violators = [] privacy_service = services.privacy_service() for vehicle in privacy_service.get_potential_vehicle_violators(): if self.vehicle_violates_privacy(vehicle): violators.append(vehicle) return violators
def on_remove(self): self.remove_callbacks() self.owner.routing_component.on_sim_removed() master_controller = services.get_master_controller() master_controller.remove_sim(self.owner) if self.privacy_rules: privacy_service = services.privacy_service() privacy_service.remove_vehicle_to_monitor(self.owner)
def _setup(self): master_controller = services.get_master_controller() master_controller.add_sim(self.owner) if self.privacy_rules: privacy_service = services.privacy_service() privacy_service.add_vehicle_to_monitor(self.owner) self.owner.routing_component.on_sim_added() self.add_callbacks()
def reevaluate_all_privacy_instances(): for privacy in services.privacy_service().privacy_instances: privacy._allowed_sims = WeakSet() privacy._disallowed_sims = WeakSet() privacy._violators = WeakSet() privacy._late_violators = WeakSet() for sim in TurboManagerUtil.Sim.get_all_sim_instance_gen( humans=True, pets=False): privacy.handle_late_violator(sim)
def reevaluate_privacy_violator(privacy_owner, violator_sim): for privacy in services.privacy_service().privacy_instances: while privacy.interaction is not None and privacy.interaction.sim is not None and privacy.interaction.sim is privacy_owner: if violator_sim in privacy.allowed_sims: privacy.allowed_sims.discard(violator_sim) if violator_sim in privacy.disallowed_sims: privacy.disallowed_sims.discard(violator_sim) privacy.evaluate_sim(violator_sim) return
def _check_privacy(self, _, old_location, new_location): if not self.privacy_rules: return for privacy in services.privacy_service().privacy_instances: if not privacy.privacy_violators & PrivacyViolators.VEHICLES: continue new_violation = privacy not in self._privacy_violations violates_privacy = self.violates_privacy(privacy) if new_violation: if violates_privacy: self.handle_privacy_violation(privacy) if not violates_privacy: self._privacy_violations.discard(privacy) elif not violates_privacy: self._privacy_violations.discard(privacy)
def remove_privacy(self): self.cleanup_privacy_instance() services.privacy_service().remove_instance(self)
def _check_violations(self, *_, **__): if services.privacy_service().check_for_late_violators(self.owner): return for reaction_trigger in self.owner.reaction_triggers.values(): reaction_trigger.intersect_and_execute(self.owner)
def add_privacy(self): services.privacy_service().add_instance(self)
def get_all_privacy_instances_gen(): for privacy in services.privacy_service().privacy_instances: yield privacy