plugin nao funciona. deixando apenas codigo.

main
henrique 2 months ago
parent 538245279e
commit 9cd6d13ca3

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>

@ -1,15 +0,0 @@
import sys, os
import importlib
# Garante que o 3ds Max enxergue a sua pasta de plugins
script_dir = os.path.dirname(os.path.realpath(__file__))
if script_dir not in sys.path:
sys.path.append(script_dir)
# Importa a sua nova UI limpa e recarrega para sempre pegar atualizações
import vr4life_ui
importlib.reload(vr4life_ui)
if __name__ == "__main__":
app = vr4life_ui.AutoBakeManager()
app.show()

@ -1,92 +0,0 @@
import os
import urllib.request
from pymxs import runtime as rt
try: from PySide6 import QtWidgets
except ImportError: from PySide2 import QtWidgets
# URL Oficial do repositório da Immerse Games (Lendo a branch 'main')
# Obs: Se o seu Gitea estiver usando 'master' em vez de 'main', basta trocar a última palavra.
GITEA_RAW_URL = "https://git.immersegame.com/immersegame/vr4life-3dmax-plugin/raw/branch/main/"
# Token de Leitura do Gitea
GITEA_TOKEN = "efebcde14ce96a2b80d0b3f207991bc155018ab8"
FILES_TO_UPDATE = [
"vr4life_ui.py",
"vr4life_engine.py",
"vr4life_cloud.py",
"run_vr4life.py",
"vr4life_updater.py"
]
def check_and_update(ui_parent=None):
script_dir = os.path.dirname(os.path.realpath(__file__))
local_version_file = os.path.join(script_dir, "version.txt").replace("\\", "/")
if ui_parent:
ui_parent.pb.setFormat("Autenticando e checando versão no Gitea..."); QtWidgets.QApplication.processEvents()
try:
# 1. Lê a versão local (Se não existir, assume 0.0)
local_version = "0.0"
if os.path.exists(local_version_file):
with open(local_version_file, "r") as f:
local_version = f.read().strip()
# 2. Bate na Nuvem com o Token para ler o version.txt
remote_version_url = GITEA_RAW_URL + "version.txt"
req_version = urllib.request.Request(remote_version_url)
req_version.add_header("Authorization", f"token {GITEA_TOKEN}")
response_version = urllib.request.urlopen(req_version)
remote_version = response_version.read().decode('utf-8').strip()
# 3. Compara as versões: Só baixa se a do Gitea for mais nova
if remote_version == local_version:
if ui_parent:
ui_parent.pb.setFormat("Sistema já está atualizado!"); ui_parent.pb.setValue(100)
QtWidgets.QMessageBox.information(ui_parent, "Atualizador", f"Você já está usando a versão mais recente ({local_version}).")
return
# 4. Inicia o Download Seguro dos Arquivos
if ui_parent:
ui_parent.pb.setFormat(f"Nova versão {remote_version} encontrada! Baixando..."); QtWidgets.QApplication.processEvents()
updated_count = 0
for file_name in FILES_TO_UPDATE:
remote_url = GITEA_RAW_URL + file_name
local_path = os.path.join(script_dir, file_name).replace("\\", "/")
if ui_parent:
ui_parent.pb.setFormat(f"Baixando {file_name}..."); QtWidgets.QApplication.processEvents()
# Puxa o código com o Token
req = urllib.request.Request(remote_url)
req.add_header("Authorization", f"token {GITEA_TOKEN}")
response = urllib.request.urlopen(req)
remote_code = response.read().decode('utf-8')
# Sobrescreve na máquina local
with open(local_path, "w", encoding="utf-8") as f:
f.write(remote_code)
updated_count += 1
# 5. Salva a nova versão local para a próxima checagem
with open(local_version_file, "w") as f:
f.write(remote_version)
msg = f"Sucesso! Plugin atualizado para a versão {remote_version} ({updated_count} arquivos).\n\nPor favor, feche esta janela e abra o plugin novamente pelo menu superior."
if ui_parent:
ui_parent.pb.setFormat("Atualização Concluída!"); ui_parent.pb.setValue(100)
QtWidgets.QMessageBox.information(ui_parent, "Update VR4Life", msg)
else:
rt.messageBox(msg, title="Update VR4Life")
except Exception as e:
erro_msg = f"Falha de Autenticação ou Download.\nVerifique seu Token e URL do Gitea.\n\nDetalhe técnico: {str(e)}"
if ui_parent:
QtWidgets.QMessageBox.critical(ui_parent, "Erro de Update", erro_msg)
ui_parent.pb.setFormat("Pronto"); ui_parent.pb.setValue(0)
else:
rt.messageBox(erro_msg, title="Erro de Update")

@ -1,28 +0,0 @@
(
-- 1. Definir caminhos de destino seguros
local startupDir = getDir #userStartupScripts
local uiDir = (getDir #userMacros) + "\\..\\en-US\\UI\\"
local scriptsDir = (getDir #userScripts) + "\\VR4Life_Plugin\\"
-- Caminho temporário onde o MZP extraiu os arquivos
local tempPath = symbolicPaths.getPathValue "$temp"
-- 2. Garantir que as pastas existam
if not (doesFileExist uiDir) do makeDir uiDir all:true
if not (doesFileExist scriptsDir) do makeDir scriptsDir all:true
-- 3. Mover os arquivos usando nomes fixos (os seus nomes)
copyFile (tempPath + "\\vr4life.mnx") (uiDir + "vr4life.mnx")
copyFile (tempPath + "\\vr4life.ms") (startupDir + "\\vr4life.ms")
-- Copiar pasta Python (exemplo para os dois arquivos principais)
copyFile (tempPath + "\\VR4Life_Plugin\\run_vr4life.py") (scriptsDir + "run_vr4life.py")
copyFile (tempPath + "\\VR4Life_Plugin\\vr4life_updater.py") (scriptsDir + "vr4life_updater.py")
-- 4. Executar o loader agora para o menu aparecer sem reiniciar
if (doesFileExist (startupDir + "\\vr4life.ms")) do (
fileIn (startupDir + "\\vr4life.ms")
)
messageBox "Instalação VR4Life Concluída!\nO menu aparecerá após a inicialização da UI." title:"VR4Life"
)

@ -1,8 +0,0 @@
name "VR4Life"
version 1.0
copy *.* to "$temp"
run "install.ms"
drop "install.ms"

@ -1,88 +0,0 @@
import os
import urllib.request
import shutil
from pymxs import runtime as rt
# ==========================================
# CONFIGURAÇÕES DO GITEA - IMMERSE GAMES
# ==========================================
GITEA_RAW_URL = "https://git.immersegame.com/vr4life_public/vr4life-3dmax-plugin/raw/branch/main/"
GITEA_TOKEN = "3831a0da2f87e391f41f4649d48498136a1903c9"
# Caminho onde os scripts são instalados (Documentos)
user_scripts_dir = rt.getDir(rt.name("userScripts"))
PLUGIN_DIR = os.path.join(user_scripts_dir, "VR4Life_Plugin").replace("\\", "/")
FILES_TO_DOWNLOAD = [
"vr4life_ui.py",
"vr4life_engine.py",
"vr4life_cloud.py",
"run_vr4life.py",
"vr4life_updater.py",
"install_vr4life.py",
"vr4life.mnx",
"version.txt"
]
def install_from_cloud():
rt.clearListener()
print("=== DEBUG DE CAMINHOS VR4LIFE ===")
print(f"Diretório de destino dos Pythons: {PLUGIN_DIR}")
if not os.path.exists(PLUGIN_DIR):
os.makedirs(PLUGIN_DIR)
try:
for file_name in FILES_TO_DOWNLOAD:
remote_url = f"{GITEA_RAW_URL}{file_name}?token={GITEA_TOKEN}"
local_path = os.path.join(PLUGIN_DIR, file_name).replace("\\", "/")
req = urllib.request.Request(remote_url)
req.add_header("Authorization", "token " + GITEA_TOKEN)
response = urllib.request.urlopen(req)
if file_name.endswith(".mnx"):
with open(local_path, "wb") as f:
f.write(response.read())
print(f"MNX baixado para: {local_path}")
else:
remote_code = response.read().decode('utf-8')
with open(local_path, "w", encoding="utf-8") as f:
f.write(remote_code)
print(f"Script baixado para: {local_path}")
# --- INSTALAÇÃO DO MENU ---
pasta_macros = rt.pathConfig.getDir(rt.name("userMacros"))
pasta_enu = os.path.dirname(pasta_macros)
pasta_ui_usuario = os.path.join(pasta_enu, "en-US", "UI")
if not os.path.exists(pasta_ui_usuario):
os.makedirs(pasta_ui_usuario)
# AGORA GARANTIMOS QUE O PATH DE ORIGEM É O PLUGIN_DIR
origem_mnx = os.path.join(PLUGIN_DIR, "vr4life.mnx")
destino_mnx = os.path.join(pasta_ui_usuario, "vr4life.mnx")
print(f"Tentando copiar MNX da origem: {origem_mnx}")
print(f"Para o destino final: {destino_mnx}")
if os.path.exists(origem_mnx):
shutil.copy2(origem_mnx, destino_mnx)
print(">>> Cópia do MNX realizada com sucesso!")
else:
print("!!! ERRO: O arquivo vr4life.mnx não foi encontrado na pasta PLUGIN_DIR após o download.")
# Executa o instalador local
install_script = os.path.join(PLUGIN_DIR, "install_vr4life.py").replace("\\", "/")
if os.path.exists(install_script):
print(f"Executando script de instalação: {install_script}")
rt.python.ExecuteFile(install_script)
rt.messageBox("Instalação Online concluída. Verifique o Listener para o log de caminhos.", title="VR4Life")
except Exception as e:
print(f"ERRO TÉCNICO: {str(e)}")
rt.messageBox(f"Falha na instalação: {str(e)}", title="Erro")
if __name__ == "__main__":
install_from_cloud()

@ -1 +0,0 @@
python.executeFile (getDir #temp + @"\VR4Life_Install\Instalador_Online_VR4Life.py")

@ -1,50 +0,0 @@
-- VR4Life Startup Loader - Versão Dinâmica 2026
global LoadVR4LifeMNX
fn LoadVR4LifeMNX = (
-- Procura o arquivo MNX na pasta de UI do utilizador atual
local uiPath = (getDir #userMacros) + "\\..\\en-US\\UI\\vr4life.mnx"
if (doesFileExist uiPath) then (
try (
menuMan.loadMenuFile uiPath
menuMan.updateMenuBar()
format ">>> VR4LIFE: Menu carregado dinamicamente via CUI. <<<\n"
) catch (
format ">>> VR4LIFE: Erro ao injetar menu. <<<\n"
)
)
)
-- 1. DETETAR O CAMINHO DOS SCRIPTS PYTHON DINAMICAMENTE
-- O MaxScript procura na pasta de scripts do utilizador
local scriptsPath = (getDir #userScripts) + "\\VR4Life_Plugin\\"
-- 2. REGISTAR MACROS COM O CAMINHO DETETADO
macroScript VR4Life_Launcher
category:"Immerse Games"
tooltip:"Abrir VR4Life"
(
on execute do (
local sPath = (getDir #userScripts) + "\\VR4Life_Plugin\\run_vr4life.py"
python.executeFile sPath
)
)
macroScript VR4Life_Update
category:"Immerse Games"
tooltip:"Atualizar VR4Life"
(
on execute do (
local sPath = (getDir #userScripts) + "\\VR4Life_Plugin\\vr4life_updater.py"
python.executeFile sPath
)
)
-- 3. GATILHOS DE EXECUÇÃO (Lógica Babylon)
callbacks.removeScripts id:#vr4life_setup
callbacks.addScript #cuiRegisterMenus "LoadVR4LifeMNX()" id:#vr4life_setup
callbacks.addScript #filePostOpen "LoadVR4LifeMNX()" id:#vr4life_setup
-- Tenta carregar agora
LoadVR4LifeMNX()

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MaxMenuTransformations>
<CreateTopLevelMenu Id="167d260c-f391-4e63-b6a9-4798fbfcadc5" Title="Vr4Life"/>
<CreateMenuAction MenuId="167d260c-f391-4e63-b6a9-4798fbfcadc5"
Id="d66e56ef-ecf4-4758-923e-b7ce929e440c"
ActionId="VR4Life_Launcher`Immerse Games"/>
<CreateMenuAction MenuId="167d260c-f391-4e63-b6a9-4798fbfcadc5"
Id="071a64d3-3fe9-4674-b58a-b5e3047e3109"
ActionId="VR4Life_Update`Immerse Games"/>
</MaxMenuTransformations>

@ -1,42 +0,0 @@
-- VR4Life Startup - Nomes de Arquivo Originais
global LoadVR4LifeMNX
fn LoadVR4LifeMNX = (
-- Busca o MNX na pasta de UI do usuario (en-US\UI)
local uiPath = (getDir #ui_ln) + "vr4life.mnx"
if (doesFileExist uiPath) then (
try (
menuMan.loadMenuFile uiPath
menuMan.updateMenuBar()
format ">>> VR4LIFE: Menu carregado com sucesso! <<<\n"
) catch (
format ">>> VR4LIFE: Erro ao injetar o menu via MNX.\n"
)
)
)
-- Registro das Macros apontando para a pasta VR4Life_Plugin nos scripts do usuario
macroScript VR4Life_Launcher category:"Immerse Games" tooltip:"Abrir VR4Life"
(
on execute do (
local pythonFile = (getDir #userScripts) + "\\VR4Life_Plugin\\run_vr4life.py"
python.executeFile pythonFile
)
)
macroScript VR4Life_Update category:"Immerse Games" tooltip:"Atualizar VR4Life"
(
on execute do (
local pythonFile = (getDir #userScripts) + "\\VR4Life_Plugin\\vr4life_updater.py"
python.executeFile pythonFile
)
)
-- Callbacks para garantir que o menu apareça após a UI carregar
callbacks.removeScripts id:#vr4life_setup
callbacks.addScript #cuiRegisterMenus "LoadVR4LifeMNX()" id:#vr4life_setup
callbacks.addScript #filePostOpen "LoadVR4LifeMNX()" id:#vr4life_setup
-- Tenta carregar imediatamente
LoadVR4LifeMNX()

@ -1,41 +0,0 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-dll\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}|VR4Life-dll.csproj|d:\\gitea\\vr4life-3dmax-plugin\\instaladorcsharp\\vr4life-dll\\class1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}|VR4Life-dll.csproj|solutionrelative:class1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Class1.cs",
"DocumentMoniker": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-dll\\Class1.cs",
"RelativeDocumentMoniker": "Class1.cs",
"ToolTip": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-dll\\Class1.cs",
"RelativeToolTip": "Class1.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-24T17:44:29.473Z",
"EditorCaption": ""
},
{
"$type": "Bookmark",
"Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}"
}
]
}
]
}
]
}

@ -1,41 +0,0 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-dll\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}|VR4Life-dll.csproj|d:\\gitea\\vr4life-3dmax-plugin\\instaladorcsharp\\vr4life-dll\\vr4lifeconnector.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}|VR4Life-dll.csproj|solutionrelative:vr4lifeconnector.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "VR4LifeConnector.cs",
"DocumentMoniker": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-dll\\VR4LifeConnector.cs",
"RelativeDocumentMoniker": "VR4LifeConnector.cs",
"ToolTip": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-dll\\VR4LifeConnector.cs",
"RelativeToolTip": "VR4LifeConnector.cs",
"ViewState": "AgIAAAsAAAAAAAAAAAAAABsAAAAPAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-24T17:44:29.473Z",
"EditorCaption": ""
},
{
"$type": "Bookmark",
"Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}"
}
]
}
]
}
]
}

@ -1,33 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// As informações gerais sobre um assembly são controladas por
// conjunto de atributos. Altere estes valores de atributo para modificar as informações
// associada a um assembly.
[assembly: AssemblyTitle("VR4Life-dll")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("VR4Life-dll")]
[assembly: AssemblyCopyright("Copyright © 2026")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Definir ComVisible como false torna os tipos neste assembly invisíveis
// para componentes COM. Caso precise acessar um tipo neste assembly de
// COM, defina o atributo ComVisible como true nesse tipo.
[assembly: ComVisible(false)]
// O GUID a seguir será destinado à ID de typelib se este projeto for exposto para COM
[assembly: Guid("77a5dd7e-6edb-4b04-854f-7cca6d6195ea")]
// As informações da versão de um assembly consistem nos quatro valores a seguir:
//
// Versão Principal
// Versão Secundária
// Número da Versão
// Revisão
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>VR4Life_dll</RootNamespace>
<AssemblyName>VR4Life-dll</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Autodesk.Max">
<HintPath>C:\Program Files\Autodesk\3ds Max 2026\Autodesk.Max.dll</HintPath>
</Reference>
<Reference Include="ManagedServices">
<HintPath>C:\Program Files\Autodesk\3ds Max 2026\ManagedServices.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="UiViewModels">
<HintPath>C:\Program Files\Autodesk\3ds Max 2026\UiViewModels.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="VR4LifeConnector.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

@ -1,25 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.14.37012.4 d17.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VR4Life-dll", "VR4Life-dll.csproj", "{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{77A5DD7E-6EDB-4B04-854F-7CCA6D6195EA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EFB2829D-890A-4C8E-B553-764D075AE04F}
EndGlobalSection
EndGlobal

@ -1,36 +0,0 @@
using System;
using Autodesk.Max;
using ManagedServices;
namespace VR4LifeConnector
{
public class VR4LifeMenuLoader
{
public static void Initialize()
{
string bootScript = @"
(
fn setupVRMenu = (
local mbar = menuMan.getMainMenuBar()
local existing = menuMan.findMenu ""Vr4Life""
if existing != undefined do menuMan.unRegisterMenu existing
local m = menuMan.createMenu ""Vr4Life""
m.addItem (menuMan.createActionItem ""VR4Life_Launcher"" ""Immerse Games"") -1
m.addItem (menuMan.createActionItem ""VR4Life_Update"" ""Immerse Games"") -1
mbar.addItem (menuMan.createSubMenuItem ""Vr4Life"" m) (mbar.numItems())
menuMan.updateMenuBar()
)
callbacks.removeScripts id:#vr4life
callbacks.addScript #cuiRegisterMenus ""setupVRMenu()"" id:#vr4life
setupVRMenu()
)";
// RESOLUÇÃO DO ERRO CS7036:
// Adicionamos o segundo argumento 'MaxscriptSDK.ScriptSource.Embedded'
// Isso indica ao Max que o script vem de dentro da DLL (embutido)
MaxscriptSDK.ExecuteMaxscriptCommand(bootScript, MaxscriptSDK.ScriptSource.Embedded);
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,845 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>CoreManagedUiControls</name>
</assembly>
<members>
<member name="T:CoreManagedUiControls.MaxControls.IconTextButton">
<summary>
A button class which can show both icon and text
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.IconTextButton.LoadIconsAsynchronously">
<summary>
Set to true if the icons for the buttons should be loaded asynchronously by a
worker thread.
</summary>
<remarks>
Note: This will cause the initialization of the buttons to be faster, but may result
in flickering while the icons are being loaded.
</remarks>
</member>
<member name="F:CoreManagedUiControls.MaxControls.IconTextButton.ShowIconProperty">
<summary>
Show Icon Property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.IconTextButton.ShowIcon">
<summary>
Show Icon
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.IconTextButton.ShowTextProperty">
<summary>
Show Text property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.IconTextButton.ShowText">
<summary>
Show Text
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.IconTextButton.IconProperty">
<summary>
Icon Property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.IconTextButton.Icon">
<summary>
Icon
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.IconTextButton.SubTextProperty">
<summary>
SubText property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.IconTextButton.SubText">
<summary>
Secondary text, normally displayed on the right side of the button
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.IconTextButton.IsHighlightedForSelectionProperty">
<summary>
IsHighlightedForSelection property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.IconTextButton.IsHighlightedForSelection">
<summary>
Indicates that the button is in a highlight state and the visual should
reflect as much.
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.IconTextButton.IsHighlightedChangedEvent">
<summary>
Event declaration for IsHighlightedChanged
</summary>
</member>
<member name="E:CoreManagedUiControls.MaxControls.IconTextButton.IsHighlightedChanged">
<summary>
Raised when the value of IsHighlightedForSelection changes
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.IconTextButton.ShowUnderlinedShortcutKey">
<summary>
Shows underlined shortcut key
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.IconTextButton.CollapseToTextSize">
<summary>
When set to true, will collapse down to the required size of the text only. If set to false,
will maintain the size of the item so that it stays even with items that might have an icon
set.
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.MaxTextBox">
<summary>
Extends the base WPF TextBox to add key bindings: Return and Enter commit the
current Text value to its binding source, Esc reverts the Text value to
current value in the binding source.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.MaxTextBox.#ctor">
<summary>
Constructor.
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.MaxTextBox.ClickSelectsAllProperty">
<summary>
ClickSelectsAll property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.MaxTextBox.ClickSelectsAll">
<summary>
If true, clicking in the textbox will select the text in its entirety.
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.MaxTextBox.BindEnterToUpdateSourceCommandProperty">
<summary>
Controls if the Enter key is bound to the UpdateSourceCommand RoutedCommand.
</summary>
<remarks>
<para>
Defaults to true.
</para>
<para>
It may be desirable to set this to false if the TextField's parent
container handles the enter key event to confirm the edited value.
</para>
</remarks>
</member>
<member name="P:CoreManagedUiControls.MaxControls.MaxTextBox.BindEnterToUpdateSourceCommand">
<summary>
Controls if the Enter key is bound to the UpdateSourceCommand RoutedCommand.
</summary>
<remarks>
<para>
Defaults to true.
</para>
<para>
It may be desirable to set this to false if the TextField's parent
container handles the enter key event to confirm the edited value.
</para>
</remarks>
</member>
<member name="F:CoreManagedUiControls.MaxControls.MaxTextBox.BindKeystrokeToUpdateSourceCommandProperty">
<summary>
Controls if keystrokes update the source right away.
</summary>
<remarks>
<para>
Defaults to false.
</para>
</remarks>
</member>
<member name="P:CoreManagedUiControls.MaxControls.MaxTextBox.BindKeystrokeToUpdateSourceCommand">
<summary>
Controls if keystrokes update the source right away.
</summary>
<remarks>
<para>
Defaults to false.
</para>
</remarks>
</member>
<member name="M:CoreManagedUiControls.MaxControls.NonSelectingComboBox.OnSelectionChanged(System.Windows.Controls.SelectionChangedEventArgs)">
<summary>
we don't want this combo to actually do anything on selection changed
</summary>
<param name="e">default</param>
</member>
<member name="T:CoreManagedUiControls.MaxControls.Toolbar.ClearFilterCommand">
<summary>
Clear filter command for MenuFilterControl.
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.Toolbar.MenuItemVisibilityMultiConverter">
<summary>
Custom multi-converter for deciding visibility of ToolbarItems in MaxToolbar
</summary>
<remarks>
Internal class.
</remarks>
</member>
<member name="T:CoreManagedUiControls.MaxControls.Toolbar.MaxToolbarPanel">
<summary>
A very simple layout panel specifically for our menu
We want the menu to layout from left to right, and
if there is not enough space to include all children
equally, then we shrink every child by an equal amount
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.Toolbar.SetTabModeCommand">
<summary>
Command for modifying top-level MGM display mode.
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.Toolbar.SwitchListBox">
<summary>
A list box class which can change a Toolbar panel orientation
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.Toolbar.SwitchListBox.PanelOrientationProperty">
<summary>
Panle orientation propeprty
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.Toolbar.SwitchListBox.PanelOrientation">
<summary>
panel orientation
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.Toolbar.GlobalSearchPopupWindow">
<summary>
Interaction logic for GlobalSearchPopupWindow.xaml
</summary>
<summary>
GlobalSearchPopupWindow
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.Toolbar.GlobalSearchPopupWindow.ViewModelProperty">
<summary>
ViewModel Dependency Property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.Toolbar.GlobalSearchPopupWindow.ViewModel">
<summary>
Gets or sets the ViewModel property. This dependency property
indicates ....
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.Toolbar.GlobalSearchPopupWindow.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.Toolbar.MenuFilterControl">
<summary>
Interaction logic for MenuFilterControl.xaml
</summary>
<summary>
MenuFilterControl
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.Toolbar.MenuFilterControl.CurrentFilterProperty">
<summary>
CurrentFilter dependency prop
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.Toolbar.MenuFilterControl.CurrentFilter">
<summary>
CurrentFilter Items
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.Toolbar.MenuFilterControl.DefaultText">
<summary>
Text that is displayed when the filter is empty
</summary>x
</member>
<member name="M:CoreManagedUiControls.MaxControls.Toolbar.MenuFilterControl.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.Toolbar.SearchPanel">
<summary>
Interaction logic for SearchPanel.xaml
</summary>
<summary>
SearchPanel
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.Toolbar.SearchPanel.SearchFilterProperty">
<summary>
SearchFilter Dependency Property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.Toolbar.SearchPanel.SearchFilter">
<summary>
The search filter being represented.
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.Toolbar.SearchPanel.ResultItemsProperty">
<summary>
ResultItems Dependency Property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.Toolbar.SearchPanel.ResultItems">
<summary>
The items being represented.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.Toolbar.SearchPanel.ForceHighlightButton(System.Windows.FrameworkElement,System.String)">
<summary>
Given a container element, finds the underlying button of the name
'buttonName' and makes it highlighted.
</summary>
<remarks>
This is necessary because of a weird quirk in WPF where disabled controls
receive no mouse input, ever. Therefore we have to catch the MouseMove on the container element
above it to actually be able to highlight a disabled item (which is something that the legacy
menus themselves do, so the axiom that disabled controls should never receive mouse input is
obviously faulty.)
</remarks>
<param name="element">The container element.</param>
<param name="buttonName">The Name of the button to find.</param>
</member>
<member name="M:CoreManagedUiControls.MaxControls.Toolbar.SearchPanel.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.TrimmingTextBlock">
<summary>
A simple textblock control which allows trimming of text from the left or
from the middle.
</summary>
<see cref="P:CoreManagedUiControls.MaxControls.TrimmingTextBlock.TrimmingStyle"/>
/// <see cref="P:CoreManagedUiControls.MaxControls.TrimmingTextBlock.Text"/>
</member>
<member name="P:CoreManagedUiControls.MaxControls.TrimmingTextBlock.Text">
<summary>
Gets or sets the Text DependencyProperty value. This is the text that will be displayed.
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.TrimmingTextBlock.TextProperty">
<summary>
Text DependencyProperty declaration.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.TrimmingTextBlock.#ctor">
<summary>
Constructor
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.TrimmingTextBlock.InternalTextBlock">
<summary>
Internal control used to size and measure text.
Actually takes care of displaying it as well.
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.TrimmingTextBlock.CharacterTrimmingStyle">
<summary>
Style of trimming to be applied to the textblock.
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.TrimmingTextBlock.CharacterTrimmingStyle.Left">
<summary>
Will trim the text from the left and insert the EllipsisText in its place to fit available space.
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.TrimmingTextBlock.CharacterTrimmingStyle.Middle">
<summary>
Will trim text from the middle and insert EllipsisText to fit available space.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.TrimmingTextBlock.TrimmingStyle">
<summary>
Gets or sets the Text DependencyProperty. This is the text that will be displayed.
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.TrimmingTextBlock.TrimmingStyleProperty">
<summary>
TrimmingStyle dependency property
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.TrimmingTextBlock.TrimmingText">
<summary>
Text used to demark a trim. Normally an ellipsis.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.TrimmingTextBlock.MeasureOverride(System.Windows.Size)">
<summary>
Handles the measure part of the measure and arrange layout process. During this process
we measure the textBlock that we've created as content with increasingly smaller amounts
of text until we find text that fits.
</summary>
<param name="availableSize">the available size</param>
<returns>the base implementation of Measure after the resizing has been done</returns>
</member>
<member name="M:CoreManagedUiControls.MaxControls.TrimmingTextBlock.ReduceText(System.String,System.Int32@)">
<summary>
Reduces the length of the text. Derived classes can override this to use different techniques
for reducing the text length.
</summary>
<param name="text">the original text</param>
<param name="charIndex">The index of the char that was removed from the string.</param>
<returns>the reduced length text</returns>
</member>
<member name="T:CoreManagedUiControls.MaxControls.ViewportTabs.RightClickCommandBehaviour">
<summary>
A behaviour class that can be used to link a ViewModel Command to a particular UI event.
In this case, we are listengin to UIElement.PreviewMouseRightButtonUpEvent.
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.ViewportTabs.SamplePresetsData">
<summary>
Some sample data for presets to help the designers.
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportConfigToBoolean">
<summary>
Converts a ViewportType to boolean: true if the view is Extended, false otherwise.
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.ViewportTabs.ViewExSingletonPlaceholderWnd">
<summary>
Interaction logic for ViewExSingletonPlaceholderWnd.xaml
</summary>
<summary>
ViewExSingletonPlaceholderWnd
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.ViewportTabs.ViewExSingletonPlaceholderWnd.#ctor">
<summary>
Constructor
</summary>
</member>
<member name="E:CoreManagedUiControls.MaxControls.ViewportTabs.ViewExSingletonPlaceholderWnd.LoadViewRequested">
<summary>
This event is raised with the Viewport button is clicked.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.ViewportTabs.ViewExSingletonPlaceholderWnd.ViewportName">
<summary>
The name of the view port that has this placeholder
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.ViewportTabs.ViewExSingletonPlaceholderWnd.Button_Click(System.Object,System.Windows.RoutedEventArgs)">
<summary>
</summary>
<param name="sender"></param>
<param name="e"></param>
</member>
<member name="M:CoreManagedUiControls.MaxControls.ViewportTabs.ViewExSingletonPlaceholderWnd.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.ViewportTabs.TabFlyoutControl">
<summary>
Interaction logic for TabFlyoutControl.xaml
</summary>
<summary>
TabFlyoutControl
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.ViewportTabs.TabFlyoutControl.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl">
<summary>
A control which displays a visual choice of the various
ViewPanel layout configurations.
</summary>
<summary>
ViewportLayoutControl
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl.AdjustMaxHeight">
<summary>
Calculates the maximum height of the PresetsGrid so that it is always offset nicely
the top of the screen
</summary>
<see cref="P:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl.OffsetFromTopOfScreen"/>
</member>
<member name="F:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl.CreateCommandProperty">
<summary>
Property for CreateCommand.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl.CreateCommand">
<summary>
The creation command to call.
</summary>
</member>
<member name="F:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl.IsEditingPresetsProperty">
<summary>
IsEditingPresets property name.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl.IsEditingPresets">
<summary>
A state that represents that we are in an editing state.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl.OffsetFromTopOfScreen">
<summary>
Property to determine how far from the top of the screen this user control
should get
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl.ParentPopup">
<summary>
Utility property for specifying the parent owner popup. We use this to help adjust the
height of this control so that it fits well on screen.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutControl.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutRepresentationControl">
<summary>
A control which represents a single ViewPanel layout configuration.
</summary>
<summary>
ViewportLayoutRepresentationControl
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportLayoutRepresentationControl.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportRepresentationControl">
<summary>
Interaction logic for ViewportRepresentationControl.xaml
</summary>
<summary>
ViewportRepresentationControl
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportRepresentationControl.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportTabsControlVerticalMono">
<summary>
Interaction logic for ViewportTabsControlVerticalMono.xaml
</summary>
<summary>
ViewportTabsControlVerticalMono
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.ViewportTabs.ViewportTabsControlVerticalMono.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.EnumSelector">
<summary>
A control which represents an Enum selection, but whose values can be localized and rendered
in human-readable form.
</summary>
<summary>
EnumSelector
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.EnumSelector.Items">
<summary>
The property that the combo-boxes contents are bound against.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.EnumSelector.SelectedEnum">
<summary>
The output value from this control. Clients can bind against this value
to extract an Enum value selection from this control.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.EnumSelector.EnumValueList">
<summary>
An optional list of human-readable strings for the control to use.
</summary>
<remarks>
The control is expecting a comma-seperated list of strings.
</remarks>
</member>
<member name="M:CoreManagedUiControls.MaxControls.EnumSelector.SetComboContents">
<summary>
Sets the contents, regardless of whether they have been set previously.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.EnumSelector.ArrangeComboContents">
<summary>
Sets up the final SelectedValue binding, and generates the Items member, if
it needs to be generated
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.EnumSelector.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.FlaggedEnumSelector">
<summary>
A control which represents a Flag-based Enum selection, but whose values can be localized and rendered
in human-readable form.
</summary>
<summary>
FlaggedEnumSelector
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.Items">
<summary>
The property that the combo-boxes contents are bound against.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.Value">
<summary>
The output value from this control. Clients can bind against this value
to extract an Enum value selection from this control.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.EnumValueList">
<summary>
An optional list of human-readable strings for the control to use.
</summary>
<remarks>
The control is expecting a comma-seperated list of strings.
</remarks>
</member>
<member name="M:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.SetComboContents">
<summary>
Sets the contents, regardless of whether they have been set previously.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.ArrangeComboContents">
<summary>
Sets up the final SelectedValue binding, and generates the Items member, if
it needs to be generated
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.DefaultValue">
<summary>
The value to be used if nothing else is selected (checked).
Calculated at init time.
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.DefaultValueText">
<summary>
The text to be used if nothing else is selected (checked).
Calculated at init time.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.EnumChanged(System.Object,System.EventArgs)">
<summary>
The handler that binds the CheckBox in the list to a Value change.
</summary>
<param name="sender">The selected CheckBox</param>
<param name="args">default</param>
</member>
<member name="M:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.AdjustComboTitle">
<summary>
This method recalculates what should be the title of the combo.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.GenerateAvailableValues">
<summary>
Called at init time to create the entries list.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.EstablishDefaultValue(System.Collections.Generic.List{CoreManagedUiControls.MaxControls.FlaggedEnumSelector.EnumSelectionEntry})">
<summary>
Figures out what the Default value should be. If a 0 doesn't exist, then
we take the first enum value as the default.
</summary>
<remarks>
The default value doesn't appear in the dropdown list. The reason for this
is that we need a value that is selected if all checkboxes are selected off.
</remarks>
<param name="values">The complete list of entries.</param>
</member>
<member name="M:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.GetLookupKey">
<summary>
Returns the localized Enum lookup key.
</summary>
<returns>The localized Enum lookup key.</returns>
</member>
<member name="T:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.EnumSelectionEntry">
<summary>
The entry viewmodel object. Contains the localized text, the selection state and
the enum value as a string.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.FlaggedEnumSelector.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxControls.StdViewWindowGrip">
<summary>
A standard ViewWindow grip control. Not meant for public consumption.
</summary>
<summary>
StdViewWindowGrip
</summary>
</member>
<member name="P:CoreManagedUiControls.MaxControls.StdViewWindowGrip.ViewTitle">
<summary>
The current text in the Viewport View label.
</summary>
</member>
<member name="E:CoreManagedUiControls.MaxControls.StdViewWindowGrip.ViewLabelClicked">
<summary>
This event is raised with the Viewport View label is clicked.
</summary>
</member>
<member name="E:CoreManagedUiControls.MaxControls.StdViewWindowGrip.ViewportConfigLabelClicked">
<summary>
This event is raised when the viewport configuration label is clicked.
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxControls.StdViewWindowGrip.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.Resources.ViewportStringDictionary">
<summary>
Localizable String dictionary of the string resources of the assembly
</summary>
</member>
<member name="P:CoreManagedUiControls.Resources.ViewportStringDictionary.Resources">
<summary>
Resource property which gives the access to the resources
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxDialogs.Workspaces.DeleteButtonStateMultiConverter">
<summary>
Converter for the workspace delete button in the workspaces dialog. Custom logic, not for public consumption.
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxDialogs.Workspaces.NewWorkspaceWindow">
<summary>
Interaction logic for NewWorkspaceWindow.xaml
</summary>
<summary>
NewWorkspaceWindow
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxDialogs.Workspaces.NewWorkspaceWindow.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxDialogs.Workspaces.WorkspaceManagement">
<summary>
Interaction logic for WorkspaceManagement.xaml
</summary>
<summary>
WorkspaceManagement
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxDialogs.Workspaces.WorkspaceManagement.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.MaxDialogs.ListDialog">
<summary>
Interaction logic for ListDialog.xaml
</summary>
<summary>
ListDialog
</summary>
</member>
<member name="M:CoreManagedUiControls.MaxDialogs.ListDialog.InitializeComponent">
<summary>
InitializeComponent
</summary>
</member>
<member name="T:CoreManagedUiControls.ThemeManager">
<summary>
Takes care of dynamically loading Dark vs. Light color resources.
</summary>
<remarks>
At runtime, the manager will load the color resources specified
in the resource files supplied. By adding this singleton's Resource property value
to the root of a control or window hierarchy, the client can participate in the application's theming system.
</remarks>
</member>
<member name="P:CoreManagedUiControls.ThemeManager.Instance">
<summary>
Singleton instance.
</summary>
</member>
<member name="F:CoreManagedUiControls.ThemeManager.ThemePropertyName">
<summary>
Theme Property Name
</summary>
</member>
<member name="P:CoreManagedUiControls.ThemeManager.AppTheme">
<summary>
Reflects the current application theme
</summary>
</member>
<member name="P:CoreManagedUiControls.ThemeManager.Resources">
<summary>
The dictionary which dynamically switches its content according to which application
theme is currently running.
</summary>
</member>
<member name="T:CoreManagedUiControls.Properties.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:CoreManagedUiControls.Properties.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:CoreManagedUiControls.Properties.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="T:XamlGeneratedNamespace.GeneratedInternalTypeHelper">
<summary>
GeneratedInternalTypeHelper
</summary>
</member>
<member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.CreateInstance(System.Type,System.Globalization.CultureInfo)">
<summary>
CreateInstance
</summary>
</member>
<member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.GetPropertyValue(System.Reflection.PropertyInfo,System.Object,System.Globalization.CultureInfo)">
<summary>
GetPropertyValue
</summary>
</member>
<member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.SetPropertyValue(System.Reflection.PropertyInfo,System.Object,System.Object,System.Globalization.CultureInfo)">
<summary>
SetPropertyValue
</summary>
</member>
<member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.CreateDelegate(System.Type,System.Object,System.String)">
<summary>
CreateDelegate
</summary>
</member>
<member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.AddEventHandler(System.Reflection.EventInfo,System.Object,System.Delegate)">
<summary>
AddEventHandler
</summary>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

@ -1 +0,0 @@
58b1a1c4878dc3358453712e7e6e1b3234fe62fdd0e32d531649338bbb169a13

@ -1,51 +0,0 @@
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\VR4Life-dll.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\VR4Life-dll.pdb
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\Autodesk.Max.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\ManagedServices.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\UiViewModels.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\CSharpUtilities.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\CoreManagedUiControls.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\Microsoft.CodeAnalysis.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\Microsoft.CodeAnalysis.CSharp.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\MaxPlusDotNet.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\Autodesk.Max.xml
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\UiViewModels.xml
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\CSharpUtilities.xml
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\CoreManagedUiControls.xml
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\de-DE\CoreManagedUiControls.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\fr-FR\CoreManagedUiControls.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\ja-JP\CoreManagedUiControls.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\ko-KR\CoreManagedUiControls.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\pt-BR\CoreManagedUiControls.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\zh-CN\CoreManagedUiControls.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\cs\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\de\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\es\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\fr\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\it\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\ja\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\ko\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\pl\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\pt-BR\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\ru\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\tr\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\zh-Hans\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\zh-Hant\Microsoft.CodeAnalysis.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\cs\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\de\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\es\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\fr\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\it\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\ja\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\ko\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\pl\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\ru\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\tr\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\bin\Debug\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\obj\Debug\VR4Life-dll.csproj.AssemblyReference.cache
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\obj\Debug\VR4Life-dll.csproj.CoreCompileInputs.cache
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\obj\Debug\VR4Life-.FA5A00BF.Up2Date
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\obj\Debug\VR4Life-dll.dll
D:\gitea\vr4life-3dmax-plugin\instaladorCsharp\VR4Life-dll\obj\Debug\VR4Life-dll.pdb

@ -1,41 +0,0 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-installer\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{30874DB9-259A-4325-930A-64905585A8C2}|VR4Life-installer.csproj|d:\\gitea\\vr4life-3dmax-plugin\\instaladorcsharp\\vr4life-installer\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{30874DB9-259A-4325-930A-64905585A8C2}|VR4Life-installer.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Program.cs",
"DocumentMoniker": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-installer\\Program.cs",
"RelativeDocumentMoniker": "Program.cs",
"ToolTip": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-installer\\Program.cs*",
"RelativeToolTip": "Program.cs*",
"ViewState": "AgIAAAAAAAAAAAAAAAAAADoAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-24T17:43:20.736Z",
"EditorCaption": ""
}
]
}
]
}
]
}

@ -1,41 +0,0 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-installer\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{30874DB9-259A-4325-930A-64905585A8C2}|VR4Life-installer.csproj|d:\\gitea\\vr4life-3dmax-plugin\\instaladorcsharp\\vr4life-installer\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{30874DB9-259A-4325-930A-64905585A8C2}|VR4Life-installer.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Program.cs",
"DocumentMoniker": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-installer\\Program.cs",
"RelativeDocumentMoniker": "Program.cs",
"ToolTip": "D:\\gitea\\vr4life-3dmax-plugin\\instaladorCsharp\\VR4Life-installer\\Program.cs",
"RelativeToolTip": "Program.cs",
"ViewState": "AgIAADQAAAAAAAAAAAAgwEkAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-24T17:43:20.736Z",
"EditorCaption": ""
}
]
}
]
}
]
}

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>

@ -1,74 +0,0 @@
using System;
using System.IO;
using System.Text;
namespace VR4LifeInstaller
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("=== VR4Life: Instalador Professional (Limpeza + Logica Babylon) ===");
try
{
// --- PARTE 1: LIMPEZA DA INSTALACAO ANTIGA ---
string appData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string oldLoader = Path.Combine(appData, @"Autodesk\3dsMax\2026 - 64bit\ENU\scripts\startup\vr4life_loader.ms");
string oldFolder = Path.Combine(appData, @"Autodesk\3dsMax\2026 - 64bit\ENU\scripts\VR4Life_Plugin");
if (File.Exists(oldLoader))
{
File.Delete(oldLoader);
Console.WriteLine(" - Loader antigo removido.");
}
if (Directory.Exists(oldFolder))
{
Directory.Delete(oldFolder, true);
Console.WriteLine(" - Pasta de scripts antiga removida.");
}
// --- PARTE 2: NOVA INSTALACAO (DIRETRIZ BABYLON) ---
string programData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string pluginRoot = Path.Combine(programData, @"Autodesk\ApplicationPlugins\VR4Life");
string contentsPath = Path.Combine(pluginRoot, "Contents");
string scriptsPath = Path.Combine(contentsPath, "scripts");
if (!Directory.Exists(scriptsPath)) Directory.CreateDirectory(scriptsPath);
// Gerar PackageContents.xml na RAIZ
string xmlContent = @"<?xml version=""1.0"" encoding=""utf-8""?>
<ApplicationPackage SchemaVersion=""1.0"" Version=""1.0"" Name=""VR4Life"" ProductCode=""{A1B2C3D4-E5F6-4789-A1B2-C3D4E5F67890}"">
<Components>
<RuntimeRequirements OS=""Win64"" Platform=""3ds Max"" SeriesMin=""2024"" SeriesMax=""2026"" />
<ComponentEntry ComponentName=""VR4Life_Connector"" ModuleName=""./Contents/VR4Life-dll.dll"" />
<ComponentEntry ComponentName=""VR4Life_Scripts"" ModuleName=""./Contents/scripts/vr4life_macros.ms"" />
</Components>
</ApplicationPackage>";
File.WriteAllText(Path.Combine(pluginRoot, "PackageContents.xml"), xmlContent, Encoding.UTF8);
// Copiar DLL e Scripts para as pastas corretas
CopyFile("VR4Life-dll.dll", Path.Combine(contentsPath, "VR4Life-dll.dll"));
string[] files = { "run_vr4life.py", "vr4life_updater.py", "version.txt" };
foreach (var f in files) CopyFile(f, Path.Combine(scriptsPath, f));
// Gerar as Macros MS no destino novo
string macros = $@"
macroScript VR4Life_Launcher category:""Immerse Games"" (on execute do python.executeFile ""{scriptsPath.Replace("\\", "/")}/run_vr4life.py"")
macroScript VR4Life_Update category:""Immerse Games"" (on execute do python.executeFile ""{scriptsPath.Replace("\\", "/")}/vr4life_updater.py"")
";
File.WriteAllText(Path.Combine(scriptsPath, "vr4life_macros.ms"), macros, Encoding.UTF8);
Console.WriteLine("\n>>> INSTALACAO E LIMPEZA CONCLUIDAS COM SUCESSO!");
}
catch (Exception ex) { Console.WriteLine("ERRO: " + ex.Message); }
Console.ReadKey();
}
static void CopyFile(string src, string dest)
{
if (File.Exists(src)) File.Copy(src, dest, true);
}
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save