main
henrique 2 months ago
parent d577713243
commit a3d4fd488f

@ -1,20 +1,13 @@
import os import os
from pymxs import runtime as rt from pymxs import runtime as rt
def carregar_menu_mnx(): def install_vr4life_menu_official():
print("\n" + "="*50)
print("AGENDANDO CARREGAMENTO - VR4LIFE (MODO SEGURO)")
print("="*50)
try: try:
# 1. Definir caminhos # 1. PEGAR CAMINHOS
pasta_macros = rt.getDir(rt.name("userMacros"))
pasta_enu = os.path.dirname(pasta_macros)
caminho_mnx = os.path.join(pasta_enu, "en-US", "UI", "vr4life.mnx").replace("\\", "/")
plugin_dir = os.path.dirname(os.path.realpath(__file__)).replace("\\", "/") plugin_dir = os.path.dirname(os.path.realpath(__file__)).replace("\\", "/")
run_script = f"{plugin_dir}/run_vr4life.py" run_script = f"{plugin_dir}/run_vr4life.py"
# 2. Registrar MacroScript # 2. REGISTRAR MACROS (O padrão que o Babylon usa)
macro_cmd = ( macro_cmd = (
'macroScript VR4Life_Launcher\n' 'macroScript VR4Life_Launcher\n'
'category:"Immerse Games"\n' 'category:"Immerse Games"\n'
@ -25,34 +18,42 @@ def carregar_menu_mnx():
) )
rt.execute(macro_cmd) rt.execute(macro_cmd)
# 3. TIMER COM EXECUÇÃO TARDIA (Late Bound) # 3. CONSTRUÇÃO DO MENU (Lógica idêntica ao CreateBabylonMenus.ms)
# Usamos execute dentro do timer para o compilador não travar no 'menuMan' agora # Usamos um bloco MaxScript puro para garantir acesso às interfaces core
timer_cmd = f""" setup_script = """
( (
global _vr4life_timer = dotNetObject "System.Windows.Forms.Timer" -- 1. Acessar o Menu Manager
_vr4life_timer.interval = 3000 -- 3 segundos para garantir local menuMgr = menuMan
local mainMenuBar = menuMgr.getMainMenuBar()
-- 2. Limpar se existir (evita duplicados)
local existingMenu = menuMgr.findMenu "VR4Life"
if existingMenu != undefined do menuMgr.unRegisterMenu existingMenu
-- 3. Criar o novo menu
local newMenu = menuMgr.createMenu "VR4Life"
-- 4. Criar o item da Action (vinculado à categoria Immerse Games)
local actionItem = menuMgr.createActionItem "VR4Life_Launcher" "Immerse Games"
newMenu.addItem actionItem -1
-- 5. Criar o SubMenu na Barra Principal
local subMenuItem = menuMgr.createSubMenuItem "VR4Life" newMenu
dotNet.addEventHandler _vr4life_timer "Tick" (fn onTick s e = ( -- 6. Inserir antes do Help (ou no final)
-- tentamos acessar o menuMan aqui dentro, após o tempo passar mainMenuBar.addItem subMenuItem (mainMenuBar.numItems())
if (execute "menuMan") != undefined then (
execute "menuMan.loadMenuFile \\"{caminho_mnx}\\""
execute "menuMan.updateMenuBar()"
format ">> VR4Life: Menu carregado com sucesso apos espera.\\n"
s.stop()
s.dispose()
) else (
format ">> VR4Life: Interface ainda carregando...\\n"
)
))
_vr4life_timer.start() -- 7. Forçar atualização visual
format "[*] Aguardando 3 segundos para injetar o menu...\\n" menuMgr.updateMenuBar()
format ">> VR4Life: Menu instalado seguindo padrao BabylonJS.\\n"
) )
""" """
rt.execute(timer_cmd) rt.execute(setup_script)
return True
except Exception as e: except Exception as e:
print(f"\n[EXCEPTION] Falha no agendamento:\n{str(e)}") print(f"Erro na instalacao: {str(e)}")
return False
if __name__ == "__main__": if __name__ == "__main__":
carregar_menu_mnx() install_vr4life_menu_official()
Loading…
Cancel
Save