def get_sim_interaction_log(interaction, clear=False):
    if interaction.sim is not None:
        all_interaction_logs = setdefault_callable(interaction_archive, interaction.sim, weakref.WeakKeyDictionary)
        interaction_log = setdefault_callable(all_interaction_logs, interaction, InteractionArchiveGSILog)
        if clear:
            del all_interaction_logs[interaction]
        return interaction_log
Пример #2
0
def get_path_route_events_log(path, clear=False):
    if path.sim is not None:
        all_path_logs = setdefault_callable(path_events_archive, path.sim.id,
                                            dict)
        path_log = setdefault_callable(all_path_logs, id(path),
                                       PathRouteEventsArchiveGSILog)
        if clear:
            del path_events_archive[path.sim.id][id(path)]
        return path_log
def get_sim_interaction_log(interaction, clear=False):
    if interaction.sim is not None:
        all_interaction_logs = setdefault_callable(interaction_archive,
                                                   interaction.sim,
                                                   weakref.WeakKeyDictionary)
        interaction_log = setdefault_callable(all_interaction_logs,
                                              interaction,
                                              InteractionArchiveGSILog)
        if clear:
            del all_interaction_logs[interaction]
        return interaction_log
Пример #4
0
def get_sim_transition_log(sim, interaction=None):
    all_transition_logs = setdefault_callable(posture_transition_logs, sim, weakref.WeakKeyDictionary)
    if interaction is None:
        interaction_ref = current_transition_interactions.get(sim, None)
        if interaction_ref is None:
            return
        interaction = interaction_ref()
        if interaction is None:
            del current_transition_interactions[sim]
            return
    posture_log = setdefault_callable(all_transition_logs, interaction, PostureTransitionGSILog)
    return posture_log
def get_sim_transition_log(sim, interaction=None):
    all_transition_logs = setdefault_callable(posture_transition_logs, sim, weakref.WeakKeyDictionary)
    if interaction is None:
        interaction_ref = current_transition_interactions.get(sim, None)
        if interaction_ref is None:
            return
        interaction = interaction_ref()
        if interaction is None:
            del current_transition_interactions[sim]
            return
    posture_log = setdefault_callable(all_transition_logs, interaction, PostureTransitionGSILog)
    return posture_log
 def __init__(self, interaction, **kwargs):
     super().__init__(**kwargs)
     self._sim = interaction.sim
     self._autonomy_modifier_handles = weakref.WeakKeyDictionary()
     autonomy_modifiers = interaction.target.autonomy_modifiers
     for modifier in autonomy_modifiers:
         subject = self._sim
         if modifier.subject:
             subject = interaction.get_participant(modifier.subject)
         if subject is not None:
             handle = subject.add_statistic_modifier(
                 modifier, interaction_modifier=True)
             setdefault_callable(self._autonomy_modifier_handles, subject,
                                 list).append(handle)
Пример #7
0
def partition_boundary_on_params(boundary_to_params):
    ks_to_vs = {}
    for params in set(itertools.chain(*boundary_to_params.values())):
        for (k, v) in params.items():
            vs = setdefault_callable(ks_to_vs, k, set)
            vs.add(v)

    def get_matching_params_excluding_key(k, v):
        results = []
        for (boundary, param_sets) in boundary_to_params.items():
            valid_params = set()
            for params in param_sets:
                vp = params.get(k, v)
                if vp == v:
                    valid_params.add(sims4.collections.frozendict({kf: vf for (kf, vf) in params.items() if kf != k}))
            results.append((boundary, valid_params))
        return results

    unique_keys = set()
    for (k, vs) in ks_to_vs.items():
        matching_params = None
        for v in vs:
            matching_params_v = get_matching_params_excluding_key(k, v)
            if matching_params is None:
                matching_params = matching_params_v
            elif matching_params != matching_params_v:
                unique_keys.add(k)
                break
    boundary_param_sets = {boundary: unique_keys for boundary in boundary_to_params}
    return boundary_param_sets
Пример #8
0
 def reserve(self, sim, owner, multi=False):
     use_list = self._reservations_multi if multi else self._reservations
     sim_list = setdefault_callable(use_list, sim, WeakSet)
     sim_list.add(owner)
     self._use_list_changed_callbacks(user=sim, added=True)
Пример #9
0
 def created_objects(cls):
     created_objects = cls._zone_to_cls_to_created_objects.setdefault(
         services.current_zone(), {})
     return setdefault_callable(created_objects, cls, WeakSet)
Пример #10
0
def get_greeting_log(sim_id, clear=False):
    greeting_log = setdefault_callable(greeting_archive, sim_id,
                                       GreetingsArchiveLog)
    if clear:
        del greeting_archive[sim_id]
    return greeting_log
def get_animation_log(arb, clear=False):
    animation_log = setdefault_callable(animation_archive, id(arb),
                                        AnimationArchiveGSILog)
    if clear:
        del animation_archive[id(arb)]
    return animation_log
Пример #12
0
 def reserve(self, sim, owner, multi=False):
     use_list = self._reservations_multi if multi else self._reservations
     sim_list = setdefault_callable(use_list, sim, WeakSet)
     sim_list.add(owner)
     self._use_list_changed_callbacks(user=sim, added=True)
Пример #13
0
 def created_objects(cls):
     created_objects = cls._zone_to_cls_to_created_objects.setdefault(services.current_zone(), {})
     return setdefault_callable(created_objects, cls, WeakSet)