def on_reset_get_interdependent_reset_records(self, reset_reason, reset_records): super().on_reset_get_interdependent_reset_records( reset_reason, reset_records) relevant_sims = self.get_users(sims_only=True) for sim in relevant_sims: if self.reset_reason() == ResetReason.BEING_DESTROYED: reset_records.append( ResetRecord(sim, ResetReason.RESET_EXPECTED, self, 'In use list of object being destroyed.')) else: body_target_part_owner = sim.posture_state.body.target if body_target_part_owner is not None: if body_target_part_owner.is_part: body_target_part_owner = body_target_part_owner.part_owner transition_controller = sim.queue.transition_controller if not body_target_part_owner is self: if not transition_controller is None: if not transition_controller.will_derail_if_given_object_is_reset( self): reset_records.append( ResetRecord(sim, ResetReason.RESET_EXPECTED, self, 'Transitioning To or In.')) reset_records.append( ResetRecord(sim, ResetReason.RESET_EXPECTED, self, 'Transitioning To or In.'))
def on_reset_get_interdependent_reset_records(self, reset_reason, reset_records): super().on_reset_get_interdependent_reset_records( reset_reason, reset_records) for child in set(self.get_all_children_gen()): reset_records.append( ResetRecord(child, ResetReason.RESET_EXPECTED, self, 'Child'))
def on_reset_component_get_interdependent_reset_records( self, reset_reason, reset_records): owner_users = self.owner.get_users() for obj in self.get_linked_objects_gen(): if self._has_active_link(owner_users, obj): reset_records.append( ResetRecord(obj, ResetReason.RESET_EXPECTED, self, 'Linked object reset'))
def add_interdependent_reset_records(self, sim, records): work_entry = self._active_work.get(sim, None) if work_entry is None: return records for other_sim in work_entry.resources: if other_sim is not sim: records.append( ResetRecord(other_sim, ResetReason.RESET_EXPECTED, sim, 'Work entry resource:{}'.format(work_entry)))
def on_reset_component_get_interdependent_reset_records( self, reset_reason, reset_records): if self.is_shared_inventory: return if reset_reason == ResetReason.BEING_DESTROYED: for obj in self: reset_records.append( ResetRecord(obj, reset_reason, self, 'In inventory')) self._storage.discard_all_objects() self._hidden_storage.discard_all_objects()
def on_reset_get_interdependent_reset_records(self, reset_reason, reset_records): self.on_reset_component_get_interdependent_reset_records( reset_reason, reset_records) for interaction in list(self.interaction_refs): if reset_reason != ResetReason.BEING_DESTROYED: transition_controller = interaction.sim.queue.transition_controller if transition_controller is not None and transition_controller.will_derail_if_given_object_is_reset( self): pass while interaction.should_reset_based_on_pipeline_progress: self.interaction_refs.remove(interaction) reset_records.append( ResetRecord( interaction.sim, ResetReason.RESET_EXPECTED, self, 'Actor in interaction targeting source. {}, {}'.format( interaction, interaction.pipeline_progress)))
def on_reset_get_interdependent_reset_records(self, reset_reason, reset_records): self.on_reset_component_get_interdependent_reset_records(reset_reason, reset_records) if self._interaction_refs is None: return for interaction in tuple(self._interaction_refs): sim = None if reset_reason != ResetReason.BEING_DESTROYED: sim = interaction.sim transition_controller = sim.queue.transition_controller if sim is not None else None if transition_controller is not None and transition_controller.will_derail_if_given_object_is_reset(self): continue elif interaction.should_reset_based_on_pipeline_progress: self.remove_interaction_reference(interaction) sim = sim or interaction.sim if sim is None: continue reset_records.append(ResetRecord(sim, ResetReason.RESET_EXPECTED, self, 'Actor in interaction targeting source. {}, {}'.format(interaction, interaction.pipeline_progress)))