import os from pymxs import runtime as rt def install_vr4life_babylon_style(): try: # 1. PEGAR CAMINHOS plugin_dir = os.path.dirname(os.path.realpath(__file__)).replace("\\", "/") startup_dir = rt.getDir(rt.name("userStartupScripts")) loader_script_path = os.path.join(startup_dir, "VR4Life_Loader.ms") # 2. O SCRIPT DE CARREGAMENTO (Com Callback de Interface) # O segredo do Babylon: #filePostOpen ou #systemStartup loader_content = f""" ( fn installVR4LifeMenu = ( -- Verifica se o menuMan existe E se a barra principal está pronta if menuMan != undefined and menuMan.getMainMenuBar() != undefined then ( local mainMenuBar = menuMan.getMainMenuBar() local existingMenu = menuMan.findMenu "VR4Life" if existingMenu != undefined do menuMan.unRegisterMenu existingMenu local newMenu = menuMan.createMenu "VR4Life" local actionItem = menuMan.createActionItem "VR4Life_Launcher" "Immerse Games" newMenu.addItem actionItem -1 local subMenuItem = menuMan.createSubMenuItem "VR4Life" newMenu mainMenuBar.addItem subMenuItem (mainMenuBar.numItems()) menuMan.updateMenuBar() return true ) return false ) -- Tenta agora installVR4LifeMenu() -- O SEGREDO: Se falhar ou se o Max resetar, tenta de novo quando a UI estiver "viva" callbacks.removeScripts id:#VR4LifeMenuSetup callbacks.addScript #filePostOpen "installVR4LifeMenu()" id:#VR4LifeMenuSetup callbacks.addScript #systemStartup "installVR4LifeMenu()" id:#VR4LifeMenuSetup callbacks.addScript #cueConfigured "installVR4LifeMenu()" id:#VR4LifeMenuSetup ) """ # Salva o loader na pasta Startup with open(loader_script_path, "w", encoding="utf-8") as f: f.write(loader_content) # 3. REGISTRAR O MACROSCRIPT macro_cmd = ( 'macroScript VR4Life_Launcher\n' 'category:"Immerse Games"\n' 'tooltip:"Abrir VR4Life"\n' '(\n' f' on execute do python.executeFile "{plugin_dir}/run_vr4life.py"\n' ')' ) rt.execute(macro_cmd) # Tenta disparar uma vez agora mesmo rt.fileIn(loader_script_path) print(f">> VR4Life: Loader configurado com Callbacks em {loader_script_path}") return True except Exception as e: print(f"Erro no estilo Babylon: {str(e)}") return False if __name__ == "__main__": install_vr4life_babylon_style()