66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import json
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def find_bundle_files(directory):
							 | 
						||
| 
								 | 
							
								    bundle_files = []
							 | 
						||
| 
								 | 
							
								    valid_extensions = ['.bundle', '.goblin', '.servph', ".wtt"]  # Add the new extensions
							 | 
						||
| 
								 | 
							
								    for root, _, files in os.walk(directory):
							 | 
						||
| 
								 | 
							
								        for filename in files:
							 | 
						||
| 
								 | 
							
								            if any(filename.lower().endswith(ext) for ext in valid_extensions):
							 | 
						||
| 
								 | 
							
								                bundle_files.append(os.path.join(root, filename))
							 | 
						||
| 
								 | 
							
								    return bundle_files
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def process_voices_subfolder(audio_bundle_path, voice_bundle_path):
							 | 
						||
| 
								 | 
							
								    audio_bundle_key = os.path.relpath(audio_bundle_path, '.').replace('\\', '/')
							 | 
						||
| 
								 | 
							
								    voice_bundle_key = os.path.relpath(voice_bundle_path, '.').replace('\\', '/')
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    audio_bundle_entry = {
							 | 
						||
| 
								 | 
							
								        "key": audio_bundle_key,
							 | 
						||
| 
								 | 
							
								        "dependencyKeys": []
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    voice_bundle_entry = {
							 | 
						||
| 
								 | 
							
								        "key": voice_bundle_key,
							 | 
						||
| 
								 | 
							
								        "dependencyKeys": [audio_bundle_key]
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    return [audio_bundle_entry, voice_bundle_entry]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								manifest = []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Generate normal bundles
							 | 
						||
| 
								 | 
							
								normal_bundle_files = [bundle for bundle in find_bundle_files('.') if 'voices' not in bundle]
							 | 
						||
| 
								 | 
							
								for bundle_path in normal_bundle_files:
							 | 
						||
| 
								 | 
							
								    relative_path = os.path.relpath(bundle_path, '.').replace('\\', '/')
							 | 
						||
| 
								 | 
							
								    bundle = {
							 | 
						||
| 
								 | 
							
								        "key": relative_path,
							 | 
						||
| 
								 | 
							
								        "dependencyKeys": [
							 | 
						||
| 
								 | 
							
								            "shaders",
							 | 
						||
| 
								 | 
							
								            "cubemaps",
							 | 
						||
| 
								 | 
							
								            "assets/commonassets/physics/physicsmaterials.bundle"
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    manifest.append(bundle)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Generate voices bundles
							 | 
						||
| 
								 | 
							
								voices_folder = os.path.join('.', 'voices')
							 | 
						||
| 
								 | 
							
								if os.path.exists(voices_folder):
							 | 
						||
| 
								 | 
							
								    for root, dirs, _ in os.walk(voices_folder):
							 | 
						||
| 
								 | 
							
								        if 'Audio' in dirs and 'Voices' in dirs:
							 | 
						||
| 
								 | 
							
								            audio_bundle_path = os.path.join(root, 'Audio')
							 | 
						||
| 
								 | 
							
								            voice_bundle_path = os.path.join(root, 'Voices')
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            audio_bundle_files = find_bundle_files(audio_bundle_path)
							 | 
						||
| 
								 | 
							
								            voice_bundle_files = find_bundle_files(voice_bundle_path)
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            if audio_bundle_files and voice_bundle_files:
							 | 
						||
| 
								 | 
							
								                voices_bundles = process_voices_subfolder(audio_bundle_files[0], voice_bundle_files[0])
							 | 
						||
| 
								 | 
							
								                manifest.extend(voices_bundles)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Write to bundles.json one directory above and overwrite
							 | 
						||
| 
								 | 
							
								output_dir = os.path.join('..', 'bundles.json')
							 | 
						||
| 
								 | 
							
								with open(output_dir, 'w') as json_file:
							 | 
						||
| 
								 | 
							
								    json.dump({"manifest": manifest}, json_file, indent=4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								print('bundles.json file has been generated.')
							 |