def split_by_net_role(obj): # Actor Mixer和Virtual Folder无法被放在SwitchContainer下面 if obj['type'] == 'ActorMixer' or obj['type'] == 'Folder': return original_name = obj['name'] # 拆分结构并重组到SwitchContainer下面 old_parent = WaapiTools.get_parent_objects(obj, False) new_parent = WaapiTools.create_object(original_name + '_Temp', 'SwitchContainer', old_parent, 'rename') WaapiTools.move_object(obj, new_parent) obj_2p = WaapiTools.copy_object(obj, new_parent) obj_3p = WaapiTools.copy_object(obj, new_parent) WaapiTools.rename_object(obj, original_name + '_1P') WaapiTools.rename_object(obj_2p, original_name + '_2P') WaapiTools.rename_object(obj_3p, original_name + '_3P') WaapiTools.rename_object(new_parent, original_name) # 分配bus original_bus = WaapiTools.get_object_property(obj, '@OutputBus') original_bus_name = original_bus['name'] bus_1p = WaapiTools.find_object_by_name(original_bus_name + '_1P', 'Bus') if bus_1p is None: bus_1p = WaapiTools.create_object(original_bus_name + '_1P', 'Bus', original_bus, 'replace') bus_2p = WaapiTools.find_object_by_name(original_bus_name + '_2P', 'Bus') if bus_2p is None: bus_2p = WaapiTools.create_object(original_bus_name + '_2P', 'Bus', original_bus, 'replace') bus_3p = WaapiTools.find_object_by_name(original_bus_name + '_3P', 'Bus') if bus_3p is None: bus_3p = WaapiTools.create_object(original_bus_name + '_3P', 'Bus', original_bus, 'replace') WaapiTools.set_object_property(obj, 'OverrideOutput', True) WaapiTools.set_object_reference(obj, 'OutputBus', bus_1p) WaapiTools.set_object_property(obj_2p, 'OverrideOutput', True) WaapiTools.set_object_reference(obj_2p, 'OutputBus', bus_2p) WaapiTools.set_object_property(obj_3p, 'OverrideOutput', True) WaapiTools.set_object_reference(obj_3p, 'OutputBus', bus_3p) net_role_switch_group = WaapiTools.find_object_by_name( 'Net_Role', 'SwitchGroup') if net_role_switch_group is None: return WaapiTools.set_object_reference(new_parent, 'SwitchGroupOrStateGroup', net_role_switch_group) for switch_obj in WaapiTools.get_children_objects(net_role_switch_group, False): if '1P' in switch_obj['name']: assign_switch_mapping(obj, switch_obj) WaapiTools.set_object_reference(new_parent, 'DefaultSwitchOrState', switch_obj) if '2P' in switch_obj['name']: assign_switch_mapping(obj_2p, switch_obj) if '3P' in switch_obj['name']: assign_switch_mapping(obj_3p, switch_obj)
def find_matching_bank(self, obj): # 在每一种排列组合中搜索 for permutation in self.permutations: match = True for item in permutation: if item not in obj['path']: match = False break # 找到符合名称的Bank if match: bank_name = self.get_bank_name(permutation) bank = WaapiTools.find_object_by_name(bank_name, 'SoundBank') # Wwise搜索会包含所有带有关键词的,需要精确搜索 if bank and bank['name'] == bank_name: set_args = { 'soundbank': bank['id'], 'operation': 'add', 'inclusions': [{ 'object': obj['id'], 'filter': ['media'] }] } WaapiTools.Client.call( 'ak.wwise.core.soundbank.setInclusions', set_args) return True # 每一个组合都不符合,在下级继续找 return False
def temp_tool(objects: list): for obj in objects: parent = WaapiTools.get_parent_objects(obj, False) new_obj = WaapiTools.create_object('Tail', 'SwitchContainer', parent, 'rename') WaapiTools.move_object(obj, new_obj) indoor_switch_group = WaapiTools.find_object_by_name( 'Indoor_Outdoor', 'SwitchGroup') WaapiTools.set_object_reference(new_obj, 'SwitchGroupOrStateGroup', indoor_switch_group) outdoor_switch = WaapiTools.get_children_objects( indoor_switch_group, False)[1] LogicContainerTools.assign_switch_mapping(obj, outdoor_switch) WaapiTools.set_object_reference(new_obj, 'DefaultSwitchOrState', outdoor_switch) if parent['type'] == 'SwitchContainer': loop_switch_group = WaapiTools.find_object_by_name( 'Gun_Shot_Loop_Mode', 'SwitchGroup') end_switch = WaapiTools.get_children_objects( loop_switch_group, False)[0] LogicContainerTools.assign_switch_mapping(new_obj, end_switch)
def create_or_add_to_bank(obj): # 寻找或创建同名bank bank = WaapiTools.find_object_by_name(obj['name'], 'SoundBank') if bank is None: bank = create_sound_bank_by_name(obj['name']) # 为bank添加内容 set_args = { 'soundbank': bank['id'], 'operation': 'add', 'inclusions': [{ 'object': obj['id'], 'filter': ['events', 'structures', 'media'] }] } WaapiTools.Client.call('ak.wwise.core.soundbank.setInclusions', set_args)