diff --git a/install_vr4life.py b/install_vr4life.py index 9ad223e..82540f1 100644 --- a/install_vr4life.py +++ b/install_vr4life.py @@ -1,70 +1,64 @@ import os from pymxs import runtime as rt -def install_vr4life_babylon_style(): +def install_vr4life_clean(): 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""" + + # 2. REGISTRAR AS MACROS COM AS CATEGORIAS VISTAS NO SEU PRINT + # Usamos "Immerse Games" para bater com o que já existe no seu Menu Editor + macro_cmd = f""" +macroScript VR4Life_Launcher +category:"Immerse Games" +tooltip:"Abrir VR4Life" ( - 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() + on execute do python.executeFile "{plugin_dir}/run_vr4life.py" +) - -- 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 +macroScript VR4Life_Update +category:"Immerse Games" +tooltip:"Atualizar VR4Life" +( + on execute do python.executeFile "{plugin_dir}/vr4life_updater.py" ) """ - # 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}") + # 3. CONSTRUÇÃO DO MENU (Lógica Babylon/Direct UI) + setup_script = """ + ( + local menuMgr = menuMan + local mainMenuBar = menuMgr.getMainMenuBar() + + -- Limpar se já existir para não duplicar + local existingMenu = menuMgr.findMenu "VR4Life" + if existingMenu != undefined do menuMgr.unRegisterMenu existingMenu + + -- Criar o novo menu "VR4Life" + local newMenu = menuMgr.createMenu "VR4Life" + + -- Adicionar os itens usando o nome da macro e a categoria exata + local itemLauncher = menuMgr.createActionItem "VR4Life_Launcher" "Immerse Games" + local itemUpdate = menuMgr.createActionItem "VR4Life_Update" "Immerse Games" + + newMenu.addItem itemLauncher -1 + newMenu.addItem itemUpdate -1 + + -- Injetar na barra principal antes do Help + local subMenuItem = menuMgr.createSubMenuItem "VR4Life" newMenu + mainMenuBar.addItem subMenuItem (mainMenuBar.numItems()) + + menuMgr.updateMenuBar() + ) + """ + rt.execute(setup_script) + print(">> VR4Life: Menu instalado com sucesso via Script Direto.") return True except Exception as e: - print(f"Erro no estilo Babylon: {str(e)}") + print(f"Erro na instalacao: {str(e)}") return False if __name__ == "__main__": - install_vr4life_babylon_style() \ No newline at end of file + install_vr4life_clean() \ No newline at end of file