58 lines
3.6 KiB
Python
58 lines
3.6 KiB
Python
import os
|
|
import re
|
|
|
|
def process_file(filepath):
|
|
with open(filepath, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
|
|
original_content = content
|
|
|
|
# Component replacements
|
|
# MeshRenderer
|
|
content = re.sub(r'\.MeshRenderer\s*->', '.GetComponent<MetaCoreMeshRendererComponent>().', content)
|
|
content = re.sub(r'->MeshRenderer\s*->', '->GetComponent<MetaCoreMeshRendererComponent>().', content)
|
|
content = re.sub(r'\.MeshRenderer\s*\.\s*has_value\(\)', '.HasComponent<MetaCoreMeshRendererComponent>()', content)
|
|
content = re.sub(r'->MeshRenderer\s*\.\s*has_value\(\)', '->HasComponent<MetaCoreMeshRendererComponent>()', content)
|
|
content = re.sub(r'\.MeshRenderer\s*=\s*(.*?);', r'.AddComponent<MetaCoreMeshRendererComponent>(\1);', content)
|
|
content = re.sub(r'->MeshRenderer\s*=\s*(.*?);', r'->AddComponent<MetaCoreMeshRendererComponent>(\1);', content)
|
|
content = re.sub(r'\.MeshRenderer\s*\.\s*reset\(\)', '.RemoveComponent<MetaCoreMeshRendererComponent>()', content)
|
|
|
|
# Camera
|
|
content = re.sub(r'\.Camera\s*->', '.GetComponent<MetaCoreCameraComponent>().', content)
|
|
content = re.sub(r'->Camera\s*->', '->GetComponent<MetaCoreCameraComponent>().', content)
|
|
content = re.sub(r'\.Camera\s*\.\s*has_value\(\)', '.HasComponent<MetaCoreCameraComponent>()', content)
|
|
content = re.sub(r'->Camera\s*\.\s*has_value\(\)', '->HasComponent<MetaCoreCameraComponent>()', content)
|
|
content = re.sub(r'\.Camera\s*=\s*(.*?);', r'.AddComponent<MetaCoreCameraComponent>(\1);', content)
|
|
content = re.sub(r'->Camera\s*=\s*(.*?);', r'->AddComponent<MetaCoreCameraComponent>(\1);', content)
|
|
|
|
# Light
|
|
content = re.sub(r'\.Light\s*->', '.GetComponent<MetaCoreLightComponent>().', content)
|
|
content = re.sub(r'->Light\s*->', '->GetComponent<MetaCoreLightComponent>().', content)
|
|
content = re.sub(r'\.Light\s*\.\s*has_value\(\)', '.HasComponent<MetaCoreLightComponent>()', content)
|
|
content = re.sub(r'->Light\s*\.\s*has_value\(\)', '->HasComponent<MetaCoreLightComponent>()', content)
|
|
content = re.sub(r'\.Light\s*=\s*(.*?);', r'.AddComponent<MetaCoreLightComponent>(\1);', content)
|
|
content = re.sub(r'->Light\s*=\s*(.*?);', r'->AddComponent<MetaCoreLightComponent>(\1);', content)
|
|
|
|
# PrefabInstance
|
|
content = re.sub(r'\.PrefabInstance\s*->', '.GetComponent<MetaCorePrefabInstanceMetadata>().', content)
|
|
content = re.sub(r'->PrefabInstance\s*->', '->GetComponent<MetaCorePrefabInstanceMetadata>().', content)
|
|
content = re.sub(r'\.PrefabInstance\s*\.\s*has_value\(\)', '.HasComponent<MetaCorePrefabInstanceMetadata>()', content)
|
|
content = re.sub(r'->PrefabInstance\s*\.\s*has_value\(\)', '->HasComponent<MetaCorePrefabInstanceMetadata>()', content)
|
|
content = re.sub(r'\.PrefabInstance\s*=\s*(.*?);', r'.AddComponent<MetaCorePrefabInstanceMetadata>(\1);', content)
|
|
content = re.sub(r'->PrefabInstance\s*=\s*(.*?);', r'->AddComponent<MetaCorePrefabInstanceMetadata>(\1);', content)
|
|
|
|
# Direct struct members (Id, ParentId, Name, Transform)
|
|
# We must be careful not to replace `object.Id` everywhere blindly if `object` is not a GameObject.
|
|
# But in this codebase, typical variable names are `gameObject`, `object`, `rootObject`, `currentObject`.
|
|
# It's safer to rely on compiler errors for the rest and fix them manually.
|
|
|
|
if content != original_content:
|
|
with open(filepath, 'w', encoding='utf-8') as f:
|
|
f.write(content)
|
|
print(f"Updated {filepath}")
|
|
|
|
for root, _, files in os.walk('Source'):
|
|
for file in files:
|
|
if file.endswith('.cpp') or file.endswith('.h'):
|
|
process_file(os.path.join(root, file))
|