diff --git a/.github/workflows/dotnet-desktop.yml b/.github/workflows/dotnet-desktop.yml
index fa2bc3d59..9226e20ab 100644
--- a/.github/workflows/dotnet-desktop.yml
+++ b/.github/workflows/dotnet-desktop.yml
@@ -6,9 +6,9 @@ on:
- main
pull_request:
jobs:
- build:
+ build-windows:
runs-on: windows-latest
- name: "Build"
+ name: "Build Windows"
env:
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages
steps:
@@ -28,17 +28,143 @@ jobs:
restore-keys: |
nuget-${{ runner.os }}-
+ - name: Remove extraneous platforms
+ run: |
+ dotnet sln remove '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.Mac.csproj'
+ dotnet sln remove '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.Linux.csproj'
+
- name: Restore
- run: dotnet restore /p:Configuration=Release-win
+ run: dotnet restore /p:Configuration=Release
- name: Build
- run: dotnet build --configuration Release-win --no-restore
+ run: dotnet build --configuration Release --no-restore
- name: Publish
- run: dotnet publish '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.csproj' --configuration Release-win -o deploy
+ run: dotnet publish '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.csproj' --configuration Release -o deploy/windows
- name: Upload artifacts
uses: actions/upload-artifact@v6
with:
name: "Smithbox-SHA${{ github.sha }}"
- path: "${{ runner.workspace }}/Smithbox/deploy"
+ path: "${{ runner.workspace }}/Smithbox/deploy/windows"
+ build-linux:
+ runs-on: windows-latest
+ name: "Build Linux"
+ env:
+ NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ submodules: false
+ - uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: "9.0.x"
+ cache: false
+
+ - name: Cache NuGet packages
+ uses: actions/cache@v5.0.1
+ with:
+ path: ${{ env.NUGET_PACKAGES }}
+ key: nuget-${{ runner.os }}-${{ hashFiles('**/*.csproj') }}
+ restore-keys: |
+ nuget-${{ runner.os }}-
+
+ - name: Remove extraneous platforms
+ run: |
+ dotnet sln remove '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.csproj'
+ dotnet sln remove '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.Mac.csproj'
+
+ - name: Restore
+ run: dotnet restore /p:Configuration=Release
+
+ - name: Build
+ run: dotnet build --configuration Release --no-restore
+
+ - name: Publish
+ run: dotnet publish '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.Linux.csproj' --configuration Release -o deploy/linux
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v6
+ with:
+ name: "Smithbox.Linux-SHA${{ github.sha }}"
+ path: "${{ runner.workspace }}/Smithbox/deploy/linux"
+ build-mac:
+ runs-on: macos-latest
+ name: "Build macOS"
+ env:
+ NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ submodules: false
+ - uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: "9.0.x"
+ cache: false
+
+ - name: Setup XCode
+ uses: maxim-lobanov/setup-xcode@v1
+ with:
+ xcode-version: 26.2
+
+ - name: Install macos workload
+ run: dotnet workload install macos
+
+ - name: Cache Rust artifacts
+ uses: actions/cache@v5.0.1
+ with:
+ path: |
+ ~/.cargo/bin/
+ ~/.cargo/registry/index/
+ ~/.cargo/registry/cache/
+ ~/.cargo/git/db/
+ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
+
+ - name: Install Rust toolchain
+ uses: dtolnay/rust-toolchain@stable
+
+ - name: Build native lib
+ run: cargo build --lib --release --manifest-path='${{ runner.workspace }}/Smithbox/src/Andre/Andre.Formats/native/bhd5-decrypt-rust/Cargo.toml'
+
+ - name: Install Vulkan SDK
+ uses: humbletim/install-vulkan-sdk@0ef43dbc8af56d77bcb1e8b1ebbbaa8718ead524
+ with:
+ version: 1.4.341.0
+ cache: true
+
+ - name: Create dummy lib
+ run: |
+ cat > dummy.s << 'EOF'
+ .section __TEXT,__marker,regular,no_dead_strip
+ .asciz "DUMMY_FILE"
+ EOF
+ clang -c dummy.s -arch arm64 -arch x86_64 -o dummy.o
+ clang -dynamiclib -o '${{ runner.workspace }}/liboo2coremac64.2.9.dylib' -arch arm64 -arch x86_64 dummy.o -install_name @executable_path/liboo2coremac64.2.9.dylib
+
+ - name: Cache NuGet packages
+ uses: actions/cache@v5.0.1
+ with:
+ path: ${{ env.NUGET_PACKAGES }}
+ key: nuget-${{ runner.os }}-${{ hashFiles('**/*.csproj') }}
+ restore-keys: |
+ nuget-${{ runner.os }}-
+
+ - name: Remove extraneous platforms
+ run: |
+ dotnet sln remove '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.csproj'
+ dotnet sln remove '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.Linux.csproj'
+
+ - name: Restore
+ run: dotnet restore "/p:Configuration=Release;OodlePath=${{ runner.workspace }}/liboo2coremac64.2.9.dylib"
+
+ - name: Build and Publish
+ run: |
+ chmod +x '${{ runner.workspace }}/Smithbox/src/Smithbox/Scripts/preinstall'
+ chmod +x '${{ runner.workspace }}/Smithbox/src/Smithbox/Scripts/postinstall'
+ dotnet publish '${{ runner.workspace }}/Smithbox/src/Smithbox/Smithbox.Mac.csproj' --configuration Release -o deploy/macos "/p:OodlePath=${{ runner.workspace }}/liboo2coremac64.2.9.dylib;MoltenVKPath=$VULKAN_SDK/lib/libMoltenVK.dylib;CreatePackage=true"
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v6
+ with:
+ name: "Smithbox.Mac-SHA${{ github.sha }}"
+ path: "${{ runner.workspace }}/Smithbox/deploy/macos"
diff --git a/.gitignore b/.gitignore
index 033334c16..56c79c55a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -365,7 +365,9 @@ CMakeSettings.json
Dump
Media
+
.DS_Store
+src/Platform.Build.props
Documentation/BB
src/Smithbox.Data/Assets/Shaders/build_shader.bat
diff --git a/Smithbox.sln b/Smithbox.sln
index 1631eec01..3912994c4 100644
--- a/Smithbox.sln
+++ b/Smithbox.sln
@@ -48,796 +48,228 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Andre.SoapstoneLib", "src\A
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Veldrid.MetalBindings", "src\Veldrid\Veldrid.MetalBindings\Veldrid.MetalBindings.csproj", "{77EB2AA9-02E6-4356-9A86-956A946CBBBF}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Smithbox.Linux", "src\Smithbox\Smithbox.Linux.csproj", "{2112107B-0BA9-4367-BA40-3DC687C5F456}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Smithbox.Mac", "src\Smithbox\Smithbox.Mac.csproj", "{48004B40-5161-4DA3-81E7-0C1755A5558F}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tracy", "src\Tracy\Tracy.csproj", "{C1B942D4-F5B9-4A2E-9C8A-D5B582065899}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
- Debug-linux|Any CPU = Debug-linux|Any CPU
- Debug-linux|x64 = Debug-linux|x64
- Debug-osx|Any CPU = Debug-osx|Any CPU
- Debug-osx|x64 = Debug-osx|x64
- Debug-win|Any CPU = Debug-win|Any CPU
- Debug-win|x64 = Debug-win|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
- Release-linux|Any CPU = Release-linux|Any CPU
- Release-linux|x64 = Release-linux|x64
- Release-osx|Any CPU = Release-osx|Any CPU
- Release-osx|x64 = Release-osx|x64
- Release-win|Any CPU = Release-win|Any CPU
- Release-win|x64 = Release-win|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug|Any CPU.ActiveCfg = Debug-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug|Any CPU.Build.0 = Debug-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug|x64.ActiveCfg = Debug-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug|x64.Build.0 = Debug-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-linux|Any CPU.ActiveCfg = Debug-linux|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-linux|Any CPU.Build.0 = Debug-linux|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-linux|x64.ActiveCfg = Debug-linux|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-linux|x64.Build.0 = Debug-linux|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-osx|Any CPU.ActiveCfg = Debug-osx|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-osx|Any CPU.Build.0 = Debug-osx|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-osx|x64.ActiveCfg = Debug-osx|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-osx|x64.Build.0 = Debug-osx|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-win|Any CPU.ActiveCfg = Debug-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-win|Any CPU.Build.0 = Debug-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-win|x64.ActiveCfg = Debug-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug-win|x64.Build.0 = Debug-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release|Any CPU.ActiveCfg = Release-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release|Any CPU.Build.0 = Release-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release|x64.ActiveCfg = Release-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release|x64.Build.0 = Release-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-linux|Any CPU.ActiveCfg = Release-linux|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-linux|Any CPU.Build.0 = Release-linux|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-linux|x64.ActiveCfg = Release-linux|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-linux|x64.Build.0 = Release-linux|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-osx|Any CPU.ActiveCfg = Release-osx|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-osx|Any CPU.Build.0 = Release-osx|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-osx|x64.ActiveCfg = Release-osx|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-osx|x64.Build.0 = Release-osx|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-win|Any CPU.ActiveCfg = Release-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-win|Any CPU.Build.0 = Release-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-win|x64.ActiveCfg = Release-win|Any CPU
- {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release-win|x64.Build.0 = Release-win|Any CPU
+ {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Debug|x64.Build.0 = Debug|Any CPU
+ {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release|x64.ActiveCfg = Release|Any CPU
+ {E22C07F4-D305-4093-B44B-2A9914DF06A4}.Release|x64.Build.0 = Release|Any CPU
{6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug|x64.ActiveCfg = Debug|Any CPU
{6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug|x64.Build.0 = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Debug-win|x64.Build.0 = Debug|Any CPU
{6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release|Any CPU.Build.0 = Release|Any CPU
{6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release|x64.ActiveCfg = Release|Any CPU
{6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release|x64.Build.0 = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-linux|x64.Build.0 = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-osx|x64.Build.0 = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-win|x64.ActiveCfg = Release|Any CPU
- {6E8C5B37-C0EA-4BDB-8E33-D4A1F86139C4}.Release-win|x64.Build.0 = Release|Any CPU
{EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug|x64.ActiveCfg = Debug|Any CPU
{EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug|x64.Build.0 = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Debug-win|x64.Build.0 = Debug|Any CPU
{EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release|Any CPU.Build.0 = Release|Any CPU
{EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release|x64.ActiveCfg = Release|Any CPU
{EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release|x64.Build.0 = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-linux|x64.Build.0 = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-osx|x64.Build.0 = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-win|x64.ActiveCfg = Release|Any CPU
- {EBCA436B-24F5-4E0D-B32F-5E7EE0D061F6}.Release-win|x64.Build.0 = Release|Any CPU
{7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug|x64.ActiveCfg = Debug|Any CPU
{7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug|x64.Build.0 = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Debug-win|x64.Build.0 = Debug|Any CPU
{7ED94989-2CE2-454E-97C0-59837B24A61F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7ED94989-2CE2-454E-97C0-59837B24A61F}.Release|Any CPU.Build.0 = Release|Any CPU
{7ED94989-2CE2-454E-97C0-59837B24A61F}.Release|x64.ActiveCfg = Release|Any CPU
{7ED94989-2CE2-454E-97C0-59837B24A61F}.Release|x64.Build.0 = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-linux|x64.Build.0 = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-osx|x64.Build.0 = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-win|x64.ActiveCfg = Release|Any CPU
- {7ED94989-2CE2-454E-97C0-59837B24A61F}.Release-win|x64.Build.0 = Release|Any CPU
{F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug|x64.ActiveCfg = Debug|Any CPU
{F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug|x64.Build.0 = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Debug-win|x64.Build.0 = Debug|Any CPU
{F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release|Any CPU.Build.0 = Release|Any CPU
{F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release|x64.ActiveCfg = Release|Any CPU
{F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release|x64.Build.0 = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-linux|x64.Build.0 = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-osx|x64.Build.0 = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-win|x64.ActiveCfg = Release|Any CPU
- {F14604E6-9FBB-4F47-AFD8-7DB112924AF4}.Release-win|x64.Build.0 = Release|Any CPU
{CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug|x64.ActiveCfg = Debug|Any CPU
{CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug|x64.Build.0 = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Debug-win|x64.Build.0 = Debug|Any CPU
{CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release|Any CPU.Build.0 = Release|Any CPU
{CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release|x64.ActiveCfg = Release|Any CPU
{CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release|x64.Build.0 = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-linux|x64.Build.0 = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-osx|x64.Build.0 = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-win|x64.ActiveCfg = Release|Any CPU
- {CEFBD024-2E4E-4B74-ACB5-2D17B7F4C17F}.Release-win|x64.Build.0 = Release|Any CPU
{2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug|x64.ActiveCfg = Debug|Any CPU
{2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug|x64.Build.0 = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Debug-win|x64.Build.0 = Debug|Any CPU
{2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release|Any CPU.Build.0 = Release|Any CPU
{2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release|x64.ActiveCfg = Release|Any CPU
{2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release|x64.Build.0 = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-linux|x64.Build.0 = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-osx|x64.Build.0 = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-win|x64.ActiveCfg = Release|Any CPU
- {2A3A911A-7573-4A5B-A83B-92164B349BEA}.Release-win|x64.Build.0 = Release|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug|Any CPU.ActiveCfg = Debug-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug|Any CPU.Build.0 = Debug-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug|x64.ActiveCfg = Debug-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug|x64.Build.0 = Debug-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-linux|Any CPU.ActiveCfg = Debug-linux|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-linux|Any CPU.Build.0 = Debug-linux|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-linux|x64.ActiveCfg = Debug-linux|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-linux|x64.Build.0 = Debug-linux|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-osx|Any CPU.ActiveCfg = Debug-osx|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-osx|Any CPU.Build.0 = Debug-osx|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-osx|x64.ActiveCfg = Debug-osx|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-osx|x64.Build.0 = Debug-osx|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-win|Any CPU.ActiveCfg = Debug-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-win|Any CPU.Build.0 = Debug-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-win|x64.ActiveCfg = Debug-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug-win|x64.Build.0 = Debug-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release|Any CPU.ActiveCfg = Release-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release|Any CPU.Build.0 = Release-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release|x64.ActiveCfg = Release-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release|x64.Build.0 = Release-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-linux|Any CPU.ActiveCfg = Release-linux|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-linux|Any CPU.Build.0 = Release-linux|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-linux|x64.ActiveCfg = Release-linux|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-linux|x64.Build.0 = Release-linux|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-osx|Any CPU.ActiveCfg = Release-osx|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-osx|Any CPU.Build.0 = Release-osx|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-osx|x64.ActiveCfg = Release-osx|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-osx|x64.Build.0 = Release-osx|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-win|Any CPU.ActiveCfg = Release-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-win|Any CPU.Build.0 = Release-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-win|x64.ActiveCfg = Release-win|Any CPU
- {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release-win|x64.Build.0 = Release-win|Any CPU
+ {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Debug|x64.Build.0 = Debug|Any CPU
+ {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release|x64.ActiveCfg = Release|Any CPU
+ {56C072EE-4011-4A0E-9B72-25A1A47969A0}.Release|x64.Build.0 = Release|Any CPU
{AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug|x64.ActiveCfg = Debug|Any CPU
{AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug|x64.Build.0 = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Debug-win|x64.Build.0 = Debug|Any CPU
{AD901915-1F68-4774-8D9C-5BD443F933F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD901915-1F68-4774-8D9C-5BD443F933F6}.Release|Any CPU.Build.0 = Release|Any CPU
{AD901915-1F68-4774-8D9C-5BD443F933F6}.Release|x64.ActiveCfg = Release|Any CPU
{AD901915-1F68-4774-8D9C-5BD443F933F6}.Release|x64.Build.0 = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-linux|x64.Build.0 = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-osx|x64.Build.0 = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-win|x64.ActiveCfg = Release|Any CPU
- {AD901915-1F68-4774-8D9C-5BD443F933F6}.Release-win|x64.Build.0 = Release|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug|Any CPU.ActiveCfg = Debug-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug|Any CPU.Build.0 = Debug-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug|x64.ActiveCfg = Debug-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug|x64.Build.0 = Debug-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-linux|Any CPU.ActiveCfg = Debug-linux|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-linux|Any CPU.Build.0 = Debug-linux|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-linux|x64.ActiveCfg = Debug-linux|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-linux|x64.Build.0 = Debug-linux|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-osx|Any CPU.ActiveCfg = Debug-osx|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-osx|Any CPU.Build.0 = Debug-osx|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-osx|x64.ActiveCfg = Debug-osx|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-osx|x64.Build.0 = Debug-osx|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-win|Any CPU.ActiveCfg = Debug-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-win|Any CPU.Build.0 = Debug-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-win|x64.ActiveCfg = Debug-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug-win|x64.Build.0 = Debug-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release|Any CPU.ActiveCfg = Release-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release|Any CPU.Build.0 = Release-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release|x64.ActiveCfg = Release-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release|x64.Build.0 = Release-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-linux|Any CPU.ActiveCfg = Release-linux|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-linux|Any CPU.Build.0 = Release-linux|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-linux|x64.ActiveCfg = Release-linux|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-linux|x64.Build.0 = Release-linux|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-osx|Any CPU.ActiveCfg = Release-osx|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-osx|Any CPU.Build.0 = Release-osx|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-osx|x64.ActiveCfg = Release-osx|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-osx|x64.Build.0 = Release-osx|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-win|Any CPU.ActiveCfg = Release-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-win|Any CPU.Build.0 = Release-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-win|x64.ActiveCfg = Release-win|Any CPU
- {9E5E426C-567D-45F3-9198-5280A4569B80}.Release-win|x64.Build.0 = Release-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug|Any CPU.ActiveCfg = Debug-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug|Any CPU.Build.0 = Debug-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug|x64.ActiveCfg = Debug-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug|x64.Build.0 = Debug-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-linux|Any CPU.ActiveCfg = Debug-linux|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-linux|Any CPU.Build.0 = Debug-linux|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-linux|x64.ActiveCfg = Debug-linux|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-linux|x64.Build.0 = Debug-linux|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-osx|Any CPU.ActiveCfg = Debug-osx|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-osx|Any CPU.Build.0 = Debug-osx|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-osx|x64.ActiveCfg = Debug-osx|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-osx|x64.Build.0 = Debug-osx|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-win|Any CPU.ActiveCfg = Debug-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-win|Any CPU.Build.0 = Debug-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-win|x64.ActiveCfg = Debug-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug-win|x64.Build.0 = Debug-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release|Any CPU.ActiveCfg = Release-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release|Any CPU.Build.0 = Release-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release|x64.ActiveCfg = Release-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release|x64.Build.0 = Release-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-linux|Any CPU.ActiveCfg = Release-linux|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-linux|Any CPU.Build.0 = Release-linux|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-linux|x64.ActiveCfg = Release-linux|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-linux|x64.Build.0 = Release-linux|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-osx|Any CPU.ActiveCfg = Release-osx|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-osx|Any CPU.Build.0 = Release-osx|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-osx|x64.ActiveCfg = Release-osx|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-osx|x64.Build.0 = Release-osx|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-win|Any CPU.ActiveCfg = Release-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-win|Any CPU.Build.0 = Release-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-win|x64.ActiveCfg = Release-win|Any CPU
- {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release-win|x64.Build.0 = Release-win|Any CPU
+ {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Debug|x64.Build.0 = Debug|Any CPU
+ {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release|x64.ActiveCfg = Release|Any CPU
+ {FD73CB42-214B-BCE4-E634-77E4D1ED3BEE}.Release|x64.Build.0 = Release|Any CPU
+ {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9E5E426C-567D-45F3-9198-5280A4569B80}.Debug|x64.Build.0 = Debug|Any CPU
+ {9E5E426C-567D-45F3-9198-5280A4569B80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9E5E426C-567D-45F3-9198-5280A4569B80}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9E5E426C-567D-45F3-9198-5280A4569B80}.Release|x64.ActiveCfg = Release|Any CPU
+ {9E5E426C-567D-45F3-9198-5280A4569B80}.Release|x64.Build.0 = Release|Any CPU
{4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug|x64.ActiveCfg = Debug|Any CPU
{4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug|x64.Build.0 = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Debug-win|x64.Build.0 = Debug|Any CPU
{4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release|Any CPU.Build.0 = Release|Any CPU
{4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release|x64.ActiveCfg = Release|Any CPU
{4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release|x64.Build.0 = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-linux|x64.Build.0 = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-osx|x64.Build.0 = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-win|x64.ActiveCfg = Release|Any CPU
- {4687FDA1-67FC-3A6D-3D82-C3C95BE30040}.Release-win|x64.Build.0 = Release|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug|Any CPU.ActiveCfg = Debug-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug|Any CPU.Build.0 = Debug-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug|x64.ActiveCfg = Debug-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug|x64.Build.0 = Debug-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-linux|Any CPU.ActiveCfg = Debug-linux|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-linux|Any CPU.Build.0 = Debug-linux|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-linux|x64.ActiveCfg = Debug-linux|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-linux|x64.Build.0 = Debug-linux|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-osx|Any CPU.ActiveCfg = Debug-osx|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-osx|Any CPU.Build.0 = Debug-osx|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-osx|x64.ActiveCfg = Debug-osx|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-osx|x64.Build.0 = Debug-osx|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-win|Any CPU.ActiveCfg = Debug-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-win|Any CPU.Build.0 = Debug-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-win|x64.ActiveCfg = Debug-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug-win|x64.Build.0 = Debug-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release|Any CPU.ActiveCfg = Release-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release|Any CPU.Build.0 = Release-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release|x64.ActiveCfg = Release-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release|x64.Build.0 = Release-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-linux|Any CPU.ActiveCfg = Release-linux|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-linux|Any CPU.Build.0 = Release-linux|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-linux|x64.ActiveCfg = Release-linux|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-linux|x64.Build.0 = Release-linux|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-osx|Any CPU.ActiveCfg = Release-osx|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-osx|Any CPU.Build.0 = Release-osx|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-osx|x64.ActiveCfg = Release-osx|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-osx|x64.Build.0 = Release-osx|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-win|Any CPU.ActiveCfg = Release-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-win|Any CPU.Build.0 = Release-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-win|x64.ActiveCfg = Release-win|Any CPU
- {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release-win|x64.Build.0 = Release-win|Any CPU
+ {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {958445B5-464F-F7E8-8AED-F3415FCACA78}.Debug|x64.Build.0 = Debug|Any CPU
+ {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release|Any CPU.Build.0 = Release|Any CPU
+ {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release|x64.ActiveCfg = Release|Any CPU
+ {958445B5-464F-F7E8-8AED-F3415FCACA78}.Release|x64.Build.0 = Release|Any CPU
{DAB51102-413B-083B-0371-066C72D0B5A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DAB51102-413B-083B-0371-066C72D0B5A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DAB51102-413B-083B-0371-066C72D0B5A1}.Debug|x64.ActiveCfg = Debug|Any CPU
{DAB51102-413B-083B-0371-066C72D0B5A1}.Debug|x64.Build.0 = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Debug-win|x64.Build.0 = Debug|Any CPU
{DAB51102-413B-083B-0371-066C72D0B5A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DAB51102-413B-083B-0371-066C72D0B5A1}.Release|Any CPU.Build.0 = Release|Any CPU
{DAB51102-413B-083B-0371-066C72D0B5A1}.Release|x64.ActiveCfg = Release|Any CPU
{DAB51102-413B-083B-0371-066C72D0B5A1}.Release|x64.Build.0 = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-linux|x64.Build.0 = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-osx|x64.Build.0 = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-win|x64.ActiveCfg = Release|Any CPU
- {DAB51102-413B-083B-0371-066C72D0B5A1}.Release-win|x64.Build.0 = Release|Any CPU
{59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug|Any CPU.Build.0 = Debug|Any CPU
{59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug|x64.ActiveCfg = Debug|x64
{59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug|x64.Build.0 = Debug|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-linux|x64.ActiveCfg = Debug|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-linux|x64.Build.0 = Debug|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-osx|x64.ActiveCfg = Debug|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-osx|x64.Build.0 = Debug|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-win|x64.ActiveCfg = Debug|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Debug-win|x64.Build.0 = Debug|x64
{59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release|Any CPU.ActiveCfg = Release|Any CPU
{59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release|Any CPU.Build.0 = Release|Any CPU
{59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release|x64.ActiveCfg = Release|x64
{59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release|x64.Build.0 = Release|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-linux|x64.ActiveCfg = Release|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-linux|x64.Build.0 = Release|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-osx|x64.ActiveCfg = Release|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-osx|x64.Build.0 = Release|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-win|x64.ActiveCfg = Release|x64
- {59DCD3E2-0EB8-914A-381F-7F858AF7D939}.Release-win|x64.Build.0 = Release|x64
{A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug|x64.ActiveCfg = Debug|x64
{A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug|x64.Build.0 = Debug|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-linux|x64.ActiveCfg = Debug|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-linux|x64.Build.0 = Debug|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-osx|x64.ActiveCfg = Debug|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-osx|x64.Build.0 = Debug|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-win|x64.ActiveCfg = Debug|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Debug-win|x64.Build.0 = Debug|x64
{A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release|Any CPU.Build.0 = Release|Any CPU
{A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release|x64.ActiveCfg = Release|x64
{A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release|x64.Build.0 = Release|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-linux|x64.ActiveCfg = Release|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-linux|x64.Build.0 = Release|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-osx|x64.ActiveCfg = Release|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-osx|x64.Build.0 = Release|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-win|x64.ActiveCfg = Release|x64
- {A699848D-D9FE-3A8B-C923-EE94F182E23A}.Release-win|x64.Build.0 = Release|x64
{8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug|x64.ActiveCfg = Debug|x64
{8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug|x64.Build.0 = Debug|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-linux|x64.ActiveCfg = Debug|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-linux|x64.Build.0 = Debug|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-osx|x64.ActiveCfg = Debug|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-osx|x64.Build.0 = Debug|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-win|x64.ActiveCfg = Debug|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Debug-win|x64.Build.0 = Debug|x64
{8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release|Any CPU.Build.0 = Release|Any CPU
{8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release|x64.ActiveCfg = Release|x64
{8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release|x64.Build.0 = Release|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-linux|x64.ActiveCfg = Release|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-linux|x64.Build.0 = Release|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-osx|x64.ActiveCfg = Release|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-osx|x64.Build.0 = Release|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-win|x64.ActiveCfg = Release|x64
- {8E322882-1EA7-7252-B0DE-B03E4B4C88ED}.Release-win|x64.Build.0 = Release|x64
{E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug|x64.ActiveCfg = Debug|Any CPU
{E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug|x64.Build.0 = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Debug-win|x64.Build.0 = Debug|Any CPU
{E43E4287-28B6-D908-788D-84F10D35D0EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E43E4287-28B6-D908-788D-84F10D35D0EC}.Release|Any CPU.Build.0 = Release|Any CPU
{E43E4287-28B6-D908-788D-84F10D35D0EC}.Release|x64.ActiveCfg = Release|Any CPU
{E43E4287-28B6-D908-788D-84F10D35D0EC}.Release|x64.Build.0 = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-linux|x64.Build.0 = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-osx|x64.Build.0 = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-win|x64.ActiveCfg = Release|Any CPU
- {E43E4287-28B6-D908-788D-84F10D35D0EC}.Release-win|x64.Build.0 = Release|Any CPU
{902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug|Any CPU.Build.0 = Debug|Any CPU
{902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug|x64.ActiveCfg = Debug|Any CPU
{902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug|x64.Build.0 = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Debug-win|x64.Build.0 = Debug|Any CPU
{902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release|Any CPU.ActiveCfg = Release|Any CPU
{902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release|Any CPU.Build.0 = Release|Any CPU
{902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release|x64.ActiveCfg = Release|Any CPU
{902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release|x64.Build.0 = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-linux|x64.Build.0 = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-osx|x64.Build.0 = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-win|x64.ActiveCfg = Release|Any CPU
- {902AFDD0-44EF-F607-FDA3-F44055BA8B40}.Release-win|x64.Build.0 = Release|Any CPU
{69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug|x64.ActiveCfg = Debug|Any CPU
{69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug|x64.Build.0 = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Debug-win|x64.Build.0 = Debug|Any CPU
{69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release|Any CPU.Build.0 = Release|Any CPU
{69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release|x64.ActiveCfg = Release|Any CPU
{69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release|x64.Build.0 = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-linux|x64.Build.0 = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-osx|x64.Build.0 = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-win|x64.ActiveCfg = Release|Any CPU
- {69C825F6-FC8C-8C96-6DAB-2CB46589894E}.Release-win|x64.Build.0 = Release|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug|Any CPU.ActiveCfg = Debug-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug|Any CPU.Build.0 = Debug-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug|x64.ActiveCfg = Debug-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug|x64.Build.0 = Debug-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-linux|Any CPU.ActiveCfg = Debug-linux|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-linux|Any CPU.Build.0 = Debug-linux|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-linux|x64.ActiveCfg = Debug-linux|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-linux|x64.Build.0 = Debug-linux|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-osx|Any CPU.ActiveCfg = Debug-osx|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-osx|Any CPU.Build.0 = Debug-osx|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-osx|x64.ActiveCfg = Debug-osx|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-osx|x64.Build.0 = Debug-osx|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-win|Any CPU.ActiveCfg = Debug-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-win|Any CPU.Build.0 = Debug-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-win|x64.ActiveCfg = Debug-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug-win|x64.Build.0 = Debug-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release|Any CPU.ActiveCfg = Release-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release|Any CPU.Build.0 = Release-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release|x64.ActiveCfg = Release-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release|x64.Build.0 = Release-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-linux|Any CPU.ActiveCfg = Release-linux|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-linux|Any CPU.Build.0 = Release-linux|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-linux|x64.ActiveCfg = Release-linux|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-linux|x64.Build.0 = Release-linux|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-osx|Any CPU.ActiveCfg = Release-osx|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-osx|Any CPU.Build.0 = Release-osx|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-osx|x64.ActiveCfg = Release-osx|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-osx|x64.Build.0 = Release-osx|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-win|Any CPU.ActiveCfg = Release-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-win|Any CPU.Build.0 = Release-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-win|x64.ActiveCfg = Release-win|Any CPU
- {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release-win|x64.Build.0 = Release-win|Any CPU
+ {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Debug|x64.Build.0 = Debug|Any CPU
+ {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release|x64.ActiveCfg = Release|Any CPU
+ {3ED687A7-3D13-472C-CFC6-DD37A973F82D}.Release|x64.Build.0 = Release|Any CPU
{A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug|x64.ActiveCfg = Debug|Any CPU
{A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug|x64.Build.0 = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Debug-win|x64.Build.0 = Debug|Any CPU
{A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release|Any CPU.Build.0 = Release|Any CPU
{A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release|x64.ActiveCfg = Release|Any CPU
{A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release|x64.Build.0 = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-linux|x64.Build.0 = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-osx|x64.Build.0 = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-win|x64.ActiveCfg = Release|Any CPU
- {A75D395E-6097-BBD1-A21E-96B3297BD78B}.Release-win|x64.Build.0 = Release|Any CPU
{77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug|x64.ActiveCfg = Debug|Any CPU
{77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug|x64.Build.0 = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-linux|x64.ActiveCfg = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-linux|x64.Build.0 = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-osx|x64.ActiveCfg = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-osx|x64.Build.0 = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-win|x64.ActiveCfg = Debug|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Debug-win|x64.Build.0 = Debug|Any CPU
{77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release|Any CPU.Build.0 = Release|Any CPU
{77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release|x64.ActiveCfg = Release|Any CPU
{77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release|x64.Build.0 = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-linux|Any CPU.ActiveCfg = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-linux|Any CPU.Build.0 = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-linux|x64.ActiveCfg = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-linux|x64.Build.0 = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-osx|Any CPU.ActiveCfg = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-osx|Any CPU.Build.0 = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-osx|x64.ActiveCfg = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-osx|x64.Build.0 = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-win|Any CPU.ActiveCfg = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-win|Any CPU.Build.0 = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-win|x64.ActiveCfg = Release|Any CPU
- {77EB2AA9-02E6-4356-9A86-956A946CBBBF}.Release-win|x64.Build.0 = Release|Any CPU
+ {2112107B-0BA9-4367-BA40-3DC687C5F456}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2112107B-0BA9-4367-BA40-3DC687C5F456}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2112107B-0BA9-4367-BA40-3DC687C5F456}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2112107B-0BA9-4367-BA40-3DC687C5F456}.Debug|x64.Build.0 = Debug|Any CPU
+ {2112107B-0BA9-4367-BA40-3DC687C5F456}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2112107B-0BA9-4367-BA40-3DC687C5F456}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2112107B-0BA9-4367-BA40-3DC687C5F456}.Release|x64.ActiveCfg = Release|Any CPU
+ {2112107B-0BA9-4367-BA40-3DC687C5F456}.Release|x64.Build.0 = Release|Any CPU
+ {48004B40-5161-4DA3-81E7-0C1755A5558F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {48004B40-5161-4DA3-81E7-0C1755A5558F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {48004B40-5161-4DA3-81E7-0C1755A5558F}.Debug|x64.ActiveCfg = Debug|x64
+ {48004B40-5161-4DA3-81E7-0C1755A5558F}.Debug|x64.Build.0 = Debug|x64
+ {48004B40-5161-4DA3-81E7-0C1755A5558F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {48004B40-5161-4DA3-81E7-0C1755A5558F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {48004B40-5161-4DA3-81E7-0C1755A5558F}.Release|x64.ActiveCfg = Release|x64
+ {48004B40-5161-4DA3-81E7-0C1755A5558F}.Release|x64.Build.0 = Release|x64
{C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug|x64.ActiveCfg = Debug|x64
{C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug|x64.Build.0 = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-linux|Any CPU.Build.0 = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-linux|x64.ActiveCfg = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-linux|x64.Build.0 = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-osx|Any CPU.Build.0 = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-osx|x64.ActiveCfg = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-osx|x64.Build.0 = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-win|Any CPU.ActiveCfg = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-win|Any CPU.Build.0 = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-win|x64.ActiveCfg = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Debug-win|x64.Build.0 = Debug|x64
{C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release|Any CPU.Build.0 = Release|Any CPU
{C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release|x64.ActiveCfg = Release|x64
{C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release|x64.Build.0 = Release|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-linux|Any CPU.ActiveCfg = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-linux|Any CPU.Build.0 = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-linux|x64.ActiveCfg = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-linux|x64.Build.0 = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-osx|Any CPU.ActiveCfg = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-osx|Any CPU.Build.0 = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-osx|x64.ActiveCfg = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-osx|x64.Build.0 = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-win|Any CPU.ActiveCfg = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-win|Any CPU.Build.0 = Debug|Any CPU
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-win|x64.ActiveCfg = Debug|x64
- {C1B942D4-F5B9-4A2E-9C8A-D5B582065899}.Release-win|x64.Build.0 = Debug|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/Andre/Andre.Core/Andre.Core.csproj b/src/Andre/Andre.Core/Andre.Core.csproj
index c7ff1400f..9acf3a947 100644
--- a/src/Andre/Andre.Core/Andre.Core.csproj
+++ b/src/Andre/Andre.Core/Andre.Core.csproj
@@ -7,13 +7,11 @@
12
-
- DEBUG
+
true
-
- RELEASE
+
true
embedded
diff --git a/src/Andre/Andre.Formats/Andre.Formats.csproj b/src/Andre/Andre.Formats/Andre.Formats.csproj
index f4feab47d..a4d23efe5 100644
--- a/src/Andre/Andre.Formats/Andre.Formats.csproj
+++ b/src/Andre/Andre.Formats/Andre.Formats.csproj
@@ -6,44 +6,37 @@
enable
12
true
- Debug-win;Release-win;Debug-linux;Release-linux;Debug-osx;Release-osx;Debug;Release
-
- DEBUG
+
+ bhd5_decrypt_rust.dll
+ libbhd5_decrypt_rust.dylib
+ bhd5_decrypt_rust.so
-
- RELEASE
+
embedded
-
- $(DefineConstants);WINDOWS
-
-
-
- $(DefineConstants);LINUX
-
-
-
- $(DefineConstants);OSX
+
+ true
-
-
- PreserveNewest
+
+
+ PreserveNewest
+ Never
-
+
native\bhd5-decrypt-rust\target\release\
- $(RustTargetDir)bhd5_decrypt_rust.dll
+ $(RustTargetDir)$(RustDllName)
diff --git a/src/Andre/Andre.Formats/BinderArchive.cs b/src/Andre/Andre.Formats/BinderArchive.cs
index a054e2fda..7c3132417 100644
--- a/src/Andre/Andre.Formats/BinderArchive.cs
+++ b/src/Andre/Andre.Formats/BinderArchive.cs
@@ -206,11 +206,12 @@ public BinderArchive(string bhdPath, string bdtPath, Game game)
AndreLogging.For(this).LogDebug("Decrypting {}", Path.GetFileName(bhdPath));
#endif
byte[] decrypted;
-#if WINDOWS
- decrypted = DecryptNative(accessor.Memory, bhdPath, game);
-#else
- decrypted = DecryptSlow(bhdPath, game);
-#endif
+ try {
+ decrypted = DecryptNative(accessor.Memory, bhdPath, game);
+ }
+ catch {
+ decrypted = DecryptSlow(bhdPath, game);
+ }
bhd = BHD5.Read(decrypted, bhdGame);
BhdWasEncrypted = true;
}
diff --git a/src/Andre/Andre.Formats/Util/NativeRsa.cs b/src/Andre/Andre.Formats/Util/NativeRsa.cs
index 8aca41489..fd156f66a 100644
--- a/src/Andre/Andre.Formats/Util/NativeRsa.cs
+++ b/src/Andre/Andre.Formats/Util/NativeRsa.cs
@@ -14,7 +14,7 @@ namespace Andre.Formats.Util
///
internal partial class NativeRsa
{
- private const string Dll = "bhd5_decrypt_rust.dll";
+ private const string Dll = "bhd5_decrypt_rust";
private enum Bhderr : int
{
diff --git a/src/Andre/Andre.IO/Andre.IO.csproj b/src/Andre/Andre.IO/Andre.IO.csproj
index a3854a13c..b4f8a6ed7 100644
--- a/src/Andre/Andre.IO/Andre.IO.csproj
+++ b/src/Andre/Andre.IO/Andre.IO.csproj
@@ -5,27 +5,6 @@
enable
enable
12
- Debug-win;Release-win;Debug-linux;Release-linux;Debug-osx;Release-osx;Debug;Release
-
-
-
- DEBUG
-
-
-
- RELEASE
-
-
-
- $(DefineConstants);WINDOWS
-
-
-
- $(DefineConstants);LINUX
-
-
-
- $(DefineConstants);OSX
diff --git a/src/Andre/Andre.IO/VFS/ArchiveBinderVirtualFileSystem.cs b/src/Andre/Andre.IO/VFS/ArchiveBinderVirtualFileSystem.cs
index 9d16d63c7..b03456e2b 100644
--- a/src/Andre/Andre.IO/VFS/ArchiveBinderVirtualFileSystem.cs
+++ b/src/Andre/Andre.IO/VFS/ArchiveBinderVirtualFileSystem.cs
@@ -88,16 +88,16 @@ public static BhdDictionary GetDictionaryForGame(Game game)
=> game switch
{
Game.DES => throw new NotImplementedException(),
- Game.DS1 => new(File.ReadAllText(Path.Join("Assets","UXM Dictionaries","DarkSoulsDictionary.txt")), BHD5.Game.DarkSouls1),
- Game.DS1R => new(File.ReadAllText(Path.Join("Assets","UXM Dictionaries","DarkSoulsDictionary.txt")), BHD5.Game.DarkSouls1),
- Game.DS2S => new(File.ReadAllText(Path.Join("Assets","UXM Dictionaries","DarkSouls2Dictionary.txt")), BHD5.Game.DarkSouls2),
- Game.DS3 => new(File.ReadAllText(Path.Join("Assets","UXM Dictionaries","DarkSouls3Dictionary.txt")), BHD5.Game.DarkSouls3),
+ Game.DS1 => new(File.ReadAllText(Path.Join(StudioCore.Common.FileLocations.Assets,"UXM Dictionaries","DarkSoulsDictionary.txt")), BHD5.Game.DarkSouls1),
+ Game.DS1R => new(File.ReadAllText(Path.Join(StudioCore.Common.FileLocations.Assets,"UXM Dictionaries","DarkSoulsDictionary.txt")), BHD5.Game.DarkSouls1),
+ Game.DS2S => new(File.ReadAllText(Path.Join(StudioCore.Common.FileLocations.Assets,"UXM Dictionaries","DarkSouls2Dictionary.txt")), BHD5.Game.DarkSouls2),
+ Game.DS3 => new(File.ReadAllText(Path.Join(StudioCore.Common.FileLocations.Assets,"UXM Dictionaries","DarkSouls3Dictionary.txt")), BHD5.Game.DarkSouls3),
Game.BB => throw new NotImplementedException(),
- Game.SDT => new(File.ReadAllText(Path.Join("Assets","UXM Dictionaries","SekiroDictionary.txt")), BHD5.Game.DarkSouls3),
- Game.ER => new(File.ReadAllText(Path.Join("Assets","UXM Dictionaries","EldenRingDictionary.txt")), BHD5.Game.EldenRing),
- Game.NR => new(File.ReadAllText(Path.Join("Assets","UXM Dictionaries","EldenRingNightreignDictionary.txt")), BHD5.Game.EldenRing),
- Game.AC6 => new(File.ReadAllText(Path.Join("Assets","UXM Dictionaries","ArmoredCore6Dictionary.txt")), BHD5.Game.EldenRing),
- Game.DS2 => new(File.ReadAllText(Path.Join("Assets","UXM Dictionaries","ScholarDictionary.txt")), BHD5.Game.DarkSouls2),
+ Game.SDT => new(File.ReadAllText(Path.Join(StudioCore.Common.FileLocations.Assets,"UXM Dictionaries","SekiroDictionary.txt")), BHD5.Game.DarkSouls3),
+ Game.ER => new(File.ReadAllText(Path.Join(StudioCore.Common.FileLocations.Assets,"UXM Dictionaries","EldenRingDictionary.txt")), BHD5.Game.EldenRing),
+ Game.NR => new(File.ReadAllText(Path.Join(StudioCore.Common.FileLocations.Assets,"UXM Dictionaries","EldenRingNightreignDictionary.txt")), BHD5.Game.EldenRing),
+ Game.AC6 => new(File.ReadAllText(Path.Join(StudioCore.Common.FileLocations.Assets,"UXM Dictionaries","ArmoredCore6Dictionary.txt")), BHD5.Game.EldenRing),
+ Game.DS2 => new(File.ReadAllText(Path.Join(StudioCore.Common.FileLocations.Assets,"UXM Dictionaries","ScholarDictionary.txt")), BHD5.Game.DarkSouls2),
_ => throw new ArgumentOutOfRangeException(nameof(game), game, null)
};
diff --git a/src/Andre/SoapstoneLib/SoapstoneLib/Andre.SoapstoneLib.csproj b/src/Andre/SoapstoneLib/SoapstoneLib/Andre.SoapstoneLib.csproj
index a4c86b046..3a33c855b 100644
--- a/src/Andre/SoapstoneLib/SoapstoneLib/Andre.SoapstoneLib.csproj
+++ b/src/Andre/SoapstoneLib/SoapstoneLib/Andre.SoapstoneLib.csproj
@@ -5,12 +5,7 @@
12
-
- DEBUG
-
-
-
- RELEASE
+
embedded
diff --git a/src/Andre/SoulsFormats/SoulsFormats/Andre.SoulsFormats.csproj b/src/Andre/SoulsFormats/SoulsFormats/Andre.SoulsFormats.csproj
index b562f93af..e370f64de 100644
--- a/src/Andre/SoulsFormats/SoulsFormats/Andre.SoulsFormats.csproj
+++ b/src/Andre/SoulsFormats/SoulsFormats/Andre.SoulsFormats.csproj
@@ -8,31 +8,12 @@
true
net9.0
12
- Debug;Release;Debug-win;Release-win;Debug-linux;Release-linux;Debug-osx;Release-osx
-
-
- DEBUG
-
-
-
- RELEASE
+
embedded
-
- $(DefineConstants);WINDOWS
-
-
-
- $(DefineConstants);LINUX
-
-
-
- $(DefineConstants);OSX
-
-
diff --git a/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle.cs b/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle.cs
index eb41608f4..b9c92d786 100644
--- a/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle.cs
+++ b/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle.cs
@@ -22,11 +22,14 @@ private static bool CanUseOodle6()
return true;
}
#if WINDOWS
- if (Path.Exists($@"{Directory.GetCurrentDirectory()}\oo2core_6_win64.dll"))
-#elif OSX
- if (Path.Exists($@"{Directory.GetCurrentDirectory()}/liboo2coremac64.2.6.dylib"))
+ if (Path.Exists($@"{AppContext.BaseDirectory}\oo2core_6_win64.dll"))
+#elif MACOS
+ if (Path.Exists($@"{AppContext.BaseDirectory}/liboo2coremac64.2.6.dylib") &&
+ new FileInfo($@"{AppContext.BaseDirectory}/liboo2coremac64.2.6.dylib").Length > 50 * 1024)
#elif LINUX
- if (Path.Exists($@"{Directory.GetCurrentDirectory()}/liboo2corelinux64.so.6"))
+ if (Path.Exists($@"{AppContext.BaseDirectory}/liboo2corelinux64.so.6"))
+#else
+ return false;
#endif
{
Oodle6Exists = true;
@@ -42,11 +45,14 @@ private static bool CanUseOodle8()
return true;
}
#if WINDOWS
- if (Path.Exists($@"{Directory.GetCurrentDirectory()}\oo2core_8_win64.dll"))
-#elif OSX
- if (Path.Exists($@"{Directory.GetCurrentDirectory()}/liboo2coremac64.2.8.dylib"))
+ if (Path.Exists($@"{AppContext.BaseDirectory}\oo2core_8_win64.dll"))
+#elif MACOS
+ if (Path.Exists($@"{AppContext.BaseDirectory}/liboo2coremac64.2.8.dylib") &&
+ new FileInfo($@"{AppContext.BaseDirectory}/liboo2coremac64.2.8.dylib").Length > 50 * 1024)
#elif LINUX
- if (Path.Exists($@"{Directory.GetCurrentDirectory()}/liboo2corelinux64.so.8"))
+ if (Path.Exists($@"{AppContext.BaseDirectory}/liboo2corelinux64.so.8"))
+#else
+ return false;
#endif
{
Oodle8Exists = true;
@@ -62,11 +68,14 @@ private static bool CanUseOodle9()
return true;
}
#if WINDOWS
- if (Path.Exists($@"{Directory.GetCurrentDirectory()}\oo2core_9_win64.dll"))
-#elif OSX
- if (Path.Exists($@"{Directory.GetCurrentDirectory()}/liboo2coremac64.2.9.dylib"))
+ if (Path.Exists($@"{AppContext.BaseDirectory}\oo2core_9_win64.dll"))
+#elif MACOS
+ if (Path.Exists($@"{AppContext.BaseDirectory}/liboo2coremac64.2.9.dylib") &&
+ new FileInfo($@"{AppContext.BaseDirectory}/liboo2coremac64.2.9.dylib").Length > 50*1024)
#elif LINUX
- if (Path.Exists($@"{Directory.GetCurrentDirectory()}/liboo2corelinux64.so.9"))
+ if (Path.Exists($@"{AppContext.BaseDirectory}/liboo2corelinux64.so.9"))
+#else
+ return false;
#endif
{
Oodle9Exists = true;
@@ -121,12 +130,15 @@ public static IOodleCompressor GetOodleCompressor(int compressionLevel = -1)
#if WINDOWS
throw new NoOodleFoundException($"Could not find a supported version of oo2core. "
+ $"Please copy oo2core_6_win64.dll, oo2core_8_win64.dll or oo2core_9_win64.dll into the Smithbox program directory");
-#elif OSX
+#elif MACOS
throw new NoOodleFoundException($"Could not find a supported version of oo2core. "
- + $"Please copy liboo2coremac64.2.6.dylib, liboo2coremac64.2.8.dylib or liboo2coremac64.2.9.dylib into the Smithbox program directory");
+ + $"Please copy liboo2coremac64.2.6.dylib, liboo2coremac64.2.8.dylib or liboo2coremac64.2.9.dylib into the Smithbox MonoBundle directory "
+ + $"and set LC_ID_DYLIB to @executable_path/../../Contents/MonoBundle/liboo2coremac64.2.9.dylib");
#elif LINUX
throw new NoOodleFoundException($"Could not find a supported version of oo2core. "
+ $"Please copy liboo2corelinux64.so.6, liboo2corelinux64.so.8 or liboo2corelinux64.so.9 into the Smithbox program directory");
+#else
+ return false;
#endif
}
diff --git a/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle26.cs b/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle26.cs
index e57d89ba2..ab7b51965 100644
--- a/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle26.cs
+++ b/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle26.cs
@@ -58,7 +58,7 @@ public unsafe Memory Decompress(Span source, long uncompressedSize)
/// = 0
#if WINDOWS
[DllImport("oo2core_6_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.6.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.6", CallingConvention = CallingConvention.StdCall)]
@@ -85,7 +85,7 @@ private static unsafe long OodleLZ_Compress(Oodle.OodleLZ_Compressor compressor,
/// = OodleLZ_CompressionLevel_Normal
#if WINDOWS
[DllImport("oo2core_6_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.6.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.6", CallingConvention = CallingConvention.StdCall)]
@@ -114,7 +114,7 @@ public static IntPtr OodleLZ_CompressOptions_GetDefault()
/// = OodleLZ_Decode_Unthreaded
#if WINDOWS
[DllImport("oo2core_6_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.6.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.6", CallingConvention = CallingConvention.StdCall)]
@@ -144,7 +144,7 @@ private static unsafe long OodleLZ_Decompress(byte* compBuf, long compBufSize, b
#if WINDOWS
[DllImport("oo2core_6_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.6.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.6", CallingConvention = CallingConvention.StdCall)]
@@ -155,7 +155,7 @@ private static extern long OodleLZ_GetCompressedBufferSizeNeeded(
#if WINDOWS
[DllImport("oo2core_6_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.6.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.6", CallingConvention = CallingConvention.StdCall)]
diff --git a/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle28.cs b/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle28.cs
index 5add75e0b..cc529a4ce 100644
--- a/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle28.cs
+++ b/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle28.cs
@@ -58,7 +58,7 @@ public unsafe Memory Decompress(Span source, long uncompressedSize)
/// = 0
#if WINDOWS
[DllImport("oo2core_8_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.8.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.8", CallingConvention = CallingConvention.StdCall)]
@@ -85,7 +85,7 @@ private static unsafe long OodleLZ_Compress(Oodle.OodleLZ_Compressor compressor,
/// = OodleLZ_CompressionLevel_Normal
#if WINDOWS
[DllImport("oo2core_8_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.8.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.8", CallingConvention = CallingConvention.StdCall)]
@@ -108,7 +108,7 @@ private static unsafe long OodleLZ_Compress(Oodle.OodleLZ_Compressor compressor,
/// = OodleLZ_Decode_Unthreaded
#if WINDOWS
[DllImport("oo2core_8_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.8.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.8", CallingConvention = CallingConvention.StdCall)]
@@ -138,7 +138,7 @@ private static unsafe long OodleLZ_Decompress(byte* compBuf, long compBufSize, b
#if WINDOWS
[DllImport("oo2core_8_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.8.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.8", CallingConvention = CallingConvention.StdCall)]
@@ -150,7 +150,7 @@ private static extern long OodleLZ_GetCompressedBufferSizeNeeded(
#if WINDOWS
[DllImport("oo2core_8_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.8.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.8", CallingConvention = CallingConvention.StdCall)]
diff --git a/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle29.cs b/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle29.cs
index 23af61c76..0e7e759cd 100644
--- a/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle29.cs
+++ b/src/Andre/SoulsFormats/SoulsFormats/Util/Oodle29.cs
@@ -58,7 +58,7 @@ public unsafe Memory Decompress(Span source, long uncompressedSize)
/// = 0
#if WINDOWS
[DllImport("oo2core_9_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.9.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.9", CallingConvention = CallingConvention.StdCall)]
@@ -85,7 +85,7 @@ private static unsafe long OodleLZ_Compress(Oodle.OodleLZ_Compressor compressor,
/// = OodleLZ_CompressionLevel_Normal
#if WINDOWS
[DllImport("oo2core_9_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.9.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.9", CallingConvention = CallingConvention.StdCall)]
@@ -108,7 +108,7 @@ private static unsafe long OodleLZ_Compress(Oodle.OodleLZ_Compressor compressor,
/// = OodleLZ_Decode_Unthreaded
#if WINDOWS
[DllImport("oo2core_9_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.9.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.9", CallingConvention = CallingConvention.StdCall)]
@@ -138,7 +138,7 @@ private static unsafe long OodleLZ_Decompress(byte* compBuf, long compBufSize, b
#if WINDOWS
[DllImport("oo2core_9_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.9.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.9", CallingConvention = CallingConvention.StdCall)]
@@ -150,7 +150,7 @@ private static extern long OodleLZ_GetCompressedBufferSizeNeeded(
#if WINDOWS
[DllImport("oo2core_9_win64.dll", CallingConvention = CallingConvention.StdCall)]
-#elif OSX
+#elif MACOS
[DllImport("liboo2coremac64.2.9.dylib", CallingConvention = CallingConvention.StdCall)]
#elif LINUX
[DllImport("liboo2corelinux64.so.9", CallingConvention = CallingConvention.StdCall)]
diff --git a/src/Common/FileExplorer.cs b/src/Common/FileExplorer.cs
new file mode 100644
index 000000000..64e278fe7
--- /dev/null
+++ b/src/Common/FileExplorer.cs
@@ -0,0 +1,18 @@
+using System.Diagnostics;
+
+namespace StudioCore.Common
+{
+ internal static class FileExplorer
+ {
+ public static Process Start(string path)
+ {
+#if WINDOWS
+ return Process.Start("explorer.exe", path);
+#elif MACOS
+ return Process.Start("/usr/bin/open", path);
+#elif LINUX
+ return Process.Start("/usr/bin/xdg-open", path);
+#endif
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Common/FileLocations.cs b/src/Common/FileLocations.cs
new file mode 100644
index 000000000..eb18b1c9d
--- /dev/null
+++ b/src/Common/FileLocations.cs
@@ -0,0 +1,28 @@
+using System;
+using System.IO;
+
+namespace StudioCore.Common
+{
+ internal static class FileLocations
+ {
+#if MACOS
+ // NSBundle.MainBundle.ResourcePath
+ public static readonly string Resources = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "../Resources"));
+ public static readonly string Libraries = AppContext.BaseDirectory;
+ public static readonly string Assets = Path.Combine(Resources, "Assets");
+ public static readonly string Res = Path.Combine(Resources, "Res");
+ public static readonly string CurImgui = Path.GetFullPath(Path.Combine(
+ Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Smithbox"));
+ public static readonly string StoreImgui = Path.GetFullPath(Path.Combine(
+ Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "../Preferences/Smithbox"));
+#else
+ public static readonly string Resources = AppContext.BaseDirectory;
+ public static readonly string Libraries = AppContext.BaseDirectory;
+ public static readonly string Assets = Path.Combine(Resources, "Assets");
+ public static readonly string Res = Path.Combine(Resources, "Res");
+ public static readonly string CurImgui = Resources;
+ public static readonly string StoreImgui = Path.GetFullPath(Path.Combine(
+ Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Smithbox"));
+#endif
+ }
+}
\ No newline at end of file
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
new file mode 100644
index 000000000..378e87a56
--- /dev/null
+++ b/src/Directory.Build.props
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Havok/ColBakeTest/Havok.ColBakeTest.csproj b/src/Havok/ColBakeTest/Havok.ColBakeTest.csproj
index 33606562c..c6a4865c3 100644
--- a/src/Havok/ColBakeTest/Havok.ColBakeTest.csproj
+++ b/src/Havok/ColBakeTest/Havok.ColBakeTest.csproj
@@ -4,6 +4,9 @@
Exe
net9.0
12
+ $(DefineConstants);WINDOWS
+ $(DefineConstants);MACOS
+ $(DefineConstants);LINUX
@@ -25,12 +28,4 @@
-
- DEBUG
-
-
-
- RELEASE
-
-
diff --git a/src/Havok/HKLib.Reflection/Havok.HKLib.Reflection.csproj b/src/Havok/HKLib.Reflection/Havok.HKLib.Reflection.csproj
index 823c6d669..756030fc4 100644
--- a/src/Havok/HKLib.Reflection/Havok.HKLib.Reflection.csproj
+++ b/src/Havok/HKLib.Reflection/Havok.HKLib.Reflection.csproj
@@ -8,21 +8,18 @@
AnyCPU;x64
+
+ true
+
+
PreserveNewest
+ Resource
-
-
- DEBUG
-
-
-
- RELEASE
-
diff --git a/src/Havok/HKLib.Reflection/hk2018/HavokTypeRegistry.cs b/src/Havok/HKLib.Reflection/hk2018/HavokTypeRegistry.cs
index 5c186e0b7..3672b787f 100644
--- a/src/Havok/HKLib.Reflection/hk2018/HavokTypeRegistry.cs
+++ b/src/Havok/HKLib.Reflection/hk2018/HavokTypeRegistry.cs
@@ -23,8 +23,7 @@ public class HavokTypeRegistry
private static HavokTypeRegistry LoadDefault()
{
- string basePath = AppDomain.CurrentDomain.BaseDirectory;
- string typeRegPath = Path.Join(basePath, "Res", "HavokTypeRegistry20180100.xml");
+ string typeRegPath = Path.Join(StudioCore.Common.FileLocations.Res, "HavokTypeRegistry20180100.xml");
return Load(typeRegPath);
}
diff --git a/src/Havok/HKLib.Serialization/Havok.HKLib.Serialization.csproj b/src/Havok/HKLib.Serialization/Havok.HKLib.Serialization.csproj
index b36245e05..0624f0aef 100644
--- a/src/Havok/HKLib.Serialization/Havok.HKLib.Serialization.csproj
+++ b/src/Havok/HKLib.Serialization/Havok.HKLib.Serialization.csproj
@@ -13,12 +13,4 @@
-
- DEBUG
-
-
-
- RELEASE
-
-
diff --git a/src/Havok/HKLib/Havok.HKLib.csproj b/src/Havok/HKLib/Havok.HKLib.csproj
index 0cda723d8..8b340dfe2 100644
--- a/src/Havok/HKLib/Havok.HKLib.csproj
+++ b/src/Havok/HKLib/Havok.HKLib.csproj
@@ -23,12 +23,5 @@
-
- DEBUG
-
-
-
- RELEASE
-
diff --git a/src/Havok/HKX.ClassGeneration/Havok.HKX.ClassGeneration.csproj b/src/Havok/HKX.ClassGeneration/Havok.HKX.ClassGeneration.csproj
index 9835838a0..ac559e6b4 100644
--- a/src/Havok/HKX.ClassGeneration/Havok.HKX.ClassGeneration.csproj
+++ b/src/Havok/HKX.ClassGeneration/Havok.HKX.ClassGeneration.csproj
@@ -4,6 +4,9 @@
Exe
net9.0
12
+ $(DefineConstants);WINDOWS
+ $(DefineConstants);MACOS
+ $(DefineConstants);LINUX
@@ -11,12 +14,4 @@
-
- DEBUG
-
-
-
- RELEASE
-
-
diff --git a/src/Havok/HKX2.Serialization/Havok.HKX2.Serialization.csproj b/src/Havok/HKX2.Serialization/Havok.HKX2.Serialization.csproj
index 2b890cdd1..aa480100b 100644
--- a/src/Havok/HKX2.Serialization/Havok.HKX2.Serialization.csproj
+++ b/src/Havok/HKX2.Serialization/Havok.HKX2.Serialization.csproj
@@ -4,18 +4,13 @@
Exe
net9.0
12
+ $(DefineConstants);WINDOWS
+ $(DefineConstants);MACOS
+ $(DefineConstants);LINUX
-
- DEBUG
-
-
-
- RELEASE
-
-
diff --git a/src/Havok/HKX2/Havok.HKX2.csproj b/src/Havok/HKX2/Havok.HKX2.csproj
index 312d16690..d2f76b5fe 100644
--- a/src/Havok/HKX2/Havok.HKX2.csproj
+++ b/src/Havok/HKX2/Havok.HKX2.csproj
@@ -5,13 +5,11 @@
12
-
- DEBUG
+
true
-
- RELEASE
+
true
embedded
diff --git a/src/Smithbox.Data/Smithbox.Data.csproj b/src/Smithbox.Data/Smithbox.Data.csproj
index d579120d5..86143d37b 100644
--- a/src/Smithbox.Data/Smithbox.Data.csproj
+++ b/src/Smithbox.Data/Smithbox.Data.csproj
@@ -6,23 +6,30 @@
enable
+
+ true
+
+
-
-
+
+
Always
+ Resource
Always
+ Resource
PreserveNewest
PreserveNewest
+ Assembly
PreserveNewest
@@ -32,12 +39,4 @@
-
- DEBUG
-
-
-
- RELEASE
-
-
diff --git a/src/Smithbox.Program/Application/CFG.cs b/src/Smithbox.Program/Application/CFG.cs
index 2af20f2cc..781ec05e1 100644
--- a/src/Smithbox.Program/Application/CFG.cs
+++ b/src/Smithbox.Program/Application/CFG.cs
@@ -94,7 +94,11 @@ public class CFG
///------------------------------------------------------------
/// Interface
///------------------------------------------------------------
+#if MACOS
+ public float Interface_UI_Scale = 0.5f;
+#else
public float Interface_UI_Scale = 1.0f;
+#endif
public bool Interface_Scale_by_DPI = true;
public float Interface_Font_Size = 14.0f;
public bool Interface_Allow_Window_Movement = true;
diff --git a/src/Smithbox.Program/Developer/Tools/FileDictionaryGenerator.cs b/src/Smithbox.Program/Developer/Tools/FileDictionaryGenerator.cs
index 61d5e3b81..ac956b43b 100644
--- a/src/Smithbox.Program/Developer/Tools/FileDictionaryGenerator.cs
+++ b/src/Smithbox.Program/Developer/Tools/FileDictionaryGenerator.cs
@@ -62,7 +62,11 @@ public static void Display(ProjectEntry project)
///
public static void GenerateFileDictionaryFromUXM(string filepath)
{
+#if MACOS
+ var writePath = $"{Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)}/{Path.GetFileName(filepath)}.json";
+#else
var writePath = $"{AppContext.BaseDirectory}/{Path.GetFileName(filepath)}.json";
+#endif
var curDictionary = new FileDictionary();
curDictionary.Entries = new();
diff --git a/src/Smithbox.Program/Editors/File Browser/FileBrowserScreen.cs b/src/Smithbox.Program/Editors/File Browser/FileBrowserScreen.cs
index 9c74914ab..25bdf0203 100644
--- a/src/Smithbox.Program/Editors/File Browser/FileBrowserScreen.cs
+++ b/src/Smithbox.Program/Editors/File Browser/FileBrowserScreen.cs
@@ -74,12 +74,12 @@ public void FileMenu()
{
if (ImGui.MenuItem($"View Game Directory"))
{
- Process.Start("explorer.exe", Project.Descriptor.DataPath);
+ StudioCore.Common.FileExplorer.Start(Project.Descriptor.DataPath);
}
if (ImGui.MenuItem($"View Project Directory"))
{
- Process.Start("explorer.exe", Project.Descriptor.ProjectPath);
+ StudioCore.Common.FileExplorer.Start(Project.Descriptor.ProjectPath);
}
ImGui.EndMenu();
diff --git a/src/Smithbox.Program/Editors/File Browser/GUI/FileToolView.cs b/src/Smithbox.Program/Editors/File Browser/GUI/FileToolView.cs
index ab782eaa5..1a1cd57cb 100644
--- a/src/Smithbox.Program/Editors/File Browser/GUI/FileToolView.cs
+++ b/src/Smithbox.Program/Editors/File Browser/GUI/FileToolView.cs
@@ -398,7 +398,7 @@ public async Task DeleteUnpackedDataAsync()
public void UpdateBaseFileDictionary()
{
// Get the unmerged base file dictionary
- var folder = Path.Join(AppContext.BaseDirectory, "Assets", "File Dictionaries");
+ var folder = Path.Join(StudioCore.Common.FileLocations.Assets, "File Dictionaries");
var file = "";
switch (Project.Descriptor.ProjectType)
diff --git a/src/Smithbox.Program/Editors/Gparam Editor/Data/GparamData.cs b/src/Smithbox.Program/Editors/Gparam Editor/Data/GparamData.cs
index e7d71f361..a20c21e13 100644
--- a/src/Smithbox.Program/Editors/Gparam Editor/Data/GparamData.cs
+++ b/src/Smithbox.Program/Editors/Gparam Editor/Data/GparamData.cs
@@ -87,7 +87,7 @@ public async Task SetupGparamInfo()
GparamEnums = new();
// Information
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "GPARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "GPARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
var sourceFile = Path.Combine(sourceFolder, "Core.json");
var projectFolder = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", "Assets", "GPARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
@@ -132,7 +132,7 @@ public async Task SetupGparamEnums()
GparamEnums = new();
// Enums
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "GPARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "GPARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
var sourceFile = Path.Combine(sourceFolder, "Enums.json");
var projectFolder = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", "Assets", "GPARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
diff --git a/src/Smithbox.Program/Editors/Map Editor/Data/MapData.cs b/src/Smithbox.Program/Editors/Map Editor/Data/MapData.cs
index 12f9614ee..83595e1f5 100644
--- a/src/Smithbox.Program/Editors/Map Editor/Data/MapData.cs
+++ b/src/Smithbox.Program/Editors/Map Editor/Data/MapData.cs
@@ -147,8 +147,8 @@ public async Task SetupMapObjectNames()
await Task.Yield();
- var srcDir = Path.Combine(AppContext.BaseDirectory, "Assets", "MSB", ProjectUtils.GetGameDirectory(Project), "Community Map Object Names");
-
+ var srcDir = Path.Combine(StudioCore.Common.FileLocations.Assets, "MSB", ProjectUtils.GetGameDirectory(Project), "Community Map Object Names");
+
var projDir = Path.Combine(Project.Descriptor.ProjectPath, ".smithbox", "Project", "Community Map Object Names");
if (Directory.Exists(projDir))
@@ -301,7 +301,7 @@ public async Task SetupMsbInfo()
// Information
var gameDir = ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType);
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "MSB", gameDir);
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "MSB", gameDir);
var sourceFile = Path.Combine(sourceFolder, "Core.json");
@@ -419,7 +419,7 @@ public async Task SetupMapSpawnStates()
// Information
var gameDir = ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType);
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "MSB", gameDir);
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "MSB", gameDir);
var sourceFile = Path.Combine(sourceFolder, "SpawnStates.json");
diff --git a/src/Smithbox.Program/Editors/Map Editor/Framework/META/MsbMeta.cs b/src/Smithbox.Program/Editors/Map Editor/Framework/META/MsbMeta.cs
index a707119ff..a945c860b 100644
--- a/src/Smithbox.Program/Editors/Map Editor/Framework/META/MsbMeta.cs
+++ b/src/Smithbox.Program/Editors/Map Editor/Framework/META/MsbMeta.cs
@@ -23,7 +23,7 @@ public async Task Setup()
_MsbMetas = new();
- var metaPath = Path.Join(AppContext.BaseDirectory, "Assets", "MSB", ProjectUtils.GetGameDirectory(Project), "Meta");
+ var metaPath = Path.Join(StudioCore.Common.FileLocations.Assets, "MSB", ProjectUtils.GetGameDirectory(Project), "Meta");
if (Path.Exists(metaPath))
{
diff --git a/src/Smithbox.Program/Editors/Map Editor/Tools/Actions/EntityRenameAction.cs b/src/Smithbox.Program/Editors/Map Editor/Tools/Actions/EntityRenameAction.cs
index 4e9621b4e..609121154 100644
--- a/src/Smithbox.Program/Editors/Map Editor/Tools/Actions/EntityRenameAction.cs
+++ b/src/Smithbox.Program/Editors/Map Editor/Tools/Actions/EntityRenameAction.cs
@@ -216,7 +216,7 @@ private List GetNameListInfo(string mapId, string type)
{
var list = new List();
- var dir = Path.Join(AppContext.BaseDirectory, "Assets", "MSB", ProjectUtils.GetGameDirectory(View.Project), "namelist.csv");
+ var dir = Path.Join(StudioCore.Common.FileLocations.Assets, "MSB", ProjectUtils.GetGameDirectory(View.Project), "namelist.csv");
if (File.Exists(dir))
{
diff --git a/src/Smithbox.Program/Editors/Map Editor/Tools/Insight/MapModelInsightView.cs b/src/Smithbox.Program/Editors/Map Editor/Tools/Insight/MapModelInsightView.cs
index fbe74ee6f..834121edc 100644
--- a/src/Smithbox.Program/Editors/Map Editor/Tools/Insight/MapModelInsightView.cs
+++ b/src/Smithbox.Program/Editors/Map Editor/Tools/Insight/MapModelInsightView.cs
@@ -86,7 +86,7 @@ public void Display()
if (ImGui.Button($"{Icons.EnvelopeOpen}##openOutputDir", DPI.IconButtonSize))
{
- Process.Start("explorer.exe", outputDirectory);
+ StudioCore.Common.FileExplorer.Start(outputDirectory);
}
ImGui.SameLine();
diff --git a/src/Smithbox.Program/Editors/Material Editor/Data/MaterialData.cs b/src/Smithbox.Program/Editors/Material Editor/Data/MaterialData.cs
index 9d8c97152..a974662cb 100644
--- a/src/Smithbox.Program/Editors/Material Editor/Data/MaterialData.cs
+++ b/src/Smithbox.Program/Editors/Material Editor/Data/MaterialData.cs
@@ -83,7 +83,7 @@ public async Task SetupMaterialDisplayConfiguration()
MaterialDisplayConfiguration = new();
// Information
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "MATERIAL", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "MATERIAL", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
var sourceFile = Path.Combine(sourceFolder, "Display Configuration.json");
var projectFolder = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", "Assets", "MATERIAL", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
diff --git a/src/Smithbox.Program/Editors/Model Editor/Data/ModelBank.cs b/src/Smithbox.Program/Editors/Model Editor/Data/ModelBank.cs
index 1d753e6b0..f8239b80f 100644
--- a/src/Smithbox.Program/Editors/Model Editor/Data/ModelBank.cs
+++ b/src/Smithbox.Program/Editors/Model Editor/Data/ModelBank.cs
@@ -193,7 +193,7 @@ public void PopulateModelList()
var binder = new BND3Reader(fileData.Value);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -219,7 +219,7 @@ public void PopulateModelList()
var binder = new BND4Reader(fileData.Value);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -272,7 +272,7 @@ or ProjectType.DS1
var binder = new BXF3Reader(bhd, bdt);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -287,7 +287,7 @@ or ProjectType.DS1
var binder = new BXF4Reader(bhd, bdt);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -343,7 +343,7 @@ public void Load()
var binder = new BND3Reader(fileData.Value);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -372,7 +372,7 @@ public void Load()
var binder = new BND4Reader(fileData.Value);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -428,7 +428,7 @@ or ProjectType.DS1
var binder = new BXF3Reader(bhd, bdt);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -446,7 +446,7 @@ or ProjectType.DS1
var binder = new BXF4Reader(bhd, bdt);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -570,7 +570,7 @@ public void Save()
var binder = BND3.Read(binderData.Value);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -603,7 +603,7 @@ public void Save()
var binder = BND4.Read(binderData.Value);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -666,7 +666,7 @@ or ProjectType.DS1
var binder = BXF3.Read(bhd, bdt);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
@@ -693,7 +693,7 @@ or ProjectType.DS1
var binder = BXF4.Read(bhd, bdt);
foreach (var file in binder.Files)
{
- var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name);
+ var filename = System.IO.Path.GetFileNameWithoutExtension(file.Name.Replace('\\',System.IO.Path.DirectorySeparatorChar));
var filepath = file.Name.ToLower();
if (filepath.Contains(".flver") || filepath.Contains(".flv"))
diff --git a/src/Smithbox.Program/Editors/Model Editor/Data/ModelData.cs b/src/Smithbox.Program/Editors/Model Editor/Data/ModelData.cs
index edae41853..10bd13c4a 100644
--- a/src/Smithbox.Program/Editors/Model Editor/Data/ModelData.cs
+++ b/src/Smithbox.Program/Editors/Model Editor/Data/ModelData.cs
@@ -68,7 +68,7 @@ public async Task SetupFlverInfo()
FlverEnums = new();
// Information
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "FLVER");
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "FLVER");
var sourceFile = Path.Combine(sourceFolder, "Core.json");
var projectFolder = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", "Assets", "FLVER");
diff --git a/src/Smithbox.Program/Editors/Model Editor/Tools/Insight/ModelInsightView.cs b/src/Smithbox.Program/Editors/Model Editor/Tools/Insight/ModelInsightView.cs
index 04e082b98..15cf0dc85 100644
--- a/src/Smithbox.Program/Editors/Model Editor/Tools/Insight/ModelInsightView.cs
+++ b/src/Smithbox.Program/Editors/Model Editor/Tools/Insight/ModelInsightView.cs
@@ -72,7 +72,7 @@ public void Display()
if (ImGui.Button($"{Icons.EnvelopeOpen}##openOutputDir", DPI.IconButtonSize))
{
- Process.Start("explorer.exe", outputDirectory);
+ StudioCore.Common.FileExplorer.Start(outputDirectory);
}
ImGui.SameLine();
diff --git a/src/Smithbox.Program/Editors/Param Editor/Data/ParamData.cs b/src/Smithbox.Program/Editors/Param Editor/Data/ParamData.cs
index 0a630e214..3b2aeeed1 100644
--- a/src/Smithbox.Program/Editors/Param Editor/Data/ParamData.cs
+++ b/src/Smithbox.Program/Editors/Param Editor/Data/ParamData.cs
@@ -315,7 +315,7 @@ public async Task SetupParamDefs()
}
// Param Type Info
- var paramTypeInfoPath = Path.Join(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project), "Param Type Info.json");
+ var paramTypeInfoPath = Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project), "Param Type Info.json");
if (File.Exists(paramTypeInfoPath))
{
@@ -368,7 +368,7 @@ public async Task SetupParamMeta()
{
await Task.Yield();
- var rootMetaDir = Path.Join(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project), "Meta");
+ var rootMetaDir = Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project), "Meta");
var projectMetaDir = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project), "Meta");
@@ -429,7 +429,7 @@ public async Task SetupGraphLegends()
{
await Task.Yield();
- var folder = @$"{AppContext.BaseDirectory}/Assets/PARAM/{ProjectUtils.GetGameDirectory(Project)}";
+ var folder = @$"{StudioCore.Common.FileLocations.Assets}/PARAM/{ProjectUtils.GetGameDirectory(Project)}";
var file = Path.Combine(folder, "Graph Legends.json");
if(CFG.Current.Project_Enable_Project_Metadata)
@@ -472,7 +472,7 @@ public async Task SetupIconConfigurations()
{
await Task.Yield();
- var folder = @$"{AppContext.BaseDirectory}/Assets/PARAM/{ProjectUtils.GetGameDirectory(Project)}";
+ var folder = @$"{StudioCore.Common.FileLocations.Assets}/PARAM/{ProjectUtils.GetGameDirectory(Project)}";
var file = Path.Combine(folder, "Icon Configurations.json");
if (CFG.Current.Project_Enable_Project_Metadata)
@@ -515,7 +515,7 @@ public async Task SetupTableGroupNames()
{
await Task.Yield();
- var srcDir = Path.Combine(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project), "Community Table Names");
+ var srcDir = Path.Combine(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project), "Community Table Names");
if (!Directory.Exists(srcDir))
{
@@ -627,7 +627,7 @@ public async Task SetupTableParamList()
{
await Task.Yield();
- var srcFile = Path.Combine(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project), "Table Params.json");
+ var srcFile = Path.Combine(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project), "Table Params.json");
var projFile = Path.Combine(Project.Descriptor.ProjectPath, ".smithbox", "Project", "Table Params.json");
if (Directory.Exists(projFile))
@@ -666,7 +666,7 @@ public void CreateProjectMetadata()
{
// META
var metaDir = ParamLocator.GetParammetaDir(Project);
- var rootDir = Path.Combine(AppContext.BaseDirectory, metaDir);
+ var rootDir = Path.Combine(StudioCore.Common.FileLocations.Resources, metaDir);
var projectDir = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", metaDir);
if (!Directory.Exists(projectDir))
@@ -693,7 +693,7 @@ public void CreateProjectMetadata()
public void CopyMetadataFile(string name)
{
- var srcFolder = @$"{AppContext.BaseDirectory}/Assets/PARAM/{ProjectUtils.GetGameDirectory(Project)}";
+ var srcFolder = @$"{StudioCore.Common.FileLocations.Assets}/PARAM/{ProjectUtils.GetGameDirectory(Project)}";
var srcFile = Path.Combine(srcFolder, name);
var targetFolder = Path.Combine(Project.Descriptor.ProjectPath, ".smithbox", "Project");
@@ -776,7 +776,7 @@ public async Task SetupParamMemoryOffsets()
ParamMemoryOffsets = new();
// Information
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
var sourceFile = Path.Combine(sourceFolder, "Param Reload Offsets.json");
var targetFile = sourceFile;
@@ -816,7 +816,7 @@ public async Task SetupParamCategories()
ParamCategories = new();
// Information
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
var sourceFile = Path.Combine(sourceFolder, "Param Categories.json");
var projectFolder = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
@@ -860,7 +860,7 @@ public async Task SetupCommutativeParamGroups()
CommutativeParamGroups = new();
// Information
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
var sourceFile = Path.Combine(sourceFolder, "Commutative Params.json");
var projectFolder = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
diff --git a/src/Smithbox.Program/Editors/Param Editor/Framework/ParamFieldDecorators.cs b/src/Smithbox.Program/Editors/Param Editor/Framework/ParamFieldDecorators.cs
index 733168c37..4ee3e8c5f 100644
--- a/src/Smithbox.Program/Editors/Param Editor/Framework/ParamFieldDecorators.cs
+++ b/src/Smithbox.Program/Editors/Param Editor/Framework/ParamFieldDecorators.cs
@@ -1431,7 +1431,7 @@ public static void Item(ParamEditorView curView, Param.Row keyRow, string fieldK
if (File.Exists(path))
{
- Process.Start("explorer.exe", $"/select,\"{path}\"");
+ StudioCore.Common.FileExplorer.Start($"/select,\"{path}\"");
}
else
{
diff --git a/src/Smithbox.Program/Editors/Param Editor/Mass Edit/MassEditTemplateMenu.cs b/src/Smithbox.Program/Editors/Param Editor/Mass Edit/MassEditTemplateMenu.cs
index d07e36896..8c68b5042 100644
--- a/src/Smithbox.Program/Editors/Param Editor/Mass Edit/MassEditTemplateMenu.cs
+++ b/src/Smithbox.Program/Editors/Param Editor/Mass Edit/MassEditTemplateMenu.cs
@@ -113,7 +113,7 @@ public void DisplayMenu()
{
var projectScriptDir = Path.Combine(Parent.Editor.Project.Descriptor.ProjectPath, ".smithbox", "Assets", "Scripts");
- Process.Start("explorer.exe", projectScriptDir);
+ StudioCore.Common.FileExplorer.Start(projectScriptDir);
}
}
diff --git a/src/Smithbox.Program/Editors/Param Editor/Tools/Delta Patcher/ParamDeltaPatcher.cs b/src/Smithbox.Program/Editors/Param Editor/Tools/Delta Patcher/ParamDeltaPatcher.cs
index a3b2e9b03..34062cb9d 100644
--- a/src/Smithbox.Program/Editors/Param Editor/Tools/Delta Patcher/ParamDeltaPatcher.cs
+++ b/src/Smithbox.Program/Editors/Param Editor/Tools/Delta Patcher/ParamDeltaPatcher.cs
@@ -338,7 +338,7 @@ public void DisplayExportTab()
{
var storageDir = ProjectUtils.GetParamDeltaFolder();
- Process.Start("explorer.exe", storageDir);
+ StudioCore.Common.FileExplorer.Start(storageDir);
}
}
diff --git a/src/Smithbox.Program/Editors/Param Editor/Tools/ParamListCategories.cs b/src/Smithbox.Program/Editors/Param Editor/Tools/ParamListCategories.cs
index d45612ccf..b69ba34c3 100644
--- a/src/Smithbox.Program/Editors/Param Editor/Tools/ParamListCategories.cs
+++ b/src/Smithbox.Program/Editors/Param Editor/Tools/ParamListCategories.cs
@@ -261,7 +261,7 @@ public void Display()
public void RestoreDefault()
{
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
var sourceFile = Path.Combine(sourceFolder, "Param Categories.json");
if (File.Exists(sourceFile))
diff --git a/src/Smithbox.Program/Editors/Param Editor/Tools/ParamUpgrader.cs b/src/Smithbox.Program/Editors/Param Editor/Tools/ParamUpgrader.cs
index d1a00edb9..0c45ffa91 100644
--- a/src/Smithbox.Program/Editors/Param Editor/Tools/ParamUpgrader.cs
+++ b/src/Smithbox.Program/Editors/Param Editor/Tools/ParamUpgrader.cs
@@ -487,7 +487,7 @@ public async Task LoadUpgraderInformation()
{
await Task.Yield();
- var oldRegInfoPath = Path.Join(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project), "Upgrader Information.json");
+ var oldRegInfoPath = Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project), "Upgrader Information.json");
try
{
@@ -553,7 +553,7 @@ private string GetOldRegulationPath()
var oldRegulationPath = "";
- var oldRegDirectory = Path.Join(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project), "Regulations");
+ var oldRegDirectory = Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project), "Regulations");
var targetRegInfo = UpgraderInfo.RegulationEntries.Where(e => e.Version == oldVersionString).FirstOrDefault();
diff --git a/src/Smithbox.Program/Editors/Param Editor/Tools/Row Names/RowNameHelper.cs b/src/Smithbox.Program/Editors/Param Editor/Tools/Row Names/RowNameHelper.cs
index ad4dc7b5d..97384a3ea 100644
--- a/src/Smithbox.Program/Editors/Param Editor/Tools/Row Names/RowNameHelper.cs
+++ b/src/Smithbox.Program/Editors/Param Editor/Tools/Row Names/RowNameHelper.cs
@@ -52,7 +52,7 @@ public static async Task ImportRowNamesTask(ProjectEntry project, ParamBan
await Task.Yield();
var sourceDirectory = filepath;
- var folder = @$"{AppContext.BaseDirectory}/Assets/PARAM/{ProjectUtils.GetGameDirectory(project)}";
+ var folder = @$"{StudioCore.Common.FileLocations.Assets}/PARAM/{ProjectUtils.GetGameDirectory(project)}";
switch (sourceType)
{
diff --git a/src/Smithbox.Program/Editors/Param Editor/Utils/ParamUtils.cs b/src/Smithbox.Program/Editors/Param Editor/Utils/ParamUtils.cs
index 3dbf7f4c4..b99519c32 100644
--- a/src/Smithbox.Program/Editors/Param Editor/Utils/ParamUtils.cs
+++ b/src/Smithbox.Program/Editors/Param Editor/Utils/ParamUtils.cs
@@ -512,8 +512,8 @@ public static string GetFieldExportString(Param.Row context, string fieldName)
public static bool HasDeveloperRowNames(ProjectEntry curProject)
{
- var dir = Path.Combine(AppContext.BaseDirectory,
- "Assets", "PARAM",
+ var dir = Path.Combine(StudioCore.Common.FileLocations.Assets,
+ "PARAM",
ProjectUtils.GetGameDirectory(curProject), "Developer Row Names");
if(Directory.Exists(dir))
diff --git a/src/Smithbox.Program/Editors/Text Editor/Data/TextData.cs b/src/Smithbox.Program/Editors/Text Editor/Data/TextData.cs
index 72d141d13..f644276d3 100644
--- a/src/Smithbox.Program/Editors/Text Editor/Data/TextData.cs
+++ b/src/Smithbox.Program/Editors/Text Editor/Data/TextData.cs
@@ -104,7 +104,7 @@ public async Task SetupFmgDescriptors()
await Task.Yield();
- var folder = @$"{AppContext.BaseDirectory}/Assets/FMG/{ProjectUtils.GetGameDirectory(Project)}";
+ var folder = @$"{StudioCore.Common.FileLocations.Assets}/FMG/{ProjectUtils.GetGameDirectory(Project)}";
var file = Path.Combine(folder, jsonName);
if (File.Exists(file))
diff --git a/src/Smithbox.Program/Editors/Text Editor/Tools/TextNamingTemplateManager.cs b/src/Smithbox.Program/Editors/Text Editor/Tools/TextNamingTemplateManager.cs
index 05086fd4f..fd915f475 100644
--- a/src/Smithbox.Program/Editors/Text Editor/Tools/TextNamingTemplateManager.cs
+++ b/src/Smithbox.Program/Editors/Text Editor/Tools/TextNamingTemplateManager.cs
@@ -29,7 +29,7 @@ public TextNamingTemplateManager(TextEditorView view, ProjectEntry project)
Parent = view;
Project = project;
- RootPath = Path.Join(AppContext.BaseDirectory, "Assets", "Workflow", "Naming Templates");
+ RootPath = Path.Join(StudioCore.Common.FileLocations.Assets, "Workflow", "Naming Templates");
ProjectPath = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", "Workflow", "Naming Templates");
}
diff --git a/src/Smithbox.Program/Editors/Texture Viewer/Tools/TextureExport.cs b/src/Smithbox.Program/Editors/Texture Viewer/Tools/TextureExport.cs
index 45b75b984..bb775d1ba 100644
--- a/src/Smithbox.Program/Editors/Texture Viewer/Tools/TextureExport.cs
+++ b/src/Smithbox.Program/Editors/Texture Viewer/Tools/TextureExport.cs
@@ -56,7 +56,7 @@ public void Display()
ImGui.SameLine();
if (ImGui.Button("View Folder", DPI.HalfWidthButton(windowWidth, 24)))
{
- Process.Start("explorer.exe", CFG.Current.TextureViewerToolbar_ExportTextureLocation);
+ StudioCore.Common.FileExplorer.Start(CFG.Current.TextureViewerToolbar_ExportTextureLocation);
}
UIHelper.Tooltip("The folder destination to export the texture to.");
UIHelper.WrappedText("");
diff --git a/src/Smithbox.Program/Interface/UIHelper.cs b/src/Smithbox.Program/Interface/UIHelper.cs
index bcc3bc9de..9fbadb5bc 100644
--- a/src/Smithbox.Program/Interface/UIHelper.cs
+++ b/src/Smithbox.Program/Interface/UIHelper.cs
@@ -72,11 +72,12 @@ public static void UnapplyBaseStyle()
public static void RestoreImguiIfMissing()
{
- var curImgui = Path.Join(AppContext.BaseDirectory, "imgui.ini");
- var defaultImgui = Path.Join(AppContext.BaseDirectory, "imgui.default");
+ var curImgui = Path.Join(StudioCore.Common.FileLocations.CurImgui, "imgui.ini");
+ var defaultImgui = Path.Join(StudioCore.Common.FileLocations.Resources, "imgui.default");
if (!File.Exists(curImgui) && File.Exists(defaultImgui))
{
+ Directory.CreateDirectory(StudioCore.Common.FileLocations.CurImgui);
var bytes = File.ReadAllBytes(defaultImgui);
File.WriteAllBytes(curImgui, bytes);
}
diff --git a/src/Smithbox.Program/Preferences/Definitions/InterfacePrefs.cs b/src/Smithbox.Program/Preferences/Definitions/InterfacePrefs.cs
index 78e7ef0fd..fba661759 100644
--- a/src/Smithbox.Program/Preferences/Definitions/InterfacePrefs.cs
+++ b/src/Smithbox.Program/Preferences/Definitions/InterfacePrefs.cs
@@ -33,7 +33,7 @@ public static PreferenceItem Interface_UI_Scale()
Draw = () => {
DPI.ApplyInputWidth();
- ImGui.SliderFloat("##inputValue", ref PreferencesUtil.TempScale, 0.5f, 4.0f);
+ ImGui.SliderFloat("##inputValue", ref PreferencesUtil.TempScale, 0.3f, 4.0f);
if (ImGui.IsItemDeactivatedAfterEdit())
{
@@ -479,7 +479,7 @@ public static PreferenceItem ThemeSelector()
if (ImGui.Button("Open Folder", DPI.SelectorButtonSize))
{
- Process.Start("explorer.exe", Path.Join(AppContext.BaseDirectory, "Assets", "Themes"));
+ StudioCore.Common.FileExplorer.Start(Path.Join(StudioCore.Common.FileLocations.Assets, "Themes"));
}
}
};
diff --git a/src/Smithbox.Program/Project/Data/ProjectData.cs b/src/Smithbox.Program/Project/Data/ProjectData.cs
index c543af23c..c0dcc3edf 100644
--- a/src/Smithbox.Program/Project/Data/ProjectData.cs
+++ b/src/Smithbox.Program/Project/Data/ProjectData.cs
@@ -70,7 +70,7 @@ public async Task SetupAliases()
HashSet sourceDirectories =
[
- Path.Join(AppContext.BaseDirectory, "Assets", "Aliases",
+ Path.Join(StudioCore.Common.FileLocations.Assets, "Aliases",
ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType)),
Path.Join(Project.Descriptor.ProjectPath,".smithbox","Assets","Aliases")
];
@@ -123,7 +123,7 @@ public async Task SetupProjectEnums()
ProjectEnums = new();
// Information
- var sourceFolder = Path.Join(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
+ var sourceFolder = Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project.Descriptor.ProjectType));
var sourceFile = Path.Combine(sourceFolder, "Shared Param Enums.json");
var projectFolder = Path.Join(Project.Descriptor.ProjectPath, ".smithbox", "Project");
diff --git a/src/Smithbox.Program/Project/GUI/ProjectAliasMenu.cs b/src/Smithbox.Program/Project/GUI/ProjectAliasMenu.cs
index 4d973dec1..ccc179141 100644
--- a/src/Smithbox.Program/Project/GUI/ProjectAliasMenu.cs
+++ b/src/Smithbox.Program/Project/GUI/ProjectAliasMenu.cs
@@ -441,7 +441,7 @@ public void Setup(ProjectEntry project)
BaseAliases = new();
- var dir = Path.Join(AppContext.BaseDirectory, "Assets", "Aliases",
+ var dir = Path.Join(StudioCore.Common.FileLocations.Assets, "Aliases",
ProjectUtils.GetGameDirectory(project.Descriptor.ProjectType));
List sourceFiles = Directory.GetFiles(dir, "*.json").ToList();
diff --git a/src/Smithbox.Program/Project/ProjectEntry.cs b/src/Smithbox.Program/Project/ProjectEntry.cs
index 87f1f5b0c..10ce98ec7 100644
--- a/src/Smithbox.Program/Project/ProjectEntry.cs
+++ b/src/Smithbox.Program/Project/ProjectEntry.cs
@@ -338,11 +338,11 @@ public void SetupDLLs()
#if WINDOWS
var rootDllPath = Path.Join(Descriptor.DataPath, "oo2core_6_win64.dll");
var projectDllPath = Path.Join(AppContext.BaseDirectory, "oo2core_6_win64.dll");
-#elif OSX
- var rootDllPath = Path.Join(DataPath, "liboo2coremac64.2.6.dylib");
+#elif MACOS
+ var rootDllPath = Path.Join(Descriptor.DataPath, "liboo2coremac64.2.6.dylib");
var projectDllPath = Path.Join(AppContext.BaseDirectory, "liboo2coremac64.2.6.dylib");
#elif LINUX
- var rootDllPath = Path.Join(DataPath, "liboo2corelinux64.so.6");
+ var rootDllPath = Path.Join(Descriptor.DataPath, "liboo2corelinux64.so.6");
var projectDllPath = Path.Join(AppContext.BaseDirectory, "liboo2corelinux64.so.6");
#endif
@@ -360,11 +360,11 @@ public void SetupDLLs()
#if WINDOWS
var rootDllPath = Path.Join(Descriptor.DataPath, "oo2core_8_win64.dll");
var projectDllPath = Path.Join(AppContext.BaseDirectory, "oo2core_8_win64.dll");
-#elif OSX
- var rootDllPath = Path.Join(DataPath, "liboo2coremac64.2.8.dylib");
+#elif MACOS
+ var rootDllPath = Path.Join(Descriptor.DataPath, "liboo2coremac64.2.8.dylib");
var projectDllPath = Path.Join(AppContext.BaseDirectory, "liboo2coremac64.2.8.dylib");
#elif LINUX
- var rootDllPath = Path.Join(DataPath, "liboo2corelinux64.so.8");
+ var rootDllPath = Path.Join(Descriptor.DataPath, "liboo2corelinux64.so.8");
var projectDllPath = Path.Join(AppContext.BaseDirectory, "liboo2corelinux64.so.8");
#endif
@@ -383,11 +383,11 @@ public void SetupDLLs()
#if WINDOWS
var rootDllPath = Path.Join(Descriptor.DataPath, "oo2core_9_win64.dll");
var projectDllPath = Path.Join(AppContext.BaseDirectory, "oo2core_9_win64.dll");
-#elif OSX
- var rootDllPath = Path.Join(DataPath, "liboo2coremac64.2.9.dylib");
+#elif MACOS
+ var rootDllPath = Path.Join(Descriptor.DataPath, "liboo2coremac64.2.9.dylib");
var projectDllPath = Path.Join(AppContext.BaseDirectory, "liboo2coremac64.2.9.dylib");
#elif LINUX
- var rootDllPath = Path.Join(DataPath, "liboo2corelinux64.so.9");
+ var rootDllPath = Path.Join(Descriptor.DataPath, "liboo2corelinux64.so.9");
var projectDllPath = Path.Join(AppContext.BaseDirectory, "liboo2corelinux64.so.9");
#endif
diff --git a/src/Smithbox.Program/Project/ProjectFileLocator.cs b/src/Smithbox.Program/Project/ProjectFileLocator.cs
index 531c1b2ec..1c848810a 100644
--- a/src/Smithbox.Program/Project/ProjectFileLocator.cs
+++ b/src/Smithbox.Program/Project/ProjectFileLocator.cs
@@ -55,7 +55,7 @@ public async Task Initialize(Action reportProgress, bool si
Directory.CreateDirectory(projectLocalFolder);
}
- var folder = Path.Join(AppContext.BaseDirectory, "Assets", "File Dictionaries");
+ var folder = Path.Join(StudioCore.Common.FileLocations.Assets, "File Dictionaries");
var file = "";
// Build the file dictionary JSON objects here
diff --git a/src/Smithbox.Program/Project/ProjectOrchestrator.cs b/src/Smithbox.Program/Project/ProjectOrchestrator.cs
index b40f8cb91..1b1cfc3d5 100644
--- a/src/Smithbox.Program/Project/ProjectOrchestrator.cs
+++ b/src/Smithbox.Program/Project/ProjectOrchestrator.cs
@@ -509,14 +509,14 @@ private void DisplayProjectActions(ProjectEntry curProject)
if (ImGui.MenuItem($"Open Project Folder"))
{
- Process.Start("explorer.exe", curProject.Descriptor.ProjectPath);
+ StudioCore.Common.FileExplorer.Start(curProject.Descriptor.ProjectPath);
}
if (ImGui.MenuItem($"Open Project JSON Folder"))
{
var jsonPath = ProjectUtils.GetProjectsFolder();
- Process.Start("explorer.exe", jsonPath);
+ StudioCore.Common.FileExplorer.Start(jsonPath);
}
if (ImGui.MenuItem($"Clear Backup Files##clearBackupFiles"))
diff --git a/src/Smithbox.Program/Project/Utilities/ProjectUtils.cs b/src/Smithbox.Program/Project/Utilities/ProjectUtils.cs
index 2066b3b2b..b26dc65aa 100644
--- a/src/Smithbox.Program/Project/Utilities/ProjectUtils.cs
+++ b/src/Smithbox.Program/Project/Utilities/ProjectUtils.cs
@@ -93,7 +93,7 @@ public static string GetParamDeltaFolder()
public static string GetThemeFolder()
{
- return Path.Join(AppContext.BaseDirectory, "Assets", "Themes");
+ return Path.Join(StudioCore.Common.FileLocations.Assets, "Themes");
}
public static string GetProjectsFolder()
diff --git a/src/Smithbox.Program/Project/Utilities/SteamUtils.cs b/src/Smithbox.Program/Project/Utilities/SteamUtils.cs
index 88a86b7f4..03c426b65 100644
--- a/src/Smithbox.Program/Project/Utilities/SteamUtils.cs
+++ b/src/Smithbox.Program/Project/Utilities/SteamUtils.cs
@@ -13,42 +13,35 @@ public static class SteamGameLocator
{
public static string GetSteamInstallPath()
{
- if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
- {
#if WINDOWS
- using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Valve\Steam"))
+ using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Valve\Steam"))
+ {
+ if (key != null)
{
- if (key != null)
- {
- return key.GetValue("InstallPath") as string;
- }
+ return key.GetValue("InstallPath") as string;
}
-#endif
- }
- else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
- {
- string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/Steam";
- if (Directory.Exists(path))
- return path;
}
- else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
+#elif MACOS
+ string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/Steam";
+ if (Directory.Exists(path))
+ return path;
+#elif LINUX
+ string home = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
+ var candidates = new[]
{
- string home = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
- var candidates = new[]
- {
- Path.Combine(home, ".steam", "steam"),
- Path.Combine(home, ".local", "share", "Steam"),
- Path.Combine(home, ".steam", "root")
- };
+ Path.Combine(home, ".steam", "steam"),
+ Path.Combine(home, ".local", "share", "Steam"),
+ Path.Combine(home, ".steam", "root")
+ };
- foreach (var path in candidates)
+ foreach (var path in candidates)
+ {
+ if (Directory.Exists(path))
{
- if (Directory.Exists(path))
- {
- return path;
- }
+ return path;
}
}
+#endif
return null;
}
@@ -113,7 +106,7 @@ public static string FindGameExecutable(int appId, string executableRelativePath
if (installdir != null)
{
string gameFolder = Path.Combine(library, "steamapps", "common", installdir);
- string exePath = Path.Combine(gameFolder, executableRelativePath);
+ string exePath = Path.Combine(gameFolder, executableRelativePath.Replace('\\',Path.DirectorySeparatorChar));
if (File.Exists(exePath))
{
// Only return the directory
diff --git a/src/Smithbox.Program/Renderer/Context/VulkanImGuiRenderer.cs b/src/Smithbox.Program/Renderer/Context/VulkanImGuiRenderer.cs
index a3a61b611..1ed7d9e27 100644
--- a/src/Smithbox.Program/Renderer/Context/VulkanImGuiRenderer.cs
+++ b/src/Smithbox.Program/Renderer/Context/VulkanImGuiRenderer.cs
@@ -211,7 +211,17 @@ public void Update(float deltaSeconds, InputSnapshot snapshot, Action updateFont
BeginUpdate(deltaSeconds);
if (updateFontAction != null)
{
- updateFontAction.Invoke();
+ try
+ {
+ updateFontAction.Invoke();
+ }
+ catch (ArgumentOutOfRangeException ex)
+ {
+ //TODO precompute and check for excessive width, height from DPI.UIScale instead of using io.Fonts
+ Smithbox.LogError(this, $"[Smithbox] {ex.Message}", Logger.LogPriority.High, ex);
+ StudioCore.Application.CFG.Current.Interface_UI_Scale = StudioCore.Application.CFG.Default.Interface_UI_Scale;
+ updateFontAction.Invoke();
+ }
}
UpdateImGuiInput(snapshot);
@@ -431,22 +441,42 @@ public unsafe void RecreateFontDeviceTexture(GraphicsDevice gd)
int height;
int bytesPerPixel;
+ //FIXME can crash with large enough uiscale
// Build
io.Fonts.GetTexDataAsRGBA32(&pixels, &width, &height, &bytesPerPixel);
// Store our identifier
io.Fonts.SetTexID(_fontTexture.TexHandle);
+ var format = VkFormat.R8G8B8A8Unorm;
+ var usageFlags = VkImageUsageFlags.Sampled;
+ var createFlags = VkImageCreateFlags.None;
+ var tiling = VkImageTiling.Optimal;
+
//_fontTexture?.Dispose();
+ var maxExtent = gd.GetImageFormatMaxExtent(
+ VkImageType.Image2D,
+ format,
+ usageFlags,
+ createFlags,
+ tiling);
+ if (width > maxExtent.width || height > maxExtent.height)
+ {
+ io.Fonts.ClearTexData();
+ throw new ArgumentOutOfRangeException(
+ width > maxExtent.width ? nameof(width) : nameof(height),
+ $"Image dimensions {width},{height} for {format} exceed device limits ({maxExtent.width},{maxExtent.height})"
+ );
+ }
Texture tex = gd.ResourceFactory.CreateTexture(TextureDescription.Texture2D(
(uint)width,
(uint)height,
1,
1,
- VkFormat.R8G8B8A8Unorm,
- VkImageUsageFlags.Sampled,
- VkImageCreateFlags.None,
- VkImageTiling.Optimal));
+ format,
+ usageFlags,
+ createFlags,
+ tiling));
tex.Name = "ImGui.NET Font Texture";
gd.UpdateTexture(
tex,
diff --git a/src/Smithbox.Program/Renderer/Locators/ParamLocator.cs b/src/Smithbox.Program/Renderer/Locators/ParamLocator.cs
index adb0fc81c..7b3e9437c 100644
--- a/src/Smithbox.Program/Renderer/Locators/ParamLocator.cs
+++ b/src/Smithbox.Program/Renderer/Locators/ParamLocator.cs
@@ -65,7 +65,7 @@ public static PARAMDEF GetParamdefForParam(ProjectEntry project, string paramTyp
public static string GetParamAssetsDir(ProjectEntry project)
{
- return Path.Join("Assets", "PARAM", ProjectUtils.GetGameDirectory(project));
+ return Path.Join(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(project));
}
public static string GetParamdefDir(ProjectEntry project)
@@ -80,11 +80,11 @@ public static string GetParammetaDir(ProjectEntry project)
public static string GetMassEditScriptCommonDir()
{
- return Path.Join("Assets", "Scripts", "Common");
+ return Path.Join(StudioCore.Common.FileLocations.Assets, "Scripts", "Common");
}
public static string GetMassEditScriptGameDir(ProjectEntry project)
{
- return Path.Join("Assets", "Scripts", ProjectUtils.GetGameDirectory(project));
+ return Path.Join(StudioCore.Common.FileLocations.Assets, "Scripts", ProjectUtils.GetGameDirectory(project));
}
}
diff --git a/src/Smithbox.Program/Renderer/Locators/PathBuilder.cs b/src/Smithbox.Program/Renderer/Locators/PathBuilder.cs
index dd3ae1539..49621f9ea 100644
--- a/src/Smithbox.Program/Renderer/Locators/PathBuilder.cs
+++ b/src/Smithbox.Program/Renderer/Locators/PathBuilder.cs
@@ -655,7 +655,7 @@ public static string GetAbsolutePath(ProjectEntry project, string virtPath)
var containerName = p[i];
absPath = Path.Combine(
- AppContext.BaseDirectory, "Assets", "MSB", ProjectUtils.GetGameDirectory(project.Descriptor.ProjectType),
+ StudioCore.Common.FileLocations.Assets, "MSB", ProjectUtils.GetGameDirectory(project.Descriptor.ProjectType),
"Maps", $"{containerName}.tpf.dcx");
}
diff --git a/src/Smithbox.Program/Renderer/Scene/ShaderHelper.cs b/src/Smithbox.Program/Renderer/Scene/ShaderHelper.cs
index de85398fc..f10f65387 100644
--- a/src/Smithbox.Program/Renderer/Scene/ShaderHelper.cs
+++ b/src/Smithbox.Program/Renderer/Scene/ShaderHelper.cs
@@ -9,7 +9,7 @@ namespace StudioCore.Renderer;
public static class ShaderHelper
{
- private static readonly string s_assetRoot = Path.Combine(AppContext.BaseDirectory, "Assets");
+ private static readonly string s_assetRoot = StudioCore.Common.FileLocations.Assets;
internal static string GetPath(string assetPath)
{
diff --git a/src/Smithbox.Program/Renderer/Texture Manager/IconManager.cs b/src/Smithbox.Program/Renderer/Texture Manager/IconManager.cs
index 229d953cd..5d00e4585 100644
--- a/src/Smithbox.Program/Renderer/Texture Manager/IconManager.cs
+++ b/src/Smithbox.Program/Renderer/Texture Manager/IconManager.cs
@@ -60,7 +60,7 @@ public CachedTexture LoadDirectIcon(Param.Row context, IconConfig iconConfig, ob
var curProject = Smithbox.Orchestrator.SelectedProject;
// Instead of icon config, we search the layout folder directly
- var layouts = Path.Combine(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(curProject.Descriptor.ProjectType), "Icon Layouts");
+ var layouts = Path.Combine(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(curProject.Descriptor.ProjectType), "Icon Layouts");
var key = $"icon_{context.ID}_{columnIndex}_{fieldName}_{fieldValue}";
diff --git a/src/Smithbox.Program/Renderer/Texture Manager/Shoebox/ShoeboxLayoutContainer.cs b/src/Smithbox.Program/Renderer/Texture Manager/Shoebox/ShoeboxLayoutContainer.cs
index aad54b8cf..32c49decb 100644
--- a/src/Smithbox.Program/Renderer/Texture Manager/Shoebox/ShoeboxLayoutContainer.cs
+++ b/src/Smithbox.Program/Renderer/Texture Manager/Shoebox/ShoeboxLayoutContainer.cs
@@ -75,7 +75,7 @@ public async Task SetupLayoutsDirectly()
{
await Task.Yield();
- var srcFolder = Path.Combine(AppContext.BaseDirectory, "Assets", "PARAM", ProjectUtils.GetGameDirectory(Project), "Icon Layouts");
+ var srcFolder = Path.Combine(StudioCore.Common.FileLocations.Assets, "PARAM", ProjectUtils.GetGameDirectory(Project), "Icon Layouts");
foreach (var path in Directory.EnumerateFiles(srcFolder))
{
diff --git a/src/Smithbox.Program/Smithbox.Program.csproj b/src/Smithbox.Program/Smithbox.Program.csproj
index 5ac496af7..c097437f2 100644
--- a/src/Smithbox.Program/Smithbox.Program.csproj
+++ b/src/Smithbox.Program/Smithbox.Program.csproj
@@ -3,39 +3,22 @@
net9.0
12
-
- Debug-win;Release-win;Debug-linux;Release-linux;Debug-osx;Release-osx;Debug;Release
StudioCore
-
- DEBUG
+
true
1701;1702;0169
-
-
- RELEASE
+
+
true
embedded
false
1701;1702;0169
-
- $(DefineConstants);WINDOWS
- x64
-
-
- $(DefineConstants);LINUX
- x64
-
-
-
- $(DefineConstants);OSX
- arm64;x64
-
diff --git a/src/Smithbox.Program/Smithbox.cs b/src/Smithbox.Program/Smithbox.cs
index 010456c9f..d0c37e235 100644
--- a/src/Smithbox.Program/Smithbox.cs
+++ b/src/Smithbox.Program/Smithbox.cs
@@ -216,6 +216,10 @@ private unsafe void SetupImGui()
io.ConfigViewportsNoAutoMerge = false;
io.ConfigViewportsNoTaskBarIcon = false;
+ byte[] iniFilename = System.Text.Encoding.UTF8.GetBytes(Path.Combine(StudioCore.Common.FileLocations.CurImgui, "imgui.ini") + '\0');
+ GCHandle handle = GCHandle.Alloc(iniFilename, GCHandleType.Pinned);
+ io.Handle->IniFilename = (byte*)handle.AddrOfPinnedObject();
+
// setup ImGui style
var style = ImGui.GetStyle();
style.TabBorderSize = 0;
@@ -239,17 +243,17 @@ private unsafe void SetupFonts()
NonEnglishFontRelPath = CFG.Current.Interface_Non_English_Font_Path;
}
- var englishFontPath = Path.Combine(AppContext.BaseDirectory, EnglishFontRelPath);
+ var englishFontPath = Path.Combine(StudioCore.Common.FileLocations.Resources, EnglishFontRelPath);
var englishFontData = File.ReadAllBytes(englishFontPath);
var englishFontPtr = ImGui.MemAlloc((uint)englishFontData.Length);
Marshal.Copy(englishFontData, 0, (nint)englishFontPtr, englishFontData.Length);
- var nonEnglishFontPath = Path.Combine(AppContext.BaseDirectory, NonEnglishFontRelPath);
+ var nonEnglishFontPath = Path.Combine(StudioCore.Common.FileLocations.Resources, NonEnglishFontRelPath);
var nonEnglishFontData = File.ReadAllBytes(nonEnglishFontPath);
var nonEnglishFontPtr = ImGui.MemAlloc((uint)nonEnglishFontData.Length);
Marshal.Copy(nonEnglishFontData, 0, (nint)nonEnglishFontPtr, nonEnglishFontData.Length);
- var iconFontPath = Path.Combine(AppContext.BaseDirectory, IconFontRelPath);
+ var iconFontPath = Path.Combine(StudioCore.Common.FileLocations.Resources, IconFontRelPath);
var iconFontData = File.ReadAllBytes(iconFontPath);
var iconFontPtr = ImGui.MemAlloc((uint)iconFontData.Length);
Marshal.Copy(iconFontData, 0, (nint)iconFontPtr, iconFontData.Length);
diff --git a/src/Smithbox.Tests/Smithbox.Tests.csproj b/src/Smithbox.Tests/Smithbox.Tests.csproj
index 983ad06eb..21a31ef51 100644
--- a/src/Smithbox.Tests/Smithbox.Tests.csproj
+++ b/src/Smithbox.Tests/Smithbox.Tests.csproj
@@ -1,7 +1,7 @@
- net9.0
+ net9.0-windows7.0
enable
enable
false
@@ -22,12 +22,4 @@
-
- DEBUG
-
-
-
- RELEASE
-
-
diff --git a/src/Smithbox/AppIcon.icns b/src/Smithbox/AppIcon.icns
new file mode 100644
index 000000000..48325465d
Binary files /dev/null and b/src/Smithbox/AppIcon.icns differ
diff --git a/src/Smithbox/Info.plist b/src/Smithbox/Info.plist
new file mode 100644
index 000000000..9a37a6a51
--- /dev/null
+++ b/src/Smithbox/Info.plist
@@ -0,0 +1,14 @@
+
+
+
+
+ CFBundleIconFile
+ AppIcon.icns
+ CFBundleIdentifier
+ com.vawser.Smithbox
+ CFBundleShortVersionString
+ 2.1.3
+ CFBundleVersion
+ 2.1.0
+
+
diff --git a/src/Smithbox/ProductDefinition.plist b/src/Smithbox/ProductDefinition.plist
new file mode 100644
index 000000000..ad975aa4c
--- /dev/null
+++ b/src/Smithbox/ProductDefinition.plist
@@ -0,0 +1,19 @@
+
+
+
+
+ home
+
+ arch
+
+ arm64
+ x86_64
+
+ os
+
+ 14.0
+ 15.0
+ 26.0
+
+
+
diff --git a/src/Smithbox/Program.cs b/src/Smithbox/Program.cs
index fc76feb39..8c58a8e18 100644
--- a/src/Smithbox/Program.cs
+++ b/src/Smithbox/Program.cs
@@ -87,8 +87,12 @@ static List LogExceptions(Exception ex)
return log;
}
-
+#if MACOS
+ private static readonly string CrashLogPath = Path.GetFullPath(Path.Combine(
+ Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "../Logs/Smithbox/Crash Logs"));
+#else
private static readonly string CrashLogPath = Path.Join(Directory.GetCurrentDirectory(), "Crash Logs");
+#endif
static void ExportCrashLog(List exceptionInfo)
{
var time = $"{DateTime.Now:yyyy-M-dd--HH-mm-ss}";
diff --git a/src/Smithbox/Scripts/postinstall b/src/Smithbox/Scripts/postinstall
new file mode 100755
index 000000000..24542daf8
--- /dev/null
+++ b/src/Smithbox/Scripts/postinstall
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+if [ -d "$INSTALLER_TEMP" ] && [ -n "$(ls $INSTALLER_TEMP)" ]; then
+ set -- "$INSTALLER_TEMP"/*.dylib
+ if [ -e $1 ]; then
+ cp -f $1 "$DSTROOT/Smithbox.app/Contents/MonoBundle/$(basename -- $1)"
+ fi
+fi
+
+if ! command -v codesign_allocate &> /dev/null; then
+ cont=$(
+ osascript <<'EOF'
+display alert "Missing codesign_allocate" ¬
+ message "Xcode command line tools are required to codesign the app. Without it, you will need to override Gatekeeper. This is not recommended." ¬
+ as critical buttons {"Cancel", "Continue"} default button "Cancel"
+ return button returned of the result
+EOF
+ )
+ if [ "$cont" = "Cancel" ]; then
+ mv "$DSTROOT/Smithbox.app" $HOME/.Trash
+ exit 1
+ fi
+ exit 0
+fi
+
+codesign --force -s - "$DSTROOT/Smithbox.app/Contents/MonoBundle/libMoltenVK.dylib"
+codesign --force -s - "$DSTROOT/Smithbox.app/Contents/MonoBundle/libSDL2-2.0.dylib"
+codesign --force -s - "$DSTROOT/Smithbox.app/"
+
+exit 0
\ No newline at end of file
diff --git a/src/Smithbox/Scripts/preinstall b/src/Smithbox/Scripts/preinstall
new file mode 100755
index 000000000..af0a738fd
--- /dev/null
+++ b/src/Smithbox/Scripts/preinstall
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+if ! command -v install_name_tool &> /dev/null; then
+ cont=$(
+ osascript <<'EOF'
+display alert "Missing install_name_tool" ¬
+ message "Xcode command line tools are required for some unpacking features. Continue anyway?" ¬
+ as critical buttons {"Cancel", "Continue"} default button "Cancel"
+ return button returned of the result
+EOF
+ )
+ if [ "$cont" = "Cancel" ]; then
+ exit 1
+ elif [ "$cont" = "Continue" ]; then
+ exit 0
+ fi
+fi
+
+while true; do
+ dylib=$(
+ osascript <<'EOF'
+set f to choose file of type {"dylib"} with prompt "Select liboo2coremac dynamic library"
+POSIX path of f
+EOF
+ )
+
+ if [ -z "$dylib" ]; then
+ canc=$(
+ osascript <<'EOF'
+display alert "No oodle library selected" ¬
+ message "Certain unpacking features will not be available." ¬
+ buttons {"Cancel", "Select file...", "Continue"} default button "Cancel"
+ return button returned of the result
+EOF
+ )
+
+ if [ "$canc" = "Cancel" ]; then
+ exit 1
+ elif [ "$canc" = "Continue" ]; then
+ exit 0
+ fi
+ else
+ break
+ fi
+done
+
+libname=$(basename -- "$dylib")
+cp "$dylib" "$INSTALLER_TEMP"
+install_name_tool -id "@executable_path/../../$libname" "$INSTALLER_TEMP/$libname"
+status=$?
+
+if [ $status -ne 0 ]; then
+ osascript -e 'display alert "install_name_tool failed. Please submit an issue on GitHub." buttons {"OK"} default button "Ok" as critical'
+ rm "$INSTALLER_TEMP/$libname"
+ exit $status
+fi
+
+exit 0
diff --git a/src/Smithbox/Smithbox.Linux.csproj b/src/Smithbox/Smithbox.Linux.csproj
new file mode 100644
index 000000000..8cecb99a2
--- /dev/null
+++ b/src/Smithbox/Smithbox.Linux.csproj
@@ -0,0 +1,58 @@
+
+
+
+ Exe
+ Smithbox
+ net9.0
+ Katalash, Vawser
+ 2.1.3
+ icon.ico
+ 2.1.0
+ 2.1.3
+ app.manifest
+ 12
+ false
+ true
+ linux-x64
+ $(DefineConstants);LINUX
+ StudioCore
+
+
+
+ true
+ x64
+ embedded
+ false
+
+
+
+ true
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Smithbox/Smithbox.Mac.csproj b/src/Smithbox/Smithbox.Mac.csproj
new file mode 100644
index 000000000..5ad1a69ae
--- /dev/null
+++ b/src/Smithbox/Smithbox.Mac.csproj
@@ -0,0 +1,107 @@
+
+
+
+ Exe
+ Smithbox
+ com.vawser.Smithbox
+ net9.0-macos
+ Katalash, Vawser
+ 2.1.3
+ icon.ico
+ 2.1.0
+ 2.1.3
+ app.manifest
+ 12
+ false
+ true
+ AnyCPU;x64
+ osx-arm64;osx-x64
+ osx-x64
+ 14.0
+ $(DefineConstants);MACOS
+ StudioCore
+
+
+
+ true
+ $(Platform)
+ embedded
+ false
+
+
+
+ true
+ $(Platform)
+
+
+
+
+ <_CustomLinkFlags Include="-ld64;-undefined;dynamic_lookup" Visible="false" />
+
+
+ false
+ <_UseClassicLinker>true
+ ProductDefinition.plist
+
+
+
+ /path/to/VulkanSDK/Version
+ $(VULKAN_SDK)/macOS/lib/libMoltenVK.dylib
+ /path/to/oodle.dylib
+ ../Andre/Andre.Formats/libbhd5_decrypt_rust.dylib
+ ../Tracy/libTracyClient.dylib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<Project>
+ <PropertyGroup>
+ <DefineConstants>%24(DefineConstants)%3BMACOS</DefineConstants>
+ </PropertyGroup>
+</Project>
+
+
+
+
+
+
+
+
+
+s/%5C(<os-version min="[0-9.][0-9.]*"%5C).*%5C/>/%5C1%5C/>/g
+s/ customLocation="%5C/Applications">/>/
+
+
+s/<%5C/pkg-info>/%5C
+ <scripts>%5C
+ <preinstall file=".%5C/preinstall"%5C/>%5C
+ <postinstall file=".%5C/postinstall"%5C/>%5C
+ <%5C/scripts>%5C
+&/
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Smithbox/Smithbox.csproj b/src/Smithbox/Smithbox.csproj
index 6d06cf853..d82b230dc 100644
--- a/src/Smithbox/Smithbox.csproj
+++ b/src/Smithbox/Smithbox.csproj
@@ -1,8 +1,9 @@
-
+
- Exe
- net9.0
+ WinExe
+ Smithbox
+ net9.0-windows7.0
Katalash, Vawser
2.1.3
icon.ico
@@ -12,43 +13,41 @@
12
false
true
- Debug-win;Release-win;Debug-linux;Release-linux;Debug-osx;Release-osx;Debug;Release
+ win-x64
+ $(DefineConstants);WINDOWS
StudioCore
-
- DEBUG
- true
-
-
-
- RELEASE
+
true
+ x64
embedded
false
-
- WinExe
- x64
- win-x64
-
-
-
+
+ true
x64
- linux-x64
-
- arm64;x64
- osx-arm64;osx-x64
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Tracy/Tracy.cs b/src/Tracy/Tracy.cs
index a4542e31f..9821fb294 100644
--- a/src/Tracy/Tracy.cs
+++ b/src/Tracy/Tracy.cs
@@ -23,10 +23,10 @@ public unsafe class Profiler
Environment.GetEnvironmentVariable("SMITHBOX_PROFILER") != "0";
#endif
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_startup_profiler();
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_shutdown_profiler();
public static void Startup()
@@ -44,41 +44,41 @@ public static void Shutdown()
EnableTracy = false;
}
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern ___tracy_c_zone_context ___tracy_emit_zone_begin(___tracy_source_location_data* srcloc,
int active);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern ___tracy_c_zone_context ___tracy_emit_zone_begin_callstack(
___tracy_source_location_data* srcloc, int depth, int active);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern ___tracy_c_zone_context ___tracy_emit_zone_begin_alloc(ulong srcloc, int active);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern ___tracy_c_zone_context ___tracy_emit_zone_begin_alloc_callstack(ulong srcloc, int depth,
int active);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_emit_zone_end(___tracy_c_zone_context ctx);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_emit_zone_text(___tracy_c_zone_context ctx, string txt, ulong size);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_emit_zone_name(___tracy_c_zone_context ctx, string txt, ulong size);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_emit_zone_color(___tracy_c_zone_context ctx, uint color);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_emit_zone_value(___tracy_c_zone_context ctx, ulong value);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern ulong ___tracy_alloc_srcloc(uint line, string source, ulong sourceSz, string function,
ulong functionSz);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern ulong ___tracy_alloc_srcloc_name(uint line, string source, ulong sourceSz,
string function, ulong functionSz, string name, ulong nameSz);
@@ -202,10 +202,10 @@ public static void TracyCZoneEnd(___tracy_c_zone_context ctx)
___tracy_emit_zone_end(ctx);
}
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_fiber_enter(IntPtr namePtr);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_fiber_leave();
private static readonly ConcurrentDictionary s_fiberNamePtrs = new();
@@ -237,13 +237,13 @@ public static void TracyFiberLeave()
try { ___tracy_fiber_leave(); } catch { }
}
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_emit_frame_mark(string? name);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_emit_frame_mark_start(string name);
- [DllImport("TracyClient.dll", CallingConvention = CallingConvention.Cdecl)]
+ [DllImport("TracyClient", CallingConvention = CallingConvention.Cdecl)]
private static extern void ___tracy_emit_frame_mark_end(string name);
public static void TracyCFrameMark()
diff --git a/src/Tracy/Tracy.csproj b/src/Tracy/Tracy.csproj
index 995b166b0..46d5fc67c 100644
--- a/src/Tracy/Tracy.csproj
+++ b/src/Tracy/Tracy.csproj
@@ -9,17 +9,16 @@
-
+
+
+ PreserveNewest
+
+
+ Never
+
+
PreserveNewest
-
- DEBUG
-
-
-
- RELEASE
-
-
diff --git a/src/Tracy/libTracyClient.dylib b/src/Tracy/libTracyClient.dylib
new file mode 100755
index 000000000..d5723fadb
Binary files /dev/null and b/src/Tracy/libTracyClient.dylib differ
diff --git a/src/Tracy/libTracyClient.so b/src/Tracy/libTracyClient.so
new file mode 100644
index 000000000..72a2443ce
Binary files /dev/null and b/src/Tracy/libTracyClient.so differ
diff --git a/src/Veldrid/Veldrid.MetalBindings/Veldrid.MetalBindings.csproj b/src/Veldrid/Veldrid.MetalBindings/Veldrid.MetalBindings.csproj
index 63c9b92d5..8ea4e6b30 100644
--- a/src/Veldrid/Veldrid.MetalBindings/Veldrid.MetalBindings.csproj
+++ b/src/Veldrid/Veldrid.MetalBindings/Veldrid.MetalBindings.csproj
@@ -9,12 +9,4 @@
-
- DEBUG
-
-
-
- RELEASE
-
-
diff --git a/src/Veldrid/Veldrid.RenderDoc/Veldrid.RenderDoc.csproj b/src/Veldrid/Veldrid.RenderDoc/Veldrid.RenderDoc.csproj
index 54da41315..2b6f62d8d 100644
--- a/src/Veldrid/Veldrid.RenderDoc/Veldrid.RenderDoc.csproj
+++ b/src/Veldrid/Veldrid.RenderDoc/Veldrid.RenderDoc.csproj
@@ -11,12 +11,7 @@
Debug Profile 3D Graphics Direct3D DirectX Vulkan OpenGL Core Standard Game
-
- DEBUG
-
-
-
- RELEASE
+
embedded
diff --git a/src/Veldrid/Veldrid.SDL2/Veldrid.SDL2.csproj b/src/Veldrid/Veldrid.SDL2/Veldrid.SDL2.csproj
index 92c313291..6f338e4e2 100644
--- a/src/Veldrid/Veldrid.SDL2/Veldrid.SDL2.csproj
+++ b/src/Veldrid/Veldrid.SDL2/Veldrid.SDL2.csproj
@@ -19,12 +19,7 @@
Core Standard Game SDL2 Window Input
-
- DEBUG
-
-
-
- RELEASE
+
embedded
diff --git a/src/Veldrid/Veldrid.SPIRV.VariantCompiler/Veldrid.SPIRV.VariantCompiler.csproj b/src/Veldrid/Veldrid.SPIRV.VariantCompiler/Veldrid.SPIRV.VariantCompiler.csproj
index f2207ffd7..7aa7f426c 100644
--- a/src/Veldrid/Veldrid.SPIRV.VariantCompiler/Veldrid.SPIRV.VariantCompiler.csproj
+++ b/src/Veldrid/Veldrid.SPIRV.VariantCompiler/Veldrid.SPIRV.VariantCompiler.csproj
@@ -23,12 +23,4 @@
-
- DEBUG
-
-
-
- RELEASE
-
-
diff --git a/src/Veldrid/Veldrid.SPIRV/Veldrid.SPIRV.csproj b/src/Veldrid/Veldrid.SPIRV/Veldrid.SPIRV.csproj
index 10801e37c..80786a9b8 100644
--- a/src/Veldrid/Veldrid.SPIRV/Veldrid.SPIRV.csproj
+++ b/src/Veldrid/Veldrid.SPIRV/Veldrid.SPIRV.csproj
@@ -55,12 +55,7 @@
3D Graphics Direct3D DirectX Vulkan OpenGL Metal Core Standard Game
-
- DEBUG
-
-
-
- RELEASE
+
embedded
diff --git a/src/Veldrid/Veldrid.StartupUtilities/Veldrid.StartupUtilities.csproj b/src/Veldrid/Veldrid.StartupUtilities/Veldrid.StartupUtilities.csproj
index 7fafb407a..ead84d83b 100644
--- a/src/Veldrid/Veldrid.StartupUtilities/Veldrid.StartupUtilities.csproj
+++ b/src/Veldrid/Veldrid.StartupUtilities/Veldrid.StartupUtilities.csproj
@@ -21,12 +21,7 @@
Core Standard Game SDL2 Window Input
-
- $(DefineConstants);DEBUG
-
-
-
- $(DefineConstants);RELEASE
+
embedded
diff --git a/src/Veldrid/Veldrid.Utilities/Veldrid.Utilities.csproj b/src/Veldrid/Veldrid.Utilities/Veldrid.Utilities.csproj
index 7146cc7e4..18a9bbf2b 100644
--- a/src/Veldrid/Veldrid.Utilities/Veldrid.Utilities.csproj
+++ b/src/Veldrid/Veldrid.Utilities/Veldrid.Utilities.csproj
@@ -16,12 +16,7 @@
Core Standard Game Graphics
-
- DEBUG
-
-
-
- RELEASE
+
embedded
diff --git a/src/Veldrid/Veldrid/CommonStrings.cs b/src/Veldrid/Veldrid/CommonStrings.cs
index 8455897ec..3782e49d9 100644
--- a/src/Veldrid/Veldrid/CommonStrings.cs
+++ b/src/Veldrid/Veldrid/CommonStrings.cs
@@ -11,6 +11,7 @@ internal static class CommonStrings
public static FixedUtf8String VK_KHR_SWAPCHAIN_EXTENSION_NAME { get; } = "VK_KHR_swapchain";
public static FixedUtf8String VK_MVK_MACOS_SURFACE_EXTENSION_NAME { get; } = "VK_MVK_macos_surface";
public static FixedUtf8String VK_EXT_METAL_SURFACE_EXTENSION_NAME { get; } = "VK_EXT_metal_surface";
+ public static FixedUtf8String VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME { get; } = "VK_KHR_portability_enumeration";
public static FixedUtf8String VK_MVK_IOS_SURFACE_EXTENSION_NAME { get; } = "VK_MVK_ios_surface";
public static FixedUtf8String VK_EXT_DEBUG_UTILS_EXTENSION_NAME { get; } = "VK_EXT_debug_utils";
public static FixedUtf8String StandardValidationLayerName { get; } = "VK_LAYER_KHRONOS_validation";
diff --git a/src/Veldrid/Veldrid/GraphicsDevice.cs b/src/Veldrid/Veldrid/GraphicsDevice.cs
index ec45e3831..bc0cc8465 100644
--- a/src/Veldrid/Veldrid/GraphicsDevice.cs
+++ b/src/Veldrid/Veldrid/GraphicsDevice.cs
@@ -56,6 +56,7 @@ public unsafe class GraphicsDevice : IDisposable
private const int SharedCommandPoolCount = 4;
private VkDescriptorPoolManager _descriptorPoolManager;
private bool _standardValidationSupported;
+ private bool _isPortabilitySubset = OperatingSystem.IsMacOS();
private bool _standardClipYDirection;
private vkGetBufferMemoryRequirements2_t _getBufferMemoryRequirements2;
private vkGetImageMemoryRequirements2_t _getImageMemoryRequirements2;
@@ -678,6 +679,29 @@ public VkSampleCountFlags GetSampleCountLimit(VkFormat format, bool depthFormat)
return VkSampleCountFlags.Count1;
}
+ ///
+ /// Gets the maximum image extent for the given .
+ ///
+ /// The image type.
+ /// The format to query.
+ /// The usage flags.
+ /// The creation flags.
+ /// The tiling options.
+ /// A struct representing the maximum width, height, and depth that a of that
+ /// format can be created with.
+ public VkExtent3D GetImageFormatMaxExtent(VkImageType type, VkFormat format, VkImageUsageFlags usageFlags, VkImageCreateFlags createFlags, VkImageTiling tiling)
+ {
+ vkGetPhysicalDeviceImageFormatProperties(
+ _physicalDevice,
+ format,
+ type,
+ tiling,
+ usageFlags,
+ createFlags,
+ out VkImageFormatProperties formatProperties);
+ return formatProperties.maxExtent;
+ }
+
///
/// Maps a or into a CPU-accessible data region. For Texture resources, this
/// overload maps the first subresource.
@@ -1673,6 +1697,12 @@ private void CreateInstance(bool debug, VulkanDeviceOptions options)
}
}
+ if (availableInstanceExtensions.Contains(CommonStrings.VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME))
+ {
+ _isPortabilitySubset = true;
+ instanceExtensions.Add(CommonStrings.VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
+ }
+
var instanceCI = new VkInstanceCreateInfo
{
pApplicationInfo = &applicationInfo,
@@ -1681,6 +1711,8 @@ private void CreateInstance(bool debug, VulkanDeviceOptions options)
enabledLayerCount = instanceLayers.Count,
ppEnabledLayerNames = (instanceLayers.Count > 0) ? (sbyte**)instanceLayers.Data : null
};
+ if (_isPortabilitySubset)
+ instanceCI.flags = VkInstanceCreateFlags.EnumeratePortabilityKHR;
VkDebugUtilsMessengerCreateInfoEXT debugCallbackCI;
if (debug && debugUtilsExtensionAvailable)
@@ -1818,9 +1850,7 @@ private void CreatePhysicalDevice()
deviceVulkan11Features.uniformAndStorageBuffer16BitAccess != VkBool32.True)
continue;
if (
-#if !OSX
- deviceVulkan12Features.drawIndirectCount != VkBool32.True || //! not supported by metal
-#endif
+ deviceVulkan12Features.drawIndirectCount != VkBool32.True && !_isPortabilitySubset ||
deviceVulkan12Features.descriptorIndexing != VkBool32.True ||
deviceVulkan12Features.descriptorBindingVariableDescriptorCount != VkBool32.True ||
deviceVulkan12Features.runtimeDescriptorArray != VkBool32.True ||
@@ -1966,11 +1996,7 @@ ref _queueFamilyIndices[(int)QueueType.Transfer], ref _queueIndices[(int)QueueTy
var deviceFeatures12 = new VkPhysicalDeviceVulkan12Features
{
-#if OSX
- drawIndirectCount = VkBool32.False, //! not supported by metal
-#else
- drawIndirectCount = VkBool32.True,
-#endif
+ drawIndirectCount = _isPortabilitySubset ? VkBool32.False : VkBool32.True,
descriptorIndexing = VkBool32.True,
descriptorBindingVariableDescriptorCount = VkBool32.True,
descriptorBindingSampledImageUpdateAfterBind = VkBool32.True,
@@ -2025,6 +2051,11 @@ ref _queueFamilyIndices[(int)QueueType.Transfer], ref _queueIndices[(int)QueueTy
requiredInstanceExtensions.Remove(extensionName);
hasDedicatedAllocation = true;
}
+ else if (extensionName == "VK_KHR_portability_subset")
+ {
+ extensionNames.Add((IntPtr)properties[property].extensionName);
+ requiredInstanceExtensions.Remove(extensionName);
+ }
else if (requiredInstanceExtensions.Remove(extensionName))
{
extensionNames.Add((IntPtr)properties[property].extensionName);
diff --git a/src/Veldrid/Veldrid/Swapchain.cs b/src/Veldrid/Veldrid/Swapchain.cs
index 4e544b0fe..699c7762f 100644
--- a/src/Veldrid/Veldrid/Swapchain.cs
+++ b/src/Veldrid/Veldrid/Swapchain.cs
@@ -115,6 +115,14 @@ public bool AcquireNextImage(VkDevice device, VkSemaphore semaphore, VkFence fen
return false;
}
+ //HACK to obey VUID-vkAcquireNextImageKHR-fence-01287 and VUID-vkAcquireNextImageKHR-fence-10066
+ if (vkGetFenceStatus(device, fence) == VkResult.Success)
+ {
+ _gd.WaitForIdle();
+ vkWaitForFences(device, 1, &fence, true, ulong.MaxValue);
+ vkResetFences(device, 1, &fence);
+ }
+
VkResult result = vkAcquireNextImageKHR(
device,
_deviceSwapchain,
diff --git a/src/Veldrid/Veldrid/Veldrid.csproj b/src/Veldrid/Veldrid/Veldrid.csproj
index 6c8be2045..250438bc0 100644
--- a/src/Veldrid/Veldrid/Veldrid.csproj
+++ b/src/Veldrid/Veldrid/Veldrid.csproj
@@ -10,29 +10,8 @@
$(DefineConstants);EXCLUDE_METAL_BACKEND
$(DefineConstants);EXCLUDE_OPENGL_BACKEND
12
- Debug-win;Release-win;Debug-linux;Release-linux;Debug-osx;Release-osx;Debug;Release
-
- $(DefineConstants);DEBUG
-
-
-
- $(DefineConstants);RELEASE
-
-
-
- $(DefineConstants);WINDOWS
-
-
-
- $(DefineConstants);LINUX
-
-
-
- $(DefineConstants);OSX
-
-
diff --git a/src/Veldrid/Veldrid/VkSurfaceUtil.cs b/src/Veldrid/Veldrid/VkSurfaceUtil.cs
index 3300497a0..01182bd9d 100644
--- a/src/Veldrid/Veldrid/VkSurfaceUtil.cs
+++ b/src/Veldrid/Veldrid/VkSurfaceUtil.cs
@@ -145,7 +145,7 @@ private static unsafe VkSurfaceKHR CreateNSViewSurface(GraphicsDevice gd, VkInst
if (hasExtMetalSurface)
{
VkMetalSurfaceCreateInfoEXT surfaceCI = new VkMetalSurfaceCreateInfoEXT();
- //surfaceCI.sType = VkMetalSurfaceCreateInfoEXT.VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT; //! handled by constructor
+ surfaceCI.sType = VkMetalSurfaceCreateInfoEXT.VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
surfaceCI.pLayer = metalLayer.NativePtr.ToPointer();
VkSurfaceKHR surface = new VkSurfaceKHR();
VkResult result = gd.CreateMetalSurfaceEXT(instance, &surfaceCI, null, &surface);