diff --git a/install_vr4life.py b/install_vr4life.py index ccb7858..9ad223e 100644 --- a/install_vr4life.py +++ b/install_vr4life.py @@ -1,19 +1,20 @@ import os from pymxs import runtime as rt -def install_vr4life_official_style(): +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. CRIAR O SCRIPT DE CARREGAMENTO (Igual ao CreateBabylonMenus.ms) - # Este arquivo vai rodar toda vez que o Max abrir, garantindo que o menu exista + # 2. O SCRIPT DE CARREGAMENTO (Com Callback de Interface) + # O segredo do Babylon: #filePostOpen ou #systemStartup loader_content = f""" ( fn installVR4LifeMenu = ( - if menuMan != undefined then ( + -- 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 @@ -25,16 +26,26 @@ def install_vr4life_official_style(): 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 ) """ - # Escreve o arquivo na pasta Startup + # 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 (Para o botão funcionar) + # 3. REGISTRAR O MACROSCRIPT macro_cmd = ( 'macroScript VR4Life_Launcher\n' 'category:"Immerse Games"\n' @@ -45,10 +56,10 @@ def install_vr4life_official_style(): ) rt.execute(macro_cmd) - # 4. EXECUTAR AGORA (Tentar carregar o menu imediatamente) + # Tenta disparar uma vez agora mesmo rt.fileIn(loader_script_path) - print(f">> VR4Life: Loader instalado em {loader_script_path}") + print(f">> VR4Life: Loader configurado com Callbacks em {loader_script_path}") return True except Exception as e: @@ -56,4 +67,4 @@ def install_vr4life_official_style(): return False if __name__ == "__main__": - install_vr4life_official_style() \ No newline at end of file + install_vr4life_babylon_style() \ No newline at end of file