diff --git a/.all-contributorsrc b/.all-contributorsrc
index c998feff45..30ed901ac0 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -445,6 +445,60 @@
"contributions": [
"code"
]
+ },
+ {
+ "login": "dotlogix",
+ "name": "Alexander Schill",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16420200?v=4",
+ "profile": "https://github.com/dotlogix",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "froce",
+ "name": "froce",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8515865?v=4",
+ "profile": "https://github.com/froce",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "fydar",
+ "name": "Anthony Marmont",
+ "avatar_url": "https://avatars.githubusercontent.com/u/19309165?v=4",
+ "profile": "https://anthonymarmont.com/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "MaximilianEmel",
+ "name": "MaximilianEmel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/19846453?v=4",
+ "profile": "https://github.com/MaximilianEmel",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Schossi",
+ "name": "Schossi",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8679168?v=4",
+ "profile": "https://github.com/Schossi",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "ch3mbot",
+ "name": "Dagan Hartmann",
+ "avatar_url": "https://avatars.githubusercontent.com/u/110746303?v=4",
+ "profile": "https://github.com/ch3mbot",
+ "contributions": [
+ "code"
+ ]
}
],
"contributorsPerLine": 7,
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 572f222cd4..9d47b31ae9 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -1,6 +1,6 @@
---
name: Bug report
-about: Create a report to help us improve
+about: Create a bug report to help us improve Stride.
title: ''
labels: 'bug'
assignees: ''
@@ -30,4 +30,4 @@ If applicable, add screenshots to help explain your problem (use GitHub drag & d
If any, please attach here any log or callstack (preferably in a `.txt` file using GitHub drag and drop)
**Additional context**
-Add any other context about the problem here.
\ No newline at end of file
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000000..3fa88f8504
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,14 @@
+blank_issues_enabled: false
+
+contact_links:
+ - name: Stride Docs
+ url: https://github.com/stride3d/stride-docs/issues
+ about: Please report documentation issues in the Stride Docs repository.
+
+ - name: Stride Website
+ url: https://github.com/stride3d/stride-website/issues
+ about: Please report website issues in the Stride Website repository.
+
+ - name: Stride Community Toolkit
+ url: https://github.com/stride3d/stride-community-toolkit/issues
+ about: Please report community toolkit issues in the Stride Community Toolkit repository.
diff --git a/.github/ISSUE_TEMPLATE/documentation_update.md b/.github/ISSUE_TEMPLATE/documentation_update.md
new file mode 100644
index 0000000000..406cb95885
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/documentation_update.md
@@ -0,0 +1,24 @@
+---
+name: Documentation Update
+about: Suggest updates or improvements to XML comments (Stride API), README.md, or other documentation files.
+title: '[Docs] '
+labels: 'area-Doc'
+assignees: ''
+---
+
+**Describe the update or improvement you would like to see**
+A clear and concise description of what you want to change or improve in the documentation.
+
+**Is this related to a specific part of the documentation?**
+Provide the file name(s) and section(s) if applicable (e.g., README.md, XML comments in XYZ.cs).
+
+**Why is this update needed?**
+Explain why this documentation update is important. How will it benefit the community or improve the project?
+
+**Additional context**
+Add any other context or screenshots about the documentation update here.
+
+**Proposed changes**
+If you have a specific change in mind, you can suggest the text or code snippet here.
+
+
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index b16d84ee52..fad8e298e3 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -1,6 +1,6 @@
---
name: Feature request
-about: Suggest an idea for this project
+about: Suggest an idea for this project.
title: ''
labels: 'enhancement'
assignees: ''
@@ -20,11 +20,12 @@ A clear and concise description of any alternative solutions or features you've
Add any other context or screenshots about the feature request here.
Here are some questions that can aid in the description of the feature request:
-- What are the usecases?
-- What kind of options/settings are expected/wanted?
+
+- What are the use cases?
+- What kind of options or settings are expected or wanted?
- What would the (pseudo) code look like?
-- Is the feature affecting behaviour in the editor?
- - if so: how should this look in the editor?
-- Is there a component or datastructure?
-- what kind of documentation is needed or needs to be updated?
+- Does the feature affect behavior in the editor?
+ - If so, how should this look in the editor?
+- Is there a component or data structure involved?
+- What kind of documentation is needed or needs to be updated?
- Should there be an example project?
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 8d1546d51f..476d64e8ed 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,10 +1,8 @@
# PR Details
-
-
-## Description
-
-
+
+
+
## Related Issue
@@ -12,10 +10,6 @@
-## Motivation and Context
-
-
-
## Types of changes
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 0000000000..922d86b37e
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,71 @@
+changelog:
+ exclude:
+ labels:
+ - ignore-for-release
+ authors:
+ - dependabot
+ categories:
+ - title: 💥 Breaking Changes
+ labels:
+ - breaking-change
+ - title: 🎉 New Features
+ labels:
+ - enhancement
+ - new-feature
+ - title: 🞠Bug Fixes
+ labels:
+ - bug-fix
+ - title: 🚀 Performance Improvements
+ labels:
+ - performance
+ - title: 🧠Core
+ labels:
+ - area-Core
+ - title: 🔧 Engineering
+ labels:
+ - engineering
+ - title: 📦 Assets
+ labels:
+ - area-Asset
+ - title: 🔊 Audio
+ labels:
+ - area-Audio
+ - title: 🔨 Build
+ labels:
+ - area-Build
+ - title: 📄 Docs
+ labels:
+ - area-Doc
+ - title: ðŸ› ï¸ GameStudio
+ labels:
+ - area-GameStudio
+ - title: 🎨 Graphics
+ labels:
+ - area-Graphics
+ - title: âŒ¨ï¸ Input
+ labels:
+ - area-Input
+ - title: 🚀 Launcher
+ labels:
+ - area-Launcher
+ - title: âž— Math
+ labels:
+ - area-Math
+ - title: âš™ï¸ Physics
+ labels:
+ - area-Physics
+ - title: 📚 Samples
+ labels:
+ - area-Samples
+ - title: 🔄 Serialization
+ labels:
+ - area-Serialization
+ - title: 🌈 Shaders
+ labels:
+ - area-Shaders
+ - title: ðŸ–¥ï¸ UI
+ labels:
+ - area-UI
+ - title: 💪 Other Changes
+ labels:
+ - "*"
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000000..b411793fda
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1 @@
+As a [.NET Foundation](https://www.dotnetfoundation.org/) project, Stride has adopted the code of conduct defined by the Contributor Covenant to clarify the expected behavior within our community. For more information, please see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
diff --git a/README.md b/README.md
index 8764550863..2e4cdb802c 100644
--- a/README.md
+++ b/README.md
@@ -22,16 +22,14 @@ Stride comes with an editor that allows you to create and manage the content of
To learn more about Stride, visit [stride3d.net](https://stride3d.net/).
## Earn money by contributing
-If you are a developer with solid experience in C#, rendering techniques, or game development, we want to hire you! We have allocated funds from supporters on OpenCollective and can pay for work on certain projects. [More info about this here](https://github.com/stride3d/stride/wiki/Bounty).
+If you are a developer with solid experience in C#, rendering techniques, or game development, we want to hire you! We have allocated funds from supporters on [OpenCollective](https://opencollective.com/stride3d) and can pay for work on certain projects. [More info about this here](https://doc.stride3d.net/latest/en/contributors/engine/bug-bounties.html).
## License and governance
### .NET Foundation
This project is supported by the [.NET Foundation](https://dotnetfoundation.org).
### License
-Stride is covered by the [MIT License](LICENSE.md) unless stated otherwise (i.e. for some files that are copied from other projects).
-You can find the list of third-party projects [here](THIRD%20PARTY.md).
-Contributors need to sign the following [Contribution License Agreement](docs/ContributorLicenseAgreement.md).
+Stride is covered by the [MIT License](LICENSE.md) unless stated otherwise (i.e. for some files that are copied from other projects). You can find the list of third-party projects [here](THIRD%20PARTY.md). Contributors need to sign the following [Contribution License Agreement](https://github.com/dotnet-foundation/.github/blob/main/CLA/dotnetfoundation.yml).
### Code of conduct
Stride being a [.NET Foundation](https://www.dotnetfoundation.org/) project, it has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.
@@ -54,23 +52,23 @@ Ask for help or report issues:
* [Donate to support the project](https://opencollective.com/stride3d/)
* [List of Projects made by users](https://github.com/stride3d/stride/wiki/Community-Projects)
* [Awesome Stride - Huge List of Stride Resources](https://github.com/Doprez/Awesome-Stride)
-* [Localization](docs/localization.md)
+* [Localization](https://doc.stride3d.net/latest/en/contributors/engine/localization.html)
## Building from source
### Prerequisites
1. **Latest** [Git](https://git-scm.com/downloads) **with Large File Support** selected in the setup on the components dialog and for convenience a git UI client like [GitExtensions](https://gitextensions.github.io/).
-2. [DotNet SDK 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
+2. [.NET 8.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
- Run `dotnet --info` in a console or powershell window to see which versions you have installed
3. [Visual Studio 2022](https://www.visualstudio.com/downloads/) with the following workloads:
- - `.NET desktop development` with `.NET Framework 4.7.2 targeting pack`
+ - `.NET desktop development` with `.NET Framework 4.7.2 targeting pack` (should be enabled by default)
- `Desktop development with C++` with
- - `Windows 10 SDK (10.0.18362.0)` (it's currently enabled by default but it might change)
- - `MSVC v143 - VS2022 C++ x64/x86 build tools (v14.30)` or later version (should be enabled by default)
- - `C++/CLI support for v143 build tools (v14.30)` or later version **(not enabled by default)**
- - Optional (to target iOS/Android): `Mobile development with .NET` and `Android SDK setup (API level 27)` individual component, then in Visual Studio go to `Tools > Android > Android SDK Manager` and install `NDK` (version 19+) from `Tools` tab.
-4. **[FBX SDK 2019.0 VS2015](https://www.autodesk.com/developer-network/platform-technologies/fbx-sdk-2019-0)**
+ - `Windows 10 SDK (10.0.18362.0)` or later version (should be enabled by default)
+ - `MSVC v143 - VS2022 C++ x64/x86 build tools (Latest)` (should be enabled by default)
+ - `C++/CLI support for v143 build tools (Latest)` **(not enabled by default)**
+ - Optional (to target iOS/Android): `.NET Multi-paltform App UI development` and `Android SDK setup` individual component (enabled by default), then in Visual Studio go to `Tools > Android > Android SDK Manager` and install `NDK` (version 20.1+) from `Tools` tab.
+ - Optional (to build VSIX package): `Visual Studio extension development`
### Build Stride
@@ -100,7 +98,7 @@ Do note that test solutions might fail but it should not prevent you from buildi
### Contribution Guidelines
-Please check our [Contributing Guidelines](docs/CONTRIBUTING.md).
+Please check our [Contributing Guidelines](https://doc.stride3d.net/latest/en/contributors/index.html).
### Build Status
@@ -190,6 +188,14 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
Parham Gholami 🎨
adrsch 💻
+
+ Alexander Schill 💻
+ froce 💻
+ Anthony Marmont 💻
+ MaximilianEmel 💻
+ Schossi 💻
+ Dagan Hartmann 💻
+
diff --git a/THIRD PARTY.md b/THIRD PARTY.md
index 72f98f6aa5..0b707a3a38 100644
--- a/THIRD PARTY.md
+++ b/THIRD PARTY.md
@@ -29,7 +29,6 @@ Stride uses the following open-source products.
### Linux, iOS, Android
* [Mono Class Libraries](https://github.com/mono/mono/tree/master/mcs/class) (MIT License)
-* [OpenTK](http://www.opentk.com/) (MIT License)
### Android
* [Android.Play.ExpansionLibrary](https://github.com/mattleibow/Android.Play.ExpansionLibrary) (Apache License 2.0)
diff --git a/build/BuildXmlDocumentation.bat b/build/BuildXmlDocumentation.bat
index 984052837d..4e8cb8167f 100644
--- a/build/BuildXmlDocumentation.bat
+++ b/build/BuildXmlDocumentation.bat
@@ -1,3 +1,3 @@
-CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"
-msbuild Stride.build /p:StrideGenerateDoc=true /t:BuildWindows > NUL
+CALL "C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\VsDevCmd.bat"
+msbuild Stride.build /p:StridePublicApi=true /t:BuildWindows > NUL
diff --git a/build/BuildXmlDocumentationVS2015.bat b/build/BuildXmlDocumentationVS2015.bat
deleted file mode 100644
index 75b918c3c7..0000000000
--- a/build/BuildXmlDocumentationVS2015.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-CALL "%VS140COMNTOOLS%VsDevCmd.bat"
-msbuild Stride.build /p:StrideGenerateDoc=true /t:BuildWindows > NUL
-
diff --git a/build/KillMSBuild.bat b/build/KillMSBuild.bat
deleted file mode 100644
index b504c77df7..0000000000
--- a/build/KillMSBuild.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-taskkill /T /F /IM MSBuild.exe
-taskkill /T /F /IM VBCSCompiler.exe
\ No newline at end of file
diff --git a/build/NugetExtractFix.ps1 b/build/NugetExtractFix.ps1
deleted file mode 100644
index acbcc1f29f..0000000000
--- a/build/NugetExtractFix.ps1
+++ /dev/null
@@ -1,3 +0,0 @@
-Get-ChildItem * -recurse | Where-Object { $_.Name -match "%24*" } | Rename-Item -NewName { $_.Name -replace "%24","$" }
-Get-ChildItem * -recurse | Where-Object { $_.Name -match "%40*" } | Rename-Item -NewName { $_.Name -replace "%40","@" }
-Get-ChildItem * -recurse | Where-Object { $_.Name -match "%20*" } | Rename-Item -NewName { $_.Name -replace "%20"," " }
\ No newline at end of file
diff --git a/build/Stride.Editor.Avalonia.slnf b/build/Stride.Editor.Avalonia.slnf
new file mode 100644
index 0000000000..7f9cf92420
--- /dev/null
+++ b/build/Stride.Editor.Avalonia.slnf
@@ -0,0 +1,65 @@
+{
+ "solution": {
+ "path": "Stride.sln",
+ "projects": [
+ "..\\sources\\assets\\Stride.Core.Assets.Quantum\\Stride.Core.Assets.Quantum.csproj",
+ "..\\sources\\assets\\Stride.Core.Assets.Yaml\\Stride.Core.Assets.Yaml.shproj",
+ "..\\sources\\assets\\Stride.Core.Assets\\Stride.Core.Assets.csproj",
+ "..\\sources\\assets\\Stride.Core.Packages\\Stride.Core.Packages.csproj",
+ "..\\sources\\buildengine\\Stride.Core.BuildEngine.Common\\Stride.Core.BuildEngine.Common.csproj",
+ "..\\sources\\core\\Stride.Core.CompilerServices\\Stride.Core.CompilerServices.csproj",
+ "..\\sources\\core\\Stride.Core.Design\\Stride.Core.Design.csproj",
+ "..\\sources\\core\\Stride.Core.IO\\Stride.Core.IO.csproj",
+ "..\\sources\\core\\Stride.Core.Mathematics\\Stride.Core.Mathematics.csproj",
+ "..\\sources\\core\\Stride.Core.MicroThreading\\Stride.Core.MicroThreading.csproj",
+ "..\\sources\\core\\Stride.Core.Reflection\\Stride.Core.Reflection.csproj",
+ "..\\sources\\core\\Stride.Core.Serialization\\Stride.Core.Serialization.csproj",
+ "..\\sources\\core\\Stride.Core.Tasks\\Stride.Core.Tasks.csproj",
+ "..\\sources\\core\\Stride.Core.Translation\\Stride.Core.Translation.csproj",
+ "..\\sources\\core\\Stride.Core.Yaml\\Stride.Core.Yaml.csproj",
+ "..\\sources\\core\\Stride.Core\\Stride.Core.csproj",
+ "..\\sources\\editor\\Stride.Assets.Editor\\Stride.Assets.Editor.csproj",
+ "..\\sources\\editor\\Stride.Assets.Presentation\\Stride.Assets.Presentation.csproj",
+ "..\\sources\\editor\\Stride.Core.Assets.Editor\\Stride.Core.Assets.Editor.csproj",
+ "..\\sources\\editor\\Stride.Core.Assets.Presentation\\Stride.Core.Assets.Presentation.csproj",
+ "..\\sources\\editor\\Stride.Editor\\Stride.Editor.csproj",
+ "..\\sources\\engine\\Stride.Assets.Models\\Stride.Assets.Models.csproj",
+ "..\\sources\\engine\\Stride.Assets\\Stride.Assets.csproj",
+ "..\\sources\\engine\\Stride.Audio\\Stride.Audio.csproj",
+ "..\\sources\\engine\\Stride.Engine\\Stride.Engine.csproj",
+ "..\\sources\\engine\\Stride.Games\\Stride.Games.csproj",
+ "..\\sources\\engine\\Stride.Graphics\\Stride.Graphics.csproj",
+ "..\\sources\\engine\\Stride.Input\\Stride.Input.csproj",
+ "..\\sources\\engine\\Stride.Native\\Stride.Native.csproj",
+ "..\\sources\\engine\\Stride.Navigation\\Stride.Navigation.csproj",
+ "..\\sources\\engine\\Stride.Particles\\Stride.Particles.csproj",
+ "..\\sources\\engine\\Stride.Physics\\Stride.Physics.csproj",
+ "..\\sources\\engine\\Stride.Rendering\\Stride.Rendering.csproj",
+ "..\\sources\\engine\\Stride.Shaders.Compiler\\Stride.Shaders.Compiler.csproj",
+ "..\\sources\\engine\\Stride.Shaders.Parser\\Stride.Shaders.Parser.csproj",
+ "..\\sources\\engine\\Stride.Shaders\\Stride.Shaders.csproj",
+ "..\\sources\\engine\\Stride.Shared\\Refactor\\Stride.Refactor.shproj",
+ "..\\sources\\engine\\Stride.SpriteStudio.Offline\\Stride.SpriteStudio.Offline.csproj",
+ "..\\sources\\engine\\Stride.SpriteStudio.Runtime\\Stride.SpriteStudio.Runtime.csproj",
+ "..\\sources\\engine\\Stride.UI\\Stride.UI.csproj",
+ "..\\sources\\engine\\Stride.Video\\Stride.Video.csproj",
+ "..\\sources\\engine\\Stride.VirtualReality\\Stride.VirtualReality.csproj",
+ "..\\sources\\engine\\Stride\\Stride.csproj",
+ "..\\sources\\presentation\\Stride.Core.Presentation.Quantum\\Stride.Core.Presentation.Quantum.csproj",
+ "..\\sources\\presentation\\Stride.Core.Presentation\\Stride.Core.Presentation.csproj",
+ "..\\sources\\presentation\\Stride.Core.Quantum\\Stride.Core.Quantum.csproj",
+ "..\\sources\\shaders\\Irony\\Irony.csproj",
+ "..\\sources\\shaders\\Stride.Core.Shaders\\Stride.Core.Shaders.csproj",
+ "..\\sources\\shared\\Stride.Core.ShellHelper\\Stride.Core.ShellHelper.shproj",
+ "..\\sources\\tools\\Stride.Core.ProjectTemplating\\Stride.Core.ProjectTemplating.csproj",
+ "..\\sources\\tools\\Stride.Importer.3D\\Stride.Importer.3D.csproj",
+ "..\\sources\\tools\\Stride.Importer.Common\\Stride.Importer.Common.csproj",
+ "..\\sources\\tools\\Stride.TextureConverter\\Stride.TextureConverter.csproj",
+ "..\\sources\\xplat-editor\\Stride.Assets.Editor.Avalonia\\Stride.Assets.Editor.Avalonia.csproj",
+ "..\\sources\\xplat-editor\\Stride.Core.Presentation.Avalonia\\Stride.Core.Presentation.Avalonia.csproj",
+ "..\\sources\\xplat-editor\\Stride.Editor.Avalonia\\Stride.Editor.Avalonia.csproj",
+ "..\\sources\\xplat-editor\\Stride.GameStudio.Avalonia.Desktop\\Stride.GameStudio.Avalonia.Desktop.csproj",
+ "..\\sources\\xplat-editor\\Stride.GameStudio.Avalonia\\Stride.GameStudio.Avalonia.csproj"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/build/Stride.Launcher.Build.props b/build/Stride.Launcher.Build.props
index f0c65ea4ad..7075c0439d 100644
--- a/build/Stride.Launcher.Build.props
+++ b/build/Stride.Launcher.Build.props
@@ -6,6 +6,6 @@
Windows
- net8.0-windows7.0
+ net8.0-windows
diff --git a/build/Stride.Xplat.Avalonia.slnf b/build/Stride.Xplat.Avalonia.slnf
new file mode 100644
index 0000000000..2504d5533a
--- /dev/null
+++ b/build/Stride.Xplat.Avalonia.slnf
@@ -0,0 +1,87 @@
+{
+ "solution": {
+ "path": "Stride.sln",
+ "projects": [
+ "..\\sources\\assets\\Stride.Core.Assets.CompilerApp\\Stride.Core.Assets.CompilerApp.csproj",
+ "..\\sources\\assets\\Stride.Core.Assets.Quantum\\Stride.Core.Assets.Quantum.csproj",
+ "..\\sources\\assets\\Stride.Core.Assets.Yaml\\Stride.Core.Assets.Yaml.shproj",
+ "..\\sources\\assets\\Stride.Core.Assets\\Stride.Core.Assets.csproj",
+ "..\\sources\\assets\\Stride.Core.Packages\\Stride.Core.Packages.csproj",
+ "..\\sources\\buildengine\\Stride.Core.BuildEngine.Common\\Stride.Core.BuildEngine.Common.csproj",
+ "..\\sources\\core\\Stride.Core.CompilerServices\\Stride.Core.CompilerServices.csproj",
+ "..\\sources\\core\\Stride.Core.Design\\Stride.Core.Design.csproj",
+ "..\\sources\\core\\Stride.Core.IO\\Stride.Core.IO.csproj",
+ "..\\sources\\core\\Stride.Core.Mathematics\\Stride.Core.Mathematics.csproj",
+ "..\\sources\\core\\Stride.Core.MicroThreading\\Stride.Core.MicroThreading.csproj",
+ "..\\sources\\core\\Stride.Core.Reflection\\Stride.Core.Reflection.csproj",
+ "..\\sources\\core\\Stride.Core.Serialization\\Stride.Core.Serialization.csproj",
+ "..\\sources\\core\\Stride.Core.Tasks\\Stride.Core.Tasks.csproj",
+ "..\\sources\\core\\Stride.Core.Translation\\Stride.Core.Translation.csproj",
+ "..\\sources\\core\\Stride.Core.Yaml\\Stride.Core.Yaml.csproj",
+ "..\\sources\\core\\Stride.Core\\Stride.Core.csproj",
+ "..\\sources\\editor\\Stride.Assets.Editor\\Stride.Assets.Editor.csproj",
+ "..\\sources\\editor\\Stride.Assets.Presentation.Wpf\\Stride.Assets.Presentation.Wpf.csproj",
+ "..\\sources\\editor\\Stride.Assets.Presentation\\Stride.Assets.Presentation.csproj",
+ "..\\sources\\editor\\Stride.Core.Assets.Editor.Wpf\\Stride.Core.Assets.Editor.Wpf.csproj",
+ "..\\sources\\editor\\Stride.Core.Assets.Editor\\Stride.Core.Assets.Editor.csproj",
+ "..\\sources\\editor\\Stride.Core.Assets.Presentation\\Stride.Core.Assets.Presentation.csproj",
+ "..\\sources\\editor\\Stride.Core.MostRecentlyUsedFiles\\Stride.Core.MostRecentlyUsedFiles.shproj",
+ "..\\sources\\editor\\Stride.Editor.CrashReport\\Stride.Editor.CrashReport.shproj",
+ "..\\sources\\editor\\Stride.Editor.Wpf\\Stride.Editor.Wpf.csproj",
+ "..\\sources\\editor\\Stride.Editor\\Stride.Editor.csproj",
+ "..\\sources\\editor\\Stride.GameStudio\\Stride.GameStudio.csproj",
+ "..\\sources\\editor\\Stride.PrivacyPolicy\\Stride.PrivacyPolicy.shproj",
+ "..\\sources\\editor\\Stride.Samples.Templates\\Stride.Samples.Templates.csproj",
+ "..\\sources\\engine\\Stride.Assets.Models\\Stride.Assets.Models.csproj",
+ "..\\sources\\engine\\Stride.Assets\\Stride.Assets.csproj",
+ "..\\sources\\engine\\Stride.Audio\\Stride.Audio.csproj",
+ "..\\sources\\engine\\Stride.Debugger\\Stride.Debugger.csproj",
+ "..\\sources\\engine\\Stride.Engine\\Stride.Engine.csproj",
+ "..\\sources\\engine\\Stride.Games\\Stride.Games.csproj",
+ "..\\sources\\engine\\Stride.Graphics\\Stride.Graphics.csproj",
+ "..\\sources\\engine\\Stride.Input\\Stride.Input.csproj",
+ "..\\sources\\engine\\Stride.Native\\Stride.Native.csproj",
+ "..\\sources\\engine\\Stride.Navigation\\Stride.Navigation.csproj",
+ "..\\sources\\engine\\Stride.Particles\\Stride.Particles.csproj",
+ "..\\sources\\engine\\Stride.Physics\\Stride.Physics.csproj",
+ "..\\sources\\engine\\Stride.Rendering\\Stride.Rendering.csproj",
+ "..\\sources\\engine\\Stride.Shaders.Compiler\\Stride.Shaders.Compiler.csproj",
+ "..\\sources\\engine\\Stride.Shaders.Parser\\Stride.Shaders.Parser.csproj",
+ "..\\sources\\engine\\Stride.Shaders\\Stride.Shaders.csproj",
+ "..\\sources\\engine\\Stride.Shared\\Refactor\\Stride.Refactor.shproj",
+ "..\\sources\\engine\\Stride.SpriteStudio.Offline\\Stride.SpriteStudio.Offline.csproj",
+ "..\\sources\\engine\\Stride.SpriteStudio.Runtime\\Stride.SpriteStudio.Runtime.csproj",
+ "..\\sources\\engine\\Stride.UI\\Stride.UI.csproj",
+ "..\\sources\\engine\\Stride.Video\\Stride.Video.csproj",
+ "..\\sources\\engine\\Stride.VirtualReality\\Stride.VirtualReality.csproj",
+ "..\\sources\\engine\\Stride.Voxels\\Stride.Voxels.csproj",
+ "..\\sources\\engine\\Stride\\Stride.csproj",
+ "..\\sources\\presentation\\Stride.Core.Presentation.Quantum\\Stride.Core.Presentation.Quantum.csproj",
+ "..\\sources\\presentation\\Stride.Core.Presentation.Wpf.Dialogs\\Stride.Core.Presentation.Wpf.Dialogs.csproj",
+ "..\\sources\\presentation\\Stride.Core.Presentation.Wpf.Graph\\Stride.Core.Presentation.Wpf.Graph.csproj",
+ "..\\sources\\presentation\\Stride.Core.Presentation.Wpf\\Stride.Core.Presentation.Wpf.csproj",
+ "..\\sources\\presentation\\Stride.Core.Presentation\\Stride.Core.Presentation.csproj",
+ "..\\sources\\presentation\\Stride.Core.Quantum\\Stride.Core.Quantum.csproj",
+ "..\\sources\\presentation\\Stride.Core.Translation.Presentation.Wpf\\Stride.Core.Translation.Presentation.Wpf.csproj",
+ "..\\sources\\shaders\\Irony\\Irony.csproj",
+ "..\\sources\\shaders\\Stride.Core.Shaders\\Stride.Core.Shaders.csproj",
+ "..\\sources\\shared\\Stride.Core.ShellHelper\\Stride.Core.ShellHelper.shproj",
+ "..\\sources\\shared\\Stride.NuGetResolver.Targets\\Stride.NuGetResolver.Targets.shproj",
+ "..\\sources\\shared\\Stride.NuGetResolver.UI\\Stride.NuGetResolver.UI.csproj",
+ "..\\sources\\shared\\Stride.NuGetResolver\\Stride.NuGetResolver.csproj",
+ "..\\sources\\tools\\Stride.ConnectionRouter\\Stride.ConnectionRouter.csproj",
+ "..\\sources\\tools\\Stride.Core.ProjectTemplating\\Stride.Core.ProjectTemplating.csproj",
+ "..\\sources\\tools\\Stride.EffectCompilerServer\\Stride.EffectCompilerServer.csproj",
+ "..\\sources\\tools\\Stride.Graphics.RenderDocPlugin\\Stride.Graphics.RenderDocPlugin.csproj",
+ "..\\sources\\tools\\Stride.Importer.3D\\Stride.Importer.3D.csproj",
+ "..\\sources\\tools\\Stride.Importer.Common\\Stride.Importer.Common.csproj",
+ "..\\sources\\tools\\Stride.PackageInstall\\Stride.PackageInstall.csproj",
+ "..\\sources\\tools\\Stride.TextureConverter\\Stride.TextureConverter.csproj",
+ "..\\sources\\xplat-editor\\Stride.Assets.Editor.Avalonia\\Stride.Assets.Editor.Avalonia.csproj",
+ "..\\sources\\xplat-editor\\Stride.Core.Presentation.Avalonia\\Stride.Core.Presentation.Avalonia.csproj",
+ "..\\sources\\xplat-editor\\Stride.Editor.Avalonia\\Stride.Editor.Avalonia.csproj",
+ "..\\sources\\xplat-editor\\Stride.GameStudio.Avalonia.Desktop\\Stride.GameStudio.Avalonia.Desktop.csproj",
+ "..\\sources\\xplat-editor\\Stride.GameStudio.Avalonia\\Stride.GameStudio.Avalonia.csproj"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/build/Stride.build b/build/Stride.build
index 7e7180daa9..ac4e9c600f 100644
--- a/build/Stride.build
+++ b/build/Stride.build
@@ -17,7 +17,9 @@ Example of use:
$(MSBuildThisFileDirectory).nuget\NuGet.exe
2.4.1
https://api.nuget.org/v3/index.json
- $(MSBuildProgramFiles32)\Caphyon\Advanced Installer 19.4\bin\x86\AdvancedInstaller.com
+ $(MSBuildProgramFiles32)\Caphyon\Advanced Installer 22.0\bin\x86\AdvancedInstaller.com
+ $(MSBuildThisFileDirectory)advancedinstaller-signed.aic
+ $(MSBuildThisFileDirectory)advancedinstaller-unsigned.aic
true
@@ -43,7 +45,10 @@ Example of use:
-
+
+
+
+
-
+
+
@@ -150,6 +156,17 @@ Example of use:
+
+
+ $(StrideSolution).Editor.Avalonia
+ Linux
+
+
+
+
+
+
+
@@ -312,7 +329,10 @@ Example of use:
-
+
+
+
+
-
+
+
+
@@ -329,7 +351,8 @@ Example of use:
Package Installer: launcher-prerequisites.exe
-->
-
+
+
-
+
+
+
+
diff --git a/build/Stride.sln b/build/Stride.sln
index 76f66fb505..b5bf60bf20 100644
--- a/build/Stride.sln
+++ b/build/Stride.sln
@@ -90,8 +90,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Input.Tests.Windows"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Tests", "..\sources\core\Stride.Core.Tests\Stride.Core.Tests.csproj", "{5AA408BA-E766-453E-B661-E3D7EC46E2A6}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Stride.Importer.FBX", "..\sources\tools\Stride.Importer.FBX\Stride.Importer.FBX.vcxproj", "{0467D515-FD66-4B8A-A128-CB642C2ED03F}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Shaders", "..\sources\shaders\Stride.Core.Shaders\Stride.Core.Shaders.csproj", "{F2D52EDB-BC17-4243-B06D-33CD20F87A7F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Presentation.Wpf", "..\sources\presentation\Stride.Core.Presentation.Wpf\Stride.Core.Presentation.Wpf.csproj", "{47AFCC2E-E9F0-47D6-9D75-9E646546A92B}"
@@ -148,7 +146,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Assets.Tests",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Assets", "..\sources\engine\Stride.Assets\Stride.Assets.csproj", "{39AE9C77-E94B-404F-8768-B6261B3C1E0E}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Assets.Editor", "..\sources\editor\Stride.Core.Assets.Editor\Stride.Core.Assets.Editor.csproj", "{5863574D-7A55-49BC-8E65-BABB74D8E66E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Assets.Editor.Wpf", "..\sources\editor\Stride.Core.Assets.Editor.Wpf\Stride.Core.Assets.Editor.Wpf.csproj", "{5863574D-7A55-49BC-8E65-BABB74D8E66E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Assets.CompilerApp", "..\sources\assets\Stride.Core.Assets.CompilerApp\Stride.Core.Assets.CompilerApp.csproj", "{50D1A3BB-4B41-4EF5-8D2F-3618A3B6C698}"
EndProject
@@ -164,7 +162,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.UI", "..\sources\eng
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.UI.Tests.Windows", "..\sources\engine\Stride.UI.Tests\Stride.UI.Tests.Windows.csproj", "{E7B1B17F-D04B-4978-B504-A6BB3EE846C9}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Editor", "..\sources\editor\Stride.Editor\Stride.Editor.csproj", "{16E02D45-5530-4617-97DC-BC3BDF77DE2C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Editor.Wpf", "..\sources\editor\Stride.Editor.Wpf\Stride.Editor.Wpf.csproj", "{16E02D45-5530-4617-97DC-BC3BDF77DE2C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.GameStudio.Tests", "..\sources\editor\Stride.GameStudio.Tests\Stride.GameStudio.Tests.csproj", "{0EA748AF-E1DC-4788-BA50-8BABD56F220C}"
EndProject
@@ -176,7 +174,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.StorageTool", "..\so
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.ProjectTemplating", "..\sources\tools\Stride.Core.ProjectTemplating\Stride.Core.ProjectTemplating.csproj", "{2E2382F7-9576-49F0-AE43-93AFD7DB2368}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Assets.Presentation", "..\sources\editor\Stride.Assets.Presentation\Stride.Assets.Presentation.csproj", "{550C1B7C-B7AD-46DF-ACF3-C36AEF35D5FF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Assets.Presentation.Wpf", "..\sources\editor\Stride.Assets.Presentation.Wpf\Stride.Assets.Presentation.Wpf.csproj", "{550C1B7C-B7AD-46DF-ACF3-C36AEF35D5FF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.ProjectTemplating.Tests", "..\sources\tools\Stride.Core.ProjectTemplating.Tests\Stride.Core.ProjectTemplating.Tests.csproj", "{862C7C39-8E2B-4F18-88E9-ACD6EDF818CD}"
EndProject
@@ -186,7 +184,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Design.Tests",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Physics", "..\sources\engine\Stride.Physics\Stride.Physics.csproj", "{DD592516-B341-40FE-9100-1B0FA784A060}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Presentation.Dialogs", "..\sources\presentation\Stride.Core.Presentation.Dialogs\Stride.Core.Presentation.Dialogs.csproj", "{4FAC003A-2532-42F3-AED7-A296D1A1615E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Presentation.Wpf.Dialogs", "..\sources\presentation\Stride.Core.Presentation.Wpf.Dialogs\Stride.Core.Presentation.Wpf.Dialogs.csproj", "{4FAC003A-2532-42F3-AED7-A296D1A1615E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Graphics.RenderDocPlugin", "..\sources\tools\Stride.Graphics.RenderDocPlugin\Stride.Graphics.RenderDocPlugin.csproj", "{FDF801D9-90CC-4CBD-9F53-7F32F7EDF4F1}"
EndProject
@@ -228,7 +226,7 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Stride.Core.ShellHelper", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Packages", "..\sources\assets\Stride.Core.Packages\Stride.Core.Packages.csproj", "{ACD2C831-BDA2-4512-B4CC-75E8E1804F73}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Presentation.Graph", "..\sources\presentation\Stride.Core.Presentation.Graph\Stride.Core.Presentation.Graph.csproj", "{EFD2472E-B0E1-442A-9057-BBEA2517064B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Presentation.Wpf.Graph", "..\sources\presentation\Stride.Core.Presentation.Wpf.Graph\Stride.Core.Presentation.Wpf.Graph.csproj", "{EFD2472E-B0E1-442A-9057-BBEA2517064B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Assets.Editor.Tests", "..\sources\editor\Stride.Core.Assets.Editor.Tests\Stride.Core.Assets.Editor.Tests.csproj", "{25F98E38-0249-45BC-B2ED-7899297B9CF6}"
EndProject
@@ -264,7 +262,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Tasks", "..\sou
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Translation", "..\sources\core\Stride.Core.Translation\Stride.Core.Translation.csproj", "{6A7B231E-36AA-4647-8C1A-FB1540ABC813}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Translation.Presentation", "..\sources\presentation\Stride.Core.Translation.Presentation\Stride.Core.Translation.Presentation.csproj", "{B686C194-D71D-4FF0-8B4F-F53AFBCD962F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Translation.Presentation.Wpf", "..\sources\presentation\Stride.Core.Translation.Presentation.Wpf\Stride.Core.Translation.Presentation.Wpf.csproj", "{B686C194-D71D-4FF0-8B4F-F53AFBCD962F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Translation.Extractor", "..\sources\tools\Stride.Core.Translation.Extractor\Stride.Core.Translation.Extractor.csproj", "{164A5B9A-E684-4B3F-9EF4-B7765FC0A8A1}"
EndProject
@@ -312,8 +310,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "xunit.runner.stride", "..\s
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Engine.NoAssets.Tests.Windows", "..\sources\engine\Stride.Engine.NoAssets.Tests\Stride.Engine.NoAssets.Tests.Windows.csproj", "{1C94168A-3C0D-4C6B-883B-91627D2EF3A1}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Importer.Assimp", "..\sources\tools\Stride.Importer.Assimp\Stride.Importer.Assimp.csproj", "{967BA05D-4AC4-4848-AEFD-894EF2309E4D}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Importer.Common", "..\sources\tools\Stride.Importer.Common\Stride.Importer.Common.csproj", "{806AA078-6070-4BB6-B05B-6EE6B21B1CDE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.CompilerServices", "..\sources\core\Stride.Core.CompilerServices\Stride.Core.CompilerServices.csproj", "{D62BBD65-AB1C-41C7-8EC3-88949993C71E}"
@@ -332,12 +328,40 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.NuGetResolver", "..\
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NuGetResolver", "NuGetResolver", "{158087CF-AF74-44E9-AA20-A6AEB1E398A9}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Stride.Core.Presentation", "..\sources\presentation\Stride.Core.Presentation\Stride.Core.Presentation.csproj", "{0C63EF8B-26F9-4511-9FC5-7431DE9657D6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Presentation", "..\sources\presentation\Stride.Core.Presentation\Stride.Core.Presentation.csproj", "{0C63EF8B-26F9-4511-9FC5-7431DE9657D6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Importer.3D", "..\sources\tools\Stride.Importer.3D\Stride.Importer.3D.csproj", "{66EFFDE4-24F0-4E57-9618-0F5577E20A1E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XX-Editor", "XX-Editor", "{BD3F1AB2-28DA-4C23-B819-B5873C74E962}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Presentation.Avalonia", "..\sources\xplat-editor\Stride.Core.Presentation.Avalonia\Stride.Core.Presentation.Avalonia.csproj", "{4E143833-EFAA-4C69-9427-0083C9AB922F}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.GameStudio.Avalonia", "..\sources\xplat-editor\Stride.GameStudio.Avalonia\Stride.GameStudio.Avalonia.csproj", "{FBD0417E-94F5-433A-967C-997F66AAA9BB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.GameStudio.Avalonia.Desktop", "..\sources\xplat-editor\Stride.GameStudio.Avalonia.Desktop\Stride.GameStudio.Avalonia.Desktop.csproj", "{19838BC4-E889-422B-B234-B94A3996A4AA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Assets.Editor", "..\sources\editor\Stride.Core.Assets.Editor\Stride.Core.Assets.Editor.csproj", "{736BE0DA-CA67-43A4-A31A-A485022E81E9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Core.Assets.Presentation", "..\sources\editor\Stride.Core.Assets.Presentation\Stride.Core.Assets.Presentation.csproj", "{C85BE53E-C890-4843-A7B8-8AFEEB7E5787}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Assets.Presentation", "..\sources\editor\Stride.Assets.Presentation\Stride.Assets.Presentation.csproj", "{BB6F37DE-40E5-4AC6-B599-358D99EFD493}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wpf", "Wpf", "{E9ABC6BF-8869-4827-A41F-A9CD1CCE7248}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wpf", "Wpf", "{C075170E-2DCB-41BE-9106-19923F655AA1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Assets.Editor", "..\sources\editor\Stride.Assets.Editor\Stride.Assets.Editor.csproj", "{B7FD8293-7F32-46FF-AAF6-36D2C594760D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Assets.Editor.Avalonia", "..\sources\xplat-editor\Stride.Assets.Editor.Avalonia\Stride.Assets.Editor.Avalonia.csproj", "{6F5A1D7F-15A0-4439-86AE-7102478DAA8B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Editor", "..\sources\editor\Stride.Editor\Stride.Editor.csproj", "{CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stride.Editor.Avalonia", "..\sources\xplat-editor\Stride.Editor.Avalonia\Stride.Editor.Avalonia.csproj", "{2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{358506E6-D2AE-4678-A434-C25F09417858}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{0CEFA54A-2AF7-4F86-8AA0-79701FB17090}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -409,16 +433,6 @@ Global
{5AA408BA-E766-453E-B661-E3D7EC46E2A6}.Release|Mixed Platforms.Build.0 = Debug|Any CPU
{5AA408BA-E766-453E-B661-E3D7EC46E2A6}.Release|Win32.ActiveCfg = Debug|Any CPU
{5AA408BA-E766-453E-B661-E3D7EC46E2A6}.Release|Win32.Build.0 = Debug|Any CPU
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Debug|Any CPU.ActiveCfg = Debug|Win32
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Debug|Mixed Platforms.Build.0 = Debug|x64
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Debug|Win32.ActiveCfg = Debug|Win32
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Debug|Win32.Build.0 = Debug|Win32
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Release|Any CPU.ActiveCfg = Release|Win32
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Release|Mixed Platforms.ActiveCfg = Release|x64
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Release|Mixed Platforms.Build.0 = Release|x64
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Release|Win32.ActiveCfg = Release|Win32
- {0467D515-FD66-4B8A-A128-CB642C2ED03F}.Release|Win32.Build.0 = Release|Win32
{F2D52EDB-BC17-4243-B06D-33CD20F87A7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2D52EDB-BC17-4243-B06D-33CD20F87A7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2D52EDB-BC17-4243-B06D-33CD20F87A7F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -1389,18 +1403,6 @@ Global
{1C94168A-3C0D-4C6B-883B-91627D2EF3A1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1C94168A-3C0D-4C6B-883B-91627D2EF3A1}.Release|Win32.ActiveCfg = Release|Any CPU
{1C94168A-3C0D-4C6B-883B-91627D2EF3A1}.Release|Win32.Build.0 = Release|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Debug|Win32.Build.0 = Debug|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Release|Any CPU.Build.0 = Release|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Release|Win32.ActiveCfg = Release|Any CPU
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D}.Release|Win32.Build.0 = Release|Any CPU
{806AA078-6070-4BB6-B05B-6EE6B21B1CDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{806AA078-6070-4BB6-B05B-6EE6B21B1CDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{806AA078-6070-4BB6-B05B-6EE6B21B1CDE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -1497,6 +1499,18 @@ Global
{0C63EF8B-26F9-4511-9FC5-7431DE9657D6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0C63EF8B-26F9-4511-9FC5-7431DE9657D6}.Release|Win32.ActiveCfg = Release|Any CPU
{0C63EF8B-26F9-4511-9FC5-7431DE9657D6}.Release|Win32.Build.0 = Release|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Debug|Win32.Build.0 = Debug|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Release|Win32.ActiveCfg = Release|Any CPU
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E}.Release|Win32.Build.0 = Release|Any CPU
{4E143833-EFAA-4C69-9427-0083C9AB922F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E143833-EFAA-4C69-9427-0083C9AB922F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4E143833-EFAA-4C69-9427-0083C9AB922F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -1509,6 +1523,114 @@ Global
{4E143833-EFAA-4C69-9427-0083C9AB922F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{4E143833-EFAA-4C69-9427-0083C9AB922F}.Release|Win32.ActiveCfg = Release|Any CPU
{4E143833-EFAA-4C69-9427-0083C9AB922F}.Release|Win32.Build.0 = Release|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Debug|Win32.Build.0 = Debug|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Release|Win32.ActiveCfg = Release|Any CPU
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB}.Release|Win32.Build.0 = Release|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Debug|Win32.Build.0 = Debug|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Release|Win32.ActiveCfg = Release|Any CPU
+ {19838BC4-E889-422B-B234-B94A3996A4AA}.Release|Win32.Build.0 = Release|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Debug|Win32.Build.0 = Debug|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Release|Win32.ActiveCfg = Release|Any CPU
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9}.Release|Win32.Build.0 = Release|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Debug|Win32.Build.0 = Debug|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Release|Win32.ActiveCfg = Release|Any CPU
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787}.Release|Win32.Build.0 = Release|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Debug|Win32.Build.0 = Debug|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Release|Win32.ActiveCfg = Release|Any CPU
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493}.Release|Win32.Build.0 = Release|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Debug|Win32.Build.0 = Debug|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Release|Win32.ActiveCfg = Release|Any CPU
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D}.Release|Win32.Build.0 = Release|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Debug|Win32.Build.0 = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Release|Any CPU.ActiveCfg = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Release|Any CPU.Build.0 = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Release|Mixed Platforms.Build.0 = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Release|Win32.ActiveCfg = Debug|Any CPU
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B}.Release|Win32.Build.0 = Debug|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Debug|Win32.Build.0 = Debug|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Release|Win32.ActiveCfg = Release|Any CPU
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14}.Release|Win32.Build.0 = Release|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Debug|Win32.Build.0 = Debug|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Release|Win32.ActiveCfg = Release|Any CPU
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB}.Release|Win32.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1518,15 +1640,14 @@ Global
{6F473FA6-4F8B-4FBA-AE33-EE5AF997D50C} = {1AE1AC60-5D2F-4CA7-AE20-888F44551185}
{4A15BAAD-AA37-4754-A2BF-8D4049211E36} = {1AE1AC60-5D2F-4CA7-AE20-888F44551185}
{1AC70118-C90F-4EC6-9D8B-C628BDF900F7} = {4C142567-C42B-40F5-B092-798882190209}
- {2FCA2D8B-B10F-4DCA-9847-4221F74BA586} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
+ {2FCA2D8B-B10F-4DCA-9847-4221F74BA586} = {C075170E-2DCB-41BE-9106-19923F655AA1}
{C121A566-555E-42B9-9B0A-1696529A9088} = {4C142567-C42B-40F5-B092-798882190209}
{FB06C76A-6BB7-40BE-9AFA-FEC13B045FB5} = {4C142567-C42B-40F5-B092-798882190209}
{A8F8D125-7A22-489F-99BC-9A02F545A17F} = {A7ED9F01-7D78-4381-90A6-D50E51C17250}
{01700344-CF44-482C-BEBC-60213B0F844C} = {A7ED9F01-7D78-4381-90A6-D50E51C17250}
{5AA408BA-E766-453E-B661-E3D7EC46E2A6} = {22ADD4CD-092E-4ADC-A21E-64CF42230152}
- {0467D515-FD66-4B8A-A128-CB642C2ED03F} = {6F473FA6-4F8B-4FBA-AE33-EE5AF997D50C}
{F2D52EDB-BC17-4243-B06D-33CD20F87A7F} = {10D145AF-C8AE-428F-A80F-CA1B591D0DB2}
- {47AFCC2E-E9F0-47D6-9D75-9E646546A92B} = {75A820AB-0F21-40F2-9448-5D7F495B97A0}
+ {47AFCC2E-E9F0-47D6-9D75-9E646546A92B} = {E9ABC6BF-8869-4827-A41F-A9CD1CCE7248}
{C223FCD7-CDCC-4943-9E11-9C2CC8FA9FC4} = {52AE329E-B588-40D0-A578-8D0DB1BD83E5}
{D81F5C91-D7DB-46E5-BC99-49488FB6814C} = {10D145AF-C8AE-428F-A80F-CA1B591D0DB2}
{42780CBD-3FE7-48E3-BD5B-59945EA20137} = {4C142567-C42B-40F5-B092-798882190209}
@@ -1553,7 +1674,7 @@ Global
{1E54A9A2-4439-4444-AE57-6D2ED3C0DC47} = {A2A4342E-024B-4063-B10C-1DA96CA3046D}
{3E7B5D96-CF71-41EE-8CF0-70D090873390} = {9D5D9861-AE68-429C-8B21-2263F9DA07A1}
{39AE9C77-E94B-404F-8768-B6261B3C1E0E} = {F765035E-F4F4-4CFA-BA02-755DC677AA97}
- {5863574D-7A55-49BC-8E65-BABB74D8E66E} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
+ {5863574D-7A55-49BC-8E65-BABB74D8E66E} = {C075170E-2DCB-41BE-9106-19923F655AA1}
{50D1A3BB-4B41-4EF5-8D2F-3618A3B6C698} = {A2A4342E-024B-4063-B10C-1DA96CA3046D}
{7DBC5A0B-76F5-4D9E-9798-540DA214099C} = {860946E4-CC77-4FDA-A4FD-3DB2A502A696}
{117BF9F8-D2D9-4D32-9702-251C3E038090} = {A47B451D-3162-410F-BAF7-C650C4B7A4B0}
@@ -1561,18 +1682,18 @@ Global
{49AAA22D-D1C8-4E0F-82E8-F462D5442463} = {52AE329E-B588-40D0-A578-8D0DB1BD83E5}
{BB9DEEEF-F18C-40D8-B016-6434CC71B8C3} = {4C142567-C42B-40F5-B092-798882190209}
{E7B1B17F-D04B-4978-B504-A6BB3EE846C9} = {A7ED9F01-7D78-4381-90A6-D50E51C17250}
- {16E02D45-5530-4617-97DC-BC3BDF77DE2C} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
+ {16E02D45-5530-4617-97DC-BC3BDF77DE2C} = {C075170E-2DCB-41BE-9106-19923F655AA1}
{0EA748AF-E1DC-4788-BA50-8BABD56F220C} = {F5F744B5-803E-4180-B82A-8B1F0BCD6579}
{66581DAD-70AD-4475-AE47-C6C0DF1EC5E2} = {25F10A0B-7259-404C-86BE-FD2363C92F72}
{D002FEB1-00A6-4AB1-A83F-1F253465E64D} = {A7ED9F01-7D78-4381-90A6-D50E51C17250}
{942A5B1D-2B3D-4B30-98DE-336CE93F4F12} = {860946E4-CC77-4FDA-A4FD-3DB2A502A696}
{2E2382F7-9576-49F0-AE43-93AFD7DB2368} = {860946E4-CC77-4FDA-A4FD-3DB2A502A696}
- {550C1B7C-B7AD-46DF-ACF3-C36AEF35D5FF} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
+ {550C1B7C-B7AD-46DF-ACF3-C36AEF35D5FF} = {C075170E-2DCB-41BE-9106-19923F655AA1}
{862C7C39-8E2B-4F18-88E9-ACD6EDF818CD} = {860946E4-CC77-4FDA-A4FD-3DB2A502A696}
{A5DC820B-9554-45B6-9677-6A2F902E7787} = {1AE1AC60-5D2F-4CA7-AE20-888F44551185}
{4D13D69B-C8E8-4675-8198-1BE2785FFB6D} = {B175D318-B4D0-49EA-9AEF-A54ACA2F03DC}
{DD592516-B341-40FE-9100-1B0FA784A060} = {4C142567-C42B-40F5-B092-798882190209}
- {4FAC003A-2532-42F3-AED7-A296D1A1615E} = {75A820AB-0F21-40F2-9448-5D7F495B97A0}
+ {4FAC003A-2532-42F3-AED7-A296D1A1615E} = {E9ABC6BF-8869-4827-A41F-A9CD1CCE7248}
{FDF801D9-90CC-4CBD-9F53-7F32F7EDF4F1} = {860946E4-CC77-4FDA-A4FD-3DB2A502A696}
{73AA8A18-15C4-405B-BBF4-5D41C1CE44AD} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
{77E2FCC0-4CA6-436C-BE6F-9418CB807D45} = {1AE1AC60-5D2F-4CA7-AE20-888F44551185}
@@ -1593,7 +1714,7 @@ Global
{B33E576F-2279-4BFC-A438-D9B84343B56B} = {1AC70118-C90F-4EC6-9D8B-C628BDF900F7}
{3A3CB33C-64D9-4948-86C1-0D86320D23C3} = {1AC70118-C90F-4EC6-9D8B-C628BDF900F7}
{ACD2C831-BDA2-4512-B4CC-75E8E1804F73} = {A2A4342E-024B-4063-B10C-1DA96CA3046D}
- {EFD2472E-B0E1-442A-9057-BBEA2517064B} = {75A820AB-0F21-40F2-9448-5D7F495B97A0}
+ {EFD2472E-B0E1-442A-9057-BBEA2517064B} = {E9ABC6BF-8869-4827-A41F-A9CD1CCE7248}
{25F98E38-0249-45BC-B2ED-7899297B9CF6} = {F5F744B5-803E-4180-B82A-8B1F0BCD6579}
{BF32DE1B-6276-4341-B212-F8862ADBBA7A} = {25F10A0B-7259-404C-86BE-FD2363C92F72}
{16D8043D-C3DB-4868-BFF3-B2EBDF537AAA} = {B175D318-B4D0-49EA-9AEF-A54ACA2F03DC}
@@ -1611,7 +1732,7 @@ Global
{BD176B28-49CD-4FAD-A430-CDBCF1C2E514} = {1AE1AC60-5D2F-4CA7-AE20-888F44551185}
{7C67FF28-1B9E-4F13-8BDA-B833D588BC6A} = {25F10A0B-7259-404C-86BE-FD2363C92F72}
{6A7B231E-36AA-4647-8C1A-FB1540ABC813} = {25F10A0B-7259-404C-86BE-FD2363C92F72}
- {B686C194-D71D-4FF0-8B4F-F53AFBCD962F} = {75A820AB-0F21-40F2-9448-5D7F495B97A0}
+ {B686C194-D71D-4FF0-8B4F-F53AFBCD962F} = {E9ABC6BF-8869-4827-A41F-A9CD1CCE7248}
{164A5B9A-E684-4B3F-9EF4-B7765FC0A8A1} = {1AE1AC60-5D2F-4CA7-AE20-888F44551185}
{B4EABB0D-E495-405C-B7B1-E2A7A3711AF5} = {FC791F56-C1F1-4C41-A193-868D8197F8E2}
{DA355C86-866F-4843-9B4D-63A173C750FB} = {4C142567-C42B-40F5-B092-798882190209}
@@ -1624,7 +1745,6 @@ Global
{66BE41FC-FC52-48D0-9C04-BCE8CC393020} = {4C142567-C42B-40F5-B092-798882190209}
{D5B023BE-010F-44A8-ABF1-DB6F3BCEA392} = {1AE1AC60-5D2F-4CA7-AE20-888F44551185}
{1C94168A-3C0D-4C6B-883B-91627D2EF3A1} = {A7ED9F01-7D78-4381-90A6-D50E51C17250}
- {967BA05D-4AC4-4848-AEFD-894EF2309E4D} = {6F473FA6-4F8B-4FBA-AE33-EE5AF997D50C}
{806AA078-6070-4BB6-B05B-6EE6B21B1CDE} = {6F473FA6-4F8B-4FBA-AE33-EE5AF997D50C}
{D62BBD65-AB1C-41C7-8EC3-88949993C71E} = {2E93E2B5-4500-4E47-9B65-E705218AB578}
{BACD76E5-35D0-4389-9BB9-8743AC4D89DE} = {22ADD4CD-092E-4ADC-A21E-64CF42230152}
@@ -1635,7 +1755,21 @@ Global
{02FD0BDE-4293-414F-97E6-69FF71105420} = {158087CF-AF74-44E9-AA20-A6AEB1E398A9}
{158087CF-AF74-44E9-AA20-A6AEB1E398A9} = {1AE1AC60-5D2F-4CA7-AE20-888F44551185}
{0C63EF8B-26F9-4511-9FC5-7431DE9657D6} = {75A820AB-0F21-40F2-9448-5D7F495B97A0}
+ {66EFFDE4-24F0-4E57-9618-0F5577E20A1E} = {6F473FA6-4F8B-4FBA-AE33-EE5AF997D50C}
{4E143833-EFAA-4C69-9427-0083C9AB922F} = {BD3F1AB2-28DA-4C23-B819-B5873C74E962}
+ {FBD0417E-94F5-433A-967C-997F66AAA9BB} = {BD3F1AB2-28DA-4C23-B819-B5873C74E962}
+ {19838BC4-E889-422B-B234-B94A3996A4AA} = {BD3F1AB2-28DA-4C23-B819-B5873C74E962}
+ {736BE0DA-CA67-43A4-A31A-A485022E81E9} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
+ {C85BE53E-C890-4843-A7B8-8AFEEB7E5787} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
+ {BB6F37DE-40E5-4AC6-B599-358D99EFD493} = {0CEFA54A-2AF7-4F86-8AA0-79701FB17090}
+ {E9ABC6BF-8869-4827-A41F-A9CD1CCE7248} = {75A820AB-0F21-40F2-9448-5D7F495B97A0}
+ {C075170E-2DCB-41BE-9106-19923F655AA1} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
+ {B7FD8293-7F32-46FF-AAF6-36D2C594760D} = {0CEFA54A-2AF7-4F86-8AA0-79701FB17090}
+ {6F5A1D7F-15A0-4439-86AE-7102478DAA8B} = {358506E6-D2AE-4678-A434-C25F09417858}
+ {CC16DE9A-F346-4AE3-9BF0-EE8A4D385B14} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
+ {2C7C4631-CCB2-4BDD-9D9B-7E5ABCCD51EB} = {BD3F1AB2-28DA-4C23-B819-B5873C74E962}
+ {358506E6-D2AE-4678-A434-C25F09417858} = {BD3F1AB2-28DA-4C23-B819-B5873C74E962}
+ {0CEFA54A-2AF7-4F86-8AA0-79701FB17090} = {5D2D3BE8-9910-45CA-8E45-95660DA4C563}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FF877973-604D-4EA7-B5F5-A129961F9EF2}
diff --git a/build/advancedinstaller-signed.aic b/build/advancedinstaller-signed.aic
new file mode 100644
index 0000000000..0bf281bddf
--- /dev/null
+++ b/build/advancedinstaller-signed.aic
@@ -0,0 +1,4 @@
+;aic
+SetSig
+SetAzureKeyVaultSecret %StrideSignClientSecret%
+Rebuild
\ No newline at end of file
diff --git a/build/advancedinstaller-unsigned.aic b/build/advancedinstaller-unsigned.aic
new file mode 100644
index 0000000000..f704c595f0
--- /dev/null
+++ b/build/advancedinstaller-unsigned.aic
@@ -0,0 +1,3 @@
+;aic
+ResetSig
+Rebuild
\ No newline at end of file
diff --git a/build/compile.bat b/build/compile.bat
index c6e314723b..b3dcb8322d 100644
--- a/build/compile.bat
+++ b/build/compile.bat
@@ -89,7 +89,7 @@ rem "_platform_target" is the platform being targeted
:compile
set _option=/nologo /nr:false /m /verbosity:%__BuildVerbosity% /p:Configuration=%__BuildType% /p:Platform="%_platform_target%" /p:StrideSkipUnitTests=%__SkipTestBuild% %Project% /p:DeployExtension=false
-if "%__BuildDoc%" == "1" set _option=%_option% /p:StrideGenerateDoc=true
+if "%__BuildDoc%" == "1" set _option=%_option% /p:StridePublicApi=true
rem Skip Compilation if __SelectedProject was set and does not match what was requested
if "%__SelectedProject%" NEQ "" (
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/project.assets.json b/build/sign/.store/sign/0.9.0-beta.23127.3/project.assets.json
new file mode 100644
index 0000000000..b5d818293d
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/project.assets.json
@@ -0,0 +1,118 @@
+{
+ "version": 3,
+ "targets": {
+ "net8.0/win-x64": {
+ "sign/0.9.0-beta.23127.3": {
+ "type": "package",
+ "tools": {
+ "tools/net6.0/any/Azure.Core.dll": {},
+ "tools/net6.0/any/Azure.Identity.dll": {},
+ "tools/net6.0/any/Azure.Security.KeyVault.Certificates.dll": {},
+ "tools/net6.0/any/Azure.Security.KeyVault.Keys.dll": {},
+ "tools/net6.0/any/AzureSign.Core.dll": {},
+ "tools/net6.0/any/DotnetToolSettings.xml": {},
+ "tools/net6.0/any/Microsoft.Bcl.AsyncInterfaces.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Configuration.Abstractions.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Configuration.Binder.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Configuration.FileExtensions.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Configuration.Json.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Configuration.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.DependencyInjection.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.FileProviders.Abstractions.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.FileProviders.Physical.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.FileSystemGlobbing.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Logging.Abstractions.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Logging.Configuration.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Logging.Console.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Logging.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Options.dll": {},
+ "tools/net6.0/any/Microsoft.Extensions.Primitives.dll": {},
+ "tools/net6.0/any/Microsoft.Identity.Client.Extensions.Msal.dll": {},
+ "tools/net6.0/any/Microsoft.Identity.Client.dll": {},
+ "tools/net6.0/any/Microsoft.IdentityModel.Abstractions.dll": {},
+ "tools/net6.0/any/Newtonsoft.Json.dll": {},
+ "tools/net6.0/any/NuGet.Common.dll": {},
+ "tools/net6.0/any/NuGet.Configuration.dll": {},
+ "tools/net6.0/any/NuGet.Frameworks.dll": {},
+ "tools/net6.0/any/NuGet.Packaging.dll": {},
+ "tools/net6.0/any/NuGet.Protocol.dll": {},
+ "tools/net6.0/any/NuGet.Versioning.dll": {},
+ "tools/net6.0/any/NuGetKeyVaultSignTool.Core.dll": {},
+ "tools/net6.0/any/OpenVsixSignTool.Core.dll": {},
+ "tools/net6.0/any/RSAKeyVaultProvider.dll": {},
+ "tools/net6.0/any/Sign.Core.dll": {},
+ "tools/net6.0/any/System.CommandLine.dll": {},
+ "tools/net6.0/any/System.Formats.Asn1.dll": {},
+ "tools/net6.0/any/System.Memory.Data.dll": {},
+ "tools/net6.0/any/System.Security.Cryptography.Pkcs.dll": {},
+ "tools/net6.0/any/System.Security.Cryptography.ProtectedData.dll": {},
+ "tools/net6.0/any/System.Security.Cryptography.Xml.dll": {},
+ "tools/net6.0/any/System.Text.Encodings.Web.dll": {},
+ "tools/net6.0/any/System.Text.Json.dll": {},
+ "tools/net6.0/any/cs/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/cs/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/cs/sign.resources.dll": {},
+ "tools/net6.0/any/de/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/de/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/de/sign.resources.dll": {},
+ "tools/net6.0/any/es/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/es/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/es/sign.resources.dll": {},
+ "tools/net6.0/any/fr/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/fr/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/fr/sign.resources.dll": {},
+ "tools/net6.0/any/it/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/it/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/it/sign.resources.dll": {},
+ "tools/net6.0/any/ja/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/ja/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/ja/sign.resources.dll": {},
+ "tools/net6.0/any/ko/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/ko/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/ko/sign.resources.dll": {},
+ "tools/net6.0/any/pl/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/pl/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/pl/sign.resources.dll": {},
+ "tools/net6.0/any/pt-BR/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/pt-BR/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/pt-BR/sign.resources.dll": {},
+ "tools/net6.0/any/ru/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/ru/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/ru/sign.resources.dll": {},
+ "tools/net6.0/any/sign.deps.json": {},
+ "tools/net6.0/any/sign.dll": {},
+ "tools/net6.0/any/sign.runtimeconfig.json": {},
+ "tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.AppxPackaging.dll.manifest": {},
+ "tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.AppxSip.dll.manifest": {},
+ "tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.OpcServices.dll.manifest": {},
+ "tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Signing.mssign32.dll.manifest": {},
+ "tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Signing.wintrust.dll.manifest": {},
+ "tools/net6.0/any/tools/SDK/x64/SignTool.exe.manifest": {},
+ "tools/net6.0/any/tools/SDK/x64/appxpackaging.dll": {},
+ "tools/net6.0/any/tools/SDK/x64/appxsip.dll": {},
+ "tools/net6.0/any/tools/SDK/x64/makeappx.exe": {},
+ "tools/net6.0/any/tools/SDK/x64/makepri.exe": {},
+ "tools/net6.0/any/tools/SDK/x64/mssign32.dll": {},
+ "tools/net6.0/any/tools/SDK/x64/opcservices.dll": {},
+ "tools/net6.0/any/tools/SDK/x64/wintrust.dll": {},
+ "tools/net6.0/any/tools/SDK/x64/wintrust.dll.ini": {},
+ "tools/net6.0/any/tools/SDK/x86/mage.exe": {},
+ "tools/net6.0/any/tr/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/tr/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/tr/sign.resources.dll": {},
+ "tools/net6.0/any/zh-Hans/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/zh-Hans/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/zh-Hans/sign.resources.dll": {},
+ "tools/net6.0/any/zh-Hant/Sign.Core.resources.dll": {},
+ "tools/net6.0/any/zh-Hant/System.CommandLine.resources.dll": {},
+ "tools/net6.0/any/zh-Hant/sign.resources.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {},
+ "projectFileDependencyGroups": {}
+}
\ No newline at end of file
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/.nupkg.metadata b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/.nupkg.metadata
new file mode 100644
index 0000000000..1408189faf
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/.nupkg.metadata
@@ -0,0 +1,5 @@
+{
+ "version": 2,
+ "contentHash": "iEfQ64o095nfHm5gt1SX0SQnjB9NCGvHyJCLJISaDaGhveMmvDkx/4I+VrtOKsYKgUKYaO0TERjsqhyU8RIcBw==",
+ "source": null
+}
\ No newline at end of file
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/.signature.p7s b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/.signature.p7s
new file mode 100644
index 0000000000..7c28ee9372
Binary files /dev/null and b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/.signature.p7s differ
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/Icon.png b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/Icon.png
new file mode 100644
index 0000000000..b152ee09fb
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/Icon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3356b59b6d9c24db3a22398c0fb3430724052fe75ae5e8430ee8ede2fb713356
+size 7006
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/LICENSE.txt b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/LICENSE.txt
new file mode 100644
index 0000000000..984713a496
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/LICENSE.txt
@@ -0,0 +1,23 @@
+The MIT License (MIT)
+
+Copyright (c) .NET Foundation and Contributors
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/THIRD-PARTY-NOTICES.txt b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/THIRD-PARTY-NOTICES.txt
new file mode 100644
index 0000000000..aba606b204
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/THIRD-PARTY-NOTICES.txt
@@ -0,0 +1,123 @@
+.NET Core uses third-party libraries or other resources that may be
+distributed under licenses different than the .NET Core software.
+
+Attributions and license notices for test cases originally authored by
+third parties can be found in the respective test directories.
+
+In the event that we accidentally failed to list a required notice, please
+bring it to our attention. Post an issue or email us:
+
+ dotnet@microsoft.com
+
+The attached notices are provided for information only.
+
+License notice for .NET Reference Source
+-------------------------------
+
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Available at https://github.com/microsoft/referencesource/blob/master/LICENSE.txt
+
+
+License notice for Azure SDK for .NET
+-------------------------------
+
+The MIT License (MIT)
+
+Copyright (c) 2015 Microsoft
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Available at https://github.com/Azure/azure-sdk-for-net/blob/main/LICENSE.txt
+
+
+License notice for FiddlerCert
+-------------------------------
+
+The MIT License (MIT)
+
+Copyright (c) 2015 Kevin Jones
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Available at https://github.com/vcsjones/FiddlerCert/blob/main/license.txt
+
+
+License notice for Wyam
+-------------------------------
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Dave Glick
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Available at https://github.com/Wyamio/Wyam/blob/develop/LICENSE
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/sign.0.9.0-beta.23127.3.nupkg.sha512 b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/sign.0.9.0-beta.23127.3.nupkg.sha512
new file mode 100644
index 0000000000..9812473807
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/sign.0.9.0-beta.23127.3.nupkg.sha512
@@ -0,0 +1 @@
+ky9xdM6qMg1jNqmCmRzoIDMHfdrFlweuEu5QIB52zO2HhGvGug0VlEjRs3rsdo0wOFCht4iNMtcoo83dph/2JQ==
\ No newline at end of file
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/sign.nuspec b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/sign.nuspec
new file mode 100644
index 0000000000..3843a497a6
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/sign.nuspec
@@ -0,0 +1,20 @@
+
+
+
+ sign
+ 0.9.0-beta.23127.3
+ Microsoft
+ true
+ MIT
+ https://licenses.nuget.org/MIT
+ Icon.png
+ https://github.com/dotnet/sign
+ Sign CLI
+ © Microsoft Corporation. All rights reserved.
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Core.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Core.dll
new file mode 100644
index 0000000000..940df28f69
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Core.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6d5aa935649e46d76e5dcdd778a1338437f47b9c2d5d05c02135c58382cb9be4
+size 321424
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Identity.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Identity.dll
new file mode 100644
index 0000000000..6c22f387bf
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Identity.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a8afc150917d223c5faee8a6ed1584a4778c2046c929f7a5a09d3a1bc126758
+size 310720
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Security.KeyVault.Certificates.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Security.KeyVault.Certificates.dll
new file mode 100644
index 0000000000..c067eec080
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Security.KeyVault.Certificates.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f28643a0e81c954916fc19b530a0ab4dc8f559d313a1f3e025acc0a7026d6ba5
+size 230304
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Security.KeyVault.Keys.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Security.KeyVault.Keys.dll
new file mode 100644
index 0000000000..b360c47a4c
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Azure.Security.KeyVault.Keys.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db53591f420206f667639935a2811c17660b96a3330e2b1c76ecf40a784b86d5
+size 204152
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/AzureSign.Core.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/AzureSign.Core.dll
new file mode 100644
index 0000000000..320028147d
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/AzureSign.Core.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6275b64d537a08b6f7853ef55fb54ddb44ceb75e3213e3dce841154f75a602d9
+size 39288
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/DotnetToolSettings.xml b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/DotnetToolSettings.xml
new file mode 100644
index 0000000000..f638ecfb00
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/DotnetToolSettings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Bcl.AsyncInterfaces.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Bcl.AsyncInterfaces.dll
new file mode 100644
index 0000000000..a30994d814
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Bcl.AsyncInterfaces.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11c0e8fc6419910ace4f55ddd2330f1373704f996c32ae4336c3f11d589d2c34
+size 14720
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.Abstractions.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.Abstractions.dll
new file mode 100644
index 0000000000..0169c01f33
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.Abstractions.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:893f042b8bea61e3e56091ee6167af61bc38a39d35cb1d0f9b222aae4493146a
+size 29328
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.Binder.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.Binder.dll
new file mode 100644
index 0000000000..f768a03b41
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.Binder.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:59d14c4b98f6ed5b44512667ebaa71afe60f950483b5815d8c7604086445b03a
+size 43152
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll
new file mode 100644
index 0000000000..097ba05f93
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e4df59c4cc9f011e19acceb60d1072659cd23780646cc1fce32c74fe62d635c9
+size 21632
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.FileExtensions.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.FileExtensions.dll
new file mode 100644
index 0000000000..b5b50254ac
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.FileExtensions.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:88d03448574da6e677994939beb887a43c23fdb060f135d9f07db4152c9fcae8
+size 28280
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.Json.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.Json.dll
new file mode 100644
index 0000000000..ee5362a127
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.Json.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02add20d0f0583a04d47baf02c3b32284cfd25903a78742dc15ee41f9022750b
+size 27776
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.dll
new file mode 100644
index 0000000000..27e8514d04
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Configuration.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c301bfcd6a6a2baafd81425be273c7f29afe726ed6b6bed54202aa7376860b2d
+size 41080
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.DependencyInjection.Abstractions.dll
new file mode 100644
index 0000000000..a912e6a602
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.DependencyInjection.Abstractions.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:087813b2f9350b8c2d31e5bc9a5410fab198fadac87bb1269f41de6e6ad7ee62
+size 45200
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.DependencyInjection.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.DependencyInjection.dll
new file mode 100644
index 0000000000..842f567b11
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.DependencyInjection.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8fe8bedbedefe0fab7e68c48f508d486b42258e16c09572886d7293507bdad6
+size 85152
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.FileProviders.Abstractions.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.FileProviders.Abstractions.dll
new file mode 100644
index 0000000000..5ebf795bcf
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.FileProviders.Abstractions.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dfe3b756a0f39c2f67d8aa3dfdd66731da39f2e7f0ad67db06e8ca767f43cf30
+size 23696
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.FileProviders.Physical.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.FileProviders.Physical.dll
new file mode 100644
index 0000000000..01822a9fab
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.FileProviders.Physical.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8d9fb59cc6e16e74c51cdf6cd7595c31234139378dcce1e12400db22b7d6ec22
+size 45184
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.FileSystemGlobbing.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.FileSystemGlobbing.dll
new file mode 100644
index 0000000000..e89b0c95f2
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.FileSystemGlobbing.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb04945d8de802dedef7c75c61c0939c8041f62c48125a906c55e9671c610e85
+size 47224
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.Abstractions.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.Abstractions.dll
new file mode 100644
index 0000000000..e3ef7d0df0
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.Abstractions.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4bf70c7e2aa5ea0090e13817b895339259cc435dd16d8bd32ce4ebd85de4a3c
+size 64120
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.Configuration.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.Configuration.dll
new file mode 100644
index 0000000000..243445658a
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.Configuration.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:90a8b6846771ab397033a38a32bd0834c2655439b3d58a9e1089b8aa3afad705
+size 28280
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.Console.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.Console.dll
new file mode 100644
index 0000000000..0fd42e469d
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.Console.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e7c49147efaca9b5482ea65e9d2dbd41dcda43e380cb5b512a1d085cd98b6c6
+size 59512
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.dll
new file mode 100644
index 0000000000..64d28aa831
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Logging.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6833a9076b9a4bb4195c87cdac7ccf4b99b86d1fc848a08e074d668d1e03530e
+size 48248
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Options.ConfigurationExtensions.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Options.ConfigurationExtensions.dll
new file mode 100644
index 0000000000..f9b99d93bd
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Options.ConfigurationExtensions.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3c227ac499857cc556a02feaa843f2a711521cb324290a6a2b230227e42db48c
+size 24192
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Options.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Options.dll
new file mode 100644
index 0000000000..3c492e382b
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Options.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:792765a31e12260bf7aa7630d10e40dd9f2e140ffb5678237a2055266b478112
+size 61560
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Primitives.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Primitives.dll
new file mode 100644
index 0000000000..b17cf1ae9c
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Extensions.Primitives.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8578454489a439d5debd8a8ca9844b3b38076563eaf195cc5ed4bd27a8c54ea3
+size 42624
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Identity.Client.Extensions.Msal.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Identity.Client.Extensions.Msal.dll
new file mode 100644
index 0000000000..332165ec09
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Identity.Client.Extensions.Msal.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1f70450915dfdef4f8e72ef6c56b61ea76f1e96e1718fe8dc43fd6d40a2ce361
+size 66584
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Identity.Client.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Identity.Client.dll
new file mode 100644
index 0000000000..8ce29dd4e0
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.Identity.Client.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d3c9383ba19256a032777285e876b835887d800ddb3dbc4cdbbd99d3fe5aed76
+size 953808
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.IdentityModel.Abstractions.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.IdentityModel.Abstractions.dll
new file mode 100644
index 0000000000..da9cc6ae7e
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Microsoft.IdentityModel.Abstractions.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:147d21b8fbd0096af2ad1a5204c3e052e379d6257a9acb6f998517edb07e1d9a
+size 18824
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Newtonsoft.Json.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Newtonsoft.Json.dll
new file mode 100644
index 0000000000..705a6e792e
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Newtonsoft.Json.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d66bd021d6cffba21b150beb7108f0e9fa4f879e69df52f1c4915bf92a2383f
+size 705560
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Common.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Common.dll
new file mode 100644
index 0000000000..233c836a2a
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Common.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8133da403d49acf426830a36ead1f5eb8075c71c6a831f74e1e42b08174b8ff
+size 105872
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Configuration.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Configuration.dll
new file mode 100644
index 0000000000..05d0598636
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Configuration.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a30b277fce9eb8a5f0d53affbcfa60a19efdf6c769886f3931f4aa35561d59d
+size 155024
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Frameworks.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Frameworks.dll
new file mode 100644
index 0000000000..af177042c9
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Frameworks.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:22a2c57016b316ed137469505ba4dce7e6e42173c6493458118300279ff8efea
+size 115088
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Packaging.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Packaging.dll
new file mode 100644
index 0000000000..453b7c3e9e
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Packaging.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6f9c6e19ee85629963b91d010f596d978da31089d6a2ad4a167c60eb9af5ae4f
+size 671168
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Protocol.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Protocol.dll
new file mode 100644
index 0000000000..fa42417f13
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Protocol.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24f4266023836184ac15d20e6264ff4f60c357383cdc0e97938af274e2d527a5
+size 750480
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Versioning.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Versioning.dll
new file mode 100644
index 0000000000..3dd0ce58f3
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGet.Versioning.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf314cc204f0ca6c19c976dc5657e0a806dfa677a06702b21e9a88ffc9b04c40
+size 52112
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGetKeyVaultSignTool.Core.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGetKeyVaultSignTool.Core.dll
new file mode 100644
index 0000000000..fa77d145f2
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/NuGetKeyVaultSignTool.Core.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a18f043d3b619116028012e63d1aee9cf623ad09b4fd8a7630fd3cc545eab44e
+size 55416
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/OpenVsixSignTool.Core.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/OpenVsixSignTool.Core.dll
new file mode 100644
index 0000000000..17ebb97226
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/OpenVsixSignTool.Core.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ebcd5632323aa74f51c0038c78b0d61019526c332f0f517a80dac37eea2a04c
+size 84872
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/RSAKeyVaultProvider.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/RSAKeyVaultProvider.dll
new file mode 100644
index 0000000000..e364f1750f
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/RSAKeyVaultProvider.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:63f48971b8a24adcecb3be33df27a6d8bb861db7bb0b01389111a74ddce3ce03
+size 38400
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Sign.Core.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Sign.Core.dll
new file mode 100644
index 0000000000..df8077d717
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/Sign.Core.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d3ed5b8276b1f2b1af9a669c52e8703d2751bec19eaa395d98a380d3d88c7c6f
+size 141488
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.CommandLine.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.CommandLine.dll
new file mode 100644
index 0000000000..15ada78364
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.CommandLine.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2158cfc2c484ebdec95fd9959c7eecaebe44657e1e1dee5abb78fc971276829f
+size 205216
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Formats.Asn1.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Formats.Asn1.dll
new file mode 100644
index 0000000000..d0f4d2285a
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Formats.Asn1.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9d3b25dc7b4d2ec1541aaff3632d33466d84a80039ebb3cd650c9b22c0ae8e14
+size 80512
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Memory.Data.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Memory.Data.dll
new file mode 100644
index 0000000000..ec9bab9704
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Memory.Data.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:293ca5d86358fb2ce00da02c63eefcb344689fc0c636b61c97c3f1b15a80aa51
+size 21368
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Security.Cryptography.Pkcs.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Security.Cryptography.Pkcs.dll
new file mode 100644
index 0000000000..d8b0973eaf
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Security.Cryptography.Pkcs.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4d50f495d3576b8dcdd16394afb33303e7eeaa47ff1cc72473707c01f68896b
+size 308880
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Security.Cryptography.ProtectedData.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Security.Cryptography.ProtectedData.dll
new file mode 100644
index 0000000000..4c38e4bf64
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Security.Cryptography.ProtectedData.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2c267a61ee145d69128220c10b3ddd451a137273126ef7b4bd306059e1727af
+size 25464
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Security.Cryptography.Xml.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Security.Cryptography.Xml.dll
new file mode 100644
index 0000000000..8dd5c409bb
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Security.Cryptography.Xml.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:711edc7acb9cbd7c19348ca38d3e30a78a0f4956555f8e2376a294e983710c8e
+size 176784
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Text.Encodings.Web.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Text.Encodings.Web.dll
new file mode 100644
index 0000000000..9a6f9e8ac0
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Text.Encodings.Web.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2af18fa9cec4f826b75649b1ad7fc88a07138adfdad986481f11db11817754e
+size 71312
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Text.Json.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Text.Json.dll
new file mode 100644
index 0000000000..8e1e7a283f
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/System.Text.Json.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:634f1ec2e0dc635adfbc8034270ca644bbddbd740c4a8490de21edd7c56b48e6
+size 543368
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/cs/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/cs/Sign.Core.resources.dll
new file mode 100644
index 0000000000..8455192437
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/cs/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3430686600f87a55a4275266b4a52edd38625f586b1995dc683936d88004bd1b
+size 18608
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/cs/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/cs/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..23b4e46dbe
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/cs/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:80a66497a01e9ea5be7d68ce19069719751c4b720f9774660c09ab33ac8f8e6e
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/cs/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/cs/sign.resources.dll
new file mode 100644
index 0000000000..02cc111bc2
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/cs/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:389d2509a2f265ab1eba201ae9c0c21b5dca76db1532d476fc88e48591b976f2
+size 19584
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/de/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/de/Sign.Core.resources.dll
new file mode 100644
index 0000000000..b68e9f368f
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/de/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3ec3a4e7d476dcf624354669415c3b877ddbf96e9430fbe13535b3554ce56430
+size 18560
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/de/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/de/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..6841457dda
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/de/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3dfa07de8267c771be47a10217e2eafd0e57e68933c536a239b65284dc6f09da
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/de/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/de/sign.resources.dll
new file mode 100644
index 0000000000..8b0f529d45
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/de/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96120c04c9e98717ff486ec9c5ed67047bb87c705e7210efb1e4d8d742f39808
+size 19584
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/es/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/es/Sign.Core.resources.dll
new file mode 100644
index 0000000000..c1ef388501
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/es/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05e5e7d5d2e1f5ef9a25e542de45261a899d1650f6cb8e7665712d9f81774322
+size 18048
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/es/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/es/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..7e52ae8bb9
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/es/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4283743428f7abb509eab0d523d8000ee7a89fd354dc1db96dc8424b37ce714f
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/es/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/es/sign.resources.dll
new file mode 100644
index 0000000000..5ad19aa748
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/es/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7061ee2071af3dc35b72327b978ae3f830a4be8c6afbb0e9274c567547e6fe53
+size 19632
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/fr/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/fr/Sign.Core.resources.dll
new file mode 100644
index 0000000000..4655f14ea2
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/fr/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ebbc43012a1a5f35700e863489859e2e8de81a70a364084fdf507a29504302ac
+size 18560
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/fr/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/fr/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..fe84c61252
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/fr/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e52478e38b6ac9ecd85999aa5ad181097c41833c9adba62b87bd9fa443b2a8ea
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/fr/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/fr/sign.resources.dll
new file mode 100644
index 0000000000..bd6a0f5a77
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/fr/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d58f3e26df07408cbefb3f4b8a55acce4c41c48772c26094c1435205d4917a8
+size 19584
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/it/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/it/Sign.Core.resources.dll
new file mode 100644
index 0000000000..2302aba1b8
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/it/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8f4ded6e7d9f252aa6a314a26cc753df0eb13e68a3a0e5a6ea7110c20185786
+size 18608
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/it/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/it/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..4a7172287e
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/it/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:291da56b4c02bded6ad0e707999370b1e6ad592b74c4691e299c8097fbe44f97
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/it/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/it/sign.resources.dll
new file mode 100644
index 0000000000..b0958e003c
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/it/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45a94115cdc86401281ee8520baf2c449f6cf6452efdf5778e5d43a5c5799c9e
+size 19632
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ja/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ja/Sign.Core.resources.dll
new file mode 100644
index 0000000000..59d8d3c7e9
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ja/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f34e0dbce944a02f521ff9e3f7c6719c9285ac6fae2f7e1923903d6062d9d504
+size 19072
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ja/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ja/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..ad7b62d9b7
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ja/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b03127957ea51ca2c4e17512d9b84fb545b6c6995047e96c7c1b674d2a3fc83
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ja/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ja/sign.resources.dll
new file mode 100644
index 0000000000..d147760b45
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ja/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c7e1ec2a5b1bdc769bada05c7f0de63b8a7554000a766089b93c1d2a39d98a6
+size 20104
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ko/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ko/Sign.Core.resources.dll
new file mode 100644
index 0000000000..35a87b3fec
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ko/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f52a0a305a34b5c365e7473032f7046ad4c36f5a3a8f69186e5514fa8fb2222e
+size 18608
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ko/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ko/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..dc218c6a6e
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ko/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4d7904ec3b87b632cec7fd479c6feb063caa7394c79c7f5165df506a45ee0ba
+size 19344
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ko/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ko/sign.resources.dll
new file mode 100644
index 0000000000..aacf5ed442
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ko/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a1bbdd3c5ce5a83256a134f391dceb91be1a2d6f79ff4496c87ae46b3e800f8
+size 19632
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pl/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pl/Sign.Core.resources.dll
new file mode 100644
index 0000000000..bf1ae725b6
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pl/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad28142465c3a66d73e8a7f5db7d81d3660d6df6b0ef42a56998d5436cff648e
+size 18560
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pl/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pl/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..0641c2d4e5
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pl/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a51caed53a75d8339df176c8f5118cf609f38e73e39097c6d7edf73721678a0
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pl/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pl/sign.resources.dll
new file mode 100644
index 0000000000..71050e0aa8
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pl/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a927aaf55ee12aad6f2a1e224cb45f3be31b0d2fab66f8b88ded22d3137ae2b
+size 19632
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pt-BR/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pt-BR/Sign.Core.resources.dll
new file mode 100644
index 0000000000..9890d467ed
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pt-BR/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a88f749528f5a3d5c03739ca6df61fce32ca5c7057a3673489c33193846cb225
+size 18568
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pt-BR/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pt-BR/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..4d9856ef30
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pt-BR/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8fd9272f780e6d46d69ff25bf320e7a5caf5d61fbfb0c89781fbc8f64dab6596
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pt-BR/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pt-BR/sign.resources.dll
new file mode 100644
index 0000000000..f8a2fd07a2
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/pt-BR/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f50fdef606556c1a0ce5a1bb05851337e84976be1018bea251ad9427cae9d77b
+size 19592
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ru/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ru/Sign.Core.resources.dll
new file mode 100644
index 0000000000..e3afe12356
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ru/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c160dc95e3e9c690d5d2b1205aea4299c1d2e2ad70ce051221023f2e10963b21
+size 19072
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ru/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ru/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..c28d8d969c
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ru/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a56ee9d0fd2254b0581f256495b61cc24135a3f1fffdb4edd70db87eff6db3ab
+size 19344
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ru/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ru/sign.resources.dll
new file mode 100644
index 0000000000..61fa10290e
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/ru/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5210f9760392190e9d5c60d511b4d83e3b52f76ac99bf847007cb1ebb884b992
+size 21120
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/sign.deps.json b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/sign.deps.json
new file mode 100644
index 0000000000..6923a12bc5
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/sign.deps.json
@@ -0,0 +1,1187 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v6.0/win10-x64",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v6.0": {},
+ ".NETCoreApp,Version=v6.0/win10-x64": {
+ "sign/0.9.0-beta.23127.3": {
+ "dependencies": {
+ "Microsoft.DiaSymReader.Pdb2Pdb": "1.1.0-beta2-19575-01",
+ "Microsoft.DotNet.XliffTasks": "1.0.0-beta.23073.2",
+ "Microsoft.SourceLink.AzureRepos.Git": "1.2.0-beta-23073-01",
+ "Microsoft.SourceLink.GitHub": "1.2.0-beta-23073-01",
+ "Microsoft.Windows.SDK.BuildTools": "10.0.22621.755",
+ "Sign.Core": "0.9.0-beta.23127.3",
+ "System.CommandLine": "2.0.0-beta4.22272.1"
+ },
+ "runtime": {
+ "sign.dll": {}
+ },
+ "resources": {
+ "cs/sign.resources.dll": {
+ "locale": "cs"
+ },
+ "de/sign.resources.dll": {
+ "locale": "de"
+ },
+ "es/sign.resources.dll": {
+ "locale": "es"
+ },
+ "fr/sign.resources.dll": {
+ "locale": "fr"
+ },
+ "it/sign.resources.dll": {
+ "locale": "it"
+ },
+ "ja/sign.resources.dll": {
+ "locale": "ja"
+ },
+ "ko/sign.resources.dll": {
+ "locale": "ko"
+ },
+ "pl/sign.resources.dll": {
+ "locale": "pl"
+ },
+ "pt-BR/sign.resources.dll": {
+ "locale": "pt-BR"
+ },
+ "ru/sign.resources.dll": {
+ "locale": "ru"
+ },
+ "tr/sign.resources.dll": {
+ "locale": "tr"
+ },
+ "zh-Hans/sign.resources.dll": {
+ "locale": "zh-Hans"
+ },
+ "zh-Hant/sign.resources.dll": {
+ "locale": "zh-Hant"
+ }
+ }
+ },
+ "Azure.Core/1.25.0": {
+ "dependencies": {
+ "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
+ "System.Diagnostics.DiagnosticSource": "4.6.0",
+ "System.Memory.Data": "1.0.2",
+ "System.Numerics.Vectors": "4.5.0",
+ "System.Text.Encodings.Web": "7.0.0",
+ "System.Text.Json": "7.0.2",
+ "System.Threading.Tasks.Extensions": "4.5.4"
+ },
+ "runtime": {
+ "lib/net5.0/Azure.Core.dll": {
+ "assemblyVersion": "1.25.0.0",
+ "fileVersion": "1.2500.22.33004"
+ }
+ }
+ },
+ "Azure.Identity/1.8.2": {
+ "dependencies": {
+ "Azure.Core": "1.25.0",
+ "Microsoft.Identity.Client": "4.49.1",
+ "Microsoft.Identity.Client.Extensions.Msal": "2.25.3",
+ "System.Memory": "4.5.4",
+ "System.Security.Cryptography.ProtectedData": "4.7.0",
+ "System.Text.Json": "7.0.2",
+ "System.Threading.Tasks.Extensions": "4.5.4"
+ },
+ "runtime": {
+ "lib/netstandard2.0/Azure.Identity.dll": {
+ "assemblyVersion": "1.8.2.0",
+ "fileVersion": "1.800.223.10803"
+ }
+ }
+ },
+ "Azure.Security.KeyVault.Certificates/4.4.0": {
+ "dependencies": {
+ "Azure.Core": "1.25.0",
+ "System.Memory": "4.5.4",
+ "System.Text.Json": "7.0.2",
+ "System.Threading.Tasks.Extensions": "4.5.4"
+ },
+ "runtime": {
+ "lib/netstandard2.0/Azure.Security.KeyVault.Certificates.dll": {
+ "assemblyVersion": "4.4.0.0",
+ "fileVersion": "4.400.22.46903"
+ }
+ }
+ },
+ "Azure.Security.KeyVault.Keys/4.0.3": {
+ "dependencies": {
+ "Azure.Core": "1.25.0",
+ "System.Memory": "4.5.4",
+ "System.Text.Json": "7.0.2",
+ "System.Threading.Tasks.Extensions": "4.5.4"
+ },
+ "runtime": {
+ "lib/netstandard2.0/Azure.Security.KeyVault.Keys.dll": {
+ "assemblyVersion": "4.0.3.0",
+ "fileVersion": "4.0.320.20203"
+ }
+ }
+ },
+ "AzureSign.Core/4.0.1": {
+ "dependencies": {
+ "Microsoft.Extensions.Logging": "7.0.0"
+ },
+ "runtime": {
+ "lib/netstandard2.0/AzureSign.Core.dll": {
+ "assemblyVersion": "4.0.0.0",
+ "fileVersion": "4.0.1.0"
+ }
+ }
+ },
+ "Microsoft.Bcl.AsyncInterfaces/1.1.1": {
+ "runtime": {
+ "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
+ "assemblyVersion": "1.0.0.0",
+ "fileVersion": "4.700.20.21406"
+ }
+ }
+ },
+ "Microsoft.Build.Tasks.Git/1.2.0-beta-23073-01": {},
+ "Microsoft.DiaSymReader.Pdb2Pdb/1.1.0-beta2-19575-01": {},
+ "Microsoft.DotNet.XliffTasks/1.0.0-beta.23073.2": {},
+ "Microsoft.Extensions.Configuration/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Primitives": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Configuration.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration.Abstractions/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration.Binder/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Configuration.Binder.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration.EnvironmentVariables/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration": "7.0.0",
+ "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration.FileExtensions/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration": "7.0.0",
+ "Microsoft.Extensions.Configuration.Abstractions": "7.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0",
+ "Microsoft.Extensions.FileProviders.Physical": "7.0.0",
+ "Microsoft.Extensions.Primitives": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration.Json/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration": "7.0.0",
+ "Microsoft.Extensions.Configuration.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Configuration.FileExtensions": "7.0.0",
+ "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0",
+ "System.Text.Json": "7.0.2"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Configuration.Json.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/7.0.0": {
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.FileProviders.Abstractions/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.FileProviders.Physical/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.FileProviders.Abstractions": "7.0.0",
+ "Microsoft.Extensions.FileSystemGlobbing": "7.0.0",
+ "Microsoft.Extensions.Primitives": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.FileSystemGlobbing/7.0.0": {
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Logging/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection": "7.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Options": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Logging.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions/7.0.0": {
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Logging.Configuration/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration": "7.0.0",
+ "Microsoft.Extensions.Configuration.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Configuration.Binder": "7.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Logging": "7.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Options": "7.0.0",
+ "Microsoft.Extensions.Options.ConfigurationExtensions": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Logging.Configuration.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Logging.Console/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Logging": "7.0.0",
+ "Microsoft.Extensions.Logging.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Logging.Configuration": "7.0.0",
+ "Microsoft.Extensions.Options": "7.0.0",
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0",
+ "System.Text.Json": "7.0.2"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Logging.Console.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Options/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Primitives": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Options.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Options.ConfigurationExtensions/7.0.0": {
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Configuration.Binder": "7.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0",
+ "Microsoft.Extensions.Options": "7.0.0",
+ "Microsoft.Extensions.Primitives": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Extensions.Primitives/7.0.0": {
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Extensions.Primitives.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "Microsoft.Identity.Client/4.49.1": {
+ "dependencies": {
+ "Microsoft.IdentityModel.Abstractions": "6.22.0"
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.Identity.Client.dll": {
+ "assemblyVersion": "4.49.1.0",
+ "fileVersion": "4.49.1.0"
+ }
+ }
+ },
+ "Microsoft.Identity.Client.Extensions.Msal/2.25.3": {
+ "dependencies": {
+ "Microsoft.Identity.Client": "4.49.1",
+ "System.IO.FileSystem.AccessControl": "5.0.0",
+ "System.Security.Cryptography.ProtectedData": "4.7.0"
+ },
+ "runtime": {
+ "lib/netcoreapp3.1/Microsoft.Identity.Client.Extensions.Msal.dll": {
+ "assemblyVersion": "2.25.3.0",
+ "fileVersion": "2.25.3.0"
+ }
+ }
+ },
+ "Microsoft.IdentityModel.Abstractions/6.22.0": {
+ "runtime": {
+ "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll": {
+ "assemblyVersion": "6.22.0.0",
+ "fileVersion": "6.22.0.30727"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {},
+ "Microsoft.SourceLink.AzureRepos.Git/1.2.0-beta-23073-01": {
+ "dependencies": {
+ "Microsoft.Build.Tasks.Git": "1.2.0-beta-23073-01",
+ "Microsoft.SourceLink.Common": "1.2.0-beta-23073-01"
+ }
+ },
+ "Microsoft.SourceLink.Common/1.2.0-beta-23073-01": {},
+ "Microsoft.SourceLink.GitHub/1.2.0-beta-23073-01": {
+ "dependencies": {
+ "Microsoft.Build.Tasks.Git": "1.2.0-beta-23073-01",
+ "Microsoft.SourceLink.Common": "1.2.0-beta-23073-01"
+ }
+ },
+ "Microsoft.Windows.SDK.BuildTools/10.0.22621.755": {},
+ "Newtonsoft.Json/13.0.1": {
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.1.25517"
+ }
+ }
+ },
+ "NuGet.Common/6.4.0": {
+ "dependencies": {
+ "NuGet.Frameworks": "6.4.0"
+ },
+ "runtime": {
+ "lib/netstandard2.0/NuGet.Common.dll": {
+ "assemblyVersion": "6.4.0.123",
+ "fileVersion": "6.4.0.123"
+ }
+ }
+ },
+ "NuGet.Configuration/6.4.0": {
+ "dependencies": {
+ "NuGet.Common": "6.4.0",
+ "System.Security.Cryptography.ProtectedData": "4.7.0"
+ },
+ "runtime": {
+ "lib/netstandard2.0/NuGet.Configuration.dll": {
+ "assemblyVersion": "6.4.0.123",
+ "fileVersion": "6.4.0.123"
+ }
+ }
+ },
+ "NuGet.Frameworks/6.4.0": {
+ "runtime": {
+ "lib/netstandard2.0/NuGet.Frameworks.dll": {
+ "assemblyVersion": "6.4.0.123",
+ "fileVersion": "6.4.0.123"
+ }
+ }
+ },
+ "NuGet.Packaging/6.4.0": {
+ "dependencies": {
+ "Newtonsoft.Json": "13.0.1",
+ "NuGet.Configuration": "6.4.0",
+ "NuGet.Versioning": "6.4.0",
+ "System.Security.Cryptography.Cng": "5.0.0",
+ "System.Security.Cryptography.Pkcs": "7.0.1"
+ },
+ "runtime": {
+ "lib/net5.0/NuGet.Packaging.dll": {
+ "assemblyVersion": "6.4.0.123",
+ "fileVersion": "6.4.0.123"
+ }
+ }
+ },
+ "NuGet.Protocol/6.4.0": {
+ "dependencies": {
+ "NuGet.Packaging": "6.4.0"
+ },
+ "runtime": {
+ "lib/net5.0/NuGet.Protocol.dll": {
+ "assemblyVersion": "6.4.0.123",
+ "fileVersion": "6.4.0.123"
+ }
+ }
+ },
+ "NuGet.Versioning/6.4.0": {
+ "runtime": {
+ "lib/netstandard2.0/NuGet.Versioning.dll": {
+ "assemblyVersion": "6.4.0.123",
+ "fileVersion": "6.4.0.123"
+ }
+ }
+ },
+ "NuGetKeyVaultSignTool.Core/3.2.3": {
+ "dependencies": {
+ "Azure.Security.KeyVault.Certificates": "4.4.0",
+ "Microsoft.Extensions.Logging": "7.0.0",
+ "NuGet.Packaging": "6.4.0",
+ "NuGet.Protocol": "6.4.0",
+ "RSAKeyVaultProvider": "2.1.1",
+ "System.Security.Cryptography.Pkcs": "7.0.1"
+ },
+ "runtime": {
+ "lib/net5.0/NuGetKeyVaultSignTool.Core.dll": {
+ "assemblyVersion": "3.2.0.0",
+ "fileVersion": "3.2.3.28308"
+ }
+ }
+ },
+ "OpenVsixSignTool.Core/0.4.0": {
+ "dependencies": {
+ "System.Security.Cryptography.Pkcs": "7.0.1",
+ "System.Security.Cryptography.Xml": "7.0.1"
+ },
+ "runtime": {
+ "lib/net6.0/OpenVsixSignTool.Core.dll": {
+ "assemblyVersion": "0.0.0.0",
+ "fileVersion": "0.4.0.0"
+ }
+ }
+ },
+ "RSAKeyVaultProvider/2.1.1": {
+ "dependencies": {
+ "Azure.Security.KeyVault.Keys": "4.0.3"
+ },
+ "runtime": {
+ "lib/netstandard2.0/RSAKeyVaultProvider.dll": {
+ "assemblyVersion": "2.1.0.0",
+ "fileVersion": "2.1.1.24052"
+ }
+ }
+ },
+ "System.CommandLine/2.0.0-beta4.22272.1": {
+ "runtime": {
+ "lib/net6.0/System.CommandLine.dll": {
+ "assemblyVersion": "2.0.0.0",
+ "fileVersion": "2.0.22.27201"
+ }
+ },
+ "resources": {
+ "lib/net6.0/cs/System.CommandLine.resources.dll": {
+ "locale": "cs"
+ },
+ "lib/net6.0/de/System.CommandLine.resources.dll": {
+ "locale": "de"
+ },
+ "lib/net6.0/es/System.CommandLine.resources.dll": {
+ "locale": "es"
+ },
+ "lib/net6.0/fr/System.CommandLine.resources.dll": {
+ "locale": "fr"
+ },
+ "lib/net6.0/it/System.CommandLine.resources.dll": {
+ "locale": "it"
+ },
+ "lib/net6.0/ja/System.CommandLine.resources.dll": {
+ "locale": "ja"
+ },
+ "lib/net6.0/ko/System.CommandLine.resources.dll": {
+ "locale": "ko"
+ },
+ "lib/net6.0/pl/System.CommandLine.resources.dll": {
+ "locale": "pl"
+ },
+ "lib/net6.0/pt-BR/System.CommandLine.resources.dll": {
+ "locale": "pt-BR"
+ },
+ "lib/net6.0/ru/System.CommandLine.resources.dll": {
+ "locale": "ru"
+ },
+ "lib/net6.0/tr/System.CommandLine.resources.dll": {
+ "locale": "tr"
+ },
+ "lib/net6.0/zh-Hans/System.CommandLine.resources.dll": {
+ "locale": "zh-Hans"
+ },
+ "lib/net6.0/zh-Hant/System.CommandLine.resources.dll": {
+ "locale": "zh-Hant"
+ }
+ }
+ },
+ "System.Diagnostics.DiagnosticSource/4.6.0": {},
+ "System.Formats.Asn1/7.0.0": {
+ "runtime": {
+ "lib/net6.0/System.Formats.Asn1.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "System.IO.FileSystem.AccessControl/5.0.0": {
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Memory/4.5.4": {},
+ "System.Memory.Data/1.0.2": {
+ "dependencies": {
+ "System.Text.Encodings.Web": "7.0.0",
+ "System.Text.Json": "7.0.2"
+ },
+ "runtime": {
+ "lib/netstandard2.0/System.Memory.Data.dll": {
+ "assemblyVersion": "1.0.2.0",
+ "fileVersion": "1.0.221.20802"
+ }
+ }
+ },
+ "System.Numerics.Vectors/4.5.0": {},
+ "System.Runtime.CompilerServices.Unsafe/6.0.0": {},
+ "System.Security.AccessControl/5.0.0": {
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ }
+ },
+ "System.Security.Cryptography.Cng/5.0.0": {
+ "dependencies": {
+ "System.Formats.Asn1": "7.0.0"
+ }
+ },
+ "System.Security.Cryptography.Pkcs/7.0.1": {
+ "dependencies": {
+ "System.Formats.Asn1": "7.0.0"
+ },
+ "runtime": {
+ "runtimes/win/lib/net6.0/System.Security.Cryptography.Pkcs.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.323.6910"
+ }
+ }
+ },
+ "System.Security.Cryptography.ProtectedData/4.7.0": {
+ "runtime": {
+ "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
+ "assemblyVersion": "4.0.5.0",
+ "fileVersion": "4.700.19.56404"
+ }
+ }
+ },
+ "System.Security.Cryptography.Xml/7.0.1": {
+ "dependencies": {
+ "System.Security.Cryptography.Pkcs": "7.0.1"
+ },
+ "runtime": {
+ "lib/net6.0/System.Security.Cryptography.Xml.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.222.60605"
+ }
+ }
+ },
+ "System.Security.Principal.Windows/5.0.0": {},
+ "System.Text.Encodings.Web/7.0.0": {
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/System.Text.Encodings.Web.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.22.51805"
+ }
+ }
+ },
+ "System.Text.Json/7.0.2": {
+ "dependencies": {
+ "System.Runtime.CompilerServices.Unsafe": "6.0.0",
+ "System.Text.Encodings.Web": "7.0.0"
+ },
+ "runtime": {
+ "lib/net6.0/System.Text.Json.dll": {
+ "assemblyVersion": "7.0.0.0",
+ "fileVersion": "7.0.323.6910"
+ }
+ }
+ },
+ "System.Threading.Tasks.Extensions/4.5.4": {},
+ "Sign.Core/0.9.0-beta.23127.3": {
+ "dependencies": {
+ "Azure.Identity": "1.8.2",
+ "Azure.Security.KeyVault.Certificates": "4.4.0",
+ "AzureSign.Core": "4.0.1",
+ "Microsoft.Extensions.Configuration.EnvironmentVariables": "7.0.0",
+ "Microsoft.Extensions.Configuration.Json": "7.0.0",
+ "Microsoft.Extensions.FileSystemGlobbing": "7.0.0",
+ "Microsoft.Extensions.Logging": "7.0.0",
+ "Microsoft.Extensions.Logging.Console": "7.0.0",
+ "NuGet.Packaging": "6.4.0",
+ "NuGet.Protocol": "6.4.0",
+ "NuGetKeyVaultSignTool.Core": "3.2.3",
+ "OpenVsixSignTool.Core": "0.4.0",
+ "RSAKeyVaultProvider": "2.1.1",
+ "System.Security.Cryptography.Pkcs": "7.0.1",
+ "System.Security.Cryptography.Xml": "7.0.1",
+ "System.Text.Json": "7.0.2"
+ },
+ "runtime": {
+ "Sign.Core.dll": {}
+ },
+ "resources": {
+ "cs/Sign.Core.resources.dll": {
+ "locale": "cs"
+ },
+ "de/Sign.Core.resources.dll": {
+ "locale": "de"
+ },
+ "es/Sign.Core.resources.dll": {
+ "locale": "es"
+ },
+ "fr/Sign.Core.resources.dll": {
+ "locale": "fr"
+ },
+ "it/Sign.Core.resources.dll": {
+ "locale": "it"
+ },
+ "ja/Sign.Core.resources.dll": {
+ "locale": "ja"
+ },
+ "ko/Sign.Core.resources.dll": {
+ "locale": "ko"
+ },
+ "pl/Sign.Core.resources.dll": {
+ "locale": "pl"
+ },
+ "pt-BR/Sign.Core.resources.dll": {
+ "locale": "pt-BR"
+ },
+ "ru/Sign.Core.resources.dll": {
+ "locale": "ru"
+ },
+ "tr/Sign.Core.resources.dll": {
+ "locale": "tr"
+ },
+ "zh-Hans/Sign.Core.resources.dll": {
+ "locale": "zh-Hans"
+ },
+ "zh-Hant/Sign.Core.resources.dll": {
+ "locale": "zh-Hant"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "sign/0.9.0-beta.23127.3": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "Azure.Core/1.25.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-X8Dd4sAggS84KScWIjEbFAdt2U1KDolQopTPoHVubG2y3CM54f9l6asVrP5Uy384NWXjsspPYaJgz5xHc+KvTA==",
+ "path": "azure.core/1.25.0",
+ "hashPath": "azure.core.1.25.0.nupkg.sha512"
+ },
+ "Azure.Identity/1.8.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ywnpn9MLhNTtBG12WOxSaomx0Dwu5HK5PyhHH/CApGrd1BCrhgEwdy4Uwy5IfAznJzVJKZRyKR9cp4aa61xYvA==",
+ "path": "azure.identity/1.8.2",
+ "hashPath": "azure.identity.1.8.2.nupkg.sha512"
+ },
+ "Azure.Security.KeyVault.Certificates/4.4.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-EzuMXVIQSzTiIHynb9Y3ZPjt8jYpengwRuEaAcx1s7N0HAWdn5crG+6w1NH1HuGEDXwkeq9XP6f0slmgYAVRhg==",
+ "path": "azure.security.keyvault.certificates/4.4.0",
+ "hashPath": "azure.security.keyvault.certificates.4.4.0.nupkg.sha512"
+ },
+ "Azure.Security.KeyVault.Keys/4.0.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-y7AbpYixpisD9v/EXIJbkxQcSaw9JW/hzln8Zwn/EC/Rm7aGkGWdqS+JgHHhbE5jbEXpxIg+6+8eqRlosezE9Q==",
+ "path": "azure.security.keyvault.keys/4.0.3",
+ "hashPath": "azure.security.keyvault.keys.4.0.3.nupkg.sha512"
+ },
+ "AzureSign.Core/4.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-csogFAv7ZStI4ezIsdwhuGx9sMm5ZqLrx6hbhCSDhSP0PIETVhut2TLXl9MHbLgw/oAosGyz+w4LdQy4i02QbQ==",
+ "path": "azuresign.core/4.0.1",
+ "hashPath": "azuresign.core.4.0.1.nupkg.sha512"
+ },
+ "Microsoft.Bcl.AsyncInterfaces/1.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==",
+ "path": "microsoft.bcl.asyncinterfaces/1.1.1",
+ "hashPath": "microsoft.bcl.asyncinterfaces.1.1.1.nupkg.sha512"
+ },
+ "Microsoft.Build.Tasks.Git/1.2.0-beta-23073-01": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2c2SIz57NfcI8mQH2Y7g263jng/84scZMr/wM4aDBg3Z1VwbIhC7DkcIz3xVCMBwXSqGonB/GwLo2Fgo1inSTQ==",
+ "path": "microsoft.build.tasks.git/1.2.0-beta-23073-01",
+ "hashPath": "microsoft.build.tasks.git.1.2.0-beta-23073-01.nupkg.sha512"
+ },
+ "Microsoft.DiaSymReader.Pdb2Pdb/1.1.0-beta2-19575-01": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kY6eTNkeWLHvfOjg97Q7tgQKrPpX+Y3fR6fS4nyfpgFLHBxHriLBR4v3e9t71it91gIMEeKUqOqrFJ7Pj48eHA==",
+ "path": "microsoft.diasymreader.pdb2pdb/1.1.0-beta2-19575-01",
+ "hashPath": "microsoft.diasymreader.pdb2pdb.1.1.0-beta2-19575-01.nupkg.sha512"
+ },
+ "Microsoft.DotNet.XliffTasks/1.0.0-beta.23073.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-EUe/8QXZ4naSYhHwlDe+wDVg4JgdSiuaIIX5qRUgdHkEpLUT7Bu4aohITWES5biDjaSnjL9CR2ZhSf0QHcSyIQ==",
+ "path": "microsoft.dotnet.xlifftasks/1.0.0-beta.23073.2",
+ "hashPath": "microsoft.dotnet.xlifftasks.1.0.0-beta.23073.2.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tldQUBWt/xeH2K7/hMPPo5g8zuLc3Ro9I5d4o/XrxvxOCA2EZBtW7bCHHTc49fcBtvB8tLAb/Qsmfrq+2SJ4vA==",
+ "path": "microsoft.extensions.configuration/7.0.0",
+ "hashPath": "microsoft.extensions.configuration.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration.Abstractions/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-f34u2eaqIjNO9YLHBz8rozVZ+TcFiFs0F3r7nUJd7FRkVSxk8u4OpoK226mi49MwexHOR2ibP9MFvRUaLilcQQ==",
+ "path": "microsoft.extensions.configuration.abstractions/7.0.0",
+ "hashPath": "microsoft.extensions.configuration.abstractions.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration.Binder/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tgU4u7bZsoS9MKVRiotVMAwHtbREHr5/5zSEV+JPhg46+ox47Au84E3D2IacAaB0bk5ePNaNieTlPrfjbbRJkg==",
+ "path": "microsoft.extensions.configuration.binder/7.0.0",
+ "hashPath": "microsoft.extensions.configuration.binder.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration.EnvironmentVariables/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-RIkfqCkvrAogirjsqSrG1E1FxgrLsOZU2nhRbl07lrajnxzSU2isj2lwQah0CtCbLWo/pOIukQzM1GfneBUnxA==",
+ "path": "microsoft.extensions.configuration.environmentvariables/7.0.0",
+ "hashPath": "microsoft.extensions.configuration.environmentvariables.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration.FileExtensions/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-xk2lRJ1RDuqe57BmgvRPyCt6zyePKUmvT6iuXqiHR+/OIIgWVR8Ff5k2p6DwmqY8a17hx/OnrekEhziEIeQP6Q==",
+ "path": "microsoft.extensions.configuration.fileextensions/7.0.0",
+ "hashPath": "microsoft.extensions.configuration.fileextensions.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Configuration.Json/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-LDNYe3uw76W35Jci+be4LDf2lkQZe0A7EEYQVChFbc509CpZ4Iupod8li4PUXPBhEUOFI/rlQNf5xkzJRQGvtA==",
+ "path": "microsoft.extensions.configuration.json/7.0.0",
+ "hashPath": "microsoft.extensions.configuration.json.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.DependencyInjection/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==",
+ "path": "microsoft.extensions.dependencyinjection/7.0.0",
+ "hashPath": "microsoft.extensions.dependencyinjection.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/7.0.0",
+ "hashPath": "microsoft.extensions.dependencyinjection.abstractions.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.FileProviders.Abstractions/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-NyawiW9ZT/liQb34k9YqBSNPLuuPkrjMgQZ24Y/xXX1RoiBkLUdPMaQTmxhZ5TYu8ZKZ9qayzil75JX95vGQUg==",
+ "path": "microsoft.extensions.fileproviders.abstractions/7.0.0",
+ "hashPath": "microsoft.extensions.fileproviders.abstractions.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.FileProviders.Physical/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-K8D2MTR+EtzkbZ8z80LrG7Ur64R7ZZdRLt1J5cgpc/pUWl0C6IkAUapPuK28oionHueCPELUqq0oYEvZfalNdg==",
+ "path": "microsoft.extensions.fileproviders.physical/7.0.0",
+ "hashPath": "microsoft.extensions.fileproviders.physical.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.FileSystemGlobbing/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-2jONjKHiF+E92ynz2ZFcr9OvxIw+rTGMPEH+UZGeHTEComVav93jQUWGkso8yWwVBcEJGcNcZAaqY01FFJcj7w==",
+ "path": "microsoft.extensions.filesystemglobbing/7.0.0",
+ "hashPath": "microsoft.extensions.filesystemglobbing.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Nw2muoNrOG5U5qa2ZekXwudUn2BJcD41e65zwmDHb1fQegTX66UokLWZkJRpqSSHXDOWZ5V0iqhbxOEky91atA==",
+ "path": "microsoft.extensions.logging/7.0.0",
+ "hashPath": "microsoft.extensions.logging.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging.Abstractions/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==",
+ "path": "microsoft.extensions.logging.abstractions/7.0.0",
+ "hashPath": "microsoft.extensions.logging.abstractions.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging.Configuration/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-FLDA0HcffKA8ycoDQLJuCNGIE42cLWPxgdQGRBaSzZrYTkMBjnf9zrr8pGT06psLq9Q+RKWmmZczQ9bCrXEBcA==",
+ "path": "microsoft.extensions.logging.configuration/7.0.0",
+ "hashPath": "microsoft.extensions.logging.configuration.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Logging.Console/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-qt5n8bHLZPUfuRnFxJKW5q9ZwOTncdh96rtWzWpX3Y/064MlxzCSw2ELF5Jlwdo+Y4wK3I47NmUTFsV7Sg8rqg==",
+ "path": "microsoft.extensions.logging.console/7.0.0",
+ "hashPath": "microsoft.extensions.logging.console.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Options/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-lP1yBnTTU42cKpMozuafbvNtQ7QcBjr/CcK3bYOGEMH55Fjt+iecXjT6chR7vbgCMqy3PG3aNQSZgo/EuY/9qQ==",
+ "path": "microsoft.extensions.options/7.0.0",
+ "hashPath": "microsoft.extensions.options.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Options.ConfigurationExtensions/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-95UnxZkkFdXxF6vSrtJsMHCzkDeSMuUWGs2hDT54cX+U5eVajrCJ3qLyQRW+CtpTt5OJ8bmTvpQVHu1DLhH+cA==",
+ "path": "microsoft.extensions.options.configurationextensions/7.0.0",
+ "hashPath": "microsoft.extensions.options.configurationextensions.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Extensions.Primitives/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q==",
+ "path": "microsoft.extensions.primitives/7.0.0",
+ "hashPath": "microsoft.extensions.primitives.7.0.0.nupkg.sha512"
+ },
+ "Microsoft.Identity.Client/4.49.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vDU3cdXIom4+pxJk8sDJcHYTHPhb6DSVF9zjFY61SoQVs1OxbHZY9+mBnq1gGkG7N/o04WTt42IdV/0gf1+5DA==",
+ "path": "microsoft.identity.client/4.49.1",
+ "hashPath": "microsoft.identity.client.4.49.1.nupkg.sha512"
+ },
+ "Microsoft.Identity.Client.Extensions.Msal/2.25.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-I6/Od0d3OMD9b7RPxW1l25A8oA94H+r9ZtrOe4Ogk49Ftxhs9RS+pbzPE5dLe0i7nQy+1aob7mR22YsNcc0BiQ==",
+ "path": "microsoft.identity.client.extensions.msal/2.25.3",
+ "hashPath": "microsoft.identity.client.extensions.msal.2.25.3.nupkg.sha512"
+ },
+ "Microsoft.IdentityModel.Abstractions/6.22.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==",
+ "path": "microsoft.identitymodel.abstractions/6.22.0",
+ "hashPath": "microsoft.identitymodel.abstractions.6.22.0.nupkg.sha512"
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
+ "path": "microsoft.netcore.platforms/5.0.0",
+ "hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
+ },
+ "Microsoft.SourceLink.AzureRepos.Git/1.2.0-beta-23073-01": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-i0KL57+lSFrKj0zJEuOcoP7f0Vyh19eSZShtf6cMyOic2RWD0leSDab1SFfDf3eObzmvfvSO4mEBT6brrOoOuA==",
+ "path": "microsoft.sourcelink.azurerepos.git/1.2.0-beta-23073-01",
+ "hashPath": "microsoft.sourcelink.azurerepos.git.1.2.0-beta-23073-01.nupkg.sha512"
+ },
+ "Microsoft.SourceLink.Common/1.2.0-beta-23073-01": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-5yRCi2rsHxbaiwwUWl7POB+ZdGABhfMQ/UMccTnTiUFkuq/noI/TvRpGK1LpCw+eg2VFPnjrfAO9961Y0cUJew==",
+ "path": "microsoft.sourcelink.common/1.2.0-beta-23073-01",
+ "hashPath": "microsoft.sourcelink.common.1.2.0-beta-23073-01.nupkg.sha512"
+ },
+ "Microsoft.SourceLink.GitHub/1.2.0-beta-23073-01": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-tEz5/urpzxVX4z77BS48GmQkuJ1bXD4R/F9Twn4/ZVxaqevF9UdAH6DinDZOwweUK+Cd5sv9AyUZwtKinoa6fw==",
+ "path": "microsoft.sourcelink.github/1.2.0-beta-23073-01",
+ "hashPath": "microsoft.sourcelink.github.1.2.0-beta-23073-01.nupkg.sha512"
+ },
+ "Microsoft.Windows.SDK.BuildTools/10.0.22621.755": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zGXDCZc2/slVjpNtopNETCjnOqH9KiEdo9dPCcjtNWwK5W+EmOcEn7X5Ftj3tOE9kLvroga1s7WwLh2a5jQEEg==",
+ "path": "microsoft.windows.sdk.buildtools/10.0.22621.755",
+ "hashPath": "microsoft.windows.sdk.buildtools.10.0.22621.755.nupkg.sha512"
+ },
+ "Newtonsoft.Json/13.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
+ "path": "newtonsoft.json/13.0.1",
+ "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
+ },
+ "NuGet.Common/6.4.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-srECugLk+LB1bXelDCDhHoi6do/EYTXzuntKhjHraS4roVB3NfWohEdCSiAPdpSV9M40Q6jo6MV2Srml9e+jHQ==",
+ "path": "nuget.common/6.4.0",
+ "hashPath": "nuget.common.6.4.0.nupkg.sha512"
+ },
+ "NuGet.Configuration/6.4.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-vPjauG9AoacEjiZWGIs+d11FCRVmseqAw78FIApfLvZrYMEbbwc9vc0LdC3PpoW5FxYkktyZSiiXVKXGLu+gXw==",
+ "path": "nuget.configuration/6.4.0",
+ "hashPath": "nuget.configuration.6.4.0.nupkg.sha512"
+ },
+ "NuGet.Frameworks/6.4.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-qcufbjJIDtyY/Hah7JJfcRVpRYM3scgPqYBnukjO9kfADCFGr2azvVBozuwzljA6w/cR3w8bXLq6vW5xGrsmHw==",
+ "path": "nuget.frameworks/6.4.0",
+ "hashPath": "nuget.frameworks.6.4.0.nupkg.sha512"
+ },
+ "NuGet.Packaging/6.4.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-aR10aYqcUMGC2mwMGH5rls/MGaz3EVH8DKTTHQ/EC91hXNtrCTTAQonaRR+v1EItcoxtQeZ/WQOorv4z270Tgg==",
+ "path": "nuget.packaging/6.4.0",
+ "hashPath": "nuget.packaging.6.4.0.nupkg.sha512"
+ },
+ "NuGet.Protocol/6.4.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-KIPjsWP0P3EMsDsXaa6YBCTvYKur/zI0luS1kO5G37ci8mHs2kJFsuG5qaMhGvgyHASu54sxlic1n1oza2Pcbw==",
+ "path": "nuget.protocol/6.4.0",
+ "hashPath": "nuget.protocol.6.4.0.nupkg.sha512"
+ },
+ "NuGet.Versioning/6.4.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-YE8p3TpX4jIw+Gb24maE8YRDoqWA4imLmCbdOj5IvslLrZJXQ8akeFOGOplxICNVevON1g1SFYT2+cq4yy0nQQ==",
+ "path": "nuget.versioning/6.4.0",
+ "hashPath": "nuget.versioning.6.4.0.nupkg.sha512"
+ },
+ "NuGetKeyVaultSignTool.Core/3.2.3": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+btDDVCs5JNfLVNfcg2w6c9T6z+lo5cd/LTnQ9Vo7hha4t+GsjUogFFM+7+uDkypfDgRWQLN5cCaF+Elfhwx0A==",
+ "path": "nugetkeyvaultsigntool.core/3.2.3",
+ "hashPath": "nugetkeyvaultsigntool.core.3.2.3.nupkg.sha512"
+ },
+ "OpenVsixSignTool.Core/0.4.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-BryTyZ6Ltt10gmKN665yo4FlTi0uW49B/fc5FWY24X5XlF1XbIe/wbcrb7u0HtEIsLNIa7U4WNi/5/8LfSAPjg==",
+ "path": "openvsixsigntool.core/0.4.0",
+ "hashPath": "openvsixsigntool.core.0.4.0.nupkg.sha512"
+ },
+ "RSAKeyVaultProvider/2.1.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Op1ExpiNkpcOBKM+47Zr+ql0vO17o0+GCx9DwgJCL0W1YlkYTfzZyyTBjBGczOgzLPvWZvhepAsFvNLaX2GBKQ==",
+ "path": "rsakeyvaultprovider/2.1.1",
+ "hashPath": "rsakeyvaultprovider.2.1.1.nupkg.sha512"
+ },
+ "System.CommandLine/2.0.0-beta4.22272.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-1uqED/q2H0kKoLJ4+hI2iPSBSEdTuhfCYADeJrAqERmiGQ2NNacYKRNEQ+gFbU4glgVyK8rxI+ZOe1onEtr/Pg==",
+ "path": "system.commandline/2.0.0-beta4.22272.1",
+ "hashPath": "system.commandline.2.0.0-beta4.22272.1.nupkg.sha512"
+ },
+ "System.Diagnostics.DiagnosticSource/4.6.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-mbBgoR0rRfl2uimsZ2avZY8g7Xnh1Mza0rJZLPcxqiMWlkGukjmRkuMJ/er+AhQuiRIh80CR/Hpeztr80seV5g==",
+ "path": "system.diagnostics.diagnosticsource/4.6.0",
+ "hashPath": "system.diagnostics.diagnosticsource.4.6.0.nupkg.sha512"
+ },
+ "System.Formats.Asn1/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-+nfpV0afLmvJW8+pLlHxRjz3oZJw4fkyU9MMEaMhCsHi/SN9bGF9q79ROubDiwTiCHezmK0uCWkPP7tGFP/4yg==",
+ "path": "system.formats.asn1/7.0.0",
+ "hashPath": "system.formats.asn1.7.0.0.nupkg.sha512"
+ },
+ "System.IO.FileSystem.AccessControl/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==",
+ "path": "system.io.filesystem.accesscontrol/5.0.0",
+ "hashPath": "system.io.filesystem.accesscontrol.5.0.0.nupkg.sha512"
+ },
+ "System.Memory/4.5.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
+ "path": "system.memory/4.5.4",
+ "hashPath": "system.memory.4.5.4.nupkg.sha512"
+ },
+ "System.Memory.Data/1.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==",
+ "path": "system.memory.data/1.0.2",
+ "hashPath": "system.memory.data.1.0.2.nupkg.sha512"
+ },
+ "System.Numerics.Vectors/4.5.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==",
+ "path": "system.numerics.vectors/4.5.0",
+ "hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512"
+ },
+ "System.Runtime.CompilerServices.Unsafe/6.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
+ "path": "system.runtime.compilerservices.unsafe/6.0.0",
+ "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "path": "system.security.accesscontrol/5.0.0",
+ "hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Cng/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==",
+ "path": "system.security.cryptography.cng/5.0.0",
+ "hashPath": "system.security.cryptography.cng.5.0.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Pkcs/7.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-Qv9g+0GP1aX55cOz/k4Oz7cCFA0g+0GSXYwG0XwJgYK4y/ZCiVLjjhv4kbWIwNfouqYv2vZtNiWAxIuWUJumTw==",
+ "path": "system.security.cryptography.pkcs/7.0.1",
+ "hashPath": "system.security.cryptography.pkcs.7.0.1.nupkg.sha512"
+ },
+ "System.Security.Cryptography.ProtectedData/4.7.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ehYW0m9ptxpGWvE4zgqongBVWpSDU/JCFD4K7krxkQwSz/sFQjEXCUqpvencjy6DYDbn7Ig09R8GFffu8TtneQ==",
+ "path": "system.security.cryptography.protecteddata/4.7.0",
+ "hashPath": "system.security.cryptography.protecteddata.4.7.0.nupkg.sha512"
+ },
+ "System.Security.Cryptography.Xml/7.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-MCxBCtH0GrDuvU63ZODwQHQZPchb24pUAX3MfZ6b13qg246ZD10PRdOvay8C9HBPfCXkymUNwFPEegud7ax2zg==",
+ "path": "system.security.cryptography.xml/7.0.1",
+ "hashPath": "system.security.cryptography.xml.7.0.1.nupkg.sha512"
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+ "path": "system.security.principal.windows/5.0.0",
+ "hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
+ },
+ "System.Text.Encodings.Web/7.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==",
+ "path": "system.text.encodings.web/7.0.0",
+ "hashPath": "system.text.encodings.web.7.0.0.nupkg.sha512"
+ },
+ "System.Text.Json/7.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-/LZf/JrGyilojqwpaywb+sSz8Tew7ij4K/Sk+UW8AKfAK7KRhR6mKpKtTm06cYA7bCpGTWfYksIW+mVsdxPegQ==",
+ "path": "system.text.json/7.0.2",
+ "hashPath": "system.text.json.7.0.2.nupkg.sha512"
+ },
+ "System.Threading.Tasks.Extensions/4.5.4": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
+ "path": "system.threading.tasks.extensions/4.5.4",
+ "hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512"
+ },
+ "Sign.Core/0.9.0-beta.23127.3": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/sign.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/sign.dll
new file mode 100644
index 0000000000..1c15925049
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/sign.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fdf4c4f0535782a73033464e61cfd34cacdc71db0e632b56fbeb29e3c32ac5b
+size 55424
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/sign.runtimeconfig.json b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/sign.runtimeconfig.json
new file mode 100644
index 0000000000..30e8b4c84b
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/sign.runtimeconfig.json
@@ -0,0 +1,13 @@
+{
+ "runtimeOptions": {
+ "tfm": "net6.0",
+ "rollForward": "Major",
+ "framework": {
+ "name": "Microsoft.NETCore.App",
+ "version": "6.0.0"
+ },
+ "configProperties": {
+ "System.Reflection.Metadata.MetadataUpdater.IsSupported": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.AppxPackaging.dll.manifest b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.AppxPackaging.dll.manifest
new file mode 100644
index 0000000000..becc73ae77
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.AppxPackaging.dll.manifest
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.AppxSip.dll.manifest b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.AppxSip.dll.manifest
new file mode 100644
index 0000000000..111d35ec28
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.AppxSip.dll.manifest
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.OpcServices.dll.manifest b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.OpcServices.dll.manifest
new file mode 100644
index 0000000000..b17e53d117
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Appx.OpcServices.dll.manifest
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Signing.mssign32.dll.manifest b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Signing.mssign32.dll.manifest
new file mode 100644
index 0000000000..422623cd1d
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Signing.mssign32.dll.manifest
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Signing.wintrust.dll.manifest b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Signing.wintrust.dll.manifest
new file mode 100644
index 0000000000..651475f972
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/Microsoft.Windows.Build.Signing.wintrust.dll.manifest
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/SignTool.exe.manifest b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/SignTool.exe.manifest
new file mode 100644
index 0000000000..64796f054a
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/SignTool.exe.manifest
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/appxpackaging.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/appxpackaging.dll
new file mode 100644
index 0000000000..e0bd7464c6
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/appxpackaging.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d8887d391bef82a7882459c2636e4d0cffb2a68312aa1b2fa62a2b0eaca0f34
+size 2115048
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/appxsip.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/appxsip.dll
new file mode 100644
index 0000000000..627ad9abb6
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/appxsip.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7bcb1f50e3a918b773c5c10723ddc7ae5de8843906ec1127c6cf4ad7d64bd18a
+size 398824
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/makeappx.exe b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/makeappx.exe
new file mode 100644
index 0000000000..a0816ef7d8
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/makeappx.exe
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7800120ef7db0373aa3a588faf666afc3dcdb2ea83ff4dfe467c0b6f81409218
+size 542184
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/makepri.exe b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/makepri.exe
new file mode 100644
index 0000000000..a85907f396
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/makepri.exe
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3c262dffa7a1cafb7df3308a32fd7e9283aa3f28ee902c11d299437700e93f52
+size 955880
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/mssign32.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/mssign32.dll
new file mode 100644
index 0000000000..7dbc53dc5e
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/mssign32.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:257c73551d1d445ef0ede9bd216df114912e2a2e4aa7ab0e0ad54b6108bfc48b
+size 140768
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/opcservices.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/opcservices.dll
new file mode 100644
index 0000000000..db7ea78c3a
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/opcservices.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43a90649502d83f076a9a56286e089763de6a25651a1a496cbbe6458735f4852
+size 1869264
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/wintrust.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/wintrust.dll
new file mode 100644
index 0000000000..e8052dcc21
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/wintrust.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e3e0fd687a911df8b9b098f5a2969b674ed116ae0ee5d734f72ca10e159bcd1
+size 378336
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/wintrust.dll.ini b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/wintrust.dll.ini
new file mode 100644
index 0000000000..841c6091bf
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x64/wintrust.dll.ini
@@ -0,0 +1,53 @@
+[0]
+DLL=msisip.dll
+GUID={000C10F1-0000-0000-C000-000000000046}
+CryptSIPDllCreateIndirectData=MsiSIPCreateIndirectData
+CryptSIPDllGetSignedDataMsg=MsiSIPGetSignedDataMsg
+CryptSIPDllIsMyFileType2=MsiSIPIsMyTypeOfFile
+CryptSIPDllPutSignedDataMsg=MsiSIPPutSignedDataMsg
+CryptSIPDllRemoveSignedDataMsg=MsiSIPRemoveSignedDataMsg
+CryptSIPDllVerifyIndirectData=MsiSIPVerifyIndirectData
+
+
+[1]
+DLL=AppxSip.dll
+GUID={0AC5DF4B-CE07-4DE2-B76E-23C839A09FD1}
+CryptSIPDllCreateIndirectData=AppxSipCreateIndirectData
+CryptSIPDllGetSignedDataMsg=AppxSipGetSignedDataMsg
+CryptSIPDllIsMyFileType2=AppxSipIsFileSupportedName
+CryptSIPDllPutSignedDataMsg=AppxSipPutSignedDataMsg
+CryptSIPDllRemoveSignedDataMsg=AppxSipRemoveSignedDataMsg
+CryptSIPDllVerifyIndirectData=AppxSipVerifyIndirectData
+
+
+[2]
+DLL=AppxSip.dll
+GUID={0F5F58B3-AADE-4B9A-A434-95742D92ECEB}
+CryptSIPDllCreateIndirectData=AppxBundleSipCreateIndirectData
+CryptSIPDllGetSignedDataMsg=AppxBundleSipGetSignedDataMsg
+CryptSIPDllIsMyFileType2=AppxBundleSipIsFileSupportedName
+CryptSIPDllPutSignedDataMsg=AppxBundleSipPutSignedDataMsg
+CryptSIPDllRemoveSignedDataMsg=AppxBundleSipRemoveSignedDataMsg
+CryptSIPDllVerifyIndirectData=AppxBundleSipVerifyIndirectData
+
+
+[3]
+DLL=AppxSip.dll
+GUID={CF78C6DE-64A2-4799-B506-89ADFF5D16D6}
+CryptSIPDllCreateIndirectData=EappxSipCreateIndirectData
+CryptSIPDllGetSignedDataMsg=EappxSipGetSignedDataMsg
+CryptSIPDllIsMyFileType2=EappxSipIsFileSupportedName
+CryptSIPDllPutSignedDataMsg=EappxSipPutSignedDataMsg
+CryptSIPDllRemoveSignedDataMsg=EappxSipRemoveSignedDataMsg
+CryptSIPDllVerifyIndirectData=EappxSipVerifyIndirectData
+
+
+[4]
+DLL=AppxSip.dll
+GUID={D1D04F0C-9ABA-430D-B0E4-D7E96ACCE66C}
+CryptSIPDllCreateIndirectData=EappxBundleSipCreateIndirectData
+CryptSIPDllGetSignedDataMsg=EappxBundleSipGetSignedDataMsg
+CryptSIPDllIsMyFileType2=EappxBundleSipIsFileSupportedName
+CryptSIPDllPutSignedDataMsg=EappxBundleSipPutSignedDataMsg
+CryptSIPDllRemoveSignedDataMsg=EappxBundleSipRemoveSignedDataMsg
+CryptSIPDllVerifyIndirectData=EappxBundleSipVerifyIndirectData
\ No newline at end of file
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x86/mage.exe b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x86/mage.exe
new file mode 100644
index 0000000000..7cbb0b5ca2
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tools/SDK/x86/mage.exe
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c4f57ff428faed0caed6308c48a9918873a382f29633a3a928c36ad3be87add
+size 153480
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tr/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tr/Sign.Core.resources.dll
new file mode 100644
index 0000000000..9247278f72
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tr/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdc47e21b1399e1f98dcff78bca3f0dd78f871d3c6bb48db8df19b91430b304f
+size 18560
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tr/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tr/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..3243f651fb
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tr/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:795abf08b10483a5d58a95dda7190fa62cfa56bfe91fba84dc71ff4918f6ef21
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tr/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tr/sign.resources.dll
new file mode 100644
index 0000000000..7c9e030bb9
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/tr/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69ec11e70955f5e2901c947422e4c6b1dedda59775e5e933997ae8661a8425b2
+size 19632
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hans/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hans/Sign.Core.resources.dll
new file mode 100644
index 0000000000..7b1b4ce2ad
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hans/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97935588c9e1dcf896d2db081f7253c79e7b44eb54298c822b61464ad46c72f1
+size 18048
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hans/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hans/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..efb63a6b49
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hans/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b964e741986ad049f2a66daffdfb4a44a1d2a63852245ee95ffc429ee6887891
+size 19360
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hans/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hans/sign.resources.dll
new file mode 100644
index 0000000000..fb92558471
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hans/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:62acded716f00006a3fe69e26acb47b6e105d334aca89a0e3ee9388481fe7400
+size 19072
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hant/Sign.Core.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hant/Sign.Core.resources.dll
new file mode 100644
index 0000000000..3dd8e972d4
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hant/Sign.Core.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13540cb5e71947a673fbe4681a01f200b10a0b270ff8482e28485720b3d5af78
+size 18048
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hant/System.CommandLine.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hant/System.CommandLine.resources.dll
new file mode 100644
index 0000000000..fb20b99a03
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hant/System.CommandLine.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5536a72bf99553442693acd0bdfa5d0f8f892a422f088e3b4c612ea284c85fb9
+size 19344
diff --git a/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hant/sign.resources.dll b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hant/sign.resources.dll
new file mode 100644
index 0000000000..42f45ac819
--- /dev/null
+++ b/build/sign/.store/sign/0.9.0-beta.23127.3/sign/0.9.0-beta.23127.3/tools/net6.0/any/zh-Hant/sign.resources.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f11b8239c51e06d52bf5b29cd2ae5b72fe2906c864951d53bbee459a24a9ce2
+size 19080
diff --git a/build/sign/.store/signclient/1.3.155/project.assets.json b/build/sign/.store/signclient/1.3.155/project.assets.json
deleted file mode 100644
index 453fde7434..0000000000
--- a/build/sign/.store/signclient/1.3.155/project.assets.json
+++ /dev/null
@@ -1,183 +0,0 @@
-{
- "version": 3,
- "targets": {
- "net8.0": {
- "SignClient/1.3.155": {
- "type": "package"
- }
- },
- "net8.0/any": {
- "SignClient/1.3.155": {
- "type": "package",
- "tools": {
- "tools/net5.0/any/DotnetToolSettings.xml": {},
- "tools/net5.0/any/Microsoft.Extensions.CommandLineUtils.dll": {},
- "tools/net5.0/any/Microsoft.Extensions.Configuration.Abstractions.dll": {},
- "tools/net5.0/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {},
- "tools/net5.0/any/Microsoft.Extensions.Configuration.FileExtensions.dll": {},
- "tools/net5.0/any/Microsoft.Extensions.Configuration.Json.dll": {},
- "tools/net5.0/any/Microsoft.Extensions.Configuration.dll": {},
- "tools/net5.0/any/Microsoft.Extensions.FileProviders.Abstractions.dll": {},
- "tools/net5.0/any/Microsoft.Extensions.FileProviders.Physical.dll": {},
- "tools/net5.0/any/Microsoft.Extensions.FileSystemGlobbing.dll": {},
- "tools/net5.0/any/Microsoft.Extensions.Primitives.dll": {},
- "tools/net5.0/any/Microsoft.Identity.Client.dll": {},
- "tools/net5.0/any/Refit.dll": {},
- "tools/net5.0/any/SignClient.deps.json": {},
- "tools/net5.0/any/SignClient.dll": {},
- "tools/net5.0/any/SignClient.pdb": {},
- "tools/net5.0/any/SignClient.runtimeconfig.json": {}
- }
- }
- }
- },
- "libraries": {
- "SignClient/1.3.155": {
- "sha512": "DEkr0B/UOiZl6R+YDOu/EXXoz6hi/KR5qWuHI/KzFL236aEwjXS177woxLzWLuGK99b5qZUS8Eyl6/qmJVqMvQ==",
- "type": "package",
- "path": "signclient/1.3.155",
- "hasTools": true,
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "signclient.1.3.155.nupkg.sha512",
- "signclient.nuspec",
- "tools/net5.0/any/DotnetToolSettings.xml",
- "tools/net5.0/any/Microsoft.Extensions.CommandLineUtils.dll",
- "tools/net5.0/any/Microsoft.Extensions.Configuration.Abstractions.dll",
- "tools/net5.0/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll",
- "tools/net5.0/any/Microsoft.Extensions.Configuration.FileExtensions.dll",
- "tools/net5.0/any/Microsoft.Extensions.Configuration.Json.dll",
- "tools/net5.0/any/Microsoft.Extensions.Configuration.dll",
- "tools/net5.0/any/Microsoft.Extensions.FileProviders.Abstractions.dll",
- "tools/net5.0/any/Microsoft.Extensions.FileProviders.Physical.dll",
- "tools/net5.0/any/Microsoft.Extensions.FileSystemGlobbing.dll",
- "tools/net5.0/any/Microsoft.Extensions.Primitives.dll",
- "tools/net5.0/any/Microsoft.Identity.Client.dll",
- "tools/net5.0/any/Refit.dll",
- "tools/net5.0/any/SignClient.deps.json",
- "tools/net5.0/any/SignClient.dll",
- "tools/net5.0/any/SignClient.pdb",
- "tools/net5.0/any/SignClient.runtimeconfig.json",
- "tools/netcoreapp2.1/any/DotnetToolSettings.xml",
- "tools/netcoreapp2.1/any/Microsoft.Bcl.AsyncInterfaces.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.CommandLineUtils.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.Abstractions.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.FileExtensions.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.Json.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.FileProviders.Abstractions.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.FileProviders.Physical.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.FileSystemGlobbing.dll",
- "tools/netcoreapp2.1/any/Microsoft.Extensions.Primitives.dll",
- "tools/netcoreapp2.1/any/Microsoft.Identity.Client.dll",
- "tools/netcoreapp2.1/any/Refit.dll",
- "tools/netcoreapp2.1/any/SignClient.deps.json",
- "tools/netcoreapp2.1/any/SignClient.dll",
- "tools/netcoreapp2.1/any/SignClient.pdb",
- "tools/netcoreapp2.1/any/SignClient.runtimeconfig.json",
- "tools/netcoreapp2.1/any/System.Net.Http.Json.dll",
- "tools/netcoreapp2.1/any/System.Runtime.CompilerServices.Unsafe.dll",
- "tools/netcoreapp2.1/any/System.Text.Encodings.Web.dll",
- "tools/netcoreapp2.1/any/System.Text.Json.dll",
- "tools/netcoreapp3.1/any/DotnetToolSettings.xml",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.CommandLineUtils.dll",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.Abstractions.dll",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.FileExtensions.dll",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.Json.dll",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.dll",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.FileProviders.Abstractions.dll",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.FileProviders.Physical.dll",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.FileSystemGlobbing.dll",
- "tools/netcoreapp3.1/any/Microsoft.Extensions.Primitives.dll",
- "tools/netcoreapp3.1/any/Microsoft.Identity.Client.dll",
- "tools/netcoreapp3.1/any/Refit.dll",
- "tools/netcoreapp3.1/any/SignClient.deps.json",
- "tools/netcoreapp3.1/any/SignClient.dll",
- "tools/netcoreapp3.1/any/SignClient.pdb",
- "tools/netcoreapp3.1/any/SignClient.runtimeconfig.json",
- "tools/netcoreapp3.1/any/System.Net.Http.Json.dll",
- "tools/netcoreapp3.1/any/System.Text.Json.dll"
- ]
- }
- },
- "projectFileDependencyGroups": {
- "net8.0": [
- "signclient >= *"
- ]
- },
- "packageFolders": {
- "C:\\dev\\stride\\build\\sign\\.store\\.stage\\5zdy4aug.kc2": {}
- },
- "project": {
- "version": "1.0.0",
- "restore": {
- "projectUniqueName": "C:\\Users\\xen\\AppData\\Local\\Temp\\a51201f1-789d-4773-8ad7-bc52ff4d6172\\restore.csproj",
- "projectName": "restore",
- "projectPath": "C:\\Users\\xen\\AppData\\Local\\Temp\\a51201f1-789d-4773-8ad7-bc52ff4d6172\\restore.csproj",
- "packagesPath": "C:\\dev\\stride\\build\\sign\\.store\\.stage\\5zdy4aug.kc2",
- "outputPath": "C:\\dev\\stride\\build\\sign\\.store\\.stage\\5zdy4aug.kc2\\",
- "projectStyle": "DotnetToolReference",
- "configFilePaths": [
- "C:\\dev\\stride\\NuGet.Config",
- "C:\\Users\\xen\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net8.0"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "C:\\Program Files\\dotnet\\library-packs": {},
- "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {},
- "C:\\Users\\xen\\AppData\\Local\\Stride\\NugetDev": {},
- "https://api.nuget.org/v3/index.json": {},
- "https://packages.stride3d.net/nuget": {},
- "https://pkgs.dev.azure.com/clairernovotny/GitBuilds/_packaging/MSBuildSdkExtras@Local/nuget/v3/index.json": {}
- },
- "frameworks": {
- "net8.0": {
- "targetAlias": "net8.0",
- "projectReferences": {}
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- }
- },
- "frameworks": {
- "net8.0": {
- "targetAlias": "net8.0",
- "dependencies": {
- "signclient": {
- "target": "Package",
- "version": "[*, )"
- }
- },
- "imports": [
- "net461",
- "net462",
- "net47",
- "net471",
- "net472",
- "net48",
- "net481"
- ],
- "assetTargetFallback": true,
- "warn": true,
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.102\\RuntimeIdentifierGraph.json"
- }
- },
- "runtimes": {
- "any": {
- "#import": []
- }
- }
- }
-}
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/restore.csproj.nuget.g.props b/build/sign/.store/signclient/1.3.155/restore.csproj.nuget.g.props
deleted file mode 100644
index 278240eaf7..0000000000
--- a/build/sign/.store/signclient/1.3.155/restore.csproj.nuget.g.props
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- True
- NuGet
- $(MSBuildThisFileDirectory)project.assets.json
- C:\dev\stride\build\sign\.store\.stage\5zdy4aug.kc2
- C:\dev\stride\build\sign\.store\.stage\5zdy4aug.kc2
- DotnetToolReference
- 6.4.0
-
-
-
-
-
- C:\dev\stride\build\sign\.store\.stage\5zdy4aug.kc2\signclient\1.3.155
-
-
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/.nupkg.metadata b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/.nupkg.metadata
deleted file mode 100644
index 3efd8f407e..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/.nupkg.metadata
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "version": 2,
- "contentHash": "DEkr0B/UOiZl6R+YDOu/EXXoz6hi/KR5qWuHI/KzFL236aEwjXS177woxLzWLuGK99b5qZUS8Eyl6/qmJVqMvQ==",
- "source": "https://api.nuget.org/v3/index.json"
-}
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/.signature.p7s b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/.signature.p7s
deleted file mode 100644
index e4a7f78a75..0000000000
Binary files a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/.signature.p7s and /dev/null differ
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/signclient.1.3.155.nupkg.sha512 b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/signclient.1.3.155.nupkg.sha512
deleted file mode 100644
index a6818a72bd..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/signclient.1.3.155.nupkg.sha512
+++ /dev/null
@@ -1 +0,0 @@
-WDWfUQBvT+3EbLeR27GgybCnPp129w9SuLxm6Nf3TyfI5yBpXctVp14D88xv6zl0V0P6ULtkmOqDv9hnKN504g==
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/signclient.nuspec b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/signclient.nuspec
deleted file mode 100644
index 88de0d5122..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/signclient.nuspec
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- SignClient
- 1.3.155
- SignClient
- false
- MIT
- https://licenses.nuget.org/MIT
- https://github.com/dotnet/SignService
- Client-side tools for the .NET Foundation Sign Service
- © 2006-2021 .NET Foundation and Contributors
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/DotnetToolSettings.xml b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/DotnetToolSettings.xml
deleted file mode 100644
index 41498125cf..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/DotnetToolSettings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.CommandLineUtils.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.CommandLineUtils.dll
deleted file mode 100644
index e6f4f41de9..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.CommandLineUtils.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:73d30a07da46aa5156a7ab1221cd884e476f32c19219bad19c7cc1201b652072
-size 31736
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.Abstractions.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.Abstractions.dll
deleted file mode 100644
index 043e8c7475..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.Abstractions.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:35879c28cd19a54bf38f8b29be08bac54bbcd2b931f0f5fb7e246893f04d687c
-size 20360
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll
deleted file mode 100644
index b7428aa179..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cb862d6388a5124207291898b48a8e1240baa297224fff3b348ab4637ccfdfdf
-size 19848
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.FileExtensions.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.FileExtensions.dll
deleted file mode 100644
index e245882653..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.FileExtensions.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e6d0a6bbceea061d1782ca7f746ff1f561dcb73fc9f180660878edf8f03a767d
-size 25480
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.Json.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.Json.dll
deleted file mode 100644
index c84c588956..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.Json.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:38cd246065e64618093943f655ff3aa6de12b3b401dbf7cb3ed7cbe3ea745f3f
-size 24960
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.dll
deleted file mode 100644
index 4e3de6178e..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Configuration.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c7dcd8475b758acfdf4ad3690624275f23dd3292cb71072b6b7c38457192838a
-size 30600
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.FileProviders.Abstractions.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.FileProviders.Abstractions.dll
deleted file mode 100644
index ad64c919d6..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.FileProviders.Abstractions.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:69428b16a4a007f87065ce3574b54aa1148a4608528697d03d5321a11ce9cf93
-size 16776
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.FileProviders.Physical.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.FileProviders.Physical.dll
deleted file mode 100644
index 3c5156246a..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.FileProviders.Physical.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0af872ee3e7af283f30502a16a43213640ebe6d401c44d0b698d70ba47742e5d
-size 35720
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.FileSystemGlobbing.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.FileSystemGlobbing.dll
deleted file mode 100644
index ec4fd85083..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.FileSystemGlobbing.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c6ba4c0e8df96e0c33fe6fe4c14bcbf5200ec72120492c0ee7b462ba120b1e02
-size 39304
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Primitives.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Primitives.dll
deleted file mode 100644
index 7e9e38db74..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Extensions.Primitives.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7f63e0a1fb6a124291bae88093a4b5307ca03aea99047cc1d07381def47ddd35
-size 39296
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Identity.Client.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Identity.Client.dll
deleted file mode 100644
index 6f0b8c8f7a..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Microsoft.Identity.Client.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ebbc3ac0eb9c673c12b69e0f9fc4fe99eaa1d0c342bd72753538f209c6df8c40
-size 1333720
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Refit.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Refit.dll
deleted file mode 100644
index 2d60caec5f..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/Refit.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:67ad40a232fa34cffc13e4ccee38d4c9fbc5347ca95005f0b2c1cf6aebe0c0bc
-size 138800
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/SignClient.deps.json b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/SignClient.deps.json
deleted file mode 100644
index 058899029d..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/SignClient.deps.json
+++ /dev/null
@@ -1,1496 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v5.0",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v5.0": {
- "SignClient/1.3.155": {
- "dependencies": {
- "Microsoft.Extensions.CommandLineUtils": "1.1.1",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "5.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "5.0.0",
- "Microsoft.Extensions.Configuration.Json": "5.0.0",
- "Microsoft.Identity.Client": "4.27.0",
- "Microsoft.NETFramework.ReferenceAssemblies": "1.0.0",
- "Microsoft.SourceLink.AzureRepos.Git": "1.0.0",
- "Microsoft.SourceLink.GitHub": "1.0.0",
- "Nerdbank.GitVersioning": "3.3.37",
- "Refit": "6.0.24"
- },
- "runtime": {
- "SignClient.dll": {}
- }
- },
- "Microsoft.Build.Tasks.Git/1.0.0": {},
- "Microsoft.Extensions.CommandLineUtils/1.1.1": {
- "dependencies": {
- "NETStandard.Library": "1.6.1"
- },
- "runtime": {
- "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll": {
- "assemblyVersion": "1.1.1.0",
- "fileVersion": "1.1.1.30427"
- }
- }
- },
- "Microsoft.Extensions.Configuration/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.Abstractions/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "5.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.FileExtensions/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "5.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "5.0.0",
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.Json/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "5.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "5.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.FileProviders.Abstractions/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.FileProviders.Physical/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0",
- "Microsoft.Extensions.FileSystemGlobbing": "5.0.0",
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.FileSystemGlobbing/5.0.0": {
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Primitives/5.0.0": {
- "runtime": {
- "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Identity.Client/4.27.0": {
- "runtime": {
- "lib/netcoreapp2.1/Microsoft.Identity.Client.dll": {
- "assemblyVersion": "4.27.0.0",
- "fileVersion": "4.27.0.0"
- }
- }
- },
- "Microsoft.NETCore.Platforms/1.1.0": {},
- "Microsoft.NETCore.Targets/1.1.0": {},
- "Microsoft.NETFramework.ReferenceAssemblies/1.0.0": {},
- "Microsoft.SourceLink.AzureRepos.Git/1.0.0": {
- "dependencies": {
- "Microsoft.Build.Tasks.Git": "1.0.0",
- "Microsoft.SourceLink.Common": "1.0.0"
- }
- },
- "Microsoft.SourceLink.Common/1.0.0": {},
- "Microsoft.SourceLink.GitHub/1.0.0": {
- "dependencies": {
- "Microsoft.Build.Tasks.Git": "1.0.0",
- "Microsoft.SourceLink.Common": "1.0.0"
- }
- },
- "Microsoft.Win32.Primitives/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "Nerdbank.GitVersioning/3.3.37": {},
- "NETStandard.Library/1.6.1": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.Win32.Primitives": "4.3.0",
- "System.AppContext": "4.3.0",
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Console": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Calendars": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.Compression": "4.3.0",
- "System.IO.Compression.ZipFile": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Linq.Expressions": "4.3.0",
- "System.Net.Http": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Net.Sockets": "4.3.0",
- "System.ObjectModel": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Timer": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XDocument": "4.3.0"
- }
- },
- "Refit/6.0.24": {
- "dependencies": {
- "System.Net.Http.Json": "5.0.0"
- },
- "runtime": {
- "lib/net5.0/Refit.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.24.20825"
- }
- }
- },
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.native.System/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.IO.Compression/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Net.Http/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Security.Cryptography.Apple/4.3.0": {
- "dependencies": {
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
- }
- },
- "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "dependencies": {
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {},
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "System.AppContext/4.3.0": {
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Buffers/4.3.0": {
- "dependencies": {
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Collections/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Collections.Concurrent/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Console/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Diagnostics.Debug/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.DiagnosticSource/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Diagnostics.Tools/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.Tracing/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Calendars/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Extensions/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0"
- }
- },
- "System.IO/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.Compression/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Buffers": "4.3.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.IO.Compression": "4.3.0"
- }
- },
- "System.IO.Compression.ZipFile/4.3.0": {
- "dependencies": {
- "System.Buffers": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.Compression": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.IO.FileSystem/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.FileSystem.Primitives/4.3.0": {
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Linq/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Linq.Expressions/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Linq": "4.3.0",
- "System.ObjectModel": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Emit.Lightweight": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Net.Http/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.DiagnosticSource": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Extensions": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Net.Http.Json/5.0.0": {},
- "System.Net.Primitives/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Net.Sockets/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.ObjectModel/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Reflection/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit/4.3.0": {
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.ILGeneration/4.3.0": {
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.Lightweight/4.3.0": {
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Extensions/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Primitives/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.TypeExtensions/4.3.0": {
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Resources.ResourceManager/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "System.Runtime.Extensions/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Handles/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.InteropServices/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Runtime.Numerics/4.3.0": {
- "dependencies": {
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Security.Cryptography.Algorithms/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Cng/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Security.Cryptography.Csp/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Security.Cryptography.Encoding/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.OpenSsl/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Primitives/4.3.0": {
- "dependencies": {
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Security.Cryptography.X509Certificates/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Calendars": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Cng": "4.3.0",
- "System.Security.Cryptography.Csp": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Text.Encoding/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Text.Encoding.Extensions/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Text.RegularExpressions/4.3.0": {
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading/4.3.0": {
- "dependencies": {
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Threading.Tasks/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading.Tasks.Extensions/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Threading.Timer/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Xml.ReaderWriter/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Tasks.Extensions": "4.3.0"
- }
- },
- "System.Xml.XDocument/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- }
- }
- },
- "libraries": {
- "SignClient/1.3.155": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Build.Tasks.Git/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-z2fpmmt+1Jfl+ZnBki9nSP08S1/tbEOxFdsK1rSR+LBehIJz1Xv9/6qOOoGNqlwnAGGVGis1Oj6S8Kt9COEYlQ==",
- "path": "microsoft.build.tasks.git/1.0.0",
- "hashPath": "microsoft.build.tasks.git.1.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.CommandLineUtils/1.1.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-vsI1L6Bx602aQ/8051nrRbAWGxCQQX7IKT/9XApnEYfzLPBX7LcCZuwnDyD1bHTm2D8GcMweVSPr1H2rAfAgbA==",
- "path": "microsoft.extensions.commandlineutils/1.1.1",
- "hashPath": "microsoft.extensions.commandlineutils.1.1.1.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-LN322qEKHjuVEhhXueTUe7RNePooZmS8aGid5aK2woX3NPjSnONFyKUc6+JknOS6ce6h2tCLfKPTBXE3mN/6Ag==",
- "path": "microsoft.extensions.configuration/5.0.0",
- "hashPath": "microsoft.extensions.configuration.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.Abstractions/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ETjSBHMp3OAZ4HxGQYpwyGsD8Sw5FegQXphi0rpoGMT74S4+I2mm7XJEswwn59XAaKOzC15oDSOWEE8SzDCd6Q==",
- "path": "microsoft.extensions.configuration.abstractions/5.0.0",
- "hashPath": "microsoft.extensions.configuration.abstractions.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-fqh6y6hAi0Z0fRsb4B/mP9OkKkSlifh5osa+N/YSQ+/S2a//+zYApZMUC1XeP9fdjlgZoPQoZ72Q2eLHyKLddQ==",
- "path": "microsoft.extensions.configuration.environmentvariables/5.0.0",
- "hashPath": "microsoft.extensions.configuration.environmentvariables.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.FileExtensions/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-rRdspYKA18ViPOISwAihhCMbusHsARCOtDMwa23f+BGEdIjpKPlhs3LLjmKlxfhpGXBjIsS0JpXcChjRUN+PAw==",
- "path": "microsoft.extensions.configuration.fileextensions/5.0.0",
- "hashPath": "microsoft.extensions.configuration.fileextensions.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.Json/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Pak8ymSUfdzPfBTLHxeOwcR32YDbuVfhnH2hkfOLnJNQd19ItlBdpMjIDY9C5O/nS2Sn9bzDMai0ZrvF7KyY/Q==",
- "path": "microsoft.extensions.configuration.json/5.0.0",
- "hashPath": "microsoft.extensions.configuration.json.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileProviders.Abstractions/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-iuZIiZ3mteEb+nsUqpGXKx2cGF+cv6gWPd5jqQI4hzqdiJ6I94ddLjKhQOuRW1lueHwocIw30xbSHGhQj0zjdQ==",
- "path": "microsoft.extensions.fileproviders.abstractions/5.0.0",
- "hashPath": "microsoft.extensions.fileproviders.abstractions.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileProviders.Physical/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-1rkd8UO2qf21biwO7X0hL9uHP7vtfmdv/NLvKgCRHkdz1XnW8zVQJXyEYiN68WYpExgtVWn55QF0qBzgfh1mGg==",
- "path": "microsoft.extensions.fileproviders.physical/5.0.0",
- "hashPath": "microsoft.extensions.fileproviders.physical.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileSystemGlobbing/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ArliS8lGk8sWRtrWpqI8yUVYJpRruPjCDT+EIjrgkA/AAPRctlAkRISVZ334chAKktTLzD1+PK8F5IZpGedSqA==",
- "path": "microsoft.extensions.filesystemglobbing/5.0.0",
- "hashPath": "microsoft.extensions.filesystemglobbing.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Primitives/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==",
- "path": "microsoft.extensions.primitives/5.0.0",
- "hashPath": "microsoft.extensions.primitives.5.0.0.nupkg.sha512"
- },
- "Microsoft.Identity.Client/4.27.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-vUeVNPQU4+it3cjNxxuJR84z6kbd8YrQleHFrut3YZ+yFac/jtjB1C8i8piSrrYJF8aQUezciubQY7x/PUu+2Q==",
- "path": "microsoft.identity.client/4.27.0",
- "hashPath": "microsoft.identity.client.4.27.0.nupkg.sha512"
- },
- "Microsoft.NETCore.Platforms/1.1.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
- "path": "microsoft.netcore.platforms/1.1.0",
- "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
- },
- "Microsoft.NETCore.Targets/1.1.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==",
- "path": "microsoft.netcore.targets/1.1.0",
- "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512"
- },
- "Microsoft.NETFramework.ReferenceAssemblies/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-7D2TMufjGiowmt0E941kVoTIS+GTNzaPopuzM1/1LSaJAdJdBrVP0SkZW7AgDd0a2U1DjsIeaKG1wxGVBNLDMw==",
- "path": "microsoft.netframework.referenceassemblies/1.0.0",
- "hashPath": "microsoft.netframework.referenceassemblies.1.0.0.nupkg.sha512"
- },
- "Microsoft.SourceLink.AzureRepos.Git/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KqaJ7iLXKDwBZn0HiT/gdyElvq0Tf96iHEUSdeT9mFf5bfF7XjVrLLoSVYc9cB2MZ+EY1YTfqkBqbkM4qcqWLA==",
- "path": "microsoft.sourcelink.azurerepos.git/1.0.0",
- "hashPath": "microsoft.sourcelink.azurerepos.git.1.0.0.nupkg.sha512"
- },
- "Microsoft.SourceLink.Common/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-G8DuQY8/DK5NN+3jm5wcMcd9QYD90UV7MiLmdljSJixi3U/vNaeBKmmXUqI4DJCOeWizIUEh4ALhSt58mR+5eg==",
- "path": "microsoft.sourcelink.common/1.0.0",
- "hashPath": "microsoft.sourcelink.common.1.0.0.nupkg.sha512"
- },
- "Microsoft.SourceLink.GitHub/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-aZyGyGg2nFSxix+xMkPmlmZSsnGQ3w+mIG23LTxJZHN+GPwTQ5FpPgDo7RMOq+Kcf5D4hFWfXkGhoGstawX13Q==",
- "path": "microsoft.sourcelink.github/1.0.0",
- "hashPath": "microsoft.sourcelink.github.1.0.0.nupkg.sha512"
- },
- "Microsoft.Win32.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
- "path": "microsoft.win32.primitives/4.3.0",
- "hashPath": "microsoft.win32.primitives.4.3.0.nupkg.sha512"
- },
- "Nerdbank.GitVersioning/3.3.37": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-YlDKV/gSHQGDThWSGqVyPfKeNP/kx1fj/NPFFgGc/cxzgIbXv4jtYOcbFOz3ZIeAKtpCcSAmVNDOikBs3OxI/A==",
- "path": "nerdbank.gitversioning/3.3.37",
- "hashPath": "nerdbank.gitversioning.3.3.37.nupkg.sha512"
- },
- "NETStandard.Library/1.6.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
- "path": "netstandard.library/1.6.1",
- "hashPath": "netstandard.library.1.6.1.nupkg.sha512"
- },
- "Refit/6.0.24": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-hirF5tK01RVlC4P+3PUjkaOnR4R8SYvt0sOcjR6j3UnFs2pv3mj8CLVij5AWRLGW1h0TUL48+RTvzDySosyT0g==",
- "path": "refit/6.0.24",
- "hashPath": "refit.6.0.24.nupkg.sha512"
- },
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==",
- "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==",
- "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==",
- "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.native.System/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
- "path": "runtime.native.system/4.3.0",
- "hashPath": "runtime.native.system.4.3.0.nupkg.sha512"
- },
- "runtime.native.System.IO.Compression/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
- "path": "runtime.native.system.io.compression/4.3.0",
- "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512"
- },
- "runtime.native.System.Net.Http/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
- "path": "runtime.native.system.net.http/4.3.0",
- "hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512"
- },
- "runtime.native.System.Security.Cryptography.Apple/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
- "path": "runtime.native.system.security.cryptography.apple/4.3.0",
- "hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
- },
- "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
- "path": "runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==",
- "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==",
- "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==",
- "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0",
- "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==",
- "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==",
- "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==",
- "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==",
- "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==",
- "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "System.AppContext/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
- "path": "system.appcontext/4.3.0",
- "hashPath": "system.appcontext.4.3.0.nupkg.sha512"
- },
- "System.Buffers/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==",
- "path": "system.buffers/4.3.0",
- "hashPath": "system.buffers.4.3.0.nupkg.sha512"
- },
- "System.Collections/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
- "path": "system.collections/4.3.0",
- "hashPath": "system.collections.4.3.0.nupkg.sha512"
- },
- "System.Collections.Concurrent/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
- "path": "system.collections.concurrent/4.3.0",
- "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512"
- },
- "System.Console/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
- "path": "system.console/4.3.0",
- "hashPath": "system.console.4.3.0.nupkg.sha512"
- },
- "System.Diagnostics.Debug/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
- "path": "system.diagnostics.debug/4.3.0",
- "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512"
- },
- "System.Diagnostics.DiagnosticSource/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==",
- "path": "system.diagnostics.diagnosticsource/4.3.0",
- "hashPath": "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512"
- },
- "System.Diagnostics.Tools/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
- "path": "system.diagnostics.tools/4.3.0",
- "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512"
- },
- "System.Diagnostics.Tracing/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
- "path": "system.diagnostics.tracing/4.3.0",
- "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512"
- },
- "System.Globalization/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
- "path": "system.globalization/4.3.0",
- "hashPath": "system.globalization.4.3.0.nupkg.sha512"
- },
- "System.Globalization.Calendars/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
- "path": "system.globalization.calendars/4.3.0",
- "hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512"
- },
- "System.Globalization.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
- "path": "system.globalization.extensions/4.3.0",
- "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512"
- },
- "System.IO/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
- "path": "system.io/4.3.0",
- "hashPath": "system.io.4.3.0.nupkg.sha512"
- },
- "System.IO.Compression/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
- "path": "system.io.compression/4.3.0",
- "hashPath": "system.io.compression.4.3.0.nupkg.sha512"
- },
- "System.IO.Compression.ZipFile/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
- "path": "system.io.compression.zipfile/4.3.0",
- "hashPath": "system.io.compression.zipfile.4.3.0.nupkg.sha512"
- },
- "System.IO.FileSystem/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
- "path": "system.io.filesystem/4.3.0",
- "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512"
- },
- "System.IO.FileSystem.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
- "path": "system.io.filesystem.primitives/4.3.0",
- "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512"
- },
- "System.Linq/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
- "path": "system.linq/4.3.0",
- "hashPath": "system.linq.4.3.0.nupkg.sha512"
- },
- "System.Linq.Expressions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
- "path": "system.linq.expressions/4.3.0",
- "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512"
- },
- "System.Net.Http/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
- "path": "system.net.http/4.3.0",
- "hashPath": "system.net.http.4.3.0.nupkg.sha512"
- },
- "System.Net.Http.Json/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3CPSQpCzEmI9o+1G79TnPCjF40omCdnoXj2Rg76BDwGj5+LZnFPjV+t35eedlvl+uthmholk/XXxXTYgJWSexw==",
- "path": "system.net.http.json/5.0.0",
- "hashPath": "system.net.http.json.5.0.0.nupkg.sha512"
- },
- "System.Net.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
- "path": "system.net.primitives/4.3.0",
- "hashPath": "system.net.primitives.4.3.0.nupkg.sha512"
- },
- "System.Net.Sockets/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
- "path": "system.net.sockets/4.3.0",
- "hashPath": "system.net.sockets.4.3.0.nupkg.sha512"
- },
- "System.ObjectModel/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
- "path": "system.objectmodel/4.3.0",
- "hashPath": "system.objectmodel.4.3.0.nupkg.sha512"
- },
- "System.Reflection/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
- "path": "system.reflection/4.3.0",
- "hashPath": "system.reflection.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Emit/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
- "path": "system.reflection.emit/4.3.0",
- "hashPath": "system.reflection.emit.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Emit.ILGeneration/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
- "path": "system.reflection.emit.ilgeneration/4.3.0",
- "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Emit.Lightweight/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
- "path": "system.reflection.emit.lightweight/4.3.0",
- "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
- "path": "system.reflection.extensions/4.3.0",
- "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
- "path": "system.reflection.primitives/4.3.0",
- "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512"
- },
- "System.Reflection.TypeExtensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==",
- "path": "system.reflection.typeextensions/4.3.0",
- "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512"
- },
- "System.Resources.ResourceManager/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
- "path": "system.resources.resourcemanager/4.3.0",
- "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512"
- },
- "System.Runtime/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
- "path": "system.runtime/4.3.0",
- "hashPath": "system.runtime.4.3.0.nupkg.sha512"
- },
- "System.Runtime.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
- "path": "system.runtime.extensions/4.3.0",
- "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512"
- },
- "System.Runtime.Handles/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
- "path": "system.runtime.handles/4.3.0",
- "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512"
- },
- "System.Runtime.InteropServices/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
- "path": "system.runtime.interopservices/4.3.0",
- "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
- },
- "System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
- "path": "system.runtime.interopservices.runtimeinformation/4.3.0",
- "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512"
- },
- "System.Runtime.Numerics/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
- "path": "system.runtime.numerics/4.3.0",
- "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Algorithms/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
- "path": "system.security.cryptography.algorithms/4.3.0",
- "hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Cng/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
- "path": "system.security.cryptography.cng/4.3.0",
- "hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Csp/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
- "path": "system.security.cryptography.csp/4.3.0",
- "hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Encoding/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
- "path": "system.security.cryptography.encoding/4.3.0",
- "hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
- "path": "system.security.cryptography.openssl/4.3.0",
- "hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
- "path": "system.security.cryptography.primitives/4.3.0",
- "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.X509Certificates/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
- "path": "system.security.cryptography.x509certificates/4.3.0",
- "hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512"
- },
- "System.Text.Encoding/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
- "path": "system.text.encoding/4.3.0",
- "hashPath": "system.text.encoding.4.3.0.nupkg.sha512"
- },
- "System.Text.Encoding.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
- "path": "system.text.encoding.extensions/4.3.0",
- "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512"
- },
- "System.Text.RegularExpressions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
- "path": "system.text.regularexpressions/4.3.0",
- "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512"
- },
- "System.Threading/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
- "path": "system.threading/4.3.0",
- "hashPath": "system.threading.4.3.0.nupkg.sha512"
- },
- "System.Threading.Tasks/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
- "path": "system.threading.tasks/4.3.0",
- "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512"
- },
- "System.Threading.Tasks.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
- "path": "system.threading.tasks.extensions/4.3.0",
- "hashPath": "system.threading.tasks.extensions.4.3.0.nupkg.sha512"
- },
- "System.Threading.Timer/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
- "path": "system.threading.timer/4.3.0",
- "hashPath": "system.threading.timer.4.3.0.nupkg.sha512"
- },
- "System.Xml.ReaderWriter/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
- "path": "system.xml.readerwriter/4.3.0",
- "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512"
- },
- "System.Xml.XDocument/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
- "path": "system.xml.xdocument/4.3.0",
- "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512"
- }
- }
-}
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/SignClient.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/SignClient.dll
deleted file mode 100644
index 5a54585dce..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/SignClient.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:36f37447a8c0174fa9a3560a6159083a95c524b8872bad717b9350438e584ff6
-size 36504
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/SignClient.runtimeconfig.json b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/SignClient.runtimeconfig.json
deleted file mode 100644
index cd9e658d74..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/net5.0/any/SignClient.runtimeconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "runtimeOptions": {
- "tfm": "net5.0",
- "rollForward": "Major",
- "framework": {
- "name": "Microsoft.NETCore.App",
- "version": "5.0.0"
- }
- }
-}
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/DotnetToolSettings.xml b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/DotnetToolSettings.xml
deleted file mode 100644
index 41498125cf..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/DotnetToolSettings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Bcl.AsyncInterfaces.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Bcl.AsyncInterfaces.dll
deleted file mode 100644
index ec9fd4298b..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Bcl.AsyncInterfaces.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fef36165f43fbde2c79e939688820fb1e4213cae50f4c761ec1f97d870045581
-size 20872
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.CommandLineUtils.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.CommandLineUtils.dll
deleted file mode 100644
index e6f4f41de9..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.CommandLineUtils.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:73d30a07da46aa5156a7ab1221cd884e476f32c19219bad19c7cc1201b652072
-size 31736
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.Abstractions.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.Abstractions.dll
deleted file mode 100644
index 043e8c7475..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.Abstractions.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:35879c28cd19a54bf38f8b29be08bac54bbcd2b931f0f5fb7e246893f04d687c
-size 20360
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll
deleted file mode 100644
index b7428aa179..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cb862d6388a5124207291898b48a8e1240baa297224fff3b348ab4637ccfdfdf
-size 19848
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.FileExtensions.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.FileExtensions.dll
deleted file mode 100644
index e245882653..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.FileExtensions.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e6d0a6bbceea061d1782ca7f746ff1f561dcb73fc9f180660878edf8f03a767d
-size 25480
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.Json.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.Json.dll
deleted file mode 100644
index ffad7c38e4..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.Json.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f9c4860476d61a5db736730ea5f105228ad66fdf6fd47727a55c3e4f41d20b9d
-size 24968
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.dll
deleted file mode 100644
index 4e3de6178e..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Configuration.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c7dcd8475b758acfdf4ad3690624275f23dd3292cb71072b6b7c38457192838a
-size 30600
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.FileProviders.Abstractions.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.FileProviders.Abstractions.dll
deleted file mode 100644
index ad64c919d6..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.FileProviders.Abstractions.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:69428b16a4a007f87065ce3574b54aa1148a4608528697d03d5321a11ce9cf93
-size 16776
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.FileProviders.Physical.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.FileProviders.Physical.dll
deleted file mode 100644
index 3c5156246a..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.FileProviders.Physical.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0af872ee3e7af283f30502a16a43213640ebe6d401c44d0b698d70ba47742e5d
-size 35720
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.FileSystemGlobbing.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.FileSystemGlobbing.dll
deleted file mode 100644
index ec4fd85083..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.FileSystemGlobbing.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c6ba4c0e8df96e0c33fe6fe4c14bcbf5200ec72120492c0ee7b462ba120b1e02
-size 39304
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Primitives.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Primitives.dll
deleted file mode 100644
index 32fd5c8ff7..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Extensions.Primitives.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fa775fa0cf84e4188f4d35db184dd0aa79de6e2c0d02806c4dc886fb7f9c1d40
-size 42376
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Identity.Client.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Identity.Client.dll
deleted file mode 100644
index 6f0b8c8f7a..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Microsoft.Identity.Client.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ebbc3ac0eb9c673c12b69e0f9fc4fe99eaa1d0c342bd72753538f209c6df8c40
-size 1333720
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Refit.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Refit.dll
deleted file mode 100644
index 6ef88e5bc7..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/Refit.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7ebeacb611f2f07c035e05e5684ae1b7ef6f64ff151608cca49025dff356aecb
-size 136240
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/SignClient.deps.json b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/SignClient.deps.json
deleted file mode 100644
index 4d0b18eca0..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/SignClient.deps.json
+++ /dev/null
@@ -1,396 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v2.1",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v2.1": {
- "SignClient/1.3.155": {
- "dependencies": {
- "Microsoft.Extensions.CommandLineUtils": "1.1.1",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "5.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "5.0.0",
- "Microsoft.Extensions.Configuration.Json": "5.0.0",
- "Microsoft.Identity.Client": "4.27.0",
- "Microsoft.NETFramework.ReferenceAssemblies": "1.0.0",
- "Microsoft.SourceLink.AzureRepos.Git": "1.0.0",
- "Microsoft.SourceLink.GitHub": "1.0.0",
- "Nerdbank.GitVersioning": "3.3.37",
- "Refit": "6.0.24"
- },
- "runtime": {
- "SignClient.dll": {}
- }
- },
- "Microsoft.Bcl.AsyncInterfaces/5.0.0": {
- "runtime": {
- "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Build.Tasks.Git/1.0.0": {},
- "Microsoft.Extensions.CommandLineUtils/1.1.1": {
- "runtime": {
- "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll": {
- "assemblyVersion": "1.1.1.0",
- "fileVersion": "1.1.1.30427"
- }
- }
- },
- "Microsoft.Extensions.Configuration/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.Abstractions/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "5.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.FileExtensions/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "5.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "5.0.0",
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.Json/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "5.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "5.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0",
- "System.Text.Json": "5.0.1"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.FileProviders.Abstractions/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.FileProviders.Physical/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0",
- "Microsoft.Extensions.FileSystemGlobbing": "5.0.0",
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.FileSystemGlobbing/5.0.0": {
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Primitives/5.0.0": {
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Identity.Client/4.27.0": {
- "runtime": {
- "lib/netcoreapp2.1/Microsoft.Identity.Client.dll": {
- "assemblyVersion": "4.27.0.0",
- "fileVersion": "4.27.0.0"
- }
- }
- },
- "Microsoft.NETFramework.ReferenceAssemblies/1.0.0": {},
- "Microsoft.SourceLink.AzureRepos.Git/1.0.0": {
- "dependencies": {
- "Microsoft.Build.Tasks.Git": "1.0.0",
- "Microsoft.SourceLink.Common": "1.0.0"
- }
- },
- "Microsoft.SourceLink.Common/1.0.0": {},
- "Microsoft.SourceLink.GitHub/1.0.0": {
- "dependencies": {
- "Microsoft.Build.Tasks.Git": "1.0.0",
- "Microsoft.SourceLink.Common": "1.0.0"
- }
- },
- "Nerdbank.GitVersioning/3.3.37": {},
- "Refit/6.0.24": {
- "dependencies": {
- "System.Net.Http.Json": "5.0.0",
- "System.Text.Json": "5.0.1"
- },
- "runtime": {
- "lib/netstandard2.0/Refit.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.24.20825"
- }
- }
- },
- "System.Net.Http.Json/5.0.0": {
- "dependencies": {
- "System.Text.Json": "5.0.1"
- },
- "runtime": {
- "lib/netstandard2.0/System.Net.Http.Json.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "System.Runtime.CompilerServices.Unsafe/5.0.0": {
- "runtime": {
- "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "System.Text.Encodings.Web/5.0.0": {
- "runtime": {
- "lib/netstandard2.0/System.Text.Encodings.Web.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "System.Text.Json/5.0.1": {
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "5.0.0",
- "System.Runtime.CompilerServices.Unsafe": "5.0.0",
- "System.Text.Encodings.Web": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/System.Text.Json.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.220.61120"
- }
- }
- }
- }
- },
- "libraries": {
- "SignClient/1.3.155": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Bcl.AsyncInterfaces/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==",
- "path": "microsoft.bcl.asyncinterfaces/5.0.0",
- "hashPath": "microsoft.bcl.asyncinterfaces.5.0.0.nupkg.sha512"
- },
- "Microsoft.Build.Tasks.Git/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-z2fpmmt+1Jfl+ZnBki9nSP08S1/tbEOxFdsK1rSR+LBehIJz1Xv9/6qOOoGNqlwnAGGVGis1Oj6S8Kt9COEYlQ==",
- "path": "microsoft.build.tasks.git/1.0.0",
- "hashPath": "microsoft.build.tasks.git.1.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.CommandLineUtils/1.1.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-vsI1L6Bx602aQ/8051nrRbAWGxCQQX7IKT/9XApnEYfzLPBX7LcCZuwnDyD1bHTm2D8GcMweVSPr1H2rAfAgbA==",
- "path": "microsoft.extensions.commandlineutils/1.1.1",
- "hashPath": "microsoft.extensions.commandlineutils.1.1.1.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-LN322qEKHjuVEhhXueTUe7RNePooZmS8aGid5aK2woX3NPjSnONFyKUc6+JknOS6ce6h2tCLfKPTBXE3mN/6Ag==",
- "path": "microsoft.extensions.configuration/5.0.0",
- "hashPath": "microsoft.extensions.configuration.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.Abstractions/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ETjSBHMp3OAZ4HxGQYpwyGsD8Sw5FegQXphi0rpoGMT74S4+I2mm7XJEswwn59XAaKOzC15oDSOWEE8SzDCd6Q==",
- "path": "microsoft.extensions.configuration.abstractions/5.0.0",
- "hashPath": "microsoft.extensions.configuration.abstractions.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-fqh6y6hAi0Z0fRsb4B/mP9OkKkSlifh5osa+N/YSQ+/S2a//+zYApZMUC1XeP9fdjlgZoPQoZ72Q2eLHyKLddQ==",
- "path": "microsoft.extensions.configuration.environmentvariables/5.0.0",
- "hashPath": "microsoft.extensions.configuration.environmentvariables.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.FileExtensions/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-rRdspYKA18ViPOISwAihhCMbusHsARCOtDMwa23f+BGEdIjpKPlhs3LLjmKlxfhpGXBjIsS0JpXcChjRUN+PAw==",
- "path": "microsoft.extensions.configuration.fileextensions/5.0.0",
- "hashPath": "microsoft.extensions.configuration.fileextensions.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.Json/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Pak8ymSUfdzPfBTLHxeOwcR32YDbuVfhnH2hkfOLnJNQd19ItlBdpMjIDY9C5O/nS2Sn9bzDMai0ZrvF7KyY/Q==",
- "path": "microsoft.extensions.configuration.json/5.0.0",
- "hashPath": "microsoft.extensions.configuration.json.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileProviders.Abstractions/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-iuZIiZ3mteEb+nsUqpGXKx2cGF+cv6gWPd5jqQI4hzqdiJ6I94ddLjKhQOuRW1lueHwocIw30xbSHGhQj0zjdQ==",
- "path": "microsoft.extensions.fileproviders.abstractions/5.0.0",
- "hashPath": "microsoft.extensions.fileproviders.abstractions.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileProviders.Physical/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-1rkd8UO2qf21biwO7X0hL9uHP7vtfmdv/NLvKgCRHkdz1XnW8zVQJXyEYiN68WYpExgtVWn55QF0qBzgfh1mGg==",
- "path": "microsoft.extensions.fileproviders.physical/5.0.0",
- "hashPath": "microsoft.extensions.fileproviders.physical.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileSystemGlobbing/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ArliS8lGk8sWRtrWpqI8yUVYJpRruPjCDT+EIjrgkA/AAPRctlAkRISVZ334chAKktTLzD1+PK8F5IZpGedSqA==",
- "path": "microsoft.extensions.filesystemglobbing/5.0.0",
- "hashPath": "microsoft.extensions.filesystemglobbing.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Primitives/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==",
- "path": "microsoft.extensions.primitives/5.0.0",
- "hashPath": "microsoft.extensions.primitives.5.0.0.nupkg.sha512"
- },
- "Microsoft.Identity.Client/4.27.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-vUeVNPQU4+it3cjNxxuJR84z6kbd8YrQleHFrut3YZ+yFac/jtjB1C8i8piSrrYJF8aQUezciubQY7x/PUu+2Q==",
- "path": "microsoft.identity.client/4.27.0",
- "hashPath": "microsoft.identity.client.4.27.0.nupkg.sha512"
- },
- "Microsoft.NETFramework.ReferenceAssemblies/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-7D2TMufjGiowmt0E941kVoTIS+GTNzaPopuzM1/1LSaJAdJdBrVP0SkZW7AgDd0a2U1DjsIeaKG1wxGVBNLDMw==",
- "path": "microsoft.netframework.referenceassemblies/1.0.0",
- "hashPath": "microsoft.netframework.referenceassemblies.1.0.0.nupkg.sha512"
- },
- "Microsoft.SourceLink.AzureRepos.Git/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KqaJ7iLXKDwBZn0HiT/gdyElvq0Tf96iHEUSdeT9mFf5bfF7XjVrLLoSVYc9cB2MZ+EY1YTfqkBqbkM4qcqWLA==",
- "path": "microsoft.sourcelink.azurerepos.git/1.0.0",
- "hashPath": "microsoft.sourcelink.azurerepos.git.1.0.0.nupkg.sha512"
- },
- "Microsoft.SourceLink.Common/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-G8DuQY8/DK5NN+3jm5wcMcd9QYD90UV7MiLmdljSJixi3U/vNaeBKmmXUqI4DJCOeWizIUEh4ALhSt58mR+5eg==",
- "path": "microsoft.sourcelink.common/1.0.0",
- "hashPath": "microsoft.sourcelink.common.1.0.0.nupkg.sha512"
- },
- "Microsoft.SourceLink.GitHub/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-aZyGyGg2nFSxix+xMkPmlmZSsnGQ3w+mIG23LTxJZHN+GPwTQ5FpPgDo7RMOq+Kcf5D4hFWfXkGhoGstawX13Q==",
- "path": "microsoft.sourcelink.github/1.0.0",
- "hashPath": "microsoft.sourcelink.github.1.0.0.nupkg.sha512"
- },
- "Nerdbank.GitVersioning/3.3.37": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-YlDKV/gSHQGDThWSGqVyPfKeNP/kx1fj/NPFFgGc/cxzgIbXv4jtYOcbFOz3ZIeAKtpCcSAmVNDOikBs3OxI/A==",
- "path": "nerdbank.gitversioning/3.3.37",
- "hashPath": "nerdbank.gitversioning.3.3.37.nupkg.sha512"
- },
- "Refit/6.0.24": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-hirF5tK01RVlC4P+3PUjkaOnR4R8SYvt0sOcjR6j3UnFs2pv3mj8CLVij5AWRLGW1h0TUL48+RTvzDySosyT0g==",
- "path": "refit/6.0.24",
- "hashPath": "refit.6.0.24.nupkg.sha512"
- },
- "System.Net.Http.Json/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3CPSQpCzEmI9o+1G79TnPCjF40omCdnoXj2Rg76BDwGj5+LZnFPjV+t35eedlvl+uthmholk/XXxXTYgJWSexw==",
- "path": "system.net.http.json/5.0.0",
- "hashPath": "system.net.http.json.5.0.0.nupkg.sha512"
- },
- "System.Runtime.CompilerServices.Unsafe/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
- "path": "system.runtime.compilerservices.unsafe/5.0.0",
- "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
- },
- "System.Text.Encodings.Web/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-EEslUvHKll1ftizbn20mX3Ix/l4Ygk/bdJ2LY6/X6FlGaP0RIhKMo9nS6JIGnKKT6KBP2PGj6JC3B9/ZF6ErqQ==",
- "path": "system.text.encodings.web/5.0.0",
- "hashPath": "system.text.encodings.web.5.0.0.nupkg.sha512"
- },
- "System.Text.Json/5.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-/UM3UK1dXKl8Ybysg/21gM4S8DJgkR+yLU8JwqCVbuNqQNImelntgYFAN5QxR8sJJ1kMx//hOUdf0lltosi8cQ==",
- "path": "system.text.json/5.0.1",
- "hashPath": "system.text.json.5.0.1.nupkg.sha512"
- }
- }
-}
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/SignClient.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/SignClient.dll
deleted file mode 100644
index 980590a90f..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/SignClient.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d9eb82fa1a743acadd9f546288a6eebeeef6d9174ab8389f00c9facfd19bde64
-size 36504
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/SignClient.runtimeconfig.json b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/SignClient.runtimeconfig.json
deleted file mode 100644
index 49eab5f515..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/SignClient.runtimeconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "runtimeOptions": {
- "tfm": "netcoreapp2.1",
- "rollForward": "Major",
- "framework": {
- "name": "Microsoft.NETCore.App",
- "version": "2.1.0"
- }
- }
-}
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Net.Http.Json.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Net.Http.Json.dll
deleted file mode 100644
index f99616d154..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Net.Http.Json.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6eb4b8917eefedb2b9407bc3de6dbc316b9e6562e1336fd179d6fdc2f8022c02
-size 40840
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Runtime.CompilerServices.Unsafe.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Runtime.CompilerServices.Unsafe.dll
deleted file mode 100644
index 6cacb134a5..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Runtime.CompilerServices.Unsafe.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:99edb8e60eef8448a31f96509ebd712eaf13a4c00f0c4986b47f6dd6d7256cfb
-size 16776
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Text.Encodings.Web.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Text.Encodings.Web.dll
deleted file mode 100644
index 3488b597e2..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Text.Encodings.Web.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bc8f70f1fb4c93f9e3cba4bda4f1bf15d9b513f4503de02588e8e7bfe5a7c995
-size 65920
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Text.Json.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Text.Json.dll
deleted file mode 100644
index da553d9e10..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp2.1/any/System.Text.Json.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:17d268e395765df81a5ce4ff772bad7f4424453e09ef3dddf138a6532e4ac6f1
-size 351624
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/DotnetToolSettings.xml b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/DotnetToolSettings.xml
deleted file mode 100644
index 41498125cf..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/DotnetToolSettings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.CommandLineUtils.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.CommandLineUtils.dll
deleted file mode 100644
index e6f4f41de9..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.CommandLineUtils.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:73d30a07da46aa5156a7ab1221cd884e476f32c19219bad19c7cc1201b652072
-size 31736
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.Abstractions.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.Abstractions.dll
deleted file mode 100644
index 043e8c7475..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.Abstractions.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:35879c28cd19a54bf38f8b29be08bac54bbcd2b931f0f5fb7e246893f04d687c
-size 20360
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll
deleted file mode 100644
index b7428aa179..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.EnvironmentVariables.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cb862d6388a5124207291898b48a8e1240baa297224fff3b348ab4637ccfdfdf
-size 19848
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.FileExtensions.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.FileExtensions.dll
deleted file mode 100644
index e245882653..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.FileExtensions.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e6d0a6bbceea061d1782ca7f746ff1f561dcb73fc9f180660878edf8f03a767d
-size 25480
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.Json.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.Json.dll
deleted file mode 100644
index c84c588956..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.Json.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:38cd246065e64618093943f655ff3aa6de12b3b401dbf7cb3ed7cbe3ea745f3f
-size 24960
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.dll
deleted file mode 100644
index 4e3de6178e..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Configuration.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c7dcd8475b758acfdf4ad3690624275f23dd3292cb71072b6b7c38457192838a
-size 30600
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.FileProviders.Abstractions.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.FileProviders.Abstractions.dll
deleted file mode 100644
index ad64c919d6..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.FileProviders.Abstractions.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:69428b16a4a007f87065ce3574b54aa1148a4608528697d03d5321a11ce9cf93
-size 16776
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.FileProviders.Physical.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.FileProviders.Physical.dll
deleted file mode 100644
index 3c5156246a..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.FileProviders.Physical.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0af872ee3e7af283f30502a16a43213640ebe6d401c44d0b698d70ba47742e5d
-size 35720
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.FileSystemGlobbing.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.FileSystemGlobbing.dll
deleted file mode 100644
index ec4fd85083..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.FileSystemGlobbing.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c6ba4c0e8df96e0c33fe6fe4c14bcbf5200ec72120492c0ee7b462ba120b1e02
-size 39304
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Primitives.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Primitives.dll
deleted file mode 100644
index 7e9e38db74..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Extensions.Primitives.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7f63e0a1fb6a124291bae88093a4b5307ca03aea99047cc1d07381def47ddd35
-size 39296
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Identity.Client.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Identity.Client.dll
deleted file mode 100644
index 6f0b8c8f7a..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Microsoft.Identity.Client.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ebbc3ac0eb9c673c12b69e0f9fc4fe99eaa1d0c342bd72753538f209c6df8c40
-size 1333720
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Refit.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Refit.dll
deleted file mode 100644
index b0be6c9731..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/Refit.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0cc21625b1e2c5d5d88de4426eb8547058029714f32151c7a200d5af71cded42
-size 137776
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/SignClient.deps.json b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/SignClient.deps.json
deleted file mode 100644
index dd05e5101a..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/SignClient.deps.json
+++ /dev/null
@@ -1,1523 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v3.1",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v3.1": {
- "SignClient/1.3.155": {
- "dependencies": {
- "Microsoft.Extensions.CommandLineUtils": "1.1.1",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "5.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "5.0.0",
- "Microsoft.Extensions.Configuration.Json": "5.0.0",
- "Microsoft.Identity.Client": "4.27.0",
- "Microsoft.NETFramework.ReferenceAssemblies": "1.0.0",
- "Microsoft.SourceLink.AzureRepos.Git": "1.0.0",
- "Microsoft.SourceLink.GitHub": "1.0.0",
- "Nerdbank.GitVersioning": "3.3.37",
- "Refit": "6.0.24"
- },
- "runtime": {
- "SignClient.dll": {}
- }
- },
- "Microsoft.Build.Tasks.Git/1.0.0": {},
- "Microsoft.Extensions.CommandLineUtils/1.1.1": {
- "dependencies": {
- "NETStandard.Library": "1.6.1"
- },
- "runtime": {
- "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll": {
- "assemblyVersion": "1.1.1.0",
- "fileVersion": "1.1.1.30427"
- }
- }
- },
- "Microsoft.Extensions.Configuration/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.Abstractions/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "5.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.FileExtensions/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "5.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "5.0.0",
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Configuration.Json/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Configuration": "5.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "5.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "5.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0",
- "System.Text.Json": "5.0.1"
- },
- "runtime": {
- "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.FileProviders.Abstractions/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.FileProviders.Physical/5.0.0": {
- "dependencies": {
- "Microsoft.Extensions.FileProviders.Abstractions": "5.0.0",
- "Microsoft.Extensions.FileSystemGlobbing": "5.0.0",
- "Microsoft.Extensions.Primitives": "5.0.0"
- },
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.FileSystemGlobbing/5.0.0": {
- "runtime": {
- "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Extensions.Primitives/5.0.0": {
- "runtime": {
- "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "Microsoft.Identity.Client/4.27.0": {
- "runtime": {
- "lib/netcoreapp2.1/Microsoft.Identity.Client.dll": {
- "assemblyVersion": "4.27.0.0",
- "fileVersion": "4.27.0.0"
- }
- }
- },
- "Microsoft.NETCore.Platforms/1.1.0": {},
- "Microsoft.NETCore.Targets/1.1.0": {},
- "Microsoft.NETFramework.ReferenceAssemblies/1.0.0": {},
- "Microsoft.SourceLink.AzureRepos.Git/1.0.0": {
- "dependencies": {
- "Microsoft.Build.Tasks.Git": "1.0.0",
- "Microsoft.SourceLink.Common": "1.0.0"
- }
- },
- "Microsoft.SourceLink.Common/1.0.0": {},
- "Microsoft.SourceLink.GitHub/1.0.0": {
- "dependencies": {
- "Microsoft.Build.Tasks.Git": "1.0.0",
- "Microsoft.SourceLink.Common": "1.0.0"
- }
- },
- "Microsoft.Win32.Primitives/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "Nerdbank.GitVersioning/3.3.37": {},
- "NETStandard.Library/1.6.1": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.Win32.Primitives": "4.3.0",
- "System.AppContext": "4.3.0",
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Console": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Calendars": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.Compression": "4.3.0",
- "System.IO.Compression.ZipFile": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Linq.Expressions": "4.3.0",
- "System.Net.Http": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Net.Sockets": "4.3.0",
- "System.ObjectModel": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Timer": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XDocument": "4.3.0"
- }
- },
- "Refit/6.0.24": {
- "dependencies": {
- "System.Net.Http.Json": "5.0.0",
- "System.Text.Json": "5.0.1"
- },
- "runtime": {
- "lib/netstandard2.1/Refit.dll": {
- "assemblyVersion": "6.0.0.0",
- "fileVersion": "6.0.24.20825"
- }
- }
- },
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.native.System/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.IO.Compression/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Net.Http/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Security.Cryptography.Apple/4.3.0": {
- "dependencies": {
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
- }
- },
- "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "dependencies": {
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0",
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {},
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
- "System.AppContext/4.3.0": {
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Buffers/4.3.0": {
- "dependencies": {
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Collections/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Collections.Concurrent/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Console/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Diagnostics.Debug/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.DiagnosticSource/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Diagnostics.Tools/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.Tracing/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Calendars/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Extensions/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0"
- }
- },
- "System.IO/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.Compression/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Buffers": "4.3.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.IO.Compression": "4.3.0"
- }
- },
- "System.IO.Compression.ZipFile/4.3.0": {
- "dependencies": {
- "System.Buffers": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.Compression": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.IO.FileSystem/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.FileSystem.Primitives/4.3.0": {
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Linq/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Linq.Expressions/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Linq": "4.3.0",
- "System.ObjectModel": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Emit.Lightweight": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Net.Http/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.DiagnosticSource": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Extensions": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Net.Http.Json/5.0.0": {
- "dependencies": {
- "System.Text.Json": "5.0.1"
- },
- "runtime": {
- "lib/netstandard2.0/System.Net.Http.Json.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.20.51904"
- }
- }
- },
- "System.Net.Primitives/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Net.Sockets/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.ObjectModel/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Reflection/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit/4.3.0": {
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.ILGeneration/4.3.0": {
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.Lightweight/4.3.0": {
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Extensions/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Primitives/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.TypeExtensions/4.3.0": {
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Resources.ResourceManager/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "System.Runtime.Extensions/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Handles/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.InteropServices/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Runtime.Numerics/4.3.0": {
- "dependencies": {
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Security.Cryptography.Algorithms/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Cng/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Security.Cryptography.Csp/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Security.Cryptography.Encoding/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.OpenSsl/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Primitives/4.3.0": {
- "dependencies": {
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Security.Cryptography.X509Certificates/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Calendars": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Cng": "4.3.0",
- "System.Security.Cryptography.Csp": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Text.Encoding/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Text.Encoding.Extensions/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Text.Json/5.0.1": {
- "runtime": {
- "lib/netcoreapp3.0/System.Text.Json.dll": {
- "assemblyVersion": "5.0.0.0",
- "fileVersion": "5.0.220.61120"
- }
- }
- },
- "System.Text.RegularExpressions/4.3.0": {
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading/4.3.0": {
- "dependencies": {
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Threading.Tasks/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading.Tasks.Extensions/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Threading.Timer/4.3.0": {
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Xml.ReaderWriter/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Tasks.Extensions": "4.3.0"
- }
- },
- "System.Xml.XDocument/4.3.0": {
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- }
- }
- },
- "libraries": {
- "SignClient/1.3.155": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Build.Tasks.Git/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-z2fpmmt+1Jfl+ZnBki9nSP08S1/tbEOxFdsK1rSR+LBehIJz1Xv9/6qOOoGNqlwnAGGVGis1Oj6S8Kt9COEYlQ==",
- "path": "microsoft.build.tasks.git/1.0.0",
- "hashPath": "microsoft.build.tasks.git.1.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.CommandLineUtils/1.1.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-vsI1L6Bx602aQ/8051nrRbAWGxCQQX7IKT/9XApnEYfzLPBX7LcCZuwnDyD1bHTm2D8GcMweVSPr1H2rAfAgbA==",
- "path": "microsoft.extensions.commandlineutils/1.1.1",
- "hashPath": "microsoft.extensions.commandlineutils.1.1.1.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-LN322qEKHjuVEhhXueTUe7RNePooZmS8aGid5aK2woX3NPjSnONFyKUc6+JknOS6ce6h2tCLfKPTBXE3mN/6Ag==",
- "path": "microsoft.extensions.configuration/5.0.0",
- "hashPath": "microsoft.extensions.configuration.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.Abstractions/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ETjSBHMp3OAZ4HxGQYpwyGsD8Sw5FegQXphi0rpoGMT74S4+I2mm7XJEswwn59XAaKOzC15oDSOWEE8SzDCd6Q==",
- "path": "microsoft.extensions.configuration.abstractions/5.0.0",
- "hashPath": "microsoft.extensions.configuration.abstractions.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-fqh6y6hAi0Z0fRsb4B/mP9OkKkSlifh5osa+N/YSQ+/S2a//+zYApZMUC1XeP9fdjlgZoPQoZ72Q2eLHyKLddQ==",
- "path": "microsoft.extensions.configuration.environmentvariables/5.0.0",
- "hashPath": "microsoft.extensions.configuration.environmentvariables.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.FileExtensions/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-rRdspYKA18ViPOISwAihhCMbusHsARCOtDMwa23f+BGEdIjpKPlhs3LLjmKlxfhpGXBjIsS0JpXcChjRUN+PAw==",
- "path": "microsoft.extensions.configuration.fileextensions/5.0.0",
- "hashPath": "microsoft.extensions.configuration.fileextensions.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Configuration.Json/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Pak8ymSUfdzPfBTLHxeOwcR32YDbuVfhnH2hkfOLnJNQd19ItlBdpMjIDY9C5O/nS2Sn9bzDMai0ZrvF7KyY/Q==",
- "path": "microsoft.extensions.configuration.json/5.0.0",
- "hashPath": "microsoft.extensions.configuration.json.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileProviders.Abstractions/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-iuZIiZ3mteEb+nsUqpGXKx2cGF+cv6gWPd5jqQI4hzqdiJ6I94ddLjKhQOuRW1lueHwocIw30xbSHGhQj0zjdQ==",
- "path": "microsoft.extensions.fileproviders.abstractions/5.0.0",
- "hashPath": "microsoft.extensions.fileproviders.abstractions.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileProviders.Physical/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-1rkd8UO2qf21biwO7X0hL9uHP7vtfmdv/NLvKgCRHkdz1XnW8zVQJXyEYiN68WYpExgtVWn55QF0qBzgfh1mGg==",
- "path": "microsoft.extensions.fileproviders.physical/5.0.0",
- "hashPath": "microsoft.extensions.fileproviders.physical.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.FileSystemGlobbing/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ArliS8lGk8sWRtrWpqI8yUVYJpRruPjCDT+EIjrgkA/AAPRctlAkRISVZ334chAKktTLzD1+PK8F5IZpGedSqA==",
- "path": "microsoft.extensions.filesystemglobbing/5.0.0",
- "hashPath": "microsoft.extensions.filesystemglobbing.5.0.0.nupkg.sha512"
- },
- "Microsoft.Extensions.Primitives/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ==",
- "path": "microsoft.extensions.primitives/5.0.0",
- "hashPath": "microsoft.extensions.primitives.5.0.0.nupkg.sha512"
- },
- "Microsoft.Identity.Client/4.27.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-vUeVNPQU4+it3cjNxxuJR84z6kbd8YrQleHFrut3YZ+yFac/jtjB1C8i8piSrrYJF8aQUezciubQY7x/PUu+2Q==",
- "path": "microsoft.identity.client/4.27.0",
- "hashPath": "microsoft.identity.client.4.27.0.nupkg.sha512"
- },
- "Microsoft.NETCore.Platforms/1.1.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
- "path": "microsoft.netcore.platforms/1.1.0",
- "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
- },
- "Microsoft.NETCore.Targets/1.1.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==",
- "path": "microsoft.netcore.targets/1.1.0",
- "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512"
- },
- "Microsoft.NETFramework.ReferenceAssemblies/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-7D2TMufjGiowmt0E941kVoTIS+GTNzaPopuzM1/1LSaJAdJdBrVP0SkZW7AgDd0a2U1DjsIeaKG1wxGVBNLDMw==",
- "path": "microsoft.netframework.referenceassemblies/1.0.0",
- "hashPath": "microsoft.netframework.referenceassemblies.1.0.0.nupkg.sha512"
- },
- "Microsoft.SourceLink.AzureRepos.Git/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KqaJ7iLXKDwBZn0HiT/gdyElvq0Tf96iHEUSdeT9mFf5bfF7XjVrLLoSVYc9cB2MZ+EY1YTfqkBqbkM4qcqWLA==",
- "path": "microsoft.sourcelink.azurerepos.git/1.0.0",
- "hashPath": "microsoft.sourcelink.azurerepos.git.1.0.0.nupkg.sha512"
- },
- "Microsoft.SourceLink.Common/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-G8DuQY8/DK5NN+3jm5wcMcd9QYD90UV7MiLmdljSJixi3U/vNaeBKmmXUqI4DJCOeWizIUEh4ALhSt58mR+5eg==",
- "path": "microsoft.sourcelink.common/1.0.0",
- "hashPath": "microsoft.sourcelink.common.1.0.0.nupkg.sha512"
- },
- "Microsoft.SourceLink.GitHub/1.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-aZyGyGg2nFSxix+xMkPmlmZSsnGQ3w+mIG23LTxJZHN+GPwTQ5FpPgDo7RMOq+Kcf5D4hFWfXkGhoGstawX13Q==",
- "path": "microsoft.sourcelink.github/1.0.0",
- "hashPath": "microsoft.sourcelink.github.1.0.0.nupkg.sha512"
- },
- "Microsoft.Win32.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
- "path": "microsoft.win32.primitives/4.3.0",
- "hashPath": "microsoft.win32.primitives.4.3.0.nupkg.sha512"
- },
- "Nerdbank.GitVersioning/3.3.37": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-YlDKV/gSHQGDThWSGqVyPfKeNP/kx1fj/NPFFgGc/cxzgIbXv4jtYOcbFOz3ZIeAKtpCcSAmVNDOikBs3OxI/A==",
- "path": "nerdbank.gitversioning/3.3.37",
- "hashPath": "nerdbank.gitversioning.3.3.37.nupkg.sha512"
- },
- "NETStandard.Library/1.6.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
- "path": "netstandard.library/1.6.1",
- "hashPath": "netstandard.library.1.6.1.nupkg.sha512"
- },
- "Refit/6.0.24": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-hirF5tK01RVlC4P+3PUjkaOnR4R8SYvt0sOcjR6j3UnFs2pv3mj8CLVij5AWRLGW1h0TUL48+RTvzDySosyT0g==",
- "path": "refit/6.0.24",
- "hashPath": "refit.6.0.24.nupkg.sha512"
- },
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==",
- "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==",
- "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==",
- "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.native.System/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
- "path": "runtime.native.system/4.3.0",
- "hashPath": "runtime.native.system.4.3.0.nupkg.sha512"
- },
- "runtime.native.System.IO.Compression/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
- "path": "runtime.native.system.io.compression/4.3.0",
- "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512"
- },
- "runtime.native.System.Net.Http/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
- "path": "runtime.native.system.net.http/4.3.0",
- "hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512"
- },
- "runtime.native.System.Security.Cryptography.Apple/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
- "path": "runtime.native.system.security.cryptography.apple/4.3.0",
- "hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
- },
- "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==",
- "path": "runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==",
- "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==",
- "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==",
- "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0",
- "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==",
- "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==",
- "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==",
- "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==",
- "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==",
- "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0",
- "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "System.AppContext/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
- "path": "system.appcontext/4.3.0",
- "hashPath": "system.appcontext.4.3.0.nupkg.sha512"
- },
- "System.Buffers/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==",
- "path": "system.buffers/4.3.0",
- "hashPath": "system.buffers.4.3.0.nupkg.sha512"
- },
- "System.Collections/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
- "path": "system.collections/4.3.0",
- "hashPath": "system.collections.4.3.0.nupkg.sha512"
- },
- "System.Collections.Concurrent/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
- "path": "system.collections.concurrent/4.3.0",
- "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512"
- },
- "System.Console/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
- "path": "system.console/4.3.0",
- "hashPath": "system.console.4.3.0.nupkg.sha512"
- },
- "System.Diagnostics.Debug/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
- "path": "system.diagnostics.debug/4.3.0",
- "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512"
- },
- "System.Diagnostics.DiagnosticSource/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==",
- "path": "system.diagnostics.diagnosticsource/4.3.0",
- "hashPath": "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512"
- },
- "System.Diagnostics.Tools/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
- "path": "system.diagnostics.tools/4.3.0",
- "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512"
- },
- "System.Diagnostics.Tracing/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
- "path": "system.diagnostics.tracing/4.3.0",
- "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512"
- },
- "System.Globalization/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
- "path": "system.globalization/4.3.0",
- "hashPath": "system.globalization.4.3.0.nupkg.sha512"
- },
- "System.Globalization.Calendars/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
- "path": "system.globalization.calendars/4.3.0",
- "hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512"
- },
- "System.Globalization.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
- "path": "system.globalization.extensions/4.3.0",
- "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512"
- },
- "System.IO/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
- "path": "system.io/4.3.0",
- "hashPath": "system.io.4.3.0.nupkg.sha512"
- },
- "System.IO.Compression/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
- "path": "system.io.compression/4.3.0",
- "hashPath": "system.io.compression.4.3.0.nupkg.sha512"
- },
- "System.IO.Compression.ZipFile/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
- "path": "system.io.compression.zipfile/4.3.0",
- "hashPath": "system.io.compression.zipfile.4.3.0.nupkg.sha512"
- },
- "System.IO.FileSystem/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
- "path": "system.io.filesystem/4.3.0",
- "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512"
- },
- "System.IO.FileSystem.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
- "path": "system.io.filesystem.primitives/4.3.0",
- "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512"
- },
- "System.Linq/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
- "path": "system.linq/4.3.0",
- "hashPath": "system.linq.4.3.0.nupkg.sha512"
- },
- "System.Linq.Expressions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
- "path": "system.linq.expressions/4.3.0",
- "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512"
- },
- "System.Net.Http/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
- "path": "system.net.http/4.3.0",
- "hashPath": "system.net.http.4.3.0.nupkg.sha512"
- },
- "System.Net.Http.Json/5.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-3CPSQpCzEmI9o+1G79TnPCjF40omCdnoXj2Rg76BDwGj5+LZnFPjV+t35eedlvl+uthmholk/XXxXTYgJWSexw==",
- "path": "system.net.http.json/5.0.0",
- "hashPath": "system.net.http.json.5.0.0.nupkg.sha512"
- },
- "System.Net.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
- "path": "system.net.primitives/4.3.0",
- "hashPath": "system.net.primitives.4.3.0.nupkg.sha512"
- },
- "System.Net.Sockets/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
- "path": "system.net.sockets/4.3.0",
- "hashPath": "system.net.sockets.4.3.0.nupkg.sha512"
- },
- "System.ObjectModel/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
- "path": "system.objectmodel/4.3.0",
- "hashPath": "system.objectmodel.4.3.0.nupkg.sha512"
- },
- "System.Reflection/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
- "path": "system.reflection/4.3.0",
- "hashPath": "system.reflection.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Emit/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
- "path": "system.reflection.emit/4.3.0",
- "hashPath": "system.reflection.emit.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Emit.ILGeneration/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
- "path": "system.reflection.emit.ilgeneration/4.3.0",
- "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Emit.Lightweight/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
- "path": "system.reflection.emit.lightweight/4.3.0",
- "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
- "path": "system.reflection.extensions/4.3.0",
- "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512"
- },
- "System.Reflection.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
- "path": "system.reflection.primitives/4.3.0",
- "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512"
- },
- "System.Reflection.TypeExtensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==",
- "path": "system.reflection.typeextensions/4.3.0",
- "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512"
- },
- "System.Resources.ResourceManager/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
- "path": "system.resources.resourcemanager/4.3.0",
- "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512"
- },
- "System.Runtime/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
- "path": "system.runtime/4.3.0",
- "hashPath": "system.runtime.4.3.0.nupkg.sha512"
- },
- "System.Runtime.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
- "path": "system.runtime.extensions/4.3.0",
- "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512"
- },
- "System.Runtime.Handles/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
- "path": "system.runtime.handles/4.3.0",
- "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512"
- },
- "System.Runtime.InteropServices/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
- "path": "system.runtime.interopservices/4.3.0",
- "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
- },
- "System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
- "path": "system.runtime.interopservices.runtimeinformation/4.3.0",
- "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512"
- },
- "System.Runtime.Numerics/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
- "path": "system.runtime.numerics/4.3.0",
- "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Algorithms/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
- "path": "system.security.cryptography.algorithms/4.3.0",
- "hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Cng/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
- "path": "system.security.cryptography.cng/4.3.0",
- "hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Csp/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
- "path": "system.security.cryptography.csp/4.3.0",
- "hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Encoding/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
- "path": "system.security.cryptography.encoding/4.3.0",
- "hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.OpenSsl/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
- "path": "system.security.cryptography.openssl/4.3.0",
- "hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.Primitives/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
- "path": "system.security.cryptography.primitives/4.3.0",
- "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512"
- },
- "System.Security.Cryptography.X509Certificates/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
- "path": "system.security.cryptography.x509certificates/4.3.0",
- "hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512"
- },
- "System.Text.Encoding/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
- "path": "system.text.encoding/4.3.0",
- "hashPath": "system.text.encoding.4.3.0.nupkg.sha512"
- },
- "System.Text.Encoding.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
- "path": "system.text.encoding.extensions/4.3.0",
- "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512"
- },
- "System.Text.Json/5.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-/UM3UK1dXKl8Ybysg/21gM4S8DJgkR+yLU8JwqCVbuNqQNImelntgYFAN5QxR8sJJ1kMx//hOUdf0lltosi8cQ==",
- "path": "system.text.json/5.0.1",
- "hashPath": "system.text.json.5.0.1.nupkg.sha512"
- },
- "System.Text.RegularExpressions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
- "path": "system.text.regularexpressions/4.3.0",
- "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512"
- },
- "System.Threading/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
- "path": "system.threading/4.3.0",
- "hashPath": "system.threading.4.3.0.nupkg.sha512"
- },
- "System.Threading.Tasks/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
- "path": "system.threading.tasks/4.3.0",
- "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512"
- },
- "System.Threading.Tasks.Extensions/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==",
- "path": "system.threading.tasks.extensions/4.3.0",
- "hashPath": "system.threading.tasks.extensions.4.3.0.nupkg.sha512"
- },
- "System.Threading.Timer/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
- "path": "system.threading.timer/4.3.0",
- "hashPath": "system.threading.timer.4.3.0.nupkg.sha512"
- },
- "System.Xml.ReaderWriter/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
- "path": "system.xml.readerwriter/4.3.0",
- "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512"
- },
- "System.Xml.XDocument/4.3.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
- "path": "system.xml.xdocument/4.3.0",
- "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512"
- }
- }
-}
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/SignClient.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/SignClient.dll
deleted file mode 100644
index 6273262661..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/SignClient.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7a764a0d53de540fd3ddf9e0ad5843620796576e6b914ef64a969746e8f7d4cc
-size 36504
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/SignClient.runtimeconfig.json b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/SignClient.runtimeconfig.json
deleted file mode 100644
index 11e46070bc..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/SignClient.runtimeconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "runtimeOptions": {
- "tfm": "netcoreapp3.1",
- "rollForward": "Major",
- "framework": {
- "name": "Microsoft.NETCore.App",
- "version": "3.1.0"
- }
- }
-}
\ No newline at end of file
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/System.Net.Http.Json.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/System.Net.Http.Json.dll
deleted file mode 100644
index f99616d154..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/System.Net.Http.Json.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6eb4b8917eefedb2b9407bc3de6dbc316b9e6562e1336fd179d6fdc2f8022c02
-size 40840
diff --git a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/System.Text.Json.dll b/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/System.Text.Json.dll
deleted file mode 100644
index 7fca9ea71a..0000000000
--- a/build/sign/.store/signclient/1.3.155/signclient/1.3.155/tools/netcoreapp3.1/any/System.Text.Json.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5e6873bd8a8eb7dafd1bd8635a5d247bbdf61fcef637edf98d38b97fb2086952
-size 352136
diff --git a/build/sign/SignClient.exe b/build/sign/SignClient.exe
deleted file mode 100644
index 1a1f824992..0000000000
--- a/build/sign/SignClient.exe
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:479013329189a02758091a53d4d308320813295e33f51b9a6ab42020a4045ed8
-size 154624
diff --git a/build/sign/sign.exe b/build/sign/sign.exe
new file mode 100644
index 0000000000..261bd78c33
--- /dev/null
+++ b/build/sign/sign.exe
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9951bb9180bc733eb2765d31b56a157b6b69a7b5c323598ad13ea16be4055a0e
+size 139264
diff --git a/build/sign/update.bat b/build/sign/update.bat
index 911e1885ed..c85b4a63ae 100644
--- a/build/sign/update.bat
+++ b/build/sign/update.bat
@@ -1,3 +1,3 @@
del signclient.exe
rmdir %~dp0\.store /s /q
-dotnet tool install SignClient --tool-path .
\ No newline at end of file
+dotnet tool install sign --tool-path . --version 0.9.0-beta.23127.3
\ No newline at end of file
diff --git a/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.dll b/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.dll
index 94ac87c70f..7aacb7d939 100644
--- a/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.dll
+++ b/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.dll
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:90da134a378fe0ac0d0a140cafcc3ec35219677aa2a4a9c9868f8bf884a91b01
-size 159744
+oid sha256:de4411933dcbf0757ebdee0114c51dc83e5e68a2e9d7e22f1ee0398913aeac5d
+size 170496
diff --git a/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.dll.hash b/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.dll.hash
index bd2d46c037..92ccf7b92f 100644
--- a/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.dll.hash
+++ b/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.dll.hash
@@ -1 +1 @@
-90DA134A378FE0AC0D0A140CAFCC3EC35219677AA2A4A9C9868F8BF884A91B01
\ No newline at end of file
+DE4411933DCBF0757EBDEE0114C51DC83E5E68A2E9D7E22F1EE0398913AEAC5D
\ No newline at end of file
diff --git a/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.pdb b/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.pdb
index bec7b29c18..f67f612f30 100644
--- a/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.pdb
+++ b/deps/AssemblyProcessor/net8.0/Stride.Core.AssemblyProcessor.pdb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:78a853ef79dccc9f80f5e9261ce84985c662ecf13603fc3fac246502fef31b64
-size 443904
+oid sha256:acf7a8d0190c1d8b4f0a17477e25bab18beb8aa88f0d81d25bb8f60af5920c50
+size 90004
diff --git a/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.dll b/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.dll
index 7fec9c2cf3..5fc315fcd7 100644
--- a/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.dll
+++ b/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.dll
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bfe7d3c7730ed74698052516ffd23052551da0b625689910b2d19cc3fa917f7c
-size 158720
+oid sha256:07cd7154f4febcb096c26e3b1a6a3e642df9dc4c986e5f68e5fd85de24cc3265
+size 169984
diff --git a/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.dll.hash b/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.dll.hash
index 8bed0b8d1a..c69e3f15d2 100644
--- a/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.dll.hash
+++ b/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.dll.hash
@@ -1 +1 @@
-BFE7D3C7730ED74698052516FFD23052551DA0B625689910B2D19CC3FA917F7C
\ No newline at end of file
+07CD7154F4FEBCB096C26E3B1A6A3E642DF9DC4C986E5F68E5FD85DE24CC3265
\ No newline at end of file
diff --git a/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.pdb b/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.pdb
index 70f8bcb43a..3bf71fc361 100644
--- a/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.pdb
+++ b/deps/AssemblyProcessor/netstandard2.0/Stride.Core.AssemblyProcessor.pdb
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:12af7f9d8fd2e0324876b71a8459ce8898e7bfcb7eea42669e09a0f5ad964ff6
-size 443904
+oid sha256:f4209a8dce493ade37e0050adc245799d729fb4d859022642e5992e7c0953551
+size 87276
diff --git a/deps/FreeImage/Release/win-x64/FreeImage.dll b/deps/FreeImage/Release/win-x64/freeimage.dll
similarity index 100%
rename from deps/FreeImage/Release/win-x64/FreeImage.dll
rename to deps/FreeImage/Release/win-x64/freeimage.dll
diff --git a/deps/FreeImage/Release/win-x86/FreeImage.dll b/deps/FreeImage/Release/win-x86/freeimage.dll
similarity index 100%
rename from deps/FreeImage/Release/win-x86/FreeImage.dll
rename to deps/FreeImage/Release/win-x86/freeimage.dll
diff --git a/deps/PVRTT/Include/PVRTexLib.h b/deps/PVRTT/Include/PVRTexLib.h
new file mode 100755
index 0000000000..1c927606cb
--- /dev/null
+++ b/deps/PVRTT/Include/PVRTexLib.h
@@ -0,0 +1,1414 @@
+#pragma once
+
+#ifndef PVR_DLL
+#if defined(PVRTEXLIB_EXPORT)
+#if defined(_MSC_VER)
+#define PVR_DLL __declspec(dllexport)
+#else
+#define PVR_DLL __attribute__((visibility("default")))
+#endif
+#elif defined(_MSC_VER) && defined(PVRTEXLIB_IMPORT) // To use the PVRTexLib .dll on Windows, define PVRTEXLIB_IMPORT
+#define PVR_DLL __declspec(dllimport)
+#else
+#define PVR_DLL
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "PVRTexLibDefines.h"
+#include "PVRTextureVersion.h"
+
+typedef void* PVRTexLib_PVRTextureHeader;
+typedef const void* PVRTexLib_CPVRTextureHeader;
+typedef void* PVRTexLib_PVRTexture;
+typedef const void* PVRTexLib_CPVRTexture;
+
+/*!***********************************************************************
+ @struct PVRHeader_CreateParams
+ @brief Structure containing various texture header parameters for
+ PVRTexLib_CreateTextureHeader().
+*************************************************************************/
+struct PVRHeader_CreateParams
+{
+ PVRTuint64 pixelFormat; ///< pixel format
+ PVRTuint32 width; ///< texture width
+ PVRTuint32 height; ///< texture height
+ PVRTuint32 depth; ///< texture depth
+ PVRTuint32 numMipMaps; ///< number of MIP maps
+ PVRTuint32 numArrayMembers; ///< number of array members
+ PVRTuint32 numFaces; ///< number of faces
+ PVRTexLibColourSpace colourSpace; ///< colour space
+ PVRTexLibVariableType channelType; ///< channel type
+ bool preMultiplied; ///< has the RGB been pre-multiplied by the alpha?
+};
+
+/*!***********************************************************************
+ @struct PVRTexLib_Orientation
+ @brief Structure containing a textures orientation in each axis.
+*************************************************************************/
+struct PVRTexLib_Orientation
+{
+ PVRTexLibOrientation x; ///< X axis orientation
+ PVRTexLibOrientation y; ///< Y axis orientation
+ PVRTexLibOrientation z; ///< Z axis orientation
+};
+
+/*!***********************************************************************
+ @struct PVRTexLib_OpenGLFormat
+ @brief Structure containing a OpenGL[ES] format.
+*************************************************************************/
+struct PVRTexLib_OpenGLFormat
+{
+ PVRTuint32 internalFormat; ///< GL internal format
+ PVRTuint32 format; ///< GL format
+ PVRTuint32 type; ///< GL type
+};
+
+typedef PVRTexLib_OpenGLFormat PVRTexLib_OpenGLESFormat;
+
+/*!***********************************************************************
+ @struct PVRTexLib_MetaDataBlock
+ @brief Structure containing a block of meta data for a texture.
+*************************************************************************/
+struct PVRTexLib_MetaDataBlock
+{
+ PVRTuint32 DevFOURCC; ///< A 4cc descriptor of the data type's creator. Values starting with 'PVR' are reserved for PVRTexLib.
+ PVRTuint32 u32Key; ///< A unique value identifying the data type, and thus how to read it. For example PVRTexLibMetaData.
+ PVRTuint32 u32DataSize; ///< Size of 'Data' in bytes.
+ PVRTuint8* Data; ///< Meta data bytes
+};
+
+#define PVRTEXLIB_SIZEOF_METADATABLOCK(BLOCK) offsetof(PVRTexLib_MetaDataBlock, Data) + BLOCK.u32DataSize;
+
+/*!***********************************************************************
+ @struct PVRTexLib_TranscoderOptions
+ @brief Structure containing the transcoder options for
+ PVRTexLib_TranscodeTexture().
+*************************************************************************/
+#pragma pack(push,4)
+struct PVRTexLib_TranscoderOptions
+{
+ PVRTuint32 sizeofStruct; ///< For versioning - sizeof(PVRTexLib_TranscoderOptions)
+ PVRTuint64 pixelFormat; ///< Pixel format type
+ PVRTexLibVariableType channelType[4U]; ///< Per-channel variable type.
+ PVRTexLibColourSpace colourspace; ///< Colour space
+ PVRTexLibCompressorQuality quality; ///< Compression quality for PVRTC, ASTC, ETC, BASISU and IMGIC, higher quality usually requires more processing time.
+ bool doDither; ///< Apply dithering to lower precision formats.
+ float maxRange; ///< Max range value for RGB[M|D] encoding
+ PVRTuint32 maxThreads; ///< Max number of threads to use for transcoding, if set to 0 PVRTexLib will use all available cores.
+};
+#pragma pack(pop)
+
+/*!***********************************************************************
+ @struct PVRTexLib_ErrorMetrics
+ @brief Structure containing the resulting error metrics computed by:
+ PVRTexLib_MaxDifference(),
+ PVRTexLib_MeanError(),
+ PVRTexLib_MeanSquaredError(),
+ PVRTexLib_RootMeanSquaredError(),
+ PVRTexLib_StandardDeviation(),
+ PVRTexLib_PeakSignalToNoiseRatio().
+*************************************************************************/
+struct PVRTexLib_ErrorMetrics
+{
+ struct
+ {
+ PVRTexLibChannelName name; ///< Channel name. PVRTLCN_NoChannel indicates invalid entry.
+ double value; ///< Value for this channel.
+ } channels[4U]; ///< Per-channel metrics, not all entries have to be valid.
+
+ double allChannels; ///< Value for all channels.
+ double rgbChannels; ///< Value for RGB channels.
+};
+
+/*!***********************************************************************
+ @brief Sets up default texture header parameters.
+ @param[in,out] result Default header attributes.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetDefaultTextureHeaderParams(PVRHeader_CreateParams* result);
+
+/*!***********************************************************************
+ @brief Creates a new texture header using the supplied
+ header parameters.
+ @param[in] attribs The header attributes
+ @return A handle to a new texture header.
+*************************************************************************/
+PVR_DLL PVRTexLib_PVRTextureHeader PVRTexLib_CreateTextureHeader(const PVRHeader_CreateParams* attribs);
+
+/*!***********************************************************************
+ @brief Creates a new texture header from a PVRV3 structure.
+ Optionally supply meta data.
+ @param[in] header PVRTextureHeaderV3 structure to create from.
+ @param[in] metaDataCount Number of items in metaData, can be 0.
+ @param[in] metaData Array of meta data blocks, can be null.
+ @return A handle to a new texture header.
+*************************************************************************/
+PVR_DLL PVRTexLib_PVRTextureHeader PVRTexLib_CreateTextureHeaderFromHeader(const PVRTextureHeaderV3* header, PVRTuint32 metaDataCount, PVRTexLib_MetaDataBlock* metaData);
+
+/*!***********************************************************************
+ @brief Creates a new texture header by copying values from a
+ previously allocated texture header.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return A handle to a new texture header.
+*************************************************************************/
+PVR_DLL PVRTexLib_PVRTextureHeader PVRTexLib_CopyTextureHeader(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Free a previously allocated texture header.
+ @param[in] header Handle to a PVRTexLib_PVRTextureHeader.
+*************************************************************************/
+PVR_DLL void PVRTexLib_DestroyTextureHeader(PVRTexLib_PVRTextureHeader header);
+
+/*!************************************************************************
+ @brief Low level texture creation function.
+ Creates a PVRTextureHeaderV3 structure,
+ including room for the specified texture, in memory.
+ @param[in] width Width of the texture in pixels
+ @param[in] height Height of the texture in pixels
+ @param[in] depth Number of Z layers
+ @param[in] wMin Minimum width of a texture level
+ @param[in] hMin Minimum height of a texture level
+ @param[in] dMin Minimum depth of a texture level
+ @param[in] nBPP Bits per pixel
+ @param[in] bMIPMap Create memory for MIP-map levels also?
+ @param[in] pfnAllocCallback Memory allocation callback function.
+ @return Allocated texture memory. free()d by caller.
+**************************************************************************/
+PVR_DLL PVRTextureHeaderV3* PVRTexLib_TextureCreateRaw(
+ PVRTuint32 width,
+ PVRTuint32 height,
+ PVRTuint32 depth,
+ PVRTuint32 wMin,
+ PVRTuint32 hMin,
+ PVRTuint32 dMin,
+ PVRTuint32 nBPP,
+ bool bMIPMap,
+ void* (pfnAllocCallback)(PVRTuint64 allocSize));
+
+/*!***************************************************************************
+ @brief Low level texture creation function.
+ Load blocks of data from pSrc into pDst.
+ @param[in] pDst Texture to place the tiled data
+ @param[in] widthDst Width of destination texture
+ @param[in] heightDst Height of destination texture
+ @param[in] pSrc Texture to tile
+ @param[in] widthSrc Width of source texture
+ @param[in] heightSrc Height of source texture
+ @param[in] elementSize Bytes per pixel
+ @param[in] twiddled True if the data is twiddled
+*****************************************************************************/
+PVR_DLL void PVRTexLib_TextureLoadTiled(
+ PVRTuint8* pDst,
+ PVRTuint32 widthDst,
+ PVRTuint32 heightDst,
+ PVRTuint8* pSrc,
+ PVRTuint32 widthSrc,
+ PVRTuint32 heightSrc,
+ PVRTuint32 elementSize,
+ bool twiddled);
+
+/*!***********************************************************************
+ @brief Gets the number of bits per pixel for the specified texture header.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return Number of bits per pixel.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureBitsPerPixel(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the number of bits per pixel for the specified pixel format.
+ @param u64PixelFormat A PVR pixel format ID.
+ @return Number of bits per pixel.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetFormatBitsPerPixel(PVRTuint64 u64PixelFormat);
+
+/*!***********************************************************************
+ @brief Gets the number of channels for the specified texture header.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return For uncompressed formats the number of channels between 1 and 4.
+ For compressed formats 0
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureChannelCount(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the channel type for the specified texture header.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return PVRTexLibVariableType enum.
+*************************************************************************/
+PVR_DLL PVRTexLibVariableType PVRTexLib_GetTextureChannelType(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the colour space for the specified texture header.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return PVRTexLibColourSpace enum.
+*************************************************************************/
+PVR_DLL PVRTexLibColourSpace PVRTexLib_GetTextureColourSpace(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the width of the user specified MIP-Map level for the
+ texture
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] uiMipLevel MIP level that user is interested in.
+ @return Width of the specified MIP-Map level.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureWidth(PVRTexLib_CPVRTextureHeader header, PVRTuint32 mipLevel);
+
+/*!***********************************************************************
+ @brief Gets the height of the user specified MIP-Map
+ level for the texture
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] uiMipLevel MIP level that user is interested in.
+ @return Height of the specified MIP-Map level.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureHeight(PVRTexLib_CPVRTextureHeader header, PVRTuint32 mipLevel);
+
+/*!***********************************************************************
+ @brief Gets the depth of the user specified MIP-Map
+ level for the texture
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] uiMipLevel MIP level that user is interested in.
+ @return Depth of the specified MIP-Map level.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureDepth(PVRTexLib_CPVRTextureHeader header, PVRTuint32 mipLevel);
+
+/*!***********************************************************************
+ @brief Gets the size in PIXELS of the texture, given various input
+ parameters. User can retrieve the total size of either all
+ surfaces or a single surface, all faces or a single face and
+ all MIP-Maps or a single specified MIP level. All of these
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] iMipLevel Specifies a MIP level to check,
+ 'PVRTEX_ALLMIPLEVELS' can be passed to get
+ the size of all MIP levels.
+ @param[in] bAllSurfaces Size of all surfaces is calculated if true,
+ only a single surface if false.
+ @param[in] bAllFaces Size of all faces is calculated if true,
+ only a single face if false.
+ @return Size in PIXELS of the specified texture area.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureSize(PVRTexLib_CPVRTextureHeader header, PVRTint32 mipLevel, bool allSurfaces, bool allFaces);
+
+/*!***********************************************************************
+ @brief Gets the size in BYTES of the texture, given various input
+ parameters. User can retrieve the size of either all
+ surfaces or a single surface, all faces or a single face
+ and all MIP-Maps or a single specified MIP level.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] iMipLevel Specifies a mip level to check,
+ 'PVRTEX_ALLMIPLEVELS' can be passed to get
+ the size of all MIP levels.
+ @param[in] bAllSurfaces Size of all surfaces is calculated if true,
+ only a single surface if false.
+ @param[in] bAllFaces Size of all faces is calculated if true,
+ only a single face if false.
+ @return Size in BYTES of the specified texture area.
+*************************************************************************/
+PVR_DLL PVRTuint64 PVRTexLib_GetTextureDataSize(PVRTexLib_CPVRTextureHeader header, PVRTint32 mipLevel, bool allSurfaces, bool allFaces);
+
+/*!***********************************************************************
+ @brief Gets the data orientation for this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in,out] result Pointer to a PVRTexLib_Orientation structure.
+*************************************************************************/
+PVR_DLL void PVRTexLib_GetTextureOrientation(PVRTexLib_CPVRTextureHeader header, PVRTexLib_Orientation* result);
+
+/*!***********************************************************************
+ @brief Gets the OpenGL equivalent format for this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in,out] result Pointer to a PVRTexLib_OpenGLFormat structure.
+*************************************************************************/
+PVR_DLL void PVRTexLib_GetTextureOpenGLFormat(PVRTexLib_CPVRTextureHeader header, PVRTexLib_OpenGLFormat* result);
+
+/*!***********************************************************************
+ @brief Gets the OpenGLES equivalent format for this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in,out] result Pointer to a PVRTexLib_OpenGLESFormat structure.
+*************************************************************************/
+PVR_DLL void PVRTexLib_GetTextureOpenGLESFormat(PVRTexLib_CPVRTextureHeader header, PVRTexLib_OpenGLESFormat* result);
+
+/*!***********************************************************************
+ @brief Gets the Vulkan equivalent format for this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return A VkFormat enum value.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureVulkanFormat(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the Direct3D equivalent format for this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return A D3DFORMAT enum value.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureD3DFormat(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the DXGI equivalent format for this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return A DXGI_FORMAT enum value.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureDXGIFormat(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the minimum dimensions (x,y,z)
+ for the textures pixel format.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in,out] minX Returns the minimum width.
+ @param[in,out] minY Returns the minimum height.
+ @param[in,out] minZ Returns the minimum depth.
+*************************************************************************/
+PVR_DLL void PVRTexLib_GetTextureFormatMinDims(PVRTexLib_CPVRTextureHeader header, PVRTuint32* minX, PVRTuint32* minY, PVRTuint32* minZ);
+
+/*!***********************************************************************
+ @brief Gets the minimum dimensions (x,y,z)
+ for the textures pixel format.
+ @param[in] u64PixelFormat A PVR Pixel Format ID.
+ @param[in,out] minX Returns the minimum width.
+ @param[in,out] minY Returns the minimum height.
+ @param[in,out] minZ Returns the minimum depth.
+*************************************************************************/
+PVR_DLL void PVRTexLib_GetPixelFormatMinDims(PVRTuint64 ui64Format, PVRTuint32* minX, PVRTuint32* minY, PVRTuint32* minZ);
+
+/*!***********************************************************************
+ @brief Returns the total size of the meta data stored in the header.
+ This includes the size of all information stored in all MetaDataBlocks.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return Size, in bytes, of the meta data stored in the header.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureMetaDataSize(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Returns whether or not the texture's colour has been
+ pre-multiplied by the alpha values.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return True if texture is premultiplied.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_GetTextureIsPreMultiplied(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Returns whether or not the texture is compressed using
+ PVRTexLib's FILE compression - this is independent of
+ any texture compression.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return True if it is file compressed.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_GetTextureIsFileCompressed(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Returns whether or not the texture is a bump map.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return True if it is a bump map.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_GetTextureIsBumpMap(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the bump map scaling value for this texture.
+ If the texture is not a bump map, 0.0f is returned. If the
+ texture is a bump map but no meta data is stored to
+ specify its scale, then 1.0f is returned.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return Returns the bump map scale value as a float.
+*************************************************************************/
+PVR_DLL float PVRTexLib_GetTextureBumpMapScale(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Works out the number of possible texture atlas members in
+ the texture based on the width, height, depth and data size.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return The number of sub textures defined by meta data.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetNumTextureAtlasMembers(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Returns a pointer to the texture atlas data.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in,out] count Number of floats in the returned data set.
+ @return A pointer directly to the texture atlas data. NULL if
+ the texture does not have atlas data.
+*************************************************************************/
+PVR_DLL const float* PVRTexLib_GetTextureAtlasData(PVRTexLib_CPVRTextureHeader header, PVRTuint32* count);
+
+/*!***********************************************************************
+ @brief Gets the number of MIP-Map levels stored in this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return Number of MIP-Map levels in this texture.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureNumMipMapLevels(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the number of faces stored in this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return Number of faces in this texture.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureNumFaces(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the number of array members stored in this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return Number of array members in this texture.
+*************************************************************************/
+PVR_DLL PVRTuint32 PVRTexLib_GetTextureNumArrayMembers(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Gets the cube map face order.
+ cubeOrder string will be in the form "ZzXxYy" with capitals
+ representing positive and lower case letters representing
+ negative. I.e. Z=Z-Positive, z=Z-Negative.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in,out] cubeOrder Null terminated cube map order string.
+*************************************************************************/
+PVR_DLL void PVRTexLib_GetTextureCubeMapOrder(PVRTexLib_CPVRTextureHeader header, char cubeOrder[7]);
+
+/*!***********************************************************************
+ @brief Gets the bump map channel order relative to rgba.
+ For example, an RGB texture with bumps mapped to XYZ returns
+ 'xyz'. A BGR texture with bumps in the order ZYX will also
+ return 'xyz' as the mapping is the same: R=X, G=Y, B=Z.
+ If the letter 'h' is present in the string, it means that
+ the height map has been stored here.
+ Other characters are possible if the bump map was created
+ manually, but PVRTexLib will ignore these characters. They
+ are returned simply for completeness.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in,out] Null terminated bump map order string relative to rgba.
+*************************************************************************/
+PVR_DLL void PVRTexLib_GetTextureBumpMapOrder(PVRTexLib_CPVRTextureHeader header, char bumpOrder[5]);
+
+/*!***********************************************************************
+ @brief Gets the 64-bit pixel type ID of the texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return 64-bit pixel type ID.
+*************************************************************************/
+PVR_DLL PVRTuint64 PVRTexLib_GetTexturePixelFormat(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Checks whether the pixel format of the texture is packed.
+ E.g. R5G6B5, R11G11B10, R4G4B4A4 etc.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @return True if the texture format is packed, false otherwise.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_TextureHasPackedChannelData(PVRTexLib_CPVRTextureHeader header);
+
+/*!***********************************************************************
+ @brief Sets the variable type for the channels in this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] type A PVRTexLibVariableType enum.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureChannelType(PVRTexLib_PVRTextureHeader header, PVRTexLibVariableType type);
+
+/*!***********************************************************************
+ @brief Sets the colour space for this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] colourSpace A PVRTexLibColourSpace enum.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureColourSpace(PVRTexLib_PVRTextureHeader header, PVRTexLibColourSpace colourSpace);
+
+/*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the D3D format.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] d3dFormat A D3DFORMAT enum.
+ @return True if successful.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SetTextureD3DFormat(PVRTexLib_PVRTextureHeader header, PVRTuint32 d3dFormat);
+
+/*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the DXGI format.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] dxgiFormat A DXGI_FORMAT enum.
+ @return True if successful.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SetTextureDXGIFormat(PVRTexLib_PVRTextureHeader header, PVRTuint32 dxgiFormat);
+
+/*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the OpenGL format.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] oglFormat The OpenGL format.
+ @return True if successful.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SetTextureOGLFormat(PVRTexLib_PVRTextureHeader header, const PVRTexLib_OpenGLFormat* oglFormat);
+
+/*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the OpenGLES format.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] oglesFormat The OpenGLES format.
+ @return True if successful.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SetTextureOGLESFormat(PVRTexLib_PVRTextureHeader header, const PVRTexLib_OpenGLESFormat* oglesFormat);
+
+/*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the OpenGLES format.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] vulkanFormat A VkFormat enum.
+ @return True if successful.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SetTextureVulkanFormat(PVRTexLib_PVRTextureHeader header, PVRTuint32 vulkanFormat);
+
+/*!***********************************************************************
+ @brief Sets the pixel format for this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] format The format of the pixel.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTexturePixelFormat(PVRTexLib_PVRTextureHeader header, PVRTuint64 format);
+
+/*!***********************************************************************
+ @brief Sets the texture width.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] width The new width.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureWidth(PVRTexLib_PVRTextureHeader header, PVRTuint32 width);
+
+/*!***********************************************************************
+ @brief Sets the texture height.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] height The new height.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureHeight(PVRTexLib_PVRTextureHeader header, PVRTuint32 height);
+
+/*!***********************************************************************
+ @brief Sets the texture depth.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] depth The new depth.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureDepth(PVRTexLib_PVRTextureHeader header, PVRTuint32 depth);
+
+/*!***********************************************************************
+ @brief Sets the number of array members in this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] newNumMembers The new number of array members.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureNumArrayMembers(PVRTexLib_PVRTextureHeader header, PVRTuint32 numMembers);
+
+/*!***********************************************************************
+ @brief Sets the number of MIP-Map levels in this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] numMIPLevels New number of MIP-Map levels.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureNumMIPLevels(PVRTexLib_PVRTextureHeader header, PVRTuint32 numMIPLevels);
+
+/*!***********************************************************************
+ @brief Sets the number of faces stored in this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] numFaces New number of faces for this texture.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureNumFaces(PVRTexLib_PVRTextureHeader header, PVRTuint32 numFaces);
+
+/*!***********************************************************************
+ @brief Sets the data orientation for a given axis in this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] orientation Pointer to a PVRTexLib_Orientation struct.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureOrientation(PVRTexLib_PVRTextureHeader header, const PVRTexLib_Orientation* orientation);
+
+/*!***********************************************************************
+ @brief Sets whether or not the texture is compressed using
+ PVRTexLib's FILE compression - this is independent of
+ any texture compression. Currently unsupported.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] isFileCompressed Sets the file compression to true or false.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureIsFileCompressed(PVRTexLib_PVRTextureHeader header, bool isFileCompressed);
+
+/*!***********************************************************************
+ @brief Sets whether or not the texture's colour has been
+ pre-multiplied by the alpha values.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] isPreMultiplied Sets if texture is premultiplied.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureIsPreMultiplied(PVRTexLib_PVRTextureHeader header, bool isPreMultiplied);
+
+/*!***********************************************************************
+ @brief Obtains the border size in each dimension for this texture.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in,out] borderWidth Border width
+ @param[in,out] borderHeight Border height
+ @param[in,out] borderDepth Border depth
+*************************************************************************/
+PVR_DLL void PVRTexLib_GetTextureBorder(PVRTexLib_CPVRTextureHeader header,
+ PVRTuint32* borderWidth,
+ PVRTuint32* borderHeight,
+ PVRTuint32* borderDepth);
+
+/*!***********************************************************************
+ @brief Returns a copy of a block of meta data from the texture.
+ If the meta data doesn't exist, a block with a data size
+ of 0 will be returned.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] DevFOURCC Four character descriptor representing the
+ creator of the meta data
+ @param[in] u32Key Key value representing the type of meta data stored
+ @param[in,out] dataBlock returned meta block data
+ @param[in] pfnAllocCallback Memory allocation callback function.
+ @return True if the meta data block was found.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_GetMetaDataBlock(
+ PVRTexLib_CPVRTextureHeader header,
+ PVRTuint32 devFOURCC,
+ PVRTuint32 key,
+ PVRTexLib_MetaDataBlock* dataBlock,
+ void* (pfnAllocCallback)(PVRTuint32 allocSize));
+
+/*!***********************************************************************
+ @brief Returns whether or not the specified meta data exists as
+ part of this texture header.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] DevFOURCC Four character descriptor representing the
+ creator of the meta data
+ @param[in] u32Key Key value representing the type of meta data stored
+ @return True if the specified meta data bock exists
+*************************************************************************/
+PVR_DLL bool PVRTexLib_TextureHasMetaData(PVRTexLib_CPVRTextureHeader header, PVRTuint32 devFOURCC, PVRTuint32 key);
+
+/*!***********************************************************************
+ @brief Sets a texture's bump map data.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] bumpScale Floating point "height" value to scale the bump map.
+ @param[in] bumpOrder Up to 4 character string, with values x,y,z,h in
+ some combination. Not all values need to be present.
+ Denotes channel order; x,y,z refer to the
+ corresponding axes, h indicates presence of the
+ original height map. It is possible to have only some
+ of these values rather than all. For example if 'h'
+ is present alone it will be considered a height map.
+ The values should be presented in RGBA order, regardless
+ of the texture format, so a zyxh order in a bgra texture
+ should still be passed as 'xyzh'. Capitals are allowed.
+ Any character stored here that is not one of x,y,z,h
+ or a NULL character will be ignored when PVRTexLib
+ reads the data, but will be preserved. This is useful
+ if you wish to define a custom data channel for instance.
+ In these instances PVRTexLib will assume it is simply
+ colour data.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureBumpMap(PVRTexLib_PVRTextureHeader header, float bumpScale, const char* bumpOrder);
+
+/*!***********************************************************************
+ @brief Sets the texture atlas coordinate meta data for later display.
+ It is up to the user to make sure that this texture atlas
+ data actually makes sense in the context of the header.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] atlasData Pointer to an array of atlas data.
+ @param[in] dataSize Number of floats in atlasData.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureAtlas(PVRTexLib_PVRTextureHeader header, const float* atlasData, PVRTuint32 dataSize);
+
+/*!***********************************************************************
+ @brief Sets the texture's face ordering.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] cubeMapOrder Up to 6 character string, with values
+ x,X,y,Y,z,Z in some combination. Not all
+ values need to be present. Denotes face
+ order; Capitals refer to positive axis
+ positions and small letters refer to
+ negative axis positions. E.g. x=X-Negative,
+ X=X-Positive. It is possible to have only
+ some of these values rather than all, as
+ long as they are NULL terminated.
+ NB: Values past the 6th character are not read.
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureCubeMapOrder(PVRTexLib_PVRTextureHeader header, const char* cubeMapOrder);
+
+/*!***********************************************************************
+ @brief Sets a texture's border size data. This value is subtracted
+ from the current texture height/width/depth to get the valid
+ texture data.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] borderWidth Border width
+ @param[in] borderHeight Border height
+ @param[in] borderDepth Border depth
+*************************************************************************/
+PVR_DLL void PVRTexLib_SetTextureBorder(PVRTexLib_PVRTextureHeader header, PVRTuint32 borderWidth, PVRTuint32 borderHeight, PVRTuint32 borderDepth);
+
+/*!***********************************************************************
+ @brief Adds an arbitrary piece of meta data.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] dataBlock Meta data block to be added.
+*************************************************************************/
+PVR_DLL void PVRTexLib_AddMetaData(PVRTexLib_PVRTextureHeader header, const PVRTexLib_MetaDataBlock* dataBlock);
+
+/*!***********************************************************************
+ @brief Removes a specified piece of meta data, if it exists.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] DevFOURCC Four character descriptor representing the
+ creator of the meta data
+ @param[in] u32Key Key value representing the type of meta data stored.
+*************************************************************************/
+PVR_DLL void PVRTexLib_RemoveMetaData(PVRTexLib_PVRTextureHeader header, PVRTuint32 devFOURCC, PVRTuint32 key);
+
+/*!***********************************************************************
+ @brief Creates a new texture based on a texture header,
+ and optionally copies the supplied texture data.
+ @param[in] header A handle to a previously allocated PVRTexLib_PVRTextureHeader.
+ @param[in] data Texture data (may be NULL)
+ @return A new texture handle.
+*************************************************************************/
+PVR_DLL PVRTexLib_PVRTexture PVRTexLib_CreateTexture(PVRTexLib_CPVRTextureHeader header, const void* data);
+
+/*!***********************************************************************
+ @brief Creates a copy of the supplied texture.
+ @param[in] texture A handle to a PVRTexLib_PVRTexture to copy from.
+ @return A new texture handle.
+*************************************************************************/
+PVR_DLL PVRTexLib_PVRTexture PVRTexLib_CopyTexture(PVRTexLib_CPVRTexture texture);
+
+/*!***********************************************************************
+ @brief Creates a new texture, moving the contents of the
+ supplied texture into the new texture.
+ @param[in] texture A handle to a PVRTexLib_PVRTexture to move from.
+ @return A new texture handle.
+*************************************************************************/
+PVR_DLL PVRTexLib_PVRTexture PVRTexLib_MoveTexture(PVRTexLib_PVRTexture texture);
+
+/*!***********************************************************************
+ @brief Free a texture.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+*************************************************************************/
+PVR_DLL void PVRTexLib_DestroyTexture(PVRTexLib_PVRTexture texture);
+
+/*!***********************************************************************
+ @brief Creates a new texture from a file.
+ Accepted file formats are: PVR, KTX, KTX2, ASTC, DDS, BASIS,
+ PNG, JPEG, BMP, TGA, GIF, HDR, EXR, PSD, PPM, PGM and PIC
+ @param[in] filePath File path to the texture to load from.
+ @return A new texture handle OR NULL on failure.
+*************************************************************************/
+PVR_DLL PVRTexLib_PVRTexture PVRTexLib_CreateTextureFromFile(const char* filePath);
+
+/*!***********************************************************************
+ @brief Creates a new texture from a pointer that includes a header
+ structure, meta data and texture data as laid out in a file.
+ This functionality is primarily for user-defined file loading.
+ Header may be any version of pvr.
+ @param[in] data Pointer to texture data
+ @return A new texture handle OR NULL on failure.
+*************************************************************************/
+PVR_DLL PVRTexLib_PVRTexture PVRTexLib_CreateTextureFromData(const void* data);
+
+/*!***********************************************************************
+ @brief Returns a pointer to the texture's data.
+ The data offset is calculated using the parameters below.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] MIPLevel Offset to MIP Map levels
+ @param[in] arrayMember Offset to array members
+ @param[in] faceNumber Offset to face numbers
+ @param[in] ZSlice Offset to Z slice (3D textures only)
+ @return Pointer into the texture data OR NULL on failure.
+*************************************************************************/
+PVR_DLL void* PVRTexLib_GetTextureDataPtr(PVRTexLib_PVRTexture texture,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 faceNumber,
+ PVRTuint32 ZSlice);
+
+/*!***********************************************************************
+ @brief Returns a const pointer to the texture's data.
+ The data offset is calculated using the parameters below.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] MIPLevel Offset to MIP Map levels
+ @param[in] arrayMember Offset to array members
+ @param[in] faceNumber Offset to face numbers
+ @param[in] ZSlice Offset to Z slice (3D textures only)
+ @return Pointer into the texture data OR NULL on failure.
+*************************************************************************/
+PVR_DLL const void* PVRTexLib_GetTextureDataConstPtr(
+ PVRTexLib_CPVRTexture texture,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 faceNumber,
+ PVRTuint32 ZSlice);
+
+/*!***********************************************************************
+ @brief Returns a read only texture header.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @return PVRTexLib_PVRTextureHeader handle.
+*************************************************************************/
+PVR_DLL PVRTexLib_CPVRTextureHeader PVRTexLib_GetTextureHeader(PVRTexLib_CPVRTexture texture);
+
+/*!***********************************************************************
+ @brief Gets a write-able handle to the texture header.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @return PVRTexLib_PVRTextureHeader handle.
+*************************************************************************/
+PVR_DLL PVRTexLib_PVRTextureHeader PVRTexLib_GetTextureHeaderW(PVRTexLib_PVRTexture texture);
+
+/*!***********************************************************************
+ @brief Pads the texture data to a boundary value equal to "padding".
+ For example setting padding=8 will align the start of the
+ texture data to an 8 byte boundary.
+ NB: This should be called immediately before saving as
+ the value is worked out based on the current meta data size.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] padding Padding boundary value
+*************************************************************************/
+PVR_DLL void PVRTexLib_AddPaddingMetaData(PVRTexLib_PVRTexture texture, PVRTuint32 padding);
+
+/*!***********************************************************************
+ @brief Saves the texture to a given file path.
+ File type will be determined by the extension present in the string.
+ Valid extensions are: PVR, KTX, KTX2, ASTC, DDS, BASIS and h
+ If no extension is present the PVR format will be selected.
+ Unsupported formats will result in failure.
+ ASTC files only support ASTC texture formats.
+ BASIS files only support Basis Universal texture formats.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] filepath File path to write to
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SaveTextureToFile(PVRTexLib_CPVRTexture texture, const char* filePath);
+
+/*!***********************************************************************
+ @brief Similar to PVRTexLib_SaveTextureToFile, but redirects
+ the data to a memory buffer instead of a file.
+ Caller is responsible for de-allocating memory.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] fileType File container type to wrap the texture data with.
+ @param[in] privateData Pointer to a user supplied allocation context.
+ PVRTexLib will pass this into pfnRealloc when a [re]allocation
+ is required.
+ @param[out] outSize Size, in bytes, of the resulting 'file'/data.
+ @param[in] pfnRealloc Callback function to reallocate memory on-demand.
+ Return NULL to indicate allocation failure.
+ @return True if the method succeeds.
+ N.B This function may allocate even if it fails.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SaveTextureToMemory(
+ PVRTexLib_CPVRTexture texture,
+ PVRTexLibFileContainerType fileType,
+ void* privateData,
+ PVRTuint64* outSize,
+ PVRTuint8*(pfnRealloc)(void* privateData, PVRTuint64 allocSize));
+
+/*!***********************************************************************
+ @brief Writes out a single surface to a given image file.
+ @details File type is determined by the extension present in the filepath string.
+ Supported file types are PNG, JPG, BMP, TGA and HDR.
+ If no extension is present then the PNG format will be selected.
+ Unsupported formats will result in failure.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] filepath Path to write the image file.
+ @param[in] MIPLevel Mip level.
+ @param[in] arrayMember Array index.
+ @param[in] face Face index.
+ @param[in] ZSlice Z index.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SaveSurfaceToImageFile(
+ PVRTexLib_CPVRTexture texture,
+ const char* filePath,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 ZSlice);
+
+/*!***********************************************************************
+ @brief Saves the texture to a file, stripping any
+ extensions specified and appending .pvr. This function is
+ for legacy support only and saves out to PVR Version 2 file.
+ The target api must be specified in order to save to this format.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] filepath File path to write to
+ @param[in] api Target API
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SaveTextureToLegacyPVRFile(PVRTexLib_PVRTexture texture, const char* filePath, PVRTexLibLegacyApi api);
+
+/*!***********************************************************************
+ @brief Queries the texture object to determine if there are multiple
+ texture objects associated with the handle. This may be the
+ case after loading certain file types such as EXR, since EXR
+ files may contain several images/layers with unique pixel formats.
+ In these cases PVRTexLib will group all images with the same
+ pixel format into a single PVRTexLib_PVRTexture object, where
+ each PVRTexLib_PVRTexture can contain multiple array surfaces.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @return True if texture contains more than one PVRTexLib_PVRTexture.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_IsTextureMultiPart(PVRTexLib_CPVRTexture texture);
+
+/*!***********************************************************************
+ @brief Retrieves (and moves ownership of) the PVRTexLib_PVRTexture handles
+ stored within a multi-part texture and stores them in 'outTextures'.
+ Call this function with 'outTextures' == NULL to populate count
+ and then allocate an appropriately sized array. Handles returned
+ in 'outTextures' should be de-allocated as normal via
+ PVRTexLib_DestroyTexture. After calling this function, subsequent
+ calls to PVRTexLib_IsTextureMultiPart on the same handle will
+ return false.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] outTextures Array of PVRTexLib_PVRTexture handles to be populated.
+ All returned handles are independent of each other and 'inTexture'.
+ @param[out] count The number of parts held by inTexture
+*************************************************************************/
+PVR_DLL void PVRTexLib_GetTextureParts(PVRTexLib_PVRTexture inTexture, void** outTextures, PVRTuint32 *count);
+
+/*!***********************************************************************
+ @brief Resizes the texture to new specified dimensions.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] newWidth New width
+ @param[in] newHeight New height
+ @param[in] newDepth New depth
+ @param[in] resizeMode Filtering mode
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_ResizeTexture(
+ PVRTexLib_PVRTexture texture,
+ PVRTuint32 newWidth,
+ PVRTuint32 newHeight,
+ PVRTuint32 newDepth,
+ PVRTexLibResizeMode resizeMode);
+
+/*!***********************************************************************
+ @brief Resizes the canvas of a texture to new specified dimensions.
+ Offset area is filled with transparent black colour.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] u32NewWidth New width
+ @param[in] u32NewHeight New height
+ @param[in] u32NewDepth New depth
+ @param[in] i32XOffset X Offset value from the top left corner
+ @param[in] i32YOffset Y Offset value from the top left corner
+ @param[in] i32ZOffset Z Offset value from the top left corner
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_ResizeTextureCanvas(
+ PVRTexLib_PVRTexture texture,
+ PVRTuint32 newWidth,
+ PVRTuint32 newHeight,
+ PVRTuint32 newDepth,
+ PVRTint32 xOffset,
+ PVRTint32 yOffset,
+ PVRTint32 zOffset);
+
+/*!***********************************************************************
+ @brief Rotates a texture by 90 degrees around the given axis.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] rotationAxis Rotation axis
+ @param[in] forward Direction of rotation; true = clockwise, false = anti-clockwise
+ @return True if the method succeeds or not.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_RotateTexture(PVRTexLib_PVRTexture texture, PVRTexLibAxis rotationAxis, bool forward);
+
+/*!***********************************************************************
+ @brief Flips a texture on a given axis.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] flipDirection Flip direction
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_FlipTexture(PVRTexLib_PVRTexture texture, PVRTexLibAxis flipDirection);
+
+/*!***********************************************************************
+ @brief Adds a user specified border to the texture.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] borderX X border
+ @param[in] borderY Y border
+ @param[in] borderZ Z border
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_BorderTexture(PVRTexLib_PVRTexture texture, PVRTuint32 borderX, PVRTuint32 borderY, PVRTuint32 borderZ);
+
+/*!***********************************************************************
+ @brief Pre-multiplies a texture's colours by its alpha values.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_PreMultiplyAlpha(PVRTexLib_PVRTexture texture);
+
+/*!***********************************************************************
+ @brief Allows a texture's colours to run into any fully transparent areas.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_Bleed(PVRTexLib_PVRTexture texture);
+
+/*!***********************************************************************
+ @brief Sets the specified number of channels to values specified in pValues.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] numChannelSets Number of channels to set
+ @param[in] channels Channels to set
+ @param[in] pValues uint32 values to set channels to
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SetTextureChannels(
+ PVRTexLib_PVRTexture texture,
+ PVRTuint32 numChannelSets,
+ const PVRTexLibChannelName* channels,
+ const PVRTuint32* pValues);
+
+/*!***********************************************************************
+ @brief Sets the specified number of channels to values specified in float pValues.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] numChannelSets Number of channels to set
+ @param[in] channels Channels to set
+ @param[in] pValues float values to set channels to
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_SetTextureChannelsFloat(
+ PVRTexLib_PVRTexture texture,
+ PVRTuint32 numChannelSets,
+ const PVRTexLibChannelName* channels,
+ const float* pValues);
+
+/*!***********************************************************************
+ @brief Copies the specified channels from textureSource
+ into textureDestination. textureSource is not modified so it
+ is possible to use the same texture as both input and output.
+ When using the same texture as source and destination, channels
+ are preserved between swaps e.g. copying Red to Green and then
+ Green to Red will result in the two channels trading places
+ correctly. Channels in eChannels are set to the value of the channels
+ in eChannelSource.
+ @param[in] textureDestination A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureSource A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] uiNumChannelCopies Number of channels to copy
+ @param[in] destinationChannels Channels to set
+ @param[in] sourceChannels Source channels to copy from
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_CopyTextureChannels(
+ PVRTexLib_PVRTexture textureDestination,
+ PVRTexLib_CPVRTexture textureSource,
+ PVRTuint32 numChannelCopies,
+ const PVRTexLibChannelName* destinationChannels,
+ const PVRTexLibChannelName* sourceChannels);
+
+/*!***********************************************************************
+ @brief Generates a Normal Map from a given height map.
+ Assumes the red channel has the height values.
+ By default outputs to red/green/blue = x/y/z,
+ this can be overridden by specifying a channel
+ order in channelOrder. The channels specified
+ will output to red/green/blue/alpha in that order.
+ So "xyzh" maps x to red, y to green, z to blue
+ and h to alpha. 'h' is used to specify that the
+ original height map data should be preserved in
+ the given channel.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] fScale Scale factor
+ @param[in] channelOrder Channel order
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_GenerateNormalMap(PVRTexLib_PVRTexture texture, float fScale, const char* channelOrder);
+
+/*!***********************************************************************
+ @brief Generates MIPMap chain for a texture.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] filterMode Filter mode
+ @param[in] mipMapsToDo Number of levels of MIPMap chain to create.
+ Use PVRTEX_ALLMIPLEVELS to create a full mip chain.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_GenerateMIPMaps(PVRTexLib_PVRTexture texture, PVRTexLibResizeMode filterMode, PVRTint32 mipMapsToDo);
+
+/*!***********************************************************************
+ @brief Colours a texture's MIPMap levels with different colours
+ for debugging purposes. MIP levels are coloured in the
+ following repeating pattern: Red, Green, Blue, Cyan,
+ Magenta and Yellow
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_ColourMIPMaps(PVRTexLib_PVRTexture texture);
+
+/*!***********************************************************************
+ @brief Transcodes a texture from its original format into the specified format.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] transcoderOptions struct containing transcoder options.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_TranscodeTexture(PVRTexLib_PVRTexture texture, const PVRTexLib_TranscoderOptions& transcoderOptions);
+
+/*!***********************************************************************
+ @brief A convenience function to decompresses a texture into the most
+ appropriate format based on the textures 'compressed' format,
+ for example a PVRTC compressed texture may decompress to RGB888
+ or RGBA8888. This function may also be used to 'decompress'
+ packed formats into something easier to manipulate for example
+ RGB565 will be decompressed to RGB888.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] maxThreads The maximum number of threads to use for decompression,
+ if set to 0 PVRTexLib will use all available cores.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_Decompress(PVRTexLib_PVRTexture texture, PVRTuint32 maxThreads);
+
+/*!***********************************************************************
+ @brief Creates a cubemap with six faces from an equirectangular
+ projected texture. The input must have an aspect ratio of 2:1,
+ i.e. the width must be exactly twice the height.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] filterMode Filtering mode to apply when sampling the source texture.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_EquiRectToCubeMap(PVRTexLib_PVRTexture texture, PVRTexLibResizeMode filter);
+
+/*!***********************************************************************
+ @brief Generates a mipmapped diffuse irradiance texture from a cubemap
+ environment map, to be used primarily with physically based
+ rendering (PBR) techniques.
+ The input must be a cubemap, the width must equal height,
+ and the depth must equal 1.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] sampleCount The number of samples to use when generating
+ the diffuse map.
+ @param[in] mapSize Output dimensions, in pixels.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_GenerateDiffuseIrradianceCubeMap(PVRTexLib_PVRTexture texture, PVRTuint32 sampleCount, PVRTuint32 mapSize);
+
+/*!***********************************************************************
+ @brief Generates a prefiltered specular irradiance texture from a
+ cubemap environment map, to be used primarily with physically
+ based rendering (PBR) techniques.
+ Each Mip level of the specular map is blurred by a roughness
+ value between 0 and 1.
+ The input must be a cubemap, the width must equal height,
+ and the depth must equal 1.
+ @param[in] texture A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] sampleCount The number of samples to use when generating
+ the specular map.
+ @param[in] mapSize Output dimensions, in pixels.
+ @param[in] numMipLevelsToDiscard The number of Mip levels to be discarded
+ from the bottom of the Mip chain.
+ @param[in] zeroRoughnessIsExternal False to include a roughness of zero
+ when generating the prefiltered environment map.
+ True to omit a rougness of zero, implying that the user
+ will supply roughness zero from the environment texture.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_GeneratePreFilteredSpecularCubeMap(
+ PVRTexLib_PVRTexture texture,
+ PVRTuint32 sampleCount,
+ PVRTuint32 mapSize,
+ PVRTuint32 numMipLevelsToDiscard,
+ bool zeroRoughnessIsExternal);
+
+/*!***********************************************************************
+ @brief Computes the maximum difference between two given input textures.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both input textures. Both textures must have the
+ same dimensions. The function will only compare common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be compared.
+ @param[in] textureLHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureRHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @param[out] metrics Structure containing the resulting values.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_MaxDifference(
+ PVRTexLib_CPVRTexture textureLHS,
+ PVRTexLib_CPVRTexture textureRHS,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice,
+ PVRTexLib_ErrorMetrics* metrics);
+
+/*!***********************************************************************
+ @brief Computes the mean error between two given input textures.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both input textures. Both textures must have the
+ same dimensions. The function will only compare common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be compared.
+ @param[in] textureLHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureRHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @param[out] metrics Structure containing the resulting values.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_MeanError(
+ PVRTexLib_CPVRTexture textureLHS,
+ PVRTexLib_CPVRTexture textureRHS,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice,
+ PVRTexLib_ErrorMetrics* metrics);
+
+/*!***********************************************************************
+ @brief Computes the mean squared error (MSE) between two given input textures.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both input textures. Both textures must have the
+ same dimensions. The function will only compare common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be compared.
+ @param[in] textureLHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureRHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @param[out] metrics Structure containing the resulting values.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_MeanSquaredError(
+ PVRTexLib_CPVRTexture textureLHS,
+ PVRTexLib_CPVRTexture textureRHS,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice,
+ PVRTexLib_ErrorMetrics* metrics);
+
+/*!***********************************************************************
+ @brief Computes the root mean squared error (RMSE) between two given
+ input textures.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both input textures. Both textures must have the
+ same dimensions. The function will only compare common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be compared.
+ @param[in] textureLHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureRHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @param[out] metrics Structure containing the resulting values.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_RootMeanSquaredError(
+ PVRTexLib_CPVRTexture textureLHS,
+ PVRTexLib_CPVRTexture textureRHS,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice,
+ PVRTexLib_ErrorMetrics* metrics);
+
+/*!***********************************************************************
+ @brief Computes the standard deviation between two given input textures.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both input textures. Both textures must have the
+ same dimensions. The function will only compare common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be compared.
+ @param[in] textureLHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureRHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @param[out] metrics Structure containing the resulting values.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_StandardDeviation(
+ PVRTexLib_CPVRTexture textureLHS,
+ PVRTexLib_CPVRTexture textureRHS,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice,
+ PVRTexLib_ErrorMetrics* metrics);
+
+/*!***********************************************************************
+ @brief Computes the PSNR between two given input textures.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both input textures. Both textures must have the
+ same dimensions. The function will only compare common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be compared.
+ @param[in] textureLHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureRHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @param[out] metrics Structure containing the resulting values.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_PeakSignalToNoiseRatio(
+ PVRTexLib_CPVRTexture textureLHS,
+ PVRTexLib_CPVRTexture textureRHS,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice,
+ PVRTexLib_ErrorMetrics* metrics);
+
+/*!***********************************************************************
+ @brief Computes the the [mode] delta per channel between two given
+ input textures. Both textures must have the same dimensions and
+ may not be compressed. The function will only compare common
+ channels i.e. if 'LHS' has RGB while 'RHS' has RGBA channels,
+ then only the RGB channels will be compared.
+ @param[in] textureLHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureRHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[out] textureResult PVRTexLib_PVRTexture that will contain the result on success.
+ @param[in] multiplier The factor to multiply the deltas to highlight differences,
+ generally a value between 1 and 10.
+ @param[in] mode The clamping mode to use, currently supports absolute and signed.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_ColourDiff(
+ PVRTexLib_CPVRTexture textureLHS,
+ PVRTexLib_CPVRTexture textureRHS,
+ PVRTexLib_PVRTexture* textureResult,
+ float multiplier,
+ PVRTexLibColourDiffMode mode);
+
+/*!***********************************************************************
+ @brief Computes the total absolute pixel difference between two given
+ input textures and modulates the output based on the tolerance
+ value supplied. Deltas of zero will appear black while pixels
+ with deltas greater than or equal to the threshold are set to
+ red and finally deltas less than the tolerance are set to blue.
+ Both textures must have the same dimensions and may not be
+ compressed. The function will only compare common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be compared.
+ @param[in] textureLHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureRHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[out] textureResult PVRTexLib_PVRTexture that will contain the result on success.
+ @param[in] tolerance The cut-off value to compare the pixel delta to.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_ToleranceDiff(
+ PVRTexLib_CPVRTexture textureLHS,
+ PVRTexLib_CPVRTexture textureRHS,
+ PVRTexLib_PVRTexture* textureResult,
+ float tolerance);
+
+/*!***********************************************************************
+ @brief Blend each channel of the input textures using the blend factor
+ as a weighting of the first texture against the second.
+ Both textures must have the same dimensions and may not be
+ compressed. The function will only blend common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be blended.
+ @param[in] textureLHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[in] textureRHS A handle to a previously allocated PVRTexLib_PVRTexture.
+ @param[out] textureResult PVRTexLib_PVRTexture that will contain the result on success.
+ @param[in] blendFactor The blend weight to use in the blend equation:
+ (LHS_delta * BF) + (RHS_delta * (1 - BF)). The value is clamped
+ between 0 and 1.
+ @return True if the method succeeds.
+*************************************************************************/
+PVR_DLL bool PVRTexLib_BlendDiff(
+ PVRTexLib_CPVRTexture textureLHS,
+ PVRTexLib_CPVRTexture textureRHS,
+ PVRTexLib_PVRTexture* textureResult,
+ float blendFactor);
+
+#ifdef __cplusplus
+}
+#endif
+
+/*****************************************************************************
+End of file (PVRTexLib.h)
+*****************************************************************************/
\ No newline at end of file
diff --git a/deps/PVRTT/Include/PVRTexLib.hpp b/deps/PVRTT/Include/PVRTexLib.hpp
new file mode 100755
index 0000000000..449fa8e8e1
--- /dev/null
+++ b/deps/PVRTT/Include/PVRTexLib.hpp
@@ -0,0 +1,2657 @@
+/*!***********************************************************************
+ @file PVRTexLib.hpp
+ @copyright Copyright (c) Imagination Technologies Limited.
+ @brief C++ wrapper around PVRTexLib's C interface.
+*************************************************************************/
+#pragma once
+
+#include "PVRTexLib.h"
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace pvrtexlib
+{
+ struct MetaDataBlock
+ {
+ PVRTuint32 DevFOURCC; ///< A 4cc descriptor of the data type's creator. Values equating to values between 'P' 'V' 'R' 0 and 'P' 'V' 'R' 255 will be used by our headers.
+ PVRTuint32 u32Key; ///< A DWORD (enum value) identifying the data type, and thus how to read it.
+ PVRTuint32 u32DataSize; ///< Size of the Data member.
+ std::unique_ptr Data; ///< Meta data bytes
+
+ MetaDataBlock()
+ : DevFOURCC(PVRTEX_CURR_IDENT)
+ , u32Key()
+ , u32DataSize()
+ , Data()
+ {}
+ };
+
+ /*!***********************************************************************
+ @brief Texture header methods.
+ @details Setters & getters for pixel type, channel type and colour space.
+ Size retrieval and dimension manipulation. Setters & getters for
+ texture meta data.
+ *************************************************************************/
+ class PVRTextureHeader
+ {
+ public:
+ /*!***********************************************************************
+ @brief Creates a new texture header with default parameters.
+ @param[in] params PVRHeader_CreateParams
+ @return A new PVRTextureHeader
+ *************************************************************************/
+ inline PVRTextureHeader();
+
+ /*!***********************************************************************
+ @brief Creates a new texture header using the supplied parameters.
+ @param[in] params PVRHeader_CreateParams
+ @return A new PVRTextureHeader
+ *************************************************************************/
+ inline PVRTextureHeader(const PVRHeader_CreateParams* params);
+
+ /*!***********************************************************************
+ @brief Creates a new texture header using the supplied parameters.
+ @param[in] pixelFormat texture format
+ @param[in] width texture width in pixels
+ @param[in] height texture height in pixels
+ @param[in] depth texture depth
+ @param[in] numMipMaps number of MIP map levels
+ @param[in] numArrayMembers number of array members
+ @param[in] numFaces number of faces
+ @param[in] colourSpace colour space
+ @param[in] channelType channel type
+ @param[in] preMultiplied texture's colour has been pre-multiplied by the alpha values?
+ @return A new PVRTextureHeader
+ *************************************************************************/
+ inline PVRTextureHeader(
+ PVRTuint64 pixelFormat,
+ PVRTuint32 width,
+ PVRTuint32 height,
+ PVRTuint32 depth = 1U,
+ PVRTuint32 numMipMaps = 1U,
+ PVRTuint32 numArrayMembers = 1U,
+ PVRTuint32 numFaces = 1U,
+ PVRTexLibColourSpace colourSpace = PVRTexLibColourSpace::PVRTLCS_sRGB,
+ PVRTexLibVariableType channelType = PVRTexLibVariableType::PVRTLVT_UnsignedByteNorm,
+ bool preMultiplied = false);
+
+ /*!***********************************************************************
+ @brief Creates a new texture header from a PVRTextureHeader
+ @param[in] rhs Texture header to copy
+ @return A new PVRTextureHeader
+ *************************************************************************/
+ inline PVRTextureHeader(const PVRTextureHeader& rhs);
+
+ /*!***********************************************************************
+ @brief Creates a new texture, moving the contents of the
+ supplied texture into the new texture.
+ @param[in] texture A PVRTextureHeader to move from.
+ @return A new PVRTextureHeader.
+ *************************************************************************/
+ inline PVRTextureHeader(PVRTextureHeader&& rhs) noexcept;
+
+ /*!***********************************************************************
+ @brief Copies the contents of another texture header into this one.
+ @param[in] rhs PVRTextureHeader to copy
+ @return This texture header.
+ *************************************************************************/
+ inline PVRTextureHeader& operator=(const PVRTextureHeader& rhs);
+
+ /*!***********************************************************************
+ @brief Moves ownership of texture header data to this object.
+ @param[in] rhs PVRTextureHeader to move
+ @return This texture header.
+ *************************************************************************/
+ inline PVRTextureHeader& operator=(PVRTextureHeader&& rhs) noexcept;
+
+ /*!***********************************************************************
+ @brief Deconstructor for PVRTextureHeader.
+ *************************************************************************/
+ inline virtual ~PVRTextureHeader();
+
+ /*!***********************************************************************
+ @brief Gets the number of bits per pixel for this texture header.
+ @return Number of bits per pixel.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureBitsPerPixel() const;
+
+ /*!***********************************************************************
+ @brief Gets the number of bits per pixel for the specified pixel format.
+ @param u64PixelFormat A PVR pixel format ID.
+ @return Number of bits per pixel.
+ *************************************************************************/
+ static inline PVRTuint32 GetTextureBitsPerPixel(PVRTuint64 u64PixelFormat);
+
+ /*!***********************************************************************
+ @brief Gets the number of channels for this texture header.
+ @return For uncompressed formats the number of channels between 1 and 4.
+ For compressed formats 0
+ *************************************************************************/
+ inline PVRTuint32 GetTextureChannelCount() const;
+
+ /*!***********************************************************************
+ @brief Gets the channel type for this texture header.
+ @return PVRTexLibVariableType enum.
+ *************************************************************************/
+ inline PVRTexLibVariableType GetTextureChannelType() const;
+
+ /*!***********************************************************************
+ @brief Gets the colour space for this texture header.
+ @return PVRTexLibColourSpace enum.
+ *************************************************************************/
+ inline PVRTexLibColourSpace GetColourSpace() const;
+
+ /*!***********************************************************************
+ @brief Gets the width of the user specified MIP-Map level for the
+ texture
+ @param[in] uiMipLevel MIP level that user is interested in.
+ @return Width of the specified MIP-Map level.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureWidth(PVRTuint32 mipLevel = 0U) const;
+
+ /*!***********************************************************************
+ @brief Gets the height of the user specified MIP-Map
+ level for the texture
+ @param[in] uiMipLevel MIP level that user is interested in.
+ @return Height of the specified MIP-Map level.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureHeight(PVRTuint32 mipLevel = 0U) const;
+
+ /*!***********************************************************************
+ @brief Gets the depth of the user specified MIP-Map
+ level for the texture
+ @param[in] uiMipLevel MIP level that user is interested in.
+ @return Depth of the specified MIP-Map level.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureDepth(PVRTuint32 mipLevel = 0U) const;
+
+ /*!***********************************************************************
+ @brief Gets the size in PIXELS of the texture, given various input
+ parameters. User can retrieve the total size of either all
+ surfaces or a single surface, all faces or a single face and
+ all MIP-Maps or a single specified MIP level.
+ @param[in] iMipLevel Specifies a MIP level to check,
+ 'PVRTEX_ALLMIPLEVELS' can be passed to get
+ the size of all MIP levels.
+ @param[in] bAllSurfaces Size of all surfaces is calculated if true,
+ only a single surface if false.
+ @param[in] bAllFaces Size of all faces is calculated if true,
+ only a single face if false.
+ @return Size in PIXELS of the specified texture area.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureSize(PVRTint32 mipLevel = PVRTEX_ALLMIPLEVELS, bool allSurfaces = true, bool allFaces = true) const;
+
+ /*!***********************************************************************
+ @brief Gets the size in BYTES of the texture, given various input
+ parameters. User can retrieve the size of either all
+ surfaces or a single surface, all faces or a single face
+ and all MIP-Maps or a single specified MIP level.
+ @param[in] iMipLevel Specifies a mip level to check,
+ 'PVRTEX_ALLMIPLEVELS' can be passed to get
+ the size of all MIP levels.
+ @param[in] bAllSurfaces Size of all surfaces is calculated if true,
+ only a single surface if false.
+ @param[in] bAllFaces Size of all faces is calculated if true,
+ only a single face if false.
+ @return Size in BYTES of the specified texture area.
+ *************************************************************************/
+ inline PVRTuint64 GetTextureDataSize(PVRTint32 mipLevel = PVRTEX_ALLMIPLEVELS, bool allSurfaces = true, bool allFaces = true) const;
+
+ /*!***********************************************************************
+ @brief Gets the data orientation for this texture.
+ @param[in,out] result Pointer to a PVRTexLib_Orientation structure.
+ *************************************************************************/
+ inline void GetTextureOrientation(PVRTexLib_Orientation& result) const;
+
+ /*!***********************************************************************
+ @brief Gets the OpenGL equivalent format for this texture.
+ @param[in,out] result Pointer to a PVRTexLib_OpenGLFormat structure.
+ *************************************************************************/
+ inline void GetTextureOpenGLFormat(PVRTexLib_OpenGLFormat& result) const;
+
+ /*!***********************************************************************
+ @brief Gets the OpenGLES equivalent format for this texture.
+ @param[in,out] result Pointer to a PVRTexLib_OpenGLESFormat structure.
+ *************************************************************************/
+ inline void GetTextureOpenGLESFormat(PVRTexLib_OpenGLESFormat& result) const;
+
+ /*!***********************************************************************
+ @brief Gets the Vulkan equivalent format for this texture.
+ @return A VkFormat enum value.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureVulkanFormat() const;
+
+ /*!***********************************************************************
+ @brief Gets the Direct3D equivalent format for this texture.
+ @return A D3DFORMAT enum value.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureD3DFormat() const;
+
+ /*!***********************************************************************
+ @brief Gets the DXGI equivalent format for this texture.
+ @return A DXGI_FORMAT enum value.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureDXGIFormat() const;
+
+ /*!***********************************************************************
+ @brief Gets the minimum dimensions (x,y,z)
+ for the textures pixel format.
+ @param[in,out] minX Returns the minimum width.
+ @param[in,out] minY Returns the minimum height.
+ @param[in,out] minZ Returns the minimum depth.
+ *************************************************************************/
+ inline void GetTextureFormatMinDims(PVRTuint32& minX, PVRTuint32& minY, PVRTuint32& minZ) const;
+
+ /*!***********************************************************************
+ @brief Gets the minimum dimensions (x,y,z)
+ for a given pixel format.
+ @param[in] u64PixelFormat A PVR Pixel Format ID.
+ @param[in,out] minX Returns the minimum width.
+ @param[in,out] minY Returns the minimum height.
+ @param[in,out] minZ Returns the minimum depth.
+ *************************************************************************/
+ static inline void GetPixelFormatMinDims(PVRTuint64 ui64Format, PVRTuint32& minX, PVRTuint32& minY, PVRTuint32& minZ);
+
+ /*!***********************************************************************
+ @brief Returns the total size of the meta data stored in the header.
+ This includes the size of all information stored in all MetaDataBlocks.
+ @return Size, in bytes, of the meta data stored in the header.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureMetaDataSize() const;
+
+ /*!***********************************************************************
+ @brief Returns whether or not the texture's colour has been
+ pre-multiplied by the alpha values.
+ @return True if texture is premultiplied.
+ *************************************************************************/
+ inline bool GetTextureIsPreMultiplied() const;
+
+ /*!***********************************************************************
+ @brief Returns whether or not the texture is compressed using
+ PVRTexLib's FILE compression - this is independent of
+ any texture compression.
+ @return True if it is file compressed.
+ *************************************************************************/
+ inline bool GetTextureIsFileCompressed() const;
+
+ /*!***********************************************************************
+ @brief Returns whether or not the texture is a bump map.
+ @return True if it is a bump map.
+ *************************************************************************/
+ inline bool GetTextureIsBumpMap() const;
+
+ /*!***********************************************************************
+ @brief Gets the bump map scaling value for this texture.
+ If the texture is not a bump map, 0.0f is returned. If the
+ texture is a bump map but no meta data is stored to
+ specify its scale, then 1.0f is returned.
+ @return Returns the bump map scale value as a float.
+ *************************************************************************/
+ inline float GetTextureBumpMapScale() const;
+
+ /*!***********************************************************************
+ @brief Works out the number of possible texture atlas members in
+ the texture based on the width, height, depth and data size.
+ @return The number of sub textures defined by meta data.
+ *************************************************************************/
+ inline PVRTuint32 GetNumTextureAtlasMembers() const;
+
+ /*!***********************************************************************
+ @brief Returns a pointer to the texture atlas data.
+ @param[in,out] count Number of floats in the returned data set.
+ @return A pointer directly to the texture atlas data. NULL if
+ the texture does not have atlas data.
+ *************************************************************************/
+ inline const float* GetTextureAtlasData(PVRTuint32& count) const;
+
+ /*!***********************************************************************
+ @brief Gets the number of MIP-Map levels stored in this texture.
+ @return Number of MIP-Map levels in this texture.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureNumMipMapLevels() const;
+
+ /*!***********************************************************************
+ @brief Gets the number of faces stored in this texture.
+ @return Number of faces in this texture.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureNumFaces() const;
+
+ /*!***********************************************************************
+ @brief Gets the number of array members stored in this texture.
+ @return Number of array members in this texture.
+ *************************************************************************/
+ inline PVRTuint32 GetTextureNumArrayMembers() const;
+
+ /*!***********************************************************************
+ @brief Gets the cube map face order.
+ cubeOrder string will be in the form "ZzXxYy" with capitals
+ representing positive and lower case letters representing
+ negative. I.e. Z=Z-Positive, z=Z-Negative.
+ @return Null terminated cube map order string.
+ *************************************************************************/
+ inline std::string GetTextureCubeMapOrder() const;
+
+ /*!***********************************************************************
+ @brief Gets the bump map channel order relative to RGBA.
+ For example, an RGB texture with bumps mapped to XYZ returns
+ 'xyz'. A BGR texture with bumps in the order ZYX will also
+ return 'xyz' as the mapping is the same: R=X, G=Y, B=Z.
+ If the letter 'h' is present in the string, it means that
+ the height map has been stored here.
+ Other characters are possible if the bump map was created
+ manually, but PVRTexLib will ignore these characters. They
+ are returned simply for completeness.
+ @return Null terminated bump map order string relative to RGBA.
+ *************************************************************************/
+ inline std::string GetTextureBumpMapOrder() const;
+
+ /*!***********************************************************************
+ @brief Gets the 64-bit pixel type ID of the texture.
+ @return 64-bit pixel type ID.
+ *************************************************************************/
+ inline PVRTuint64 GetTexturePixelFormat() const;
+
+ /*!***********************************************************************
+ @brief Checks whether this textures pixel format is packed.
+ E.g. R5G6B5, R11G11B10, R4G4B4A4 etc.
+ @return True if the texture format is packed, false otherwise.
+ *************************************************************************/
+ inline bool TextureHasPackedChannelData() const;
+
+ /*!***********************************************************************
+ @brief Checks whether this textures pixel format is compressed.
+ E.g. PVRTC, ETC, ASTC etc.
+ @return True if the texture format is compressed, false otherwise.
+ *************************************************************************/
+ inline bool IsPixelFormatCompressed() const;
+
+ /*!***********************************************************************
+ @brief Sets the variable type for the channels in this texture.
+ @param[in] type A PVRTexLibVariableType enum.
+ *************************************************************************/
+ inline void SetTextureChannelType(PVRTexLibVariableType type);
+
+ /*!***********************************************************************
+ @brief Sets the colour space for this texture.
+ @param[in] colourSpace A PVRTexLibColourSpace enum.
+ *************************************************************************/
+ inline void SetTextureColourSpace(PVRTexLibColourSpace colourSpace);
+
+ /*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the D3D format.
+ @param[in] d3dFormat A D3DFORMAT enum.
+ @return True if successful.
+ *************************************************************************/
+ inline bool SetTextureD3DFormat(PVRTuint32 d3dFormat);
+
+ /*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the DXGI format.
+ @param[in] dxgiFormat A DXGI_FORMAT enum.
+ @return True if successful.
+ *************************************************************************/
+ inline bool SetTextureDXGIFormat(PVRTuint32 dxgiFormat);
+
+ /*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the OpenGL format.
+ @param[in] oglFormat The OpenGL format.
+ @return True if successful.
+ *************************************************************************/
+ inline bool SetTextureOGLFormat(const PVRTexLib_OpenGLFormat& oglFormat);
+
+ /*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the OpenGLES format.
+ @param[in] oglesFormat The OpenGLES format.
+ @return True if successful.
+ *************************************************************************/
+ inline bool SetTextureOGLESFormat(const PVRTexLib_OpenGLESFormat& oglesFormat);
+
+ /*!***********************************************************************
+ @brief Sets the format of the texture to PVRTexLib's internal
+ representation of the Vulkan format.
+ @param[in] vulkanFormat A VkFormat enum.
+ @return True if successful.
+ *************************************************************************/
+ inline bool SetTextureVulkanFormat(PVRTuint32 vulkanFormat);
+
+ /*!***********************************************************************
+ @brief Sets the pixel format for this texture.
+ @param[in] format The format of the pixel.
+ *************************************************************************/
+ inline void SetTexturePixelFormat(PVRTuint64 format);
+
+ /*!***********************************************************************
+ @brief Sets the texture width.
+ @param[in] width The new width.
+ *************************************************************************/
+ inline void SetTextureWidth(PVRTuint32 width);
+
+ /*!***********************************************************************
+ @brief Sets the texture height.
+ @param[in] height The new height.
+ *************************************************************************/
+ inline void SetTextureHeight(PVRTuint32 height);
+
+ /*!***********************************************************************
+ @brief Sets the texture depth.
+ @param[in] depth The new depth.
+ *************************************************************************/
+ inline void SetTextureDepth(PVRTuint32 depth);
+
+ /*!***********************************************************************
+ @brief Sets the number of array members in this texture.
+ @param[in] newNumMembers The new number of array members.
+ *************************************************************************/
+ inline void SetTextureNumArrayMembers(PVRTuint32 numMembers);
+
+ /*!***********************************************************************
+ @brief Sets the number of MIP-Map levels in this texture.
+ @param[in] numMIPLevels New number of MIP-Map levels.
+ *************************************************************************/
+ inline void SetTextureNumMIPLevels(PVRTuint32 numMIPLevels);
+
+ /*!***********************************************************************
+ @brief Sets the number of faces stored in this texture.
+ @param[in] numFaces New number of faces for this texture.
+ *************************************************************************/
+ inline void SetTextureNumFaces(PVRTuint32 numFaces);
+
+ /*!***********************************************************************
+ @brief Sets the data orientation for a given axis in this texture.
+ @param[in] orientation Pointer to a PVRTexLib_Orientation structure.
+ *************************************************************************/
+ inline void SetTextureOrientation(const PVRTexLib_Orientation& orientation);
+
+ /*!***********************************************************************
+ @brief Sets whether or not the texture is compressed using
+ PVRTexLib's FILE compression - this is independent of
+ any texture compression. Currently unsupported.
+ @param[in] isFileCompressed Sets the file compression to true or false.
+ *************************************************************************/
+ inline void SetTextureIsFileCompressed(bool isFileCompressed);
+
+ /*!***********************************************************************
+ @brief Sets whether or not the texture's colour has been
+ pre-multiplied by the alpha values.
+ @param[in] isPreMultiplied Sets if texture is premultiplied.
+ *************************************************************************/
+ inline void SetTextureIsPreMultiplied(bool isPreMultiplied);
+
+ /*!***********************************************************************
+ @brief Obtains the border size in each dimension for this texture.
+ @param[in,out] borderWidth Border width
+ @param[in,out] borderHeight Border height
+ @param[in,out] borderDepth Border depth
+ *************************************************************************/
+ inline void GetTextureBorder(PVRTuint32& borderWidth, PVRTuint32& borderHeight, PVRTuint32& borderDepth) const;
+
+ /*!***********************************************************************
+ @brief Returns a copy of a block of meta data from the texture.
+ If the meta data doesn't exist, a block with a data size
+ of 0 will be returned.
+ @param[in] key Value representing the type of meta data stored
+ @param[in,out] dataBlock returned meta block data
+ @param[in] devFOURCC Four character descriptor representing the
+ creator of the meta data
+ @return True if the meta data block was found. False otherwise.
+ *************************************************************************/
+ inline bool GetMetaDataBlock(PVRTuint32 key, MetaDataBlock& dataBlock, PVRTuint32 devFOURCC = PVRTEX_CURR_IDENT) const;
+
+ /*!***********************************************************************
+ @brief Returns whether or not the specified meta data exists as
+ part of this texture header.
+ @param[in] u32Key Key value representing the type of meta data stored
+ @param[in] DevFOURCC Four character descriptor representing the
+ creator of the meta data
+ @return True if the specified meta data bock exists
+ *************************************************************************/
+ inline bool TextureHasMetaData(PVRTuint32 key, PVRTuint32 devFOURCC = PVRTEX_CURR_IDENT) const;
+
+ /*!***********************************************************************
+ @brief Sets a texture's bump map data.
+ @param[in] bumpScale Floating point "height" value to scale the bump map.
+ @param[in] bumpOrder Up to 4 character string, with values x,y,z,h in
+ some combination. Not all values need to be present.
+ Denotes channel order; x,y,z refer to the
+ corresponding axes, h indicates presence of the
+ original height map. It is possible to have only some
+ of these values rather than all. For example if 'h'
+ is present alone it will be considered a height map.
+ The values should be presented in RGBA order, regardless
+ of the texture format, so a zyxh order in a bgra texture
+ should still be passed as 'xyzh'. Capitals are allowed.
+ Any character stored here that is not one of x,y,z,h
+ or a NULL character will be ignored when PVRTexLib
+ reads the data, but will be preserved. This is useful
+ if you wish to define a custom data channel for instance.
+ In these instances PVRTexLib will assume it is simply
+ colour data.
+ *************************************************************************/
+ inline void SetTextureBumpMap(float bumpScale, const std::string& bumpOrder);
+
+ /*!***********************************************************************
+ @brief Sets the texture atlas coordinate meta data for later display.
+ It is up to the user to make sure that this texture atlas
+ data actually makes sense in the context of the header.
+ @param[in] atlasData Pointer to an array of atlas data.
+ @param[in] dataSize Number of floats in atlasData.
+ *************************************************************************/
+ inline void SetTextureAtlas(const float* atlasData, PVRTuint32 dataSize);
+
+ /*!***********************************************************************
+ @brief Sets the texture's face ordering.
+ @param[in] cubeMapOrder Up to 6 character string, with values
+ x,X,y,Y,z,Z in some combination. Not all
+ values need to be present. Denotes face
+ order; Capitals refer to positive axis
+ positions and small letters refer to
+ negative axis positions. E.g. x=X-Negative,
+ X=X-Positive. It is possible to have only
+ some of these values rather than all, as
+ long as they are NULL terminated.
+ NB: Values past the 6th character are not read.
+ *************************************************************************/
+ inline void SetTextureCubeMapOrder(const std::string& cubeMapOrder);
+
+ /*!***********************************************************************
+ @brief Sets a texture's border size data. This value is subtracted
+ from the current texture height/width/depth to get the valid
+ texture data.
+ @param[in] borderWidth Border width
+ @param[in] borderHeight Border height
+ @param[in] borderDepth Border depth
+ *************************************************************************/
+ inline void SetTextureBorder(PVRTuint32 borderWidth, PVRTuint32 borderHeight, PVRTuint32 borderDepth);
+
+ /*!***********************************************************************
+ @brief Adds an arbitrary piece of meta data.
+ @param[in] dataBlock Meta data block to be added.
+ *************************************************************************/
+ inline void AddMetaData(const MetaDataBlock& dataBlock);
+
+ /*!***********************************************************************
+ @brief Adds an arbitrary piece of meta data.
+ @param[in] dataBlock Meta data block to be added.
+ *************************************************************************/
+ inline void AddMetaData(const PVRTexLib_MetaDataBlock& dataBlock);
+
+ /*!***********************************************************************
+ @brief Removes a specified piece of meta data, if it exists.
+ @param[in] u32Key Key value representing the type of meta data stored.
+ @param[in] DevFOURCC Four character descriptor representing the
+ creator of the meta data
+ *************************************************************************/
+ inline void RemoveMetaData(PVRTuint32 key, PVRTuint32 devFOURCC = PVRTEX_CURR_IDENT);
+
+ protected:
+ inline PVRTextureHeader(bool);
+ static inline PVRTexLib_CPVRTextureHeader GetHeader(const PVRTextureHeader& header);
+ PVRTexLib_PVRTextureHeader m_hTextureHeader;
+ };
+
+ /*!***********************************************************************
+ @brief Texture loading, saving and manipulation.
+ @details Methods to load and save texture data to various container
+ and image file formats such as; PVR, KTX, Basis, PNG, JPG and HDR.
+ Methods for image manipulation operations such as; compressing,
+ transcoding, resizing and generating MIP chains & normal maps etc.
+ Also allows for direct data access.
+ *************************************************************************/
+ class PVRTexture : public PVRTextureHeader
+ {
+ public:
+ /*!***********************************************************************
+ @brief Default constructor.
+ @return A new texture object.
+ *************************************************************************/
+ inline PVRTexture();
+
+ /*!***********************************************************************
+ @brief Creates a new texture based on a texture header,
+ and optionally copies the supplied texture data.
+ @param[in] header A PVRTextureHeader.
+ @param[in] data Texture data (may be NULL)
+ @return A new texture object.
+ *************************************************************************/
+ inline PVRTexture(const PVRTextureHeader& header, const void *textureData);
+
+ /*!***********************************************************************
+ @brief Creates a new texture from a file.
+ Accepted file formats are: PVR, KTX, KTX2, ASTC, DDS, BASIS,
+ PNG, JPEG, BMP, TGA, GIF, HDR, EXR, PSD, PPM, PGM and PIC
+ @param[in] filePath File path to a texture to load from.
+ @return A new texture object.
+ *************************************************************************/
+ inline PVRTexture(const std::string& filePath);
+
+ /*!***********************************************************************
+ @brief Creates a new texture from a file.
+ Accepted file formats are: PVR, KTX, KTX2, ASTC, DDS, BASIS,
+ PNG, JPEG, BMP, TGA, GIF, HDR, EXR, PSD, PPM, PGM and PIC
+ @param[in] filePath File path to a texture to load from.
+ @return A new texture object.
+ *************************************************************************/
+ inline PVRTexture(const char* filePath);
+
+ /*!***********************************************************************
+ @brief Creates a new texture from a pointer that includes a header
+ structure, meta data and texture data as laid out in a file.
+ This functionality is primarily for user-defined file loading.
+ Header may be any version of PVR.
+ @param[in] data Pointer to texture data
+ @return A new texture object.
+ *************************************************************************/
+ inline explicit PVRTexture(const void* data);
+
+ /*!***********************************************************************
+ @brief Creates a copy of the supplied texture.
+ @param[in] texture A PVRTexture to copy from.
+ @return A new texture object.
+ *************************************************************************/
+ inline PVRTexture(const PVRTexture& rhs);
+
+ /*!***********************************************************************
+ @brief Creates a new texture, moving the contents of the
+ supplied texture into the new texture.
+ @param[in] texture A PVRTexture to move from.
+ @return A new texture object.
+ *************************************************************************/
+ inline PVRTexture(PVRTexture&& rhs) noexcept;
+
+ /*!***********************************************************************
+ @brief Copies the contents of another texture into this one.
+ @param[in] rhs Texture to copy
+ @return This texture.
+ *************************************************************************/
+ inline PVRTexture& operator=(const PVRTexture& rhs);
+
+ /*!***********************************************************************
+ @brief Moves ownership of texture data to this object.
+ @param[in] rhs Texture to move
+ @return This texture.
+ *************************************************************************/
+ inline PVRTexture& operator=(PVRTexture&& rhs) noexcept;
+
+ /*!***********************************************************************
+ @brief Deconstructor for PVRTexture.
+ *************************************************************************/
+ inline ~PVRTexture();
+
+ /*!***********************************************************************
+ @brief Returns a pointer to the texture's data.
+ The data offset is calculated using the parameters below.
+ @param[in] MIPLevel Offset to MIP Map levels
+ @param[in] arrayMember Offset to array members
+ @param[in] faceNumber Offset to face numbers
+ @param[in] ZSlice Offset to Z slice (3D textures only)
+ @return Pointer into the texture data OR NULL on failure.
+ *************************************************************************/
+ inline void* GetTextureDataPointer(
+ PVRTuint32 MIPLevel = 0U,
+ PVRTuint32 arrayMember = 0U,
+ PVRTuint32 faceNumber = 0U,
+ PVRTuint32 ZSlice = 0U);
+
+ /*!***********************************************************************
+ @brief Returns a constant pointer to the texture's data.
+ The data offset is calculated using the parameters below.
+ @param[in] MIPLevel Offset to MIP Map levels
+ @param[in] arrayMember Offset to array members
+ @param[in] faceNumber Offset to face numbers
+ @param[in] ZSlice Offset to Z slice (3D textures only)
+ @return Pointer into the texture data OR NULL on failure.
+ *************************************************************************/
+ inline const void* GetTextureDataPointer(
+ PVRTuint32 MIPLevel = 0U,
+ PVRTuint32 arrayMember = 0U,
+ PVRTuint32 faceNumber = 0U,
+ PVRTuint32 ZSlice = 0U) const;
+
+ /*!***********************************************************************
+ @brief Pads the texture data to a boundary value equal to "padding".
+ For example setting padding=8 will align the start of the
+ texture data to an 8 byte boundary.
+ NB: This should be called immediately before saving as
+ the value is worked out based on the current meta data size.
+ @param[in] padding Padding boundary value
+ *************************************************************************/
+ inline void AddPaddingMetaData(PVRTuint32 padding);
+
+ /*!***********************************************************************
+ @brief Saves the texture to a given file path.
+ File type will be determined by the extension present in the string.
+ Valid extensions are: PVR, KTX, KTX2, ASTC, DDS, BASIS and h
+ If no extension is present the PVR format will be selected.
+ Unsupported formats will result in failure.
+ ASTC files only support ASTC texture formats.
+ BASIS files only support Basis Universal texture formats.
+ @param[in] filepath File path to write to
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool SaveToFile(const std::string& filePath) const;
+
+ /*!***********************************************************************
+ @brief Saves the texture to a file, stripping any
+ extensions specified and appending .pvr. This function is
+ for legacy support only and saves out to PVR Version 2 file.
+ The target api must be specified in order to save to this format.
+ @param[in] filepath File path to write to
+ @param[in] api Target API
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool SaveToFile(const std::string& filePath, PVRTexLibLegacyApi api) const;
+
+ /*!***********************************************************************
+ @brief Similar to SaveToFile, but redirects the data to a memory
+ buffer instead of a file.
+ The caller is responsible for de-allocating memory.
+ @param[in] fileType File container type to wrap the texture data with.
+ @param[in] privateData Pointer to a user supplied allocation context.
+ PVRTexLib will pass this into pfnRealloc when a [re]allocation
+ is required.
+ @param[out] outSize Size, in bytes, of the resulting 'file'/data.
+ @param[in] pfnRealloc Callback function to reallocate memory on-demand.
+ Return NULL to indicate allocation failure.
+ @return True if the method succeeds.
+ N.B This function may allocate even if it fails.
+ *************************************************************************/
+ inline bool SaveTextureToMemory(
+ PVRTexLibFileContainerType fileType,
+ void* privateData,
+ PVRTuint64& outSize,
+ PVRTuint8*(pfnRealloc)(void* privateData, PVRTuint64 allocSize)) const;
+
+ /*!***********************************************************************
+ @brief Similar to SaveToFile, but redirects
+ the data to a memory buffer instead of a file.
+ @param[in] fileType File container type to wrap the texture data with.
+ @param[in,out] outData std::vector containing the resulting data.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool SaveTextureToMemory(
+ PVRTexLibFileContainerType fileType,
+ std::vector& outData) const;
+
+ /*!***********************************************************************
+ @brief Similar to SaveToFile, but redirects the data to a memory
+ buffer instead of a file.
+ @param[in] fileType File container type to wrap the texture data with.
+ @param[out] outSize Size, in bytes, of the resulting 'file'/data.
+ @return Managed pointer to the resulting data or nullptr on failure.
+ *************************************************************************/
+ inline std::unique_ptr SaveTextureToMemory(
+ PVRTexLibFileContainerType fileType,
+ PVRTuint64& outSize) const;
+
+ /*!***********************************************************************
+ @brief Writes out a single surface to a given image file.
+ @details File type is determined by the extension present in the filepath string.
+ Supported file types are PNG, JPG, BMP, TGA and HDR.
+ If no extension is present then the PNG format will be selected.
+ Unsupported formats will result in failure.
+ @param[in] filepath Path to write the image file.
+ @param[in] MIPLevel Mip level.
+ @param[in] arrayMember Array index.
+ @param[in] face Face index.
+ @param[in] ZSlice Z index.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool SaveSurfaceToImageFile(
+ const std::string& filePath,
+ PVRTuint32 MIPLevel = 0U,
+ PVRTuint32 arrayMember = 0U,
+ PVRTuint32 face = 0U,
+ PVRTuint32 ZSlice = 0U) const;
+
+ /*!***********************************************************************
+ @brief Queries the texture object to determine if there are multiple
+ texture objects associated with it. This may be the case after
+ loading certain file types such as EXR, since EXR files may
+ contain several images/layers with unique pixel formats.
+ In these cases PVRTexLib will group all images with the same
+ pixel format into a single PVRTexLib_PVRTexture object, where
+ each PVRTexLib_PVRTexture can contain multiple array surfaces.
+ @return True if this texture contains more than one PVRTexLib_PVRTexture.
+ *************************************************************************/
+ inline bool IsTextureMultiPart() const;
+
+ /*!***********************************************************************
+ @brief Retrieves (and moves ownership of) all PVRTexLib_PVRTexture handles
+ associated with this texture object. After calling this function
+ any subsequent calls on this texture to IsTextureMultiPart
+ will return false.
+ @return Vector of PVRTexture objects. All returned textures are
+ independent of each other and this texture.
+ *************************************************************************/
+ inline std::vector GetTextureParts();
+
+ /*!***********************************************************************
+ @brief Resizes the texture to new specified dimensions.
+ @param[in] newWidth New width
+ @param[in] newHeight New height
+ @param[in] newDepth New depth
+ @param[in] resizeMode Filtering mode
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool Resize(
+ PVRTuint32 newWidth,
+ PVRTuint32 newHeight,
+ PVRTuint32 newDepth,
+ PVRTexLibResizeMode resizeMode);
+
+ /*!***********************************************************************
+ @brief Resizes the canvas of a texture to new specified dimensions.
+ Offset area is filled with transparent black colour.
+ @param[in] u32NewWidth New width
+ @param[in] u32NewHeight New height
+ @param[in] u32NewDepth New depth
+ @param[in] i32XOffset X Offset value from the top left corner
+ @param[in] i32YOffset Y Offset value from the top left corner
+ @param[in] i32ZOffset Z Offset value from the top left corner
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool ResizeCanvas(
+ PVRTuint32 newWidth,
+ PVRTuint32 newHeight,
+ PVRTuint32 newDepth,
+ PVRTint32 xOffset,
+ PVRTint32 yOffset,
+ PVRTint32 zOffset);
+
+ /*!***********************************************************************
+ @brief Rotates a texture by 90 degrees around the given axis.
+ @param[in] rotationAxis Rotation axis
+ @param[in] forward Direction of rotation; true = clockwise, false = anti-clockwise
+ @return True if the method succeeds or not.
+ *************************************************************************/
+ inline bool Rotate(PVRTexLibAxis rotationAxis, bool forward);
+
+ /*!***********************************************************************
+ @brief Flips a texture on a given axis.
+ @param[in] flipDirection Flip direction
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool Flip(PVRTexLibAxis flipDirection);
+
+ /*!***********************************************************************
+ @brief Adds a user specified border to the texture.
+ @param[in] borderX X border
+ @param[in] borderY Y border
+ @param[in] borderZ Z border
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool Border(PVRTuint32 borderX, PVRTuint32 borderY, PVRTuint32 borderZ);
+
+ /*!***********************************************************************
+ @brief Pre-multiplies a texture's colours by its alpha values.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool PreMultiplyAlpha();
+
+ /*!***********************************************************************
+ @brief Allows a texture's colours to run into any fully transparent areas.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool Bleed();
+
+ /*!***********************************************************************
+ @brief Sets the specified number of channels to values specified in pValues.
+ @param[in] numChannelSets Number of channels to set
+ @param[in] channels Channels to set
+ @param[in] pValues uint32 values to set channels to
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool SetChannels(
+ PVRTuint32 numChannelSets,
+ const PVRTexLibChannelName* channels,
+ const PVRTuint32* pValues);
+
+ /*!***********************************************************************
+ @brief Sets the specified number of channels to values specified in float pValues.
+ @param[in] numChannelSets Number of channels to set
+ @param[in] channels Channels to set
+ @param[in] pValues float values to set channels to
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool SetChannels(
+ PVRTuint32 numChannelSets,
+ const PVRTexLibChannelName* channels,
+ const float* pValues);
+
+ /*!***********************************************************************
+ @brief Copies the specified channels from textureSource
+ into textureDestination. textureSource is not modified so it
+ is possible to use the same texture as both input and output.
+ When using the same texture as source and destination, channels
+ are preserved between swaps e.g. copying Red to Green and then
+ Green to Red will result in the two channels trading places
+ correctly. Channels in eChannels are set to the value of the channels
+ in eChannelSource.
+ @param[in] sourceTexture A PVRTexture to copy channels from.
+ @param[in] uiNumChannelCopies Number of channels to copy
+ @param[in] destinationChannels Channels to set
+ @param[in] sourceChannels Source channels to copy from
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool CopyChannels(
+ const PVRTexture& sourceTexture,
+ PVRTuint32 numChannelCopies,
+ const PVRTexLibChannelName* destinationChannels,
+ const PVRTexLibChannelName* sourceChannels);
+
+ /*!***********************************************************************
+ @brief Generates a Normal Map from a given height map.
+ Assumes the red channel has the height values.
+ By default outputs to red/green/blue = x/y/z,
+ this can be overridden by specifying a channel
+ order in channelOrder. The channels specified
+ will output to red/green/blue/alpha in that order.
+ So "xyzh" maps x to red, y to green, z to blue
+ and h to alpha. 'h' is used to specify that the
+ original height map data should be preserved in
+ the given channel.
+ @param[in] fScale Scale factor
+ @param[in] channelOrder Channel order
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool GenerateNormalMap(float fScale, const std::string& channelOrder);
+
+ /*!***********************************************************************
+ @brief Generates MIPMap chain for a texture.
+ @param[in] filterMode Filter mode
+ @param[in] mipMapsToDo Number of levels of MIPMap chain to create.
+ Use PVRTEX_ALLMIPLEVELS to create a full mip chain.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool GenerateMIPMaps(PVRTexLibResizeMode filterMode, PVRTint32 mipMapsToDo = PVRTEX_ALLMIPLEVELS);
+
+ /*!***********************************************************************
+ @brief Colours a texture's MIPMap levels with different colours
+ for debugging purposes. MIP levels are coloured in the
+ following repeating pattern: Red, Green, Blue, Cyan,
+ Magenta and Yellow
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool ColourMIPMaps();
+
+ /*!***********************************************************************
+ @brief Transcodes a texture from its original format into the specified format.
+ Will either quantise or dither to lower precisions based on "bDoDither".
+ "quality" specifies the quality for compressed formats: PVRTC, ETC,
+ ASTC, and BASISU. Higher quality generally means a longer computation time.
+ @param[in] pixelFormat Pixel format type
+ @param[in] channelType Channel type
+ @param[in] colourspace Colour space
+ @param[in] quality Quality level for compressed formats, higher quality generally
+ requires more processing time.
+ @param[in] doDither Dither the texture to lower precisions
+ @param[in] maxRange Maximum range value for RGB{M/D} encoding
+ @param[in] maxThreads Maximum number of threads to use for transcoding, if set to
+ 0 then PVRTexLib will use all available logical cores.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool Transcode(
+ PVRTuint64 pixelFormat,
+ PVRTexLibVariableType channelType,
+ PVRTexLibColourSpace colourspace,
+ PVRTexLibCompressorQuality quality = PVRTexLibCompressorQuality::PVRTLCQ_PVRTCNormal,
+ bool doDither = false,
+ float maxRange = 1.0f,
+ PVRTuint32 maxThreads = 0U);
+
+ /*!***********************************************************************
+ @brief Transcodes a texture from its original format into the specified format.
+ @param[in] options structure containing transcoder options.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool Transcode(const PVRTexLib_TranscoderOptions& options);
+
+ /*!***********************************************************************
+ @brief A convenience function to decompresses a texture into the most
+ appropriate format based on the textures 'compressed' format,
+ for example a PVRTC compressed texture may decompress to RGB888
+ or RGBA8888. This function may also be used to 'decompress'
+ packed formats into something easier to manipulate for example
+ RGB565 will be decompressed to RGB888.
+ @param[in] maxThreads The maximum number of threads to use for decompression,
+ if set to 0 PVRTexLib will use all available cores.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool Decompress(PVRTuint32 maxThreads = 0U);
+
+ /*!***********************************************************************
+ @brief Creates a cube-map with six faces from an equi-rectangular
+ projected texture. The input must have an aspect ratio of 2:1,
+ i.e. the width must be exactly twice the height.
+ @param[in] filterMode Filtering mode to apply when sampling the source texture.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool EquiRectToCubeMap(PVRTexLibResizeMode filter);
+
+ /*!***********************************************************************
+ @brief Generates a mip-mapped diffuse irradiance texture from a cube-map
+ environment map, to be used primarily with physically based
+ rendering (PBR) techniques.
+ The texture must be a cube-map, the width must equal height,
+ and the depth must equal 1.
+ @param[in] sampleCount The number of samples to use when generating
+ the diffuse map.
+ @param[in] mapSize Output dimensions, in pixels.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool GenerateDiffuseIrradianceCubeMap(PVRTuint32 sampleCount, PVRTuint32 mapSize);
+
+ /*!***********************************************************************
+ @brief Generates a pre-filtered specular irradiance texture from a
+ cube-map environment map, to be used primarily with physically
+ based rendering (PBR) techniques.
+ Each Mip level of the specular map is blurred by a roughness
+ value between 0 and 1.
+ The texture must be a cube-map, the width must equal height,
+ and the depth must equal 1.
+ @param[in] sampleCount The number of samples to use when generating
+ the specular map.
+ @param[in] mapSize Output dimensions, in pixels.
+ @param[in] numMipLevelsToDiscard The number of Mip levels to be discarded
+ from the bottom of the Mip chain.
+ @param[in] zeroRoughnessIsExternal False to include a roughness of zero
+ when generating the pre-filtered environment map.
+ True to omit a roughness of zero, implying that the user
+ will supply roughness zero from the environment texture.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool GeneratePreFilteredSpecularCubeMap(
+ PVRTuint32 sampleCount,
+ PVRTuint32 mapSize,
+ PVRTuint32 numMipLevelsToDiscard,
+ bool zeroRoughnessIsExternal);
+
+ /*!***********************************************************************
+ @brief Computes the maximum difference between two textures; this and
+ 'texture'.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both textures. Both textures must have the
+ same dimensions. The function will only compare common channels
+ i.e. if 'this' has RGB while 'texture' has RGBA channels, then
+ only the RGB channels will be compared.
+ @param[in] texture The PVRTexture to compare with this.
+ @param[out] metrics Structure containing the resulting values.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool MaxDifference(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel = 0U,
+ PVRTuint32 arrayMember = 0U,
+ PVRTuint32 face = 0U,
+ PVRTuint32 zSlice = 0U) const;
+
+ /*!***********************************************************************
+ @brief Computes the mean error between two textures; this and 'texture'.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both textures. Both textures must have the
+ same dimensions. The function will only compare common channels
+ i.e. if 'this' has RGB while 'texture' has RGBA channels, then
+ only the RGB channels will be compared.
+ @param[in] texture The PVRTexture to compare with this.
+ @param[out] metrics Structure containing the resulting values.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool MeanError(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel = 0U,
+ PVRTuint32 arrayMember = 0U,
+ PVRTuint32 face = 0U,
+ PVRTuint32 zSlice = 0U) const;
+
+ /*!***********************************************************************
+ @brief Computes the mean squared error (MSE) between two textures;
+ this and 'texture'.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both textures. Both textures must have the
+ same dimensions. The function will only compare common channels
+ i.e. if 'this' has RGB while 'texture' has RGBA channels, then
+ only the RGB channels will be compared.
+ @param[in] texture The PVRTexture to compare with this.
+ @param[out] metrics Structure containing the resulting values.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool MeanSquaredError(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel = 0U,
+ PVRTuint32 arrayMember = 0U,
+ PVRTuint32 face = 0U,
+ PVRTuint32 zSlice = 0U) const;
+
+ /*!***********************************************************************
+ @brief Computes the root mean squared error (RMSE) between two textures;
+ this and 'texture'.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both textures. Both textures must have the
+ same dimensions. The function will only compare common channels
+ i.e. if 'this' has RGB while 'texture' has RGBA channels, then
+ only the RGB channels will be compared.
+ @param[in] texture The PVRTexture to compare with this.
+ @param[out] metrics Structure containing the resulting values.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool RootMeanSquaredError(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel = 0U,
+ PVRTuint32 arrayMember = 0U,
+ PVRTuint32 face = 0U,
+ PVRTuint32 zSlice = 0U) const;
+
+ /*!***********************************************************************
+ @brief Computes the standard deviation between two textures; this and
+ 'texture'.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both textures. Both textures must have the
+ same dimensions. The function will only compare common channels
+ i.e. if 'this' has RGB while 'texture' has RGBA channels, then
+ only the RGB channels will be compared.
+ @param[in] texture The PVRTexture to compare with this.
+ @param[out] metrics Structure containing the resulting values.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool StandardDeviation(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel = 0U,
+ PVRTuint32 arrayMember = 0U,
+ PVRTuint32 face = 0U,
+ PVRTuint32 zSlice = 0U) const;
+
+ /*!***********************************************************************
+ @brief Computes the PSNR between two textures; this and 'texture'.
+ The MIPLevel, arrayMember, face and zSlice values determine which
+ surfaces are compared. NB: MIPLevel, arrayMember, face and zSlice
+ should be valid in both textures. Both textures must have the
+ same dimensions. The function will only compare common channels
+ i.e. if 'this' has RGB while 'texture' has RGBA channels, then
+ only the RGB channels will be compared.
+ @param[in] texture The PVRTexture to compare with this.
+ @param[out] metrics Structure containing the resulting values.
+ @param[in] MIPLevel The Mip to compare.
+ @param[in] arrayMember The array to compare.
+ @param[in] face The face to compare.
+ @param[in] zSlice The Z slice to compare.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool PeakSignalToNoiseRatio(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel = 0U,
+ PVRTuint32 arrayMember = 0U,
+ PVRTuint32 face = 0U,
+ PVRTuint32 zSlice = 0U) const;
+
+ /*!***********************************************************************
+ @brief Computes the the [mode] delta per channel between this
+ and 'texture'. Both textures must have the same dimensions and
+ may not be compressed. The function will only compare common
+ channels i.e. if 'LHS' has RGB while 'RHS' has RGBA channels,
+ then only the RGB channels will be compared.
+ @param[in] texture The PVRTexture to compare with this.
+ @param[out] textureResult A PVRTexture that will contain the result on success.
+ @param[in] multiplier The factor to multiply the deltas to highlight differences,
+ generally a value between 1 and 10.
+ @param[in] mode The clamping mode to use, currently supports absolute and signed.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool ColourDiff(
+ const PVRTexture& texture,
+ PVRTexture& textureResult,
+ float multiplier = 1.0f,
+ PVRTexLibColourDiffMode mode = PVRTexLibColourDiffMode::PVRTLCDM_Abs) const;
+
+ /*!***********************************************************************
+ @brief Computes the total absolute pixel difference between this
+ and 'texture', modulating the output based on the tolerance
+ value supplied. Deltas of zero will appear black while pixels
+ with deltas greater than or equal to the threshold are set to
+ red and finally deltas less than the tolerance are set to blue.
+ Both textures must have the same dimensions and may not be
+ compressed. The function will only compare common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be compared.
+ @param[in] texture The PVRTexture to compare with this.
+ @param[out] textureResult A PVRTexture that will contain the result on success.
+ @param[in] tolerance The cut-off value to compare the pixel delta to.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool ToleranceDiff(
+ const PVRTexture& texture,
+ PVRTexture& textureResult,
+ float tolerance = 0.1f) const;
+
+ /*!***********************************************************************
+ @brief Blend each channel of this texture with 'texture' using the
+ blend factor as a weighting of the first texture against the second.
+ Both textures must have the same dimensions and may not be
+ compressed. The function will only blend common channels i.e.
+ if 'LHS' has RGB while 'RHS' has RGBA channels, then only the RGB
+ channels will be blended.
+ @param[in] texture The PVRTexture to compare with this.
+ @param[out] textureResult A PVRTexture that will contain the result on success.
+ @param[in] blendFactor The blend weight to use in the blend equation:
+ (LHS_delta * BF) + (RHS_delta * (1 - BF)). The value is clamped
+ between 0 and 1.
+ @return True if the method succeeds.
+ *************************************************************************/
+ inline bool BlendDiff(
+ const PVRTexture& texture,
+ PVRTexture& textureResult,
+ float blendFactor = 0.5f) const;
+
+ protected:
+ inline void Destroy();
+ inline PVRTexture& operator=(PVRTexLib_PVRTexture rhs) noexcept;
+ PVRTexLib_PVRTexture m_hTexture;
+ };
+
+ /*!***********************************************************************
+ Begin implementation for PVRTextureHeader
+ *************************************************************************/
+ PVRTextureHeader::PVRTextureHeader()
+ : m_hTextureHeader()
+ {
+ PVRHeader_CreateParams params;
+ PVRTexLib_SetDefaultTextureHeaderParams(¶ms);
+ m_hTextureHeader = PVRTexLib_CreateTextureHeader(¶ms);
+ }
+
+ PVRTextureHeader::PVRTextureHeader(const PVRHeader_CreateParams* params)
+ : m_hTextureHeader(PVRTexLib_CreateTextureHeader(params)) {}
+
+ PVRTextureHeader::PVRTextureHeader(
+ PVRTuint64 pixelFormat,
+ PVRTuint32 width,
+ PVRTuint32 height,
+ PVRTuint32 depth,
+ PVRTuint32 numMipMaps,
+ PVRTuint32 numArrayMembers,
+ PVRTuint32 numFaces,
+ PVRTexLibColourSpace colourSpace,
+ PVRTexLibVariableType channelType,
+ bool preMultiplied)
+ : m_hTextureHeader()
+ {
+ PVRHeader_CreateParams params;
+ params.pixelFormat = pixelFormat;
+ params.width = width;
+ params.height = height;
+ params.depth = depth;
+ params.numMipMaps = numMipMaps;
+ params.numArrayMembers = numArrayMembers;
+ params.numFaces = numFaces;
+ params.colourSpace = colourSpace;
+ params.channelType = channelType;
+ params.preMultiplied = preMultiplied;
+ m_hTextureHeader = PVRTexLib_CreateTextureHeader(¶ms);
+ }
+
+ PVRTextureHeader::PVRTextureHeader(bool)
+ : m_hTextureHeader() {}
+
+ PVRTextureHeader::PVRTextureHeader(const PVRTextureHeader& rhs)
+ : m_hTextureHeader(PVRTexLib_CopyTextureHeader(rhs.m_hTextureHeader)) {}
+
+ PVRTextureHeader::PVRTextureHeader(PVRTextureHeader&& rhs) noexcept
+ : m_hTextureHeader(rhs.m_hTextureHeader)
+ {
+ rhs.m_hTextureHeader = nullptr;
+ }
+
+ PVRTextureHeader& PVRTextureHeader::operator=(const PVRTextureHeader& rhs)
+ {
+ if (&rhs == this)
+ return *this;
+
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_DestroyTextureHeader(m_hTextureHeader);
+ m_hTextureHeader = nullptr;
+ }
+
+ m_hTextureHeader = PVRTexLib_CopyTextureHeader(rhs.m_hTextureHeader);
+ return *this;
+ }
+
+ PVRTextureHeader& PVRTextureHeader::operator=(PVRTextureHeader&& rhs) noexcept
+ {
+ if (&rhs == this)
+ return *this;
+
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_DestroyTextureHeader(m_hTextureHeader);
+ m_hTextureHeader = nullptr;
+ }
+
+ m_hTextureHeader = rhs.m_hTextureHeader;
+ rhs.m_hTextureHeader = nullptr;
+ return *this;
+ }
+
+ PVRTextureHeader::~PVRTextureHeader()
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_DestroyTextureHeader(m_hTextureHeader);
+ m_hTextureHeader = nullptr;
+ }
+ }
+
+ PVRTexLib_CPVRTextureHeader PVRTextureHeader::GetHeader(const PVRTextureHeader& header)
+ {
+ return header.m_hTextureHeader;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureBitsPerPixel() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureBitsPerPixel(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureBitsPerPixel(PVRTuint64 u64PixelFormat)
+ {
+ return PVRTexLib_GetFormatBitsPerPixel(u64PixelFormat);
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureChannelCount() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureChannelCount(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ PVRTexLibVariableType PVRTextureHeader::GetTextureChannelType() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureChannelType(m_hTextureHeader);
+ }
+
+ return PVRTexLibVariableType::PVRTLVT_Invalid;
+ }
+
+ PVRTexLibColourSpace PVRTextureHeader::GetColourSpace() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureColourSpace(m_hTextureHeader);
+ }
+
+ return PVRTexLibColourSpace::PVRTLCS_NumSpaces;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureWidth(PVRTuint32 mipLevel) const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureWidth(m_hTextureHeader, mipLevel);
+ }
+
+ return 0U;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureHeight(PVRTuint32 mipLevel) const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureHeight(m_hTextureHeader, mipLevel);
+ }
+
+ return 0U;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureDepth(PVRTuint32 mipLevel) const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureDepth(m_hTextureHeader, mipLevel);
+ }
+
+ return 0U;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureSize(PVRTint32 mipLevel, bool allSurfaces, bool allFaces) const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureSize(m_hTextureHeader, mipLevel, allSurfaces, allFaces);
+ }
+
+ return 0U;
+ }
+
+ PVRTuint64 PVRTextureHeader::GetTextureDataSize(PVRTint32 mipLevel, bool allSurfaces, bool allFaces) const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureDataSize(m_hTextureHeader, mipLevel, allSurfaces, allFaces);
+ }
+
+ return 0ULL;
+ }
+
+ void PVRTextureHeader::GetTextureOrientation(PVRTexLib_Orientation& result) const
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_GetTextureOrientation(m_hTextureHeader, &result);
+ }
+ else
+ {
+ result.x = (PVRTexLibOrientation)0U;
+ result.y = (PVRTexLibOrientation)0U;
+ result.z = (PVRTexLibOrientation)0U;
+ }
+ }
+
+ void PVRTextureHeader::GetTextureOpenGLFormat(PVRTexLib_OpenGLFormat& result) const
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_GetTextureOpenGLFormat(m_hTextureHeader, &result);
+ }
+ else
+ {
+ result.internalFormat = 0U;
+ result.format = 0U;
+ result.type = 0U;
+ }
+ }
+
+ void PVRTextureHeader::GetTextureOpenGLESFormat(PVRTexLib_OpenGLESFormat& result) const
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_GetTextureOpenGLESFormat(m_hTextureHeader, &result);
+ }
+ else
+ {
+ result.internalFormat = 0U;
+ result.format = 0U;
+ result.type = 0U;
+ }
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureVulkanFormat() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureVulkanFormat(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureD3DFormat() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureD3DFormat(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureDXGIFormat() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureDXGIFormat(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ void PVRTextureHeader::GetTextureFormatMinDims(PVRTuint32& minX, PVRTuint32& minY, PVRTuint32& minZ) const
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_GetTextureFormatMinDims(m_hTextureHeader, &minX, &minY, &minZ);
+ }
+ else
+ {
+ minX = 1U;
+ minY = 1U;
+ minZ = 1U;
+ }
+ }
+
+ void PVRTextureHeader::GetPixelFormatMinDims(PVRTuint64 ui64Format, PVRTuint32& minX, PVRTuint32& minY, PVRTuint32& minZ)
+ {
+ PVRTexLib_GetPixelFormatMinDims(ui64Format, &minX, &minY, &minZ);
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureMetaDataSize() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureMetaDataSize(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ bool PVRTextureHeader::GetTextureIsPreMultiplied() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureIsPreMultiplied(m_hTextureHeader);
+ }
+
+ return false;
+ }
+
+ bool PVRTextureHeader::GetTextureIsFileCompressed() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureIsFileCompressed(m_hTextureHeader);
+ }
+
+ return false;
+ }
+
+ bool PVRTextureHeader::GetTextureIsBumpMap() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureIsBumpMap(m_hTextureHeader);
+ }
+
+ return false;
+ }
+
+ float PVRTextureHeader::GetTextureBumpMapScale() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureBumpMapScale(m_hTextureHeader);
+ }
+
+ return 0.0f;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetNumTextureAtlasMembers() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetNumTextureAtlasMembers(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ const float* PVRTextureHeader::GetTextureAtlasData(PVRTuint32& count) const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureAtlasData(m_hTextureHeader, &count);
+ }
+
+ count = 0U;
+ return nullptr;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureNumMipMapLevels() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureNumMipMapLevels(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureNumFaces() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureNumFaces(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ PVRTuint32 PVRTextureHeader::GetTextureNumArrayMembers() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTextureNumArrayMembers(m_hTextureHeader);
+ }
+
+ return 0U;
+ }
+
+ std::string PVRTextureHeader::GetTextureCubeMapOrder() const
+ {
+ std::string cubeOrder(7, '\0');
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_GetTextureCubeMapOrder(m_hTextureHeader, &cubeOrder[0]);
+ }
+
+ return cubeOrder;
+ }
+
+ std::string PVRTextureHeader::GetTextureBumpMapOrder() const
+ {
+ std::string bumpOrder(5, '\0');
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_GetTextureBumpMapOrder(m_hTextureHeader, &bumpOrder[0]);
+ }
+
+ return bumpOrder;
+ }
+
+ PVRTuint64 PVRTextureHeader::GetTexturePixelFormat() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_GetTexturePixelFormat(m_hTextureHeader);
+ }
+
+ return static_cast(PVRTexLibPixelFormat::PVRTLPF_NumCompressedPFs);
+ }
+
+ bool PVRTextureHeader::TextureHasPackedChannelData() const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_TextureHasPackedChannelData(m_hTextureHeader);
+ }
+
+ return false;
+ }
+
+ bool PVRTextureHeader::IsPixelFormatCompressed() const
+ {
+ return !(GetTexturePixelFormat() & PVRTEX_PFHIGHMASK);
+ }
+
+ void PVRTextureHeader::SetTextureChannelType(PVRTexLibVariableType type)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureChannelType(m_hTextureHeader, type);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureColourSpace(PVRTexLibColourSpace colourSpace)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureColourSpace(m_hTextureHeader, colourSpace);
+ }
+ }
+
+ bool PVRTextureHeader::SetTextureD3DFormat(PVRTuint32 d3dFormat)
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_SetTextureD3DFormat(m_hTextureHeader, d3dFormat);
+ }
+
+ return false;
+ }
+
+ bool PVRTextureHeader::SetTextureDXGIFormat(PVRTuint32 dxgiFormat)
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_SetTextureDXGIFormat(m_hTextureHeader, dxgiFormat);
+ }
+
+ return false;
+ }
+
+ bool PVRTextureHeader::SetTextureOGLFormat(const PVRTexLib_OpenGLFormat& oglFormat)
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_SetTextureOGLFormat(m_hTextureHeader, &oglFormat);
+ }
+
+ return false;
+ }
+
+ bool PVRTextureHeader::SetTextureOGLESFormat(const PVRTexLib_OpenGLESFormat& oglesFormat)
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_SetTextureOGLESFormat(m_hTextureHeader, &oglesFormat);
+ }
+
+ return false;
+ }
+
+ bool PVRTextureHeader::SetTextureVulkanFormat(PVRTuint32 vulkanFormat)
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_SetTextureVulkanFormat(m_hTextureHeader, vulkanFormat);
+ }
+
+ return false;
+ }
+
+ void PVRTextureHeader::SetTexturePixelFormat(PVRTuint64 format)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTexturePixelFormat(m_hTextureHeader, format);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureWidth(PVRTuint32 width)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureWidth(m_hTextureHeader, width);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureHeight(PVRTuint32 height)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureHeight(m_hTextureHeader, height);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureDepth(PVRTuint32 depth)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureDepth(m_hTextureHeader, depth);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureNumArrayMembers(PVRTuint32 numMembers)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureNumArrayMembers(m_hTextureHeader, numMembers);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureNumMIPLevels(PVRTuint32 numMIPLevels)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureNumMIPLevels(m_hTextureHeader, numMIPLevels);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureNumFaces(PVRTuint32 numFaces)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureNumFaces(m_hTextureHeader, numFaces);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureOrientation(const PVRTexLib_Orientation& orientation)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureOrientation(m_hTextureHeader, &orientation);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureIsFileCompressed(bool isFileCompressed)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureIsFileCompressed(m_hTextureHeader, isFileCompressed);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureIsPreMultiplied(bool isPreMultiplied)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureIsPreMultiplied(m_hTextureHeader, isPreMultiplied);
+ }
+ }
+
+ void PVRTextureHeader::GetTextureBorder(PVRTuint32& borderWidth, PVRTuint32& borderHeight, PVRTuint32& borderDepth) const
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_GetTextureBorder(m_hTextureHeader, &borderWidth, &borderHeight, &borderDepth);
+ }
+ else
+ {
+ borderWidth = 0U;
+ borderHeight = 0U;
+ borderDepth = 0U;
+ }
+ }
+
+ bool PVRTextureHeader::GetMetaDataBlock(PVRTuint32 key, MetaDataBlock& dataBlock, PVRTuint32 devFOURCC) const
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_MetaDataBlock tmp;
+ if (PVRTexLib_GetMetaDataBlock(m_hTextureHeader, devFOURCC, key,
+ &tmp, [](PVRTuint32 bytes) { return (void*)new PVRTuint8[bytes]; }))
+ {
+ dataBlock.DevFOURCC = tmp.DevFOURCC;
+ dataBlock.u32Key = tmp.u32Key;
+ dataBlock.u32DataSize = tmp.u32DataSize;
+ dataBlock.Data.reset(tmp.Data);
+ return true;
+ }
+ }
+
+ dataBlock = MetaDataBlock();
+ return false;
+ }
+
+ bool PVRTextureHeader::TextureHasMetaData(PVRTuint32 key, PVRTuint32 devFOURCC) const
+ {
+ if (m_hTextureHeader)
+ {
+ return PVRTexLib_TextureHasMetaData(m_hTextureHeader, devFOURCC, key);
+ }
+
+ return false;
+ }
+
+ void PVRTextureHeader::SetTextureBumpMap(float bumpScale, const std::string& bumpOrder)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureBumpMap(m_hTextureHeader, bumpScale, bumpOrder.c_str());
+ }
+ }
+
+ void PVRTextureHeader::SetTextureAtlas(const float* atlasData, PVRTuint32 dataSize)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureAtlas(m_hTextureHeader, atlasData, dataSize);
+ }
+ }
+
+ void PVRTextureHeader::SetTextureCubeMapOrder(const std::string& cubeMapOrder)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureCubeMapOrder(m_hTextureHeader, cubeMapOrder.c_str());
+ }
+ }
+
+ void PVRTextureHeader::SetTextureBorder(PVRTuint32 borderWidth, PVRTuint32 borderHeight, PVRTuint32 borderDepth)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_SetTextureBorder(m_hTextureHeader, borderWidth, borderHeight, borderDepth);
+ }
+ }
+
+ void PVRTextureHeader::AddMetaData(const MetaDataBlock& dataBlock)
+ {
+ if (m_hTextureHeader && dataBlock.u32DataSize)
+ {
+ PVRTexLib_MetaDataBlock tmp;
+ tmp.DevFOURCC = dataBlock.DevFOURCC;
+ tmp.u32Key = dataBlock.u32Key;
+ tmp.u32DataSize = dataBlock.u32DataSize;
+ tmp.Data = dataBlock.Data.get();
+ PVRTexLib_AddMetaData(m_hTextureHeader, &tmp);
+ }
+ }
+
+ void PVRTextureHeader::AddMetaData(const PVRTexLib_MetaDataBlock& dataBlock)
+ {
+ if (m_hTextureHeader && dataBlock.u32DataSize)
+ {
+ PVRTexLib_AddMetaData(m_hTextureHeader, &dataBlock);
+ }
+ }
+
+ void PVRTextureHeader::RemoveMetaData(PVRTuint32 key, PVRTuint32 devFOURCC)
+ {
+ if (m_hTextureHeader)
+ {
+ PVRTexLib_RemoveMetaData(m_hTextureHeader, devFOURCC, key);
+ }
+ }
+
+ /*!***********************************************************************
+ Begin implementation for PVRTexture
+ *************************************************************************/
+ PVRTexture::PVRTexture()
+ : PVRTextureHeader(false)
+ , m_hTexture() {}
+
+ PVRTexture::PVRTexture(const PVRTextureHeader& header, const void *textureData)
+ : PVRTextureHeader(false)
+ , m_hTexture(PVRTexLib_CreateTexture(GetHeader(header), textureData))
+ {
+ m_hTextureHeader = PVRTexLib_GetTextureHeaderW(m_hTexture);
+ }
+
+ PVRTexture::PVRTexture(const std::string& filePath)
+ : PVRTextureHeader(false)
+ , m_hTexture(PVRTexLib_CreateTextureFromFile(filePath.c_str()))
+ {
+ if (m_hTexture)
+ {
+ m_hTextureHeader = PVRTexLib_GetTextureHeaderW(m_hTexture);
+ }
+ else
+ {
+ throw std::runtime_error("Couldn't load texture: " + filePath);
+ }
+ }
+
+ PVRTexture::PVRTexture(const char* filePath)
+ : PVRTextureHeader(false)
+ , m_hTexture(PVRTexLib_CreateTextureFromFile(filePath))
+ {
+ if (m_hTexture)
+ {
+ m_hTextureHeader = PVRTexLib_GetTextureHeaderW(m_hTexture);
+ }
+ else
+ {
+ throw std::runtime_error("Couldn't load texture: " + std::string(filePath));
+ }
+ }
+
+ PVRTexture::PVRTexture(const void* data)
+ : PVRTextureHeader(false)
+ , m_hTexture(PVRTexLib_CreateTextureFromData(data))
+ {
+ if (m_hTexture)
+ {
+ m_hTextureHeader = PVRTexLib_GetTextureHeaderW(m_hTexture);
+ }
+ else
+ {
+ throw std::runtime_error("Provided pointer to texture data is invalid");
+ }
+ }
+
+ PVRTexture::PVRTexture(const PVRTexture& rhs)
+ : PVRTextureHeader(false)
+ , m_hTexture(PVRTexLib_CopyTexture(rhs.m_hTexture))
+ {
+ m_hTextureHeader = PVRTexLib_GetTextureHeaderW(m_hTexture);
+ }
+
+ PVRTexture::PVRTexture(PVRTexture&& rhs) noexcept
+ : PVRTextureHeader(false)
+ , m_hTexture(rhs.m_hTexture)
+ {
+ m_hTextureHeader = rhs.m_hTextureHeader;
+ rhs.m_hTextureHeader = nullptr;
+ rhs.m_hTexture = nullptr;
+ }
+
+ PVRTexture& PVRTexture::operator=(const PVRTexture& rhs)
+ {
+ if (&rhs == this)
+ return *this;
+
+ Destroy();
+ m_hTexture = PVRTexLib_CopyTexture(rhs.m_hTexture);
+ m_hTextureHeader = PVRTexLib_GetTextureHeaderW(m_hTexture);
+ return *this;
+ }
+
+ PVRTexture& PVRTexture::operator=(PVRTexture&& rhs) noexcept
+ {
+ if (&rhs == this)
+ return *this;
+
+ Destroy();
+ m_hTexture = rhs.m_hTexture;
+ m_hTextureHeader = rhs.m_hTextureHeader;
+
+ rhs.m_hTextureHeader = nullptr;
+ rhs.m_hTexture = nullptr;
+ return *this;
+ }
+
+ PVRTexture& PVRTexture::operator=(PVRTexLib_PVRTexture rhs) noexcept
+ {
+ if (m_hTexture == rhs || rhs == nullptr)
+ return *this;
+
+ Destroy();
+ m_hTexture = rhs;
+ m_hTextureHeader = PVRTexLib_GetTextureHeaderW(m_hTexture);
+ return *this;
+ }
+
+ PVRTexture::~PVRTexture()
+ {
+ Destroy();
+ }
+
+ void PVRTexture::Destroy()
+ {
+ if (m_hTexture)
+ {
+ PVRTexLib_DestroyTexture(m_hTexture);
+ m_hTexture = nullptr;
+ m_hTextureHeader = nullptr;
+ }
+ }
+
+ void* PVRTexture::GetTextureDataPointer(
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 faceNumber,
+ PVRTuint32 ZSlice)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_GetTextureDataPtr(m_hTexture, MIPLevel, arrayMember, faceNumber, ZSlice);
+ }
+
+ return nullptr;
+ }
+
+ const void* PVRTexture::GetTextureDataPointer(
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 faceNumber,
+ PVRTuint32 ZSlice) const
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_GetTextureDataConstPtr(m_hTexture, MIPLevel, arrayMember, faceNumber, ZSlice);
+ }
+
+ return nullptr;
+ }
+
+ void PVRTexture::AddPaddingMetaData(PVRTuint32 padding)
+ {
+ if (m_hTexture)
+ {
+ PVRTexLib_AddPaddingMetaData(m_hTexture, padding);
+ }
+ }
+
+ bool PVRTexture::SaveToFile(const std::string& filePath) const
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_SaveTextureToFile(m_hTexture, filePath.c_str());
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::SaveTextureToMemory(
+ PVRTexLibFileContainerType fileType,
+ void* privateData,
+ PVRTuint64& outSize,
+ PVRTuint8*(pfnRealloc)(void* privateData, PVRTuint64 allocSize)) const
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_SaveTextureToMemory(m_hTexture, fileType, privateData, &outSize, pfnRealloc);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::SaveTextureToMemory(
+ PVRTexLibFileContainerType fileType,
+ std::vector& outData) const
+ {
+ if (m_hTexture)
+ {
+ PVRTuint64 outSize;
+
+ if (PVRTexLib_SaveTextureToMemory(m_hTexture, fileType,
+ static_cast(&outData), &outSize,
+ [](void* privateData, PVRTuint64 allocSize) {
+ auto buffer = static_cast*>(privateData);
+ assert(allocSize <= std::numeric_limits::max());
+ buffer->resize(static_cast(allocSize));
+ return buffer->data();
+ }))
+ {
+ outData.resize(static_cast(outSize));
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ std::unique_ptr PVRTexture::SaveTextureToMemory(
+ PVRTexLibFileContainerType fileType,
+ PVRTuint64& outSize) const
+ {
+ std::unique_ptr result(nullptr, [](PVRTuint8* data) { free(data); });
+
+ if (m_hTexture)
+ {
+ if (!PVRTexLib_SaveTextureToMemory(m_hTexture, fileType,
+ static_cast(&result), &outSize,
+ [](void* privateData, PVRTuint64 allocSize) {
+ auto buffer = static_cast*>(privateData);
+ auto currentPtr = buffer->release();
+ assert(allocSize <= std::numeric_limits::max());
+ auto newPtr = std::realloc(currentPtr, static_cast(allocSize));
+
+ if (!newPtr)
+ {
+ free(currentPtr);
+ }
+
+ buffer->reset(static_cast(newPtr));
+ return buffer->get();
+ }))
+ {
+ result.reset();
+ }
+ }
+
+ return result;
+ }
+
+ bool PVRTexture::SaveToFile(const std::string& filePath, PVRTexLibLegacyApi api) const
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_SaveTextureToLegacyPVRFile(m_hTexture, filePath.c_str(), api);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::SaveSurfaceToImageFile(
+ const std::string& filePath,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 ZSlice) const
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_SaveSurfaceToImageFile(m_hTexture, filePath.c_str(), MIPLevel, arrayMember, face, ZSlice);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::IsTextureMultiPart() const
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_IsTextureMultiPart(m_hTexture);
+ }
+
+ return false;
+ }
+
+ std::vector PVRTexture::GetTextureParts()
+ {
+ std::vector textures;
+
+ if (m_hTexture)
+ {
+ PVRTuint32 count;
+ std::vector handles;
+
+ PVRTexLib_GetTextureParts(m_hTexture, nullptr, &count);
+ handles.resize(count);
+ PVRTexLib_GetTextureParts(m_hTexture, handles.data(), &count);
+
+ for (auto handle : handles)
+ {
+ textures.emplace_back();
+ textures.back().m_hTexture = handle;
+ textures.back().m_hTextureHeader = PVRTexLib_GetTextureHeaderW(handle);
+ }
+ }
+
+ return textures;
+ }
+
+ bool PVRTexture::Resize(
+ PVRTuint32 newWidth,
+ PVRTuint32 newHeight,
+ PVRTuint32 newDepth,
+ PVRTexLibResizeMode resizeMode)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_ResizeTexture(m_hTexture, newWidth, newHeight, newDepth, resizeMode);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::ResizeCanvas(
+ PVRTuint32 newWidth,
+ PVRTuint32 newHeight,
+ PVRTuint32 newDepth,
+ PVRTint32 xOffset,
+ PVRTint32 yOffset,
+ PVRTint32 zOffset)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_ResizeTextureCanvas(m_hTexture, newWidth, newHeight, newDepth, xOffset, yOffset, zOffset);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::Rotate(PVRTexLibAxis rotationAxis, bool forward)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_RotateTexture(m_hTexture, rotationAxis, forward);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::Flip(PVRTexLibAxis flipDirection)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_FlipTexture(m_hTexture, flipDirection);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::Border(PVRTuint32 borderX, PVRTuint32 borderY, PVRTuint32 borderZ)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_BorderTexture(m_hTexture, borderX, borderY, borderZ);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::PreMultiplyAlpha()
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_PreMultiplyAlpha(m_hTexture);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::Bleed()
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_Bleed(m_hTexture);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::SetChannels(
+ PVRTuint32 numChannelSets,
+ const PVRTexLibChannelName* channels,
+ const PVRTuint32* pValues)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_SetTextureChannels(m_hTexture, numChannelSets, channels, pValues);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::SetChannels(
+ PVRTuint32 numChannelSets,
+ const PVRTexLibChannelName* channels,
+ const float* pValues)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_SetTextureChannelsFloat(m_hTexture, numChannelSets, channels, pValues);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::CopyChannels(
+ const PVRTexture& sourceTexture,
+ PVRTuint32 numChannelCopies,
+ const PVRTexLibChannelName* destinationChannels,
+ const PVRTexLibChannelName* sourceChannels)
+ {
+ if (m_hTexture && sourceTexture.m_hTexture)
+ {
+ return PVRTexLib_CopyTextureChannels(m_hTexture, sourceTexture.m_hTexture, numChannelCopies, destinationChannels, sourceChannels);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::GenerateNormalMap(float fScale, const std::string& channelOrder)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_GenerateNormalMap(m_hTexture, fScale, channelOrder.c_str());
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::GenerateMIPMaps(PVRTexLibResizeMode filterMode, PVRTint32 mipMapsToDo)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_GenerateMIPMaps(m_hTexture, filterMode, mipMapsToDo);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::ColourMIPMaps()
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_ColourMIPMaps(m_hTexture);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::Transcode(
+ PVRTuint64 pixelFormat,
+ PVRTexLibVariableType channelType,
+ PVRTexLibColourSpace colourspace,
+ PVRTexLibCompressorQuality quality,
+ bool doDither,
+ float maxRange,
+ PVRTuint32 maxThreads)
+ {
+ if (m_hTexture)
+ {
+
+ PVRTexLib_TranscoderOptions options;
+ options.sizeofStruct = sizeof(PVRTexLib_TranscoderOptions);
+ options.pixelFormat = pixelFormat;
+ options.channelType[0] = options.channelType[1] = options.channelType[2] = options.channelType[3] = channelType;
+ options.colourspace = colourspace;
+ options.quality = quality;
+ options.doDither = doDither;
+ options.maxRange = maxRange;
+ options.maxThreads = maxThreads;
+ return PVRTexLib_TranscodeTexture(m_hTexture, options);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::Transcode(const PVRTexLib_TranscoderOptions& options)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_TranscodeTexture(m_hTexture, options);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::Decompress(PVRTuint32 maxThreads)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_Decompress(m_hTexture, maxThreads);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::EquiRectToCubeMap(PVRTexLibResizeMode filter)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_EquiRectToCubeMap(m_hTexture, filter);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::GenerateDiffuseIrradianceCubeMap(PVRTuint32 sampleCount, PVRTuint32 mapSize)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_GenerateDiffuseIrradianceCubeMap(m_hTexture, sampleCount, mapSize);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::GeneratePreFilteredSpecularCubeMap(
+ PVRTuint32 sampleCount,
+ PVRTuint32 mapSize,
+ PVRTuint32 numMipLevelsToDiscard,
+ bool zeroRoughnessIsExternal)
+ {
+ if (m_hTexture)
+ {
+ return PVRTexLib_GeneratePreFilteredSpecularCubeMap(m_hTexture, sampleCount, mapSize, numMipLevelsToDiscard, zeroRoughnessIsExternal);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::MaxDifference(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice) const
+ {
+ if (m_hTexture && texture.m_hTexture)
+ {
+ return PVRTexLib_MaxDifference(m_hTexture, texture.m_hTexture, MIPLevel, arrayMember, face, zSlice, &metrics);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::MeanError(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice) const
+ {
+ if (m_hTexture && texture.m_hTexture)
+ {
+ return PVRTexLib_MeanError(m_hTexture, texture.m_hTexture, MIPLevel, arrayMember, face, zSlice, &metrics);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::MeanSquaredError(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice) const
+ {
+ if (m_hTexture && texture.m_hTexture)
+ {
+ return PVRTexLib_MeanSquaredError(m_hTexture, texture.m_hTexture, MIPLevel, arrayMember, face, zSlice, &metrics);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::RootMeanSquaredError(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice) const
+ {
+ if (m_hTexture && texture.m_hTexture)
+ {
+ return PVRTexLib_RootMeanSquaredError(m_hTexture, texture.m_hTexture, MIPLevel, arrayMember, face, zSlice, &metrics);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::StandardDeviation(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice) const
+ {
+ if (m_hTexture && texture.m_hTexture)
+ {
+ return PVRTexLib_StandardDeviation(m_hTexture, texture.m_hTexture, MIPLevel, arrayMember, face, zSlice, &metrics);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::PeakSignalToNoiseRatio(
+ const PVRTexture& texture,
+ PVRTexLib_ErrorMetrics& metrics,
+ PVRTuint32 MIPLevel,
+ PVRTuint32 arrayMember,
+ PVRTuint32 face,
+ PVRTuint32 zSlice) const
+ {
+ if (m_hTexture && texture.m_hTexture)
+ {
+ return PVRTexLib_PeakSignalToNoiseRatio(m_hTexture, texture.m_hTexture, MIPLevel, arrayMember, face, zSlice, &metrics);
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::ColourDiff(
+ const PVRTexture& texture,
+ PVRTexture& textureResult,
+ float multiplier,
+ PVRTexLibColourDiffMode mode) const
+ {
+ if (m_hTexture &&
+ texture.m_hTexture)
+ {
+ PVRTexLib_PVRTexture result = nullptr;
+ if (PVRTexLib_ColourDiff(m_hTexture, texture.m_hTexture, &result, multiplier, mode))
+ {
+ textureResult = result;
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::ToleranceDiff(
+ const PVRTexture& texture,
+ PVRTexture& textureResult,
+ float tolerance) const
+ {
+ if (m_hTexture &&
+ texture.m_hTexture)
+ {
+ PVRTexLib_PVRTexture result = nullptr;
+ if (PVRTexLib_ToleranceDiff(m_hTexture, texture.m_hTexture, &result, tolerance))
+ {
+ textureResult = result;
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ bool PVRTexture::BlendDiff(
+ const PVRTexture& texture,
+ PVRTexture& textureResult,
+ float blendFactor) const
+ {
+ if (m_hTexture &&
+ texture.m_hTexture)
+ {
+ PVRTexLib_PVRTexture result = nullptr;
+ if (PVRTexLib_BlendDiff(m_hTexture, texture.m_hTexture, &result, blendFactor))
+ {
+ textureResult = result;
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
+/*****************************************************************************
+End of file (PVRTexLib.hpp)
+*****************************************************************************/
diff --git a/deps/PVRTT/Include/PVRTexLibDefines.h b/deps/PVRTT/Include/PVRTexLibDefines.h
new file mode 100755
index 0000000000..eefc0107d2
--- /dev/null
+++ b/deps/PVRTT/Include/PVRTexLibDefines.h
@@ -0,0 +1,484 @@
+/*!****************************************************************************
+
+ @file PVRTexLibDefines.h
+ @copyright Copyright (c) Imagination Technologies Limited.
+ @brief Public PVRTexLib defines header.
+
+******************************************************************************/
+#ifndef _PVRTEXLIBDEFINES_H_
+#define _PVRTEXLIBDEFINES_H_
+
+/****************************************************************************
+** Integer types
+****************************************************************************/
+typedef char PVRTchar8;
+typedef signed char PVRTint8;
+typedef signed short PVRTint16;
+typedef signed int PVRTint32;
+typedef unsigned char PVRTuint8;
+typedef unsigned short PVRTuint16;
+typedef unsigned int PVRTuint32;
+typedef float PVRTfloat32;
+typedef signed long long PVRTint64;
+typedef unsigned long long PVRTuint64;
+
+#define PVRTEXLIBSIZEASSERT(T, size) typedef int (sizeof_##T)[sizeof(T) == (size)]
+PVRTEXLIBSIZEASSERT(PVRTchar8, 1);
+PVRTEXLIBSIZEASSERT(PVRTint8, 1);
+PVRTEXLIBSIZEASSERT(PVRTuint8, 1);
+PVRTEXLIBSIZEASSERT(PVRTint16, 2);
+PVRTEXLIBSIZEASSERT(PVRTuint16, 2);
+PVRTEXLIBSIZEASSERT(PVRTint32, 4);
+PVRTEXLIBSIZEASSERT(PVRTuint32, 4);
+PVRTEXLIBSIZEASSERT(PVRTint64, 8);
+PVRTEXLIBSIZEASSERT(PVRTuint64, 8);
+PVRTEXLIBSIZEASSERT(PVRTfloat32, 4);
+#undef PVRTEXLIBSIZEASSERT
+
+/*****************************************************************************
+* Texture related constants and enumerations.
+*****************************************************************************/
+// V3 Header Identifiers.
+#define PVRTEX3_IDENT 0x03525650U // 'P''V''R'3
+#define PVRTEX3_IDENT_REV 0x50565203U
+// If endianness is backwards then PVR3 will read as 3RVP, hence why it is written as an int.
+
+//Current version texture identifiers
+#define PVRTEX_CURR_IDENT PVRTEX3_IDENT
+#define PVRTEX_CURR_IDENT_REV PVRTEX3_IDENT_REV
+
+// PVR Header file flags. Condition if true. If false, opposite is true unless specified.
+#define PVRTEX3_FILE_COMPRESSED (1U << 0U) // Texture has been file compressed using PVRTexLib (currently unused)
+#define PVRTEX3_PREMULTIPLIED (1U << 1U) // Texture has been premultiplied by alpha value.
+
+// Mip Map level specifier constants. Other levels are specified by 1,2...n
+#define PVRTEX_TOPMIPLEVEL 0
+#define PVRTEX_ALLMIPLEVELS -1 //This is a special number used simply to return a total of all MIP levels when dealing with data sizes.
+
+// A 64 bit pixel format ID & this will give you the high bits of a pixel format to check for a compressed format.
+#define PVRTEX_PFHIGHMASK 0xffffffff00000000ull
+
+/*
+ Preprocessor definitions to generate a pixelID for use when consts are needed. For example - switch statements.
+ These should be evaluated by the compiler rather than at run time - assuming that arguments are all constant.
+*/
+
+//Generate a 4 channel PixelID.
+#define PVRTGENPIXELID4(C1Name, C2Name, C3Name, C4Name, C1Bits, C2Bits, C3Bits, C4Bits) ( ( (PVRTuint64)C1Name) + ( (PVRTuint64)C2Name<<8) + ( (PVRTuint64)C3Name<<16) + ( (PVRTuint64)C4Name<<24) + ( (PVRTuint64)C1Bits<<32) + ( (PVRTuint64)C2Bits<<40) + ( (PVRTuint64)C3Bits<<48) + ( (PVRTuint64)C4Bits<<56) )
+
+//Generate a 1 channel PixelID.
+#define PVRTGENPIXELID3(C1Name, C2Name, C3Name, C1Bits, C2Bits, C3Bits)( PVRTGENPIXELID4(C1Name, C2Name, C3Name, 0, C1Bits, C2Bits, C3Bits, 0) )
+
+//Generate a 2 channel PixelID.
+#define PVRTGENPIXELID2(C1Name, C2Name, C1Bits, C2Bits) ( PVRTGENPIXELID4(C1Name, C2Name, 0, 0, C1Bits, C2Bits, 0, 0) )
+
+//Generate a 3 channel PixelID.
+#define PVRTGENPIXELID1(C1Name, C1Bits) ( PVRTGENPIXELID4(C1Name, 0, 0, 0, C1Bits, 0, 0, 0))
+
+/*!***********************************************************************
+ @enum PVRTexLibMetaData
+ @brief Values for each meta data type that PVRTexLib knows about.
+ Texture arrays hinge on each surface being identical in all
+ but content, including meta data. If the meta data varies even
+ slightly then a new texture should be used.
+ It is possible to write your own extension to get around this however.
+*************************************************************************/
+enum PVRTexLibMetaData
+{
+ PVRTLMD_TextureAtlasCoords = 0,
+ PVRTLMD_BumpData,
+ PVRTLMD_CubeMapOrder,
+ PVRTLMD_TextureOrientation,
+ PVRTLMD_BorderData,
+ PVRTLMD_Padding,
+ PVRTLMD_PerChannelType,
+ PVRTLMD_SupercompressionGlobalData,
+ PVRTLMD_MaxRange,
+ PVRTLMD_NumMetaDataTypes
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibAxis
+ @brief Axis
+*************************************************************************/
+enum PVRTexLibAxis
+{
+ PVRTLA_X = 0,
+ PVRTLA_Y = 1,
+ PVRTLA_Z = 2
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibOrientation
+ @brief Image orientations per axis
+*************************************************************************/
+enum PVRTexLibOrientation
+{
+ PVRTLO_Left = 1 << PVRTexLibAxis::PVRTLA_X,
+ PVRTLO_Right = 0,
+ PVRTLO_Up = 1 << PVRTexLibAxis::PVRTLA_Y,
+ PVRTLO_Down = 0,
+ PVRTLO_Out = 1 << PVRTexLibAxis::PVRTLA_Z,
+ PVRTLO_In = 0
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibColourSpace
+ @brief Describes the colour space of the texture
+*************************************************************************/
+enum PVRTexLibColourSpace
+{
+ PVRTLCS_Linear,
+ PVRTLCS_sRGB,
+ PVRTLCS_BT601,
+ PVRTLCS_BT709,
+ PVRTLCS_BT2020,
+ PVRTLCS_NumSpaces
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibChannelName
+ @brief Channel names for non-compressed formats
+*************************************************************************/
+enum PVRTexLibChannelName
+{
+ PVRTLCN_NoChannel,
+ PVRTLCN_Red,
+ PVRTLCN_Green,
+ PVRTLCN_Blue,
+ PVRTLCN_Alpha,
+ PVRTLCN_Luminance,
+ PVRTLCN_Intensity,
+ PVRTLCN_Depth,
+ PVRTLCN_Stencil,
+ PVRTLCN_Unspecified,
+ PVRTLCN_NumChannels
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibPixelFormat
+ @brief Compressed pixel formats that PVRTexLib understands
+*************************************************************************/
+enum PVRTexLibPixelFormat
+{
+ PVRTLPF_PVRTCI_2bpp_RGB,
+ PVRTLPF_PVRTCI_2bpp_RGBA,
+ PVRTLPF_PVRTCI_4bpp_RGB,
+ PVRTLPF_PVRTCI_4bpp_RGBA,
+ PVRTLPF_PVRTCII_2bpp,
+ PVRTLPF_PVRTCII_4bpp,
+ PVRTLPF_ETC1,
+ PVRTLPF_DXT1,
+ PVRTLPF_DXT2,
+ PVRTLPF_DXT3,
+ PVRTLPF_DXT4,
+ PVRTLPF_DXT5,
+
+ //These formats are identical to some DXT formats.
+ PVRTLPF_BC1 = PVRTLPF_DXT1,
+ PVRTLPF_BC2 = PVRTLPF_DXT3,
+ PVRTLPF_BC3 = PVRTLPF_DXT5,
+ PVRTLPF_BC4,
+ PVRTLPF_BC5,
+
+ /* Currently unsupported: */
+ PVRTLPF_BC6,
+ PVRTLPF_BC7,
+ /* ~~~~~~~~~~~~~~~~~~ */
+
+ // Packed YUV formats
+ PVRTLPF_UYVY_422, // https://www.fourcc.org/pixel-format/yuv-uyvy/
+ PVRTLPF_YUY2_422, // https://www.fourcc.org/pixel-format/yuv-yuy2/
+
+ PVRTLPF_BW1bpp,
+ PVRTLPF_SharedExponentR9G9B9E5,
+ PVRTLPF_RGBG8888,
+ PVRTLPF_GRGB8888,
+ PVRTLPF_ETC2_RGB,
+ PVRTLPF_ETC2_RGBA,
+ PVRTLPF_ETC2_RGB_A1,
+ PVRTLPF_EAC_R11,
+ PVRTLPF_EAC_RG11,
+
+ PVRTLPF_ASTC_4x4,
+ PVRTLPF_ASTC_5x4,
+ PVRTLPF_ASTC_5x5,
+ PVRTLPF_ASTC_6x5,
+ PVRTLPF_ASTC_6x6,
+ PVRTLPF_ASTC_8x5,
+ PVRTLPF_ASTC_8x6,
+ PVRTLPF_ASTC_8x8,
+ PVRTLPF_ASTC_10x5,
+ PVRTLPF_ASTC_10x6,
+ PVRTLPF_ASTC_10x8,
+ PVRTLPF_ASTC_10x10,
+ PVRTLPF_ASTC_12x10,
+ PVRTLPF_ASTC_12x12,
+
+ PVRTLPF_ASTC_3x3x3,
+ PVRTLPF_ASTC_4x3x3,
+ PVRTLPF_ASTC_4x4x3,
+ PVRTLPF_ASTC_4x4x4,
+ PVRTLPF_ASTC_5x4x4,
+ PVRTLPF_ASTC_5x5x4,
+ PVRTLPF_ASTC_5x5x5,
+ PVRTLPF_ASTC_6x5x5,
+ PVRTLPF_ASTC_6x6x5,
+ PVRTLPF_ASTC_6x6x6,
+
+ PVRTLPF_BASISU_ETC1S,
+ PVRTLPF_BASISU_UASTC,
+
+ PVRTLPF_RGBM,
+ PVRTLPF_RGBD,
+
+ PVRTLPF_PVRTCI_HDR_6bpp,
+ PVRTLPF_PVRTCI_HDR_8bpp,
+ PVRTLPF_PVRTCII_HDR_6bpp,
+ PVRTLPF_PVRTCII_HDR_8bpp,
+
+ // The memory layout for 10 and 12 bit YUV formats that are packed into a WORD (16 bits) is denoted by MSB or LSB:
+ // MSB denotes that the sample is stored in the most significant bits
+ // LSB denotes that the sample is stored in the least significant bits
+ // All YUV formats are little endian
+
+ // Packed YUV formats
+ PVRTLPF_VYUA10MSB_444,
+ PVRTLPF_VYUA10LSB_444,
+ PVRTLPF_VYUA12MSB_444,
+ PVRTLPF_VYUA12LSB_444,
+ PVRTLPF_UYV10A2_444, // Y410
+ PVRTLPF_UYVA16_444, // Y416
+ PVRTLPF_YUYV16_422, // Y216
+ PVRTLPF_UYVY16_422,
+ PVRTLPF_YUYV10MSB_422, // Y210
+ PVRTLPF_YUYV10LSB_422,
+ PVRTLPF_UYVY10MSB_422,
+ PVRTLPF_UYVY10LSB_422,
+ PVRTLPF_YUYV12MSB_422,
+ PVRTLPF_YUYV12LSB_422,
+ PVRTLPF_UYVY12MSB_422,
+ PVRTLPF_UYVY12LSB_422,
+
+ /*
+ Reserved for future expansion
+ */
+
+ // 3 Plane (Planar) YUV formats
+ PVRTLPF_YUV_3P_444 = 270,
+ PVRTLPF_YUV10MSB_3P_444,
+ PVRTLPF_YUV10LSB_3P_444,
+ PVRTLPF_YUV12MSB_3P_444,
+ PVRTLPF_YUV12LSB_3P_444,
+ PVRTLPF_YUV16_3P_444,
+ PVRTLPF_YUV_3P_422,
+ PVRTLPF_YUV10MSB_3P_422,
+ PVRTLPF_YUV10LSB_3P_422,
+ PVRTLPF_YUV12MSB_3P_422,
+ PVRTLPF_YUV12LSB_3P_422,
+ PVRTLPF_YUV16_3P_422,
+ PVRTLPF_YUV_3P_420,
+ PVRTLPF_YUV10MSB_3P_420,
+ PVRTLPF_YUV10LSB_3P_420,
+ PVRTLPF_YUV12MSB_3P_420,
+ PVRTLPF_YUV12LSB_3P_420,
+ PVRTLPF_YUV16_3P_420,
+ PVRTLPF_YVU_3P_420,
+
+ /*
+ Reserved for future expansion
+ */
+
+ // 2 Plane (Biplanar/semi-planar) YUV formats
+ PVRTLPF_YUV_2P_422 = 480, // P208
+ PVRTLPF_YUV10MSB_2P_422, // P210
+ PVRTLPF_YUV10LSB_2P_422,
+ PVRTLPF_YUV12MSB_2P_422,
+ PVRTLPF_YUV12LSB_2P_422,
+ PVRTLPF_YUV16_2P_422, // P216
+ PVRTLPF_YUV_2P_420, // NV12
+ PVRTLPF_YUV10MSB_2P_420, // P010
+ PVRTLPF_YUV10LSB_2P_420,
+ PVRTLPF_YUV12MSB_2P_420,
+ PVRTLPF_YUV12LSB_2P_420,
+ PVRTLPF_YUV16_2P_420, // P016
+ PVRTLPF_YUV_2P_444,
+ PVRTLPF_YVU_2P_444,
+ PVRTLPF_YUV10MSB_2P_444,
+ PVRTLPF_YUV10LSB_2P_444,
+ PVRTLPF_YVU10MSB_2P_444,
+ PVRTLPF_YVU10LSB_2P_444,
+ PVRTLPF_YVU_2P_422,
+ PVRTLPF_YVU10MSB_2P_422,
+ PVRTLPF_YVU10LSB_2P_422,
+ PVRTLPF_YVU_2P_420, // NV21
+ PVRTLPF_YVU10MSB_2P_420,
+ PVRTLPF_YVU10LSB_2P_420,
+
+ //Invalid value
+ PVRTLPF_NumCompressedPFs
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibVariableType
+ @brief Data types. Describes how the data is interpreted by PVRTexLib and
+ how the pointer returned by PVRTexLib_GetTextureDataPtr() should
+ be interpreted.
+*************************************************************************/
+enum PVRTexLibVariableType
+{
+ PVRTLVT_UnsignedByteNorm,
+ PVRTLVT_SignedByteNorm,
+ PVRTLVT_UnsignedByte,
+ PVRTLVT_SignedByte,
+ PVRTLVT_UnsignedShortNorm,
+ PVRTLVT_SignedShortNorm,
+ PVRTLVT_UnsignedShort,
+ PVRTLVT_SignedShort,
+ PVRTLVT_UnsignedIntegerNorm,
+ PVRTLVT_SignedIntegerNorm,
+ PVRTLVT_UnsignedInteger,
+ PVRTLVT_SignedInteger,
+ PVRTLVT_SignedFloat,
+ PVRTLVT_Float = PVRTLVT_SignedFloat, //the name Float is now deprecated.
+ PVRTLVT_UnsignedFloat,
+ PVRTLVT_NumVarTypes,
+
+ PVRTLVT_Invalid = 255
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibCompressorQuality
+ @brief Quality level to compress the texture with. Applies to PVRTC,
+ ETC, ASTC, BASIS and IMGIC formats.
+*************************************************************************/
+enum PVRTexLibCompressorQuality
+{
+ PVRTLCQ_PVRTCFastest = 0, //!< PVRTC fastest
+ PVRTLCQ_PVRTCFast, //!< PVRTC fast
+ PVRTLCQ_PVRTCLow, //!< PVRTC low
+ PVRTLCQ_PVRTCNormal, //!< PVRTC normal
+ PVRTLCQ_PVRTCHigh, //!< PVRTC high
+ PVRTLCQ_PVRTCVeryHigh, //!< PVRTC very high
+ PVRTLCQ_PVRTCThorough, //!< PVRTC thorough
+ PVRTLCQ_PVRTCBest, //!< PVRTC best
+ PVRTLCQ_NumPVRTCModes, //!< Number of PVRTC modes
+
+ PVRTLCQ_ETCFast = 0, //!< ETC fast
+ PVRTLCQ_ETCNormal, //!< ETC normal
+ PVRTLCQ_ETCSlow, //!< ETC slow
+ PVRTLCQ_NumETCModes, //!< Number of ETC modes
+
+ PVRTLCQ_ASTCVeryFast = 0, //!< ASTC very fast
+ PVRTLCQ_ASTCFast, //!< ASTC fast
+ PVRTLCQ_ASTCMedium, //!< ASTC medium
+ PVRTLCQ_ASTCThorough, //!< ASTC thorough
+ PVRTLCQ_ASTCExhaustive, //!< ASTC exhaustive
+ PVRTLCQ_NumASTCModes, //!< Number of ASTC modes
+
+ PVRTLCQ_BASISULowest = 0, //!< BASISU lowest quality
+ PVRTLCQ_BASISULow, //!< BASISU low quality
+ PVRTLCQ_BASISUNormal, //!< BASISU normal quality
+ PVRTLCQ_BASISUHigh, //!< BASISU high quality
+ PVRTLCQ_BASISUBest, //!< BASISU best quality
+ PVRTLCQ_NumBASISUModes, //!< Number of BASISU modes
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibResizeMode
+ @brief Filter to apply when resizing an image
+*************************************************************************/
+enum PVRTexLibResizeMode
+{
+ PVRTLRM_Nearest, //!< Nearest filtering
+ PVRTLRM_Linear, //!< Linear filtering
+ PVRTLRM_Cubic, //!< Cubic filtering, uses Catmull-Rom splines.
+ PVRTLRM_Modes //!< Number of resize modes
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibFileContainerType
+ @brief File container type
+*************************************************************************/
+enum PVRTexLibFileContainerType
+{
+ PVRTLFCT_PVR, //!< PVR: https://docs.imgtec.com/Specifications/PVR_File_Format_Specification/topics/pvr_intro.html
+ PVRTLFCT_KTX, //!< KTX version 1: https://www.khronos.org/registry/KTX/specs/1.0/ktxspec_v1.html
+ PVRTLFCT_KTX2, //!< KTX version 2: https://github.khronos.org/KTX-Specification/
+ PVRTLFCT_ASTC, //!< ASTC compressed textures only: https://github.com/ARM-software/astc-encoder
+ PVRTLFCT_BASIS, //!< Basis Universal compressed textures only: https://github.com/BinomialLLC/basis_universal
+ PVRTLFCT_DDS, //!< DirectDraw Surface: https://docs.microsoft.com/en-us/windows/win32/direct3ddds/dx-graphics-dds-reference
+ PVRTLFCT_CHeader //!< C style header
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibColourDiffMode
+ @brief The clamping mode to use when performing a colour diff
+*************************************************************************/
+enum PVRTexLibColourDiffMode
+{
+ PVRTLCDM_Abs, //!< Absolute
+ PVRTLCDM_Signed //!< Signed
+};
+
+/*!***********************************************************************
+ @enum PVRTexLibLegacyApi
+ @brief Legacy API enum.
+*************************************************************************/
+enum PVRTexLibLegacyApi
+{
+ PVRTLLAPI_OGLES = 1, //!< OpenGL ES 1.x
+ PVRTLLAPI_OGLES2, //!< OpenGL ES 2.0
+ PVRTLLAPI_D3DM, //!< Direct 3D M
+ PVRTLLAPI_OGL, //!< Open GL
+ PVRTLLAPI_DX9, //!< DirextX 9
+ PVRTLLAPI_DX10, //!< DirectX 10
+ PVRTLLAPI_OVG, //!< Open VG
+ PVRTLLAPI_MGL, //!< MGL
+};
+
+#define PVRT_MIN(a,b) (((a) < (b)) ? (a) : (b))
+#define PVRT_MAX(a,b) (((a) > (b)) ? (a) : (b))
+#define PVRT_CLAMP(x, l, h) (PVRT_MIN((h), PVRT_MAX((x), (l))))
+
+/*!***************************************************************************
+ @def TEXOFFSET2D
+ @brief 2D texture offset
+*****************************************************************************/
+#define TEXOFFSET2D(x,y,width) (((x)+(y)*(width)))
+
+/*!***************************************************************************
+ @def TEXOFFSET3D
+ @brief 3D texture offset
+*****************************************************************************/
+#define TEXOFFSET3D(x,y,z,width,height) (((x)+(y)*(width)+(z)*(width)*(height)))
+
+/*!***************************************************************************
+ @struct PVRTextureHeaderV3
+ @brief A header for a PVR texture.
+ @details Contains everything required to read a texture accurately, and nothing more. Extraneous data is stored in a MetaDataBlock.
+ Correct use of the texture may rely on MetaDataBlock, but accurate data loading can be done through the standard header alone.
+*****************************************************************************/
+#pragma pack(push,4)
+struct PVRTextureHeaderV3
+{
+ PVRTuint32 u32Version; ///< Version of the file header, used to identify it.
+ PVRTuint32 u32Flags; ///< Various format flags.
+ PVRTuint64 u64PixelFormat; ///< The pixel format, 8cc value storing the 4 channel identifiers and their respective sizes.
+ PVRTuint32 u32ColourSpace; ///< The Colour Space of the texture, currently either linear RGB or sRGB.
+ PVRTuint32 u32ChannelType; ///< Variable type that the channel is stored in. Supports signed/unsigned int/short/byte or float for now.
+ PVRTuint32 u32Height; ///< Height of the texture.
+ PVRTuint32 u32Width; ///< Width of the texture.
+ PVRTuint32 u32Depth; ///< Depth of the texture. (Z-slices)
+ PVRTuint32 u32NumSurfaces; ///< Number of members in a Texture Array.
+ PVRTuint32 u32NumFaces; ///< Number of faces in a Cube Map. Maybe be a value other than 6.
+ PVRTuint32 u32MIPMapCount; ///< Number of MIP Maps in the texture - NB: Includes top level.
+ PVRTuint32 u32MetaDataSize; ///< Size of the accompanying meta data.
+};
+#pragma pack(pop)
+#define PVRTEX3_HEADERSIZE 52U
+#endif /* _PVRTEXLIBDEFINES_H_ */
+
+/*****************************************************************************
+End of file (PVRTexLibDefines.h)
+*****************************************************************************/
\ No newline at end of file
diff --git a/deps/PVRTT/Include/PVRTextureVersion.h b/deps/PVRTT/Include/PVRTextureVersion.h
new file mode 100755
index 0000000000..0725dc94fc
--- /dev/null
+++ b/deps/PVRTT/Include/PVRTextureVersion.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#define PVRTEXLIB_MAJORVERSION 5
+#define PVRTEXLIB_MINORVERSION 6
+#define PVRTEXLIB_SUBVERSION 0
+#define PVRTEXLIB_STRINGVERSION "5.6.0"
+#define PVRTEXLIB_FULLVERSIONSTRING "PVRTexLib v5.6.0"
diff --git a/deps/PVRTT/include/PVRTArray.h b/deps/PVRTT/include/PVRTArray.h
deleted file mode 100644
index 487ddbae09..0000000000
--- a/deps/PVRTT/include/PVRTArray.h
+++ /dev/null
@@ -1,660 +0,0 @@
-/*!****************************************************************************
-
- @file PVRTArray.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief Expanding array template class. Allows appending and direct
- access. Mixing access methods should be approached with caution.
-
-******************************************************************************/
-#ifndef __PVRTARRAY_H__
-#define __PVRTARRAY_H__
-
-#include "PVRTGlobal.h"
-#include "PVRTError.h"
-
-/******************************************************************************
-** Classes
-******************************************************************************/
-
-/*!***************************************************************************
- @class CPVRTArray
- @brief Expanding array template class.
-*****************************************************************************/
-template
-class CPVRTArray
-{
-public:
- /*!***************************************************************************
- @brief Blank constructor. Makes a default sized array.
- *****************************************************************************/
- CPVRTArray() : m_uiSize(0), m_uiCapacity(GetDefaultSize())
- {
- m_pArray = new T[m_uiCapacity];
- }
-
- /*!***************************************************************************
- @brief Constructor taking initial size of array in elements.
- @param[in] uiSize intial size of array
- *****************************************************************************/
- CPVRTArray(const unsigned int uiSize) : m_uiSize(0), m_uiCapacity(uiSize)
- {
- _ASSERT(uiSize != 0);
- m_pArray = new T[uiSize];
- }
-
- /*!***************************************************************************
- @brief Copy constructor.
- @param[in] original the other dynamic array
- *****************************************************************************/
- CPVRTArray(const CPVRTArray& original) : m_uiSize(original.m_uiSize),
- m_uiCapacity(original.m_uiCapacity)
- {
- m_pArray = new T[m_uiCapacity];
- for(unsigned int i=0;i= m_uiSize) // Are we adding to the end
- uiIndex = Append(addT);
- else
- {
- unsigned int uiNewCapacity = 0;
- T* pArray = m_pArray;
-
- if(m_uiSize >= m_uiCapacity)
- {
- uiNewCapacity = m_uiCapacity + 10; // Expand the array by 10.
-
- pArray = new T[uiNewCapacity]; // New Array
-
- if(!pArray)
- return -1; // Failed to allocate memory!
-
- // Copy the first half to the new array
- for(unsigned int i = 0; i < pos; ++i)
- {
- pArray[i] = m_pArray[i];
- }
- }
-
- // Copy last half to the new array
- for(unsigned int i = m_uiSize; i > pos; --i)
- {
- pArray[i] = m_pArray[i - 1];
- }
-
- // Insert our new element
- pArray[pos] = addT;
- uiIndex = pos;
-
- // Increase our size
- ++m_uiSize;
-
- // Switch pointers and free memory if needed
- if(pArray != m_pArray)
- {
- m_uiCapacity = uiNewCapacity;
- delete[] m_pArray;
- m_pArray = pArray;
- }
- }
-
- return uiIndex;
- }
-
- /*!***************************************************************************
- @brief Appends an element to the end of the array, expanding it
- if necessary.
- @param[in] addT The element to append
- @return The index of the new item.
- *****************************************************************************/
- unsigned int Append(const T& addT)
- {
- unsigned int uiIndex = Append();
- m_pArray[uiIndex] = addT;
- return uiIndex;
- }
-
- /*!***************************************************************************
- @brief Creates space for a new item, but doesn't add. Instead
- returns the index of the new item.
- @return The index of the new item.
- *****************************************************************************/
- unsigned int Append()
- {
- unsigned int uiIndex = m_uiSize;
- SetCapacity(m_uiSize+1);
- m_uiSize++;
-
- return uiIndex;
- }
-
- /*!***************************************************************************
- @brief Clears the array.
- *****************************************************************************/
- void Clear()
- {
- m_uiSize = 0U;
- }
-
- /*!***************************************************************************
- @brief Changes the array to the new size.
- @param[in] uiSize New size of array
- *****************************************************************************/
- EPVRTError Resize(const unsigned int uiSize)
- {
- EPVRTError err = SetCapacity(uiSize);
-
- if(err != PVR_SUCCESS)
- return err;
-
- m_uiSize = uiSize;
- return PVR_SUCCESS;
- }
-
- /*!***************************************************************************
- @brief Expands array to new capacity.
- @param[in] uiSize New capacity of array
- *****************************************************************************/
- EPVRTError SetCapacity(const unsigned int uiSize)
- {
- if(uiSize <= m_uiCapacity)
- return PVR_SUCCESS; // nothing to be done
-
- unsigned int uiNewCapacity;
- if(uiSize < m_uiCapacity*2)
- {
- uiNewCapacity = m_uiCapacity*2; // Ignore the new size. Expand to twice the previous size.
- }
- else
- {
- uiNewCapacity = uiSize;
- }
-
- T* pNewArray = new T[uiNewCapacity]; // New Array
- if(!pNewArray)
- return PVR_FAIL; // Failed to allocate memory!
-
- // Copy source data to new array
- for(unsigned int i = 0; i < m_uiSize; ++i)
- {
- pNewArray[i] = m_pArray[i];
- }
-
- // Switch pointers and free memory
- m_uiCapacity = uiNewCapacity;
- T* pOldArray = m_pArray;
- m_pArray = pNewArray;
- delete [] pOldArray;
- return PVR_SUCCESS;
- }
-
- /*!***************************************************************************
- @fn Copy
- @brief A copy function. Will attempt to copy from other CPVRTArrays
- if this is possible.
- @param[in] other The CPVRTArray needing copied
- *****************************************************************************/
- template
- void Copy(const CPVRTArray& other)
- {
- T* pNewArray = new T[other.GetCapacity()];
- if(pNewArray)
- {
- // Copy data
- for(unsigned int i = 0; i < other.GetSize(); i++)
- {
- pNewArray[i] = other[i];
- }
-
- // Free current array
- if(m_pArray)
- delete [] m_pArray;
-
- // Swap pointers
- m_pArray = pNewArray;
-
- m_uiCapacity = other.GetCapacity();
- m_uiSize = other.GetSize();
- }
- }
-
- /*!***************************************************************************
- @brief Assignment operator.
- @param[in] other The CPVRTArray needing copied
- *****************************************************************************/
- CPVRTArray& operator=(const CPVRTArray& other)
- {
- if(&other != this)
- Copy(other);
-
- return *this;
- }
-
- /*!***************************************************************************
- @brief Appends an existing CPVRTArray on to this one.
- @param[in] other the array to append.
- *****************************************************************************/
- CPVRTArray& operator+=(const CPVRTArray& other)
- {
- if(&other != this)
- {
- for(unsigned int uiIndex = 0; uiIndex < other.GetSize(); ++uiIndex)
- {
- Append(other[uiIndex]);
- }
- }
-
- return *this;
- }
-
- /*!***************************************************************************
- @brief Indexed access into array. Note that this has no error
- checking whatsoever.
- @param[in] uiIndex index of element in array
- @return the element indexed
- *****************************************************************************/
- T& operator[](const unsigned int uiIndex)
- {
- _ASSERT(uiIndex < m_uiSize);
- return m_pArray[uiIndex];
- }
-
- /*!***************************************************************************
- @brief Indexed access into array. Note that this has no error checking whatsoever.
- @param[in] uiIndex index of element in array
- @return The element indexed
- *****************************************************************************/
- const T& operator[](const unsigned int uiIndex) const
- {
- _ASSERT(uiIndex < m_uiSize);
- return m_pArray[uiIndex];
- }
-
- /*!***************************************************************************
- @return Size of array
- @brief Gives current size of array/number of elements.
- *****************************************************************************/
- unsigned int GetSize() const
- {
- return m_uiSize;
- }
-
- /*!***************************************************************************
- @brief Gives the default size of array/number of elements.
- @return Default size of array
- *****************************************************************************/
- static unsigned int GetDefaultSize()
- {
- return 16U;
- }
-
- /*!***************************************************************************
- @brief Gives current allocated size of array/number of elements.
- @return Capacity of array
- *****************************************************************************/
- unsigned int GetCapacity() const
- {
- return m_uiCapacity;
- }
-
- /*!***************************************************************************
- @brief Indicates whether the given object resides inside the array.
- @param[in] object The object to check in the array
- @return true if object is contained in this array.
- *****************************************************************************/
- bool Contains(const T& object) const
- {
- for(unsigned int uiIndex = 0; uiIndex < m_uiSize; ++uiIndex)
- {
- if(m_pArray[uiIndex] == object)
- return true;
- }
- return false;
- }
-
- /*!***************************************************************************
- @brief Attempts to find the object in the array and returns a
- pointer if it is found, or NULL if not found. The time
- taken is O(N).
- @param[in] object The object to check in the array
- @return Pointer to the found object or NULL.
- *****************************************************************************/
- T* Find(const T& object) const
- {
- for(unsigned int uiIndex = 0; uiIndex < m_uiSize; ++uiIndex)
- {
- if(m_pArray[uiIndex] == object)
- return &m_pArray[uiIndex];
- }
- return NULL;
- }
-
- /*!***************************************************************************
- @brief Performs a merge-sort on the array. Pred should be an object that
- defines a bool operator().
- @param[in] predicate The object which defines "bool operator()"
- *****************************************************************************/
- template
- void Sort(Pred predicate)
- {
- _Sort(0, m_uiSize, predicate);
- }
-
- /*!***************************************************************************
- @brief Removes an element from the array.
- @param[in] uiIndex The index to remove
- @return success or failure
- *****************************************************************************/
- virtual EPVRTError Remove(unsigned int uiIndex)
- {
- _ASSERT(uiIndex < m_uiSize);
- if(m_uiSize == 0)
- return PVR_FAIL;
-
- if(uiIndex == m_uiSize-1)
- {
- return RemoveLast();
- }
-
- m_uiSize--;
- // Copy the data. memmove will only work for built-in types.
- for(unsigned int uiNewIdx = uiIndex; uiNewIdx < m_uiSize; ++uiNewIdx)
- {
- m_pArray[uiNewIdx] = m_pArray[uiNewIdx+1];
- }
-
- return PVR_SUCCESS;
- }
-
- /*!***************************************************************************
- @brief Removes the last element. Simply decrements the size value.
- @return success or failure
- *****************************************************************************/
- virtual EPVRTError RemoveLast()
- {
- if(m_uiSize > 0)
- {
- m_uiSize--;
- return PVR_SUCCESS;
- }
- else
- {
- return PVR_FAIL;
- }
- }
-
-protected:
- enum eBounds
- {
- eLowerBounds,
- eUpperBounds,
- };
-
- /*!***************************************************************************
- @brief Internal sort algorithm.
- @param[in] first The beginning index of the array
- @param[in] last The last index of the array
- @param[in] predicate A functor object to perform the comparison
- *****************************************************************************/
- template
- void _Sort(unsigned int first, unsigned int last, Pred predicate)
- {
- unsigned int size = last - first;
- if(size < 2)
- return;
-
- unsigned int middle = first + size / 2;
- _Sort(first, middle, predicate);
- _Sort(middle, last, predicate);
- _SortMerge(first, middle, last, middle-first, last-middle, predicate);
- }
-
- /*!***************************************************************************
- @brief Internal sort algorithm - in-place merge method.
- @param[in] first The beginning index of the array
- @param[in] middle The middle index of the array
- @param[in] last The last index of the array
- @param[in] len1 Length of first half of the array
- @param[in] len2 Length of the second half of the array
- @param[in] predicate A functor object to perform the comparison
- *****************************************************************************/
- template
- void _SortMerge(unsigned int first, unsigned int middle, unsigned int last, int len1, int len2, Pred predicate)
- {
- if(len1 == 0 || len2 == 0)
- return;
-
- if(len1 + len2 == 2)
- {
- if(predicate(m_pArray[middle], m_pArray[first]))
- PVRTswap(m_pArray[first], m_pArray[middle]);
-
- return;
- }
-
- unsigned int firstCut = first;
- unsigned int secondCut = middle;
- int dist1 = 0;
- int dist2 = 0;
- if(len1 > len2)
- {
- dist1 = len1 / 2;
- firstCut += dist1;
- secondCut = _SortBounds(middle, last, m_pArray[firstCut], eLowerBounds, predicate);
- dist2 += secondCut - middle;
- }
- else
- {
- dist2 = len2 / 2;
- secondCut += dist2;
- firstCut = _SortBounds(first, middle, m_pArray[secondCut], eUpperBounds, predicate);
- dist1 += firstCut - first;
- }
-
- unsigned int newMiddle = _SortRotate(firstCut, middle, secondCut);
- _SortMerge(first, firstCut, newMiddle, dist1, dist2, predicate);
- _SortMerge(newMiddle, secondCut, last, len1-dist1, len2-dist2, predicate);
- }
-
- /*!***************************************************************************
- @brief Internal sort algorithm - returns the bounded index of the range.
- @param[in] first The beginning index of the array
- @param[in] last The last index of the array
- @param[in] v Comparison object
- @param[in] bounds Which bound to check (upper or lower)
- @param[in] predicate A functor object to perform the comparison
- *****************************************************************************/
- template
- unsigned int _SortBounds(unsigned int first, unsigned int last, const T& v, eBounds bounds, Pred predicate)
- {
- int count = last - first, step;
- unsigned int idx;
- while(count > 0)
- {
- step = count / 2;
- idx = first + step;
- if((bounds == eLowerBounds && predicate(m_pArray[idx], v)) || (bounds == eUpperBounds && !predicate(v, m_pArray[idx])))
- {
- first = ++idx;
- count -= step + 1;
- }
- else
- {
- count = step;
- }
- }
- return first;
- }
-
- /*!***************************************************************************
- @brief Internal sort algorithm - rotates the contents of the array such
- that the middle becomes the first element.
- @param[in] first The beginning index of the array
- @param[in] middle The middle index of the array
- @param[in] last The last index of the array
- *****************************************************************************/
- int _SortRotate(unsigned int first, unsigned int middle, unsigned int last)
- {
- if(first == middle)
- return last;
- if(last == middle)
- return first;
-
- unsigned int newFirst = middle;
- do
- {
- PVRTswap(m_pArray[first++], m_pArray[newFirst++]);
- if(first == middle)
- middle = newFirst;
- } while (newFirst != last);
-
- unsigned int newMiddle = first;
- newFirst = middle;
- while(newFirst != last)
- {
- PVRTswap(m_pArray[first++], m_pArray[newFirst++]);
- if(first == middle)
- middle = newFirst;
- else if(newFirst == last)
- newFirst = middle;
- }
-
- return newMiddle;
- }
-
-protected:
- unsigned int m_uiSize; /*!< Current size of contents of array */
- unsigned int m_uiCapacity; /*!< Currently allocated size of array */
- T *m_pArray; /*!< The actual array itself */
-};
-
-// note "this" is required for ISO standard, C++ and gcc complains otherwise
-// http://lists.apple.com/archives/Xcode-users//2005/Dec/msg00644.html
-
-/*!***************************************************************************
- @class CPVRTArrayManagedPointers
- @brief Maintains an array of managed pointers.
-*****************************************************************************/
-template
-class CPVRTArrayManagedPointers : public CPVRTArray
-{
-public:
- /*!***************************************************************************
- @brief Destructor.
- *****************************************************************************/
- virtual ~CPVRTArrayManagedPointers()
- {
- if(this->m_pArray)
- {
- for(unsigned int i=0;im_uiSize;i++)
- {
- delete(this->m_pArray[i]);
- }
- }
- }
-
- /*!***************************************************************************
- @brief Removes an element from the array.
- @param[in] uiIndex The index to remove.
- @return success or failure
- *****************************************************************************/
- virtual EPVRTError Remove(unsigned int uiIndex)
- {
- _ASSERT(uiIndex < this->m_uiSize);
- if(this->m_uiSize == 0)
- return PVR_FAIL;
-
- if(uiIndex == this->m_uiSize-1)
- {
- return this->RemoveLast();
- }
-
- unsigned int uiSize = (this->m_uiSize - (uiIndex+1)) * sizeof(T*);
-
- delete this->m_pArray[uiIndex];
- memmove(this->m_pArray + uiIndex, this->m_pArray + (uiIndex+1), uiSize);
-
- this->m_uiSize--;
- return PVR_SUCCESS;
- }
-
- /*!***************************************************************************
- @brief Removes the last element. Simply decrements the size value.
- @return success or failure
- *****************************************************************************/
- virtual EPVRTError RemoveLast()
- {
- if(this->m_uiSize > 0 && this->m_pArray)
- {
- delete this->m_pArray[this->m_uiSize-1];
- this->m_uiSize--;
- return PVR_SUCCESS;
- }
- else
- {
- return PVR_FAIL;
- }
- }
-};
-
-#endif // __PVRTARRAY_H__
-
-/*****************************************************************************
-End of file (PVRTArray.h)
-*****************************************************************************/
-
diff --git a/deps/PVRTT/include/PVRTDecompress.h b/deps/PVRTT/include/PVRTDecompress.h
deleted file mode 100644
index 174b46074c..0000000000
--- a/deps/PVRTT/include/PVRTDecompress.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*!****************************************************************************
-
- @file PVRTDecompress.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief PVRTC and ETC Texture Decompression.
-
-******************************************************************************/
-
-#ifndef _PVRTDECOMPRESS_H_
-#define _PVRTDECOMPRESS_H_
-
-/*!***********************************************************************
- @brief Decompresses PVRTC to RGBA 8888.
- @param[in] pCompressedData The PVRTC texture data to decompress
- @param[in] Do2bitMode Signifies whether the data is PVRTC2 or PVRTC4
- @param[in] XDim X dimension of the texture
- @param[in] YDim Y dimension of the texture
- @param[in,out] pResultImage The decompressed texture data
- @return Returns the amount of data that was decompressed.
-*************************************************************************/
-int PVRTDecompressPVRTC(const void *pCompressedData,
- const int Do2bitMode,
- const int XDim,
- const int YDim,
- unsigned char* pResultImage);
-
-/*!***********************************************************************
- @brief Decompresses ETC to RGBA 8888.
- @param[in] pSrcData The ETC texture data to decompress
- @param[in] x X dimension of the texture
- @param[in] y Y dimension of the texture
- @param[in,out] pDestData The decompressed texture data
- @param[in] nMode The format of the data
- @return The number of bytes of ETC data decompressed
-*************************************************************************/
-int PVRTDecompressETC(const void * const pSrcData,
- const unsigned int &x,
- const unsigned int &y,
- void *pDestData,
- const int &nMode);
-
-
-#endif /* _PVRTDECOMPRESS_H_ */
-
-/*****************************************************************************
- End of file (PVRTBoneBatch.h)
-*****************************************************************************/
-
diff --git a/deps/PVRTT/include/PVRTError.h b/deps/PVRTT/include/PVRTError.h
deleted file mode 100644
index bab132adf3..0000000000
--- a/deps/PVRTT/include/PVRTError.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*!****************************************************************************
-
- @file PVRTError.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief PVRT error codes.
-
-******************************************************************************/
-#ifndef _PVRTERROR_H_
-#define _PVRTERROR_H_
-
-#if defined(ANDROID)
- #include
-#else
- #if defined(_WIN32)
- #include
- #else
- #include
- #endif
-#endif
-/*!***************************************************************************
- Macros
-*****************************************************************************/
-
-/*! Outputs a string to the standard error if built for debugging. */
-#if !defined(PVRTERROR_OUTPUT_DEBUG)
- #if defined(_DEBUG) || defined(DEBUG)
- #if defined(ANDROID)
- #define PVRTERROR_OUTPUT_DEBUG(A) __android_log_print(ANDROID_LOG_INFO, "PVRTools", A);
- #elif defined(_WIN32) && !defined(UNDER_CE)
- #define PVRTERROR_OUTPUT_DEBUG(A) OutputDebugStringA(A);
- #else
- #define PVRTERROR_OUTPUT_DEBUG(A) fprintf(stderr,"%s",A);
- #endif
- #else
- #define PVRTERROR_OUTPUT_DEBUG(A)
- #endif
-#endif
-
-
-/*!***************************************************************************
- Enums
-*****************************************************************************/
-/*!***************************************************************************
- @enum EPVRTError
- @brief EPVRT error conditions.
-*****************************************************************************/
-enum EPVRTError
-{
- PVR_SUCCESS = 0, /*!< Success! :D */
- PVR_FAIL = 1, /*!< Failed :( */
- PVR_OVERFLOW = 2 /*!< Overflow error :| */
-};
-
-/*!***************************************************************************
- @brief Outputs a string to the standard error.
- @param[in] format printf style format followed by arguments it requires.
-*****************************************************************************/
-void PVRTErrorOutputDebug(char const * const format, ...);
-
-#endif // _PVRTERROR_H_
-
-/*****************************************************************************
-End of file (PVRTError.h)
-*****************************************************************************/
-
diff --git a/deps/PVRTT/include/PVRTGlobal.h b/deps/PVRTT/include/PVRTGlobal.h
deleted file mode 100644
index 729778f836..0000000000
--- a/deps/PVRTT/include/PVRTGlobal.h
+++ /dev/null
@@ -1,305 +0,0 @@
-/*!****************************************************************************
-
- @file PVRTGlobal.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief Global defines and typedefs for PVRTools.
-
-******************************************************************************/
-#ifndef _PVRTGLOBAL_H_
-#define _PVRTGLOBAL_H_
-
-/*!***************************************************************************
- Macros
-*****************************************************************************/
-#define PVRT_MIN(a,b) (((a) < (b)) ? (a) : (b))
-#define PVRT_MAX(a,b) (((a) > (b)) ? (a) : (b))
-#define PVRT_CLAMP(x, l, h) (PVRT_MIN((h), PVRT_MAX((x), (l))))
-
-// avoid warning about unused parameter
-#define PVRT_UNREFERENCED_PARAMETER(x) ((void) x)
-
-#if defined(_WIN32) && !defined(__QT__) && !defined(UNDER_CE) /* Windows desktop */
-#if !defined(_CRTDBG_MAP_ALLOC)
-#define _CRTDBG_MAP_ALLOC
-#endif
-#include
-#include
-#include
-#endif
-
-#if defined(UNDER_CE)
-#include
-
-#ifndef _ASSERT
-#ifdef _DEBUG
-#define _ASSERT(X) { (X) ? 0 : DebugBreak(); }
-#else
-#define _ASSERT(X)
-#endif
-#endif
-
-#ifndef _ASSERTE
-#ifdef _DEBUG
-#define _ASSERTE _ASSERT
-#else
-#define _ASSERTE(X)
-#endif
-#endif
-#define _RPT0(a,b)
-#define _RPT1(a,b,c)
-#define _RPT2(a,b,c,d)
-#define _RPT3(a,b,c,d,e)
-#define _RPT4(a,b,c,d,e,f)
-#else
-
-#if defined(_WIN32) && !defined(__QT__)
-
-#else
-#if defined(__linux__) || defined(__APPLE__)
-#ifdef _DEBUG
-#include
-#ifndef _RPT0
-#define _RPT0(a,b) printf(b)
-#endif
-#ifndef _RPT1
-#define _RPT1(a,b,c) printf(b,c)
-#endif
-#ifndef _ASSERT
-#define _ASSERT(a) if (!(a)) ::raise(SIGTRAP)
-#endif
-#ifndef _ASSERTE
-#define _ASSERTE(a) if (!(a)) ::raise(SIGTRAP)
-#endif
-#else
-#ifndef _RPT0
-#define _RPT0(a,b)((void)0)
-#endif
-#ifndef _RPT1
-#define _RPT1(a,b,c)((void)0)
-#endif
-#ifndef _ASSERT
-#define _ASSERT(a)((void)0)
-#endif
-#ifndef _ASSERTE
-#define _ASSERTE(a)((void)0)
-#endif
-#endif
-#ifndef _RPT2
-#define _RPT2(a,b,c,d)((void)0)
-#endif
-#ifndef _RPT3
-#define _RPT3(a,b,c,d,e)((void)0)
-#endif
-#ifndef _RPT4
-#define _RPT4(a,b,c,d,e,f)((void)0)
-#endif
-#else
-#define _CRT_WARN 0
-#define _RPT0(a,b)
-#define _RPT1(a,b,c)
-#define _RPT2(a,b,c,d)
-#define _RPT3(a,b,c,d,e)
-#define _RPT4(a,b,c,d,e,f)
-#define _ASSERT(X)
-#define _ASSERTE(X)
-#endif
-#endif
-#endif
-
-#include
-#include
-
-#define FREE(X) { if(X) { free(X); (X) = 0; } }
-
-// This macro is used to check at compile time that types are of a certain size
-// If the size does not equal the expected size, this typedefs an array of size 0
-// which causes a compile error
-#define PVRTSIZEASSERT(T, size) typedef int (sizeof_##T)[sizeof(T) == (size)]
-#define PVRTCOMPILEASSERT(T, expr) typedef int (assert_##T)[expr]
-
-
-/****************************************************************************
-** Integer types
-****************************************************************************/
-
-typedef char PVRTchar8;
-typedef signed char PVRTint8;
-typedef signed short PVRTint16;
-typedef signed int PVRTint32;
-typedef unsigned char PVRTuint8;
-typedef unsigned short PVRTuint16;
-typedef unsigned int PVRTuint32;
-
-typedef float PVRTfloat32;
-
-#if (defined(__int64) || defined(_WIN32))
-typedef signed __int64 PVRTint64;
-typedef unsigned __int64 PVRTuint64;
-#elif defined(__GNUC__)
-__extension__ typedef signed long long PVRTint64;
-__extension__ typedef unsigned long long PVRTuint64;
-#else
-typedef signed long long PVRTint64;
-typedef unsigned long long PVRTuint64;
-#endif
-
-#if __SIZEOF_WCHAR_T__ == 4 || __WCHAR_MAX__ > 0x10000
-#define PVRTSIZEOFWCHAR 4
-#else
-#define PVRTSIZEOFWCHAR 2
-#endif
-
-PVRTSIZEASSERT(PVRTchar8, 1);
-PVRTSIZEASSERT(PVRTint8, 1);
-PVRTSIZEASSERT(PVRTuint8, 1);
-PVRTSIZEASSERT(PVRTint16, 2);
-PVRTSIZEASSERT(PVRTuint16, 2);
-PVRTSIZEASSERT(PVRTint32, 4);
-PVRTSIZEASSERT(PVRTuint32, 4);
-PVRTSIZEASSERT(PVRTint64, 8);
-PVRTSIZEASSERT(PVRTuint64, 8);
-PVRTSIZEASSERT(PVRTfloat32, 4);
-
-/*!**************************************************************************
- @enum ETextureFilter
- @brief Enum values for defining texture filtering.
-****************************************************************************/
-enum ETextureFilter
-{
- eFilter_Nearest,
- eFilter_Linear,
- eFilter_Cubic,
- eFilter_None,
-
- eFilter_Size,
- eFilter_Default = eFilter_Linear,
- eFilter_MipDefault = eFilter_None
-};
-
-/*!**************************************************************************
- @enum ETextureWrap
- @brief Enum values for defining texture wrapping.
-****************************************************************************/
-enum ETextureWrap
-{
- eWrap_Clamp,
- eWrap_Repeat,
-
- eWrap_Size,
- eWrap_Default = eWrap_Repeat
-};
-
-/****************************************************************************
-** swap template function
-****************************************************************************/
-/*!***************************************************************************
- @brief A swap template function that swaps a and b.
- @param[in] a Type a
- @param[in] b Type b
-*****************************************************************************/
-
-template
-inline void PVRTswap(T& a, T& b)
-{
- T temp = a;
- a = b;
- b = temp;
-}
-
-/*!***************************************************************************
- @brief A clamp template function that clamps val between min and max.
- @param[in] val Value to clamp
- @param[in] min Minimum legal value
- @param[in] max Maximum legal value
-*****************************************************************************/
-template
-inline T PVRTClamp(const T& val, const T& min, const T& max)
-{
- if (val > max)
- { return max; }
- if (val < min)
- { return min; }
- return val;
-}
-
-/*!***************************************************************************
- @brief Swaps the endianness of pBytes in place.
- @param[in] pBytes A number
- @param[in] i32ByteNo Number of bytes in pBytes
-*****************************************************************************/
-inline void PVRTByteSwap(unsigned char* pBytes, int i32ByteNo)
-{
- int i = 0, j = i32ByteNo - 1;
-
- while (i < j)
- { PVRTswap(pBytes[i++], pBytes[j--]); }
-}
-
-/*!***************************************************************************
- @brief Converts the endianness of an unsigned int.
- @param[in] ui32Long A number
- @return ui32Long with its endianness changed
-*****************************************************************************/
-inline unsigned int PVRTByteSwap32(unsigned int ui32Long)
-{
- return ((ui32Long & 0x000000FF) << 24) + ((ui32Long & 0x0000FF00) << 8) + ((ui32Long & 0x00FF0000) >> 8) + ((ui32Long & 0xFF000000) >> 24);
-}
-
-/*!***************************************************************************
- @brief Converts the endianness of a unsigned short.
- @param[in] ui16Short A number
- @return ui16Short with its endianness changed
-*****************************************************************************/
-inline unsigned short PVRTByteSwap16(unsigned short ui16Short)
-{
- return (ui16Short >> 8) | (ui16Short << 8);
-}
-
-/*!***************************************************************************
- @brief Returns true if the platform the code is ran on is little endian.
- @return True if the platform the code is ran on is little endian
-*****************************************************************************/
-inline bool PVRTIsLittleEndian()
-{
- static bool bLittleEndian;
- static bool bIsInit = false;
-
- if (!bIsInit)
- {
- short int word = 0x0001;
- char* byte = (char*) &word;
- bLittleEndian = byte[0] ? true : false;
- bIsInit = true;
- }
-
- return bLittleEndian;
-}
-
-
-/*!***************************************************************************
- @brief Minimum of a, b. In case of tie, a is returned.
- @return Returns b if a > b, otherwise a
-*****************************************************************************/
-template
-inline const T& PVRTMin(const T& a, const T& b)
-{
- return a > b ? b : a;
-}
-
-/*!***************************************************************************
- @brief Maximum of a, b. In case of tie, a is returned.
- @return Returns b if a < b. otherwise a
-*****************************************************************************/
-template
-inline const T& PVRTMax(const T& a, const T& b)
-{
- return a < b ? b : a;
-}
-
-
-#endif // _PVRTGLOBAL_H_
-
-/*****************************************************************************
- End of file (Tools.h)
-*****************************************************************************/
-
diff --git a/deps/PVRTT/include/PVRTMap.h b/deps/PVRTT/include/PVRTMap.h
deleted file mode 100644
index 7802466214..0000000000
--- a/deps/PVRTT/include/PVRTMap.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/*!****************************************************************************
-
- @file PVRTMap.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief A simple and easy-to-use implementation of a map.
-
-******************************************************************************/
-#ifndef __PVRTMAP_H__
-#define __PVRTMAP_H__
-
-#include "PVRTArray.h"
-
-/*!***************************************************************************
- @class CPVRTMap
- @brief Expanding map template class.
- @details A simple and easy-to-use implementation of a map.
-*****************************************************************************/
-template
-class CPVRTMap
-{
-public:
-
- /*!***********************************************************************
- @brief Constructor for a CPVRTMap.
- @return A new CPVRTMap.
- *************************************************************************/
- CPVRTMap() : m_Keys(), m_Data(), m_uiSize(0)
- {}
-
- /*!***********************************************************************
- @brief Destructor for a CPVRTMap.
- *************************************************************************/
- ~CPVRTMap()
- {
- //Clear the map, that's enough - the CPVRTArray members will tidy everything else up.
- Clear();
- }
-
- EPVRTError Reserve(const PVRTuint32 uiSize)
- {
- //Sets the capacity of each member array to the requested size. The array used will only expand.
- //Returns the most serious error from either method.
- return PVRT_MAX(m_Keys.SetCapacity(uiSize),m_Data.SetCapacity(uiSize));
- }
-
- /*!***********************************************************************
- @brief Returns the number of meaningful members in the map.
- @return Number of meaningful members in the map.
- *************************************************************************/
- PVRTuint32 GetSize() const
- {
- //Return the size.
- return m_uiSize;
- }
-
- /*!***********************************************************************
- @brief Gets the position of a particular key/data within the map.
- If the return value is exactly equal to the value of
- GetSize() then the item has not been found.
- @param[in] key Key type
- @return The index value for a mapped item.
- *************************************************************************/
- PVRTuint32 GetIndexOf(const KeyType key) const
- {
- //Loop through all the valid keys.
- for (PVRTuint32 i=0; i=m_uiSize)
- return NULL;
-
- return &(m_Data[uiIndex]);
- }
-
- /*!***********************************************************************
- @brief If a mapping already exists for 'key' then it will return
- the associated data. If no mapping currently exists, a new
- element is created in place.
- @param[in] key Key type
- @return Data that is mapped to 'key'.
- *************************************************************************/
- DataType& operator[] (const KeyType key)
- {
- //Get the index of the key.
- PVRTuint32 uiIndex = GetIndexOf(key);
-
- //Check the index is valid
- if (uiIndex != m_uiSize)
- {
- //Return mapped data if the index is valid.
- return m_Data[uiIndex];
- }
- else
- {
- //Append the key to the Keys array.
- m_Keys.Append(key);
-
- //Create a new DataType.
- DataType sNewData;
-
- //Append the new pointer to the Data array.
- m_Data.Append(sNewData);
-
- //Increment the size of meaningful data.
- ++m_uiSize;
-
- //Return the contents of pNewData.
- return m_Data[m_Keys.GetSize()-1];
- }
- }
-
- /*!***********************************************************************
- @brief Removes an element from the map if it exists.
- @param[in] key Key type
- @return Returns PVR_FAIL if item doesn't exist.
- Otherwise returns PVR_SUCCESS.
- *************************************************************************/
- EPVRTError Remove(const KeyType key)
- {
- //Finds the index of the key.
- PVRTuint32 uiIndex=GetIndexOf(key);
-
- //If the key is invalid, fail.
- if (uiIndex==m_uiSize)
- {
- //Return failure.
- return PVR_FAIL;
- }
-
- //Decrement the size of the map to ignore the last element in each array.
- m_uiSize--;
-
- //Copy the last key over the deleted key. There are now two copies of one element,
- //but the one at the end of the array is ignored.
- m_Keys[uiIndex] = m_Keys[m_uiSize]; m_Keys.RemoveLast();
-
- //Copy the last data over the deleted data in the same way as the keys.
- m_Data[uiIndex] = m_Data[m_uiSize]; m_Data.RemoveLast();
-
- //Return success.
- return PVR_SUCCESS;
- }
-
- /*!***********************************************************************
- @brief Clears the Map of all data values.
- *************************************************************************/
- void Clear()
- {
- //Set the size to 0.
- m_uiSize=0;
- m_Keys.Clear();
- m_Data.Clear();
- }
-
- /*!***********************************************************************
- @brief Checks whether or not data exists for the specified key.
- @param[in] key Key type
- @return Whether data exists for the specified key or not.
- *************************************************************************/
- bool Exists(const KeyType key) const
- {
- //Checks for a valid index for key, if not, returns false.
- return (GetIndexOf(key) != m_uiSize);
- }
-
-private:
-
-
- CPVRTArray m_Keys; /*!< Array of all the keys. Indices match m_Data. */
-
- CPVRTArray m_Data; /*!< Array of pointers to all the allocated data. */
-
- PVRTuint32 m_uiSize; /*!< The number of meaningful members in the map. */
-};
-
-#endif // __PVRTMAP_H__
-
-/*****************************************************************************
-End of file (PVRTMap.h)
-*****************************************************************************/
-
diff --git a/deps/PVRTT/include/PVRTString.h b/deps/PVRTT/include/PVRTString.h
deleted file mode 100644
index 5138ca39d5..0000000000
--- a/deps/PVRTT/include/PVRTString.h
+++ /dev/null
@@ -1,925 +0,0 @@
-/*!****************************************************************************
-
- @file PVRTString.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief A string class that can be used as drop-in replacement for
- std::string on platforms/compilers that don't provide a full C++
- standard library.
-
-******************************************************************************/
-#ifndef _PVRTSTRING_H_
-#define _PVRTSTRING_H_
-
-#include
-#define _USING_PVRTSTRING_
-
-/*!***************************************************************************
- @class CPVRTString
- @brief A string class.
-*****************************************************************************/
-
-#if defined(_WINDLL_EXPORT)
-class __declspec(dllexport) CPVRTString
-#elif defined(_WINDLL_IMPORT)
-class __declspec(dllimport) CPVRTString
-#else
-class CPVRTString
-#endif
-{
-
-private:
-
- // Checking printf and scanf format strings
-#if defined(_CC_GNU_) || defined(__GNUG__) || defined(__GNUC__)
-#define FX_PRINTF(fmt,arg) __attribute__((format(printf,fmt,arg)))
-#define FX_SCANF(fmt,arg) __attribute__((format(scanf,fmt,arg)))
-#else
-#define FX_PRINTF(fmt,arg)
-#define FX_SCANF(fmt,arg)
-#endif
-
-public:
- typedef size_t size_type;
- typedef char value_type;
- typedef char& reference;
- typedef const char& const_reference;
-
- static const size_type npos;
-
-
-
-
- /*!***********************************************************************
- @brief CPVRTString constructor.
- @param[in] _Ptr A string
- @param[in] _Count Length of _Ptr
- ************************************************************************/
- CPVRTString(const char* _Ptr, size_t _Count = npos);
-
- /*!***********************************************************************
- @brief CPVRTString constructor.
- @param[in] _Right A string
- @param[in] _Roff Offset into _Right
- @param[in] _Count Number of chars from _Right to assign to the new string
- ************************************************************************/
- CPVRTString(const CPVRTString& _Right, size_t _Roff = 0, size_t _Count = npos);
-
- /*!***********************************************************************
- @brief CPVRTString constructor.
- @param[in] _Count Length of new string
- @param[in] _Ch A char to fill it with
- *************************************************************************/
- CPVRTString(size_t _Count, const char _Ch);
-
- /*!***********************************************************************
- @brief Constructor.
- @param[in] _Ch A char
- *************************************************************************/
- CPVRTString(const char _Ch);
-
- /*!***********************************************************************
- @brief Constructor.
- ************************************************************************/
- CPVRTString();
-
- /*!***********************************************************************
- @brief Destructor.
- ************************************************************************/
- virtual ~CPVRTString();
-
- /*!***********************************************************************
- @brief Appends a string.
- @param[in] _Ptr A string
- @return Updated string
- *************************************************************************/
- CPVRTString& append(const char* _Ptr);
-
- /*!***********************************************************************
- @brief Appends a string of length _Count.
- @param[in] _Ptr A string
- @param[in] _Count String length
- @return Updated string
- *************************************************************************/
- CPVRTString& append(const char* _Ptr, size_t _Count);
-
- /*!***********************************************************************
- @brief Appends a string.
- @param[in] _Str A string
- @return Updated string
- *************************************************************************/
- CPVRTString& append(const CPVRTString& _Str);
-
- /*!***********************************************************************
- @brief Appends _Count letters of _Str from _Off in _Str.
- @param[in] _Str A string
- @param[in] _Off A position in string
- @param[in] _Count Number of letters to append
- @return Updated string
- *************************************************************************/
- CPVRTString& append(const CPVRTString& _Str, size_t _Off, size_t _Count);
-
- /*!***********************************************************************
- @brief Appends _Ch _Count times.
- @param[in] _Ch A char
- @param[in] _Count Number of times to append _Ch
- @return Updated string
- *************************************************************************/
- CPVRTString& append(size_t _Count, const char _Ch);
-
- //template CPVRTString& append(InputIterator _First, InputIterator _Last);
-
- /*!***********************************************************************
- @brief Assigns the string to the string _Ptr.
- @param[in] _Ptr A string
- @return Updated string
- *************************************************************************/
- CPVRTString& assign(const char* _Ptr);
-
- /*!***********************************************************************
- @brief Assigns the string to the string _Ptr.
- @param[in] _Ptr A string
- @param[in] _Count Length of _Ptr
- @return Updated string
- *************************************************************************/
- CPVRTString& assign(const char* _Ptr, size_t _Count);
-
- /*!***********************************************************************
- @brief Assigns the string to the string _Str.
- @param[in] _Str A string
- @return Updated string
- *************************************************************************/
- CPVRTString& assign(const CPVRTString& _Str);
-
- /*!***********************************************************************
- @brief Assigns the string to _Count characters in string _Str starting at _Off.
- @param[in] _Str A string
- @param[in] _Off First char to start assignment from
- @param[in] _Count Length of _Str
- @return Updated string
- *************************************************************************/
- CPVRTString& assign(const CPVRTString& _Str, size_t _Off, size_t _Count=npos);
-
- /*!***********************************************************************
- @brief Assigns the string to _Count copies of _Ch.
- @param[in] _Ch A string
- @param[in] _Count Number of times to repeat _Ch
- @return Updated string
- *************************************************************************/
- CPVRTString& assign(size_t _Count, char _Ch);
-
- //template CPVRTString& assign(InputIterator _First, InputIterator _Last);
-
- //const_reference at(size_t _Off) const;
- //reference at(size_t _Off);
-
- // const_iterator begin() const;
- // iterator begin();
-
- /*!***********************************************************************
- @brief Returns a const char* pointer of the string.
- @return const char* pointer of the string
- *************************************************************************/
- const char* c_str() const;
-
- /*!***********************************************************************
- @brief Returns the size of the character array reserved.
- @return The size of the character array reserved
- *************************************************************************/
- size_t capacity() const;
-
- /*!***********************************************************************
- @brief Clears the string.
- *************************************************************************/
- void clear();
-
- /*!***********************************************************************
- @brief Compares the string with _Str.
- @param[in] _Str A string to compare with
- @return 0 if the strings match
- *************************************************************************/
- int compare(const CPVRTString& _Str) const;
-
- /*!***********************************************************************
- @brief Compares the string with _Str.
- @param[in] _Pos1 Position to start comparing from
- @param[in] _Num1 Number of chars to compare
- @param[in] _Str A string to compare with
- @return 0 if the strings match
- *************************************************************************/
- int compare(size_t _Pos1, size_t _Num1, const CPVRTString& _Str) const;
-
- /*!***********************************************************************
- @brief Compares the string with _Str.
- @param[in] _Pos1 Position to start comparing from
- @param[in] _Num1 Number of chars to compare
- @param[in] _Str A string to compare with
- @param[in] _Off Position in _Str to compare from
- @param[in] _Count Number of chars in _Str to compare with
- @return 0 if the strings match
- *************************************************************************/
- int compare(size_t _Pos1, size_t _Num1, const CPVRTString& _Str, size_t _Off, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Compares the string with _Ptr.
- @param[in] _Ptr A string to compare with
- @return 0 if the strings match
- *************************************************************************/
- int compare(const char* _Ptr) const;
-
- /*!***********************************************************************
- @brief Compares the string with _Ptr.
- @param[in] _Pos1 Position to start comparing from
- @param[in] _Num1 Number of chars to compare
- @param[in] _Ptr A string to compare with
- @return 0 if the strings match
- *************************************************************************/
- int compare(size_t _Pos1, size_t _Num1, const char* _Ptr) const;
-
- /*!***********************************************************************
- @brief Compares the string with _Str.
- @param[in] _Pos1 Position to start comparing from
- @param[in] _Num1 Number of chars to compare
- @param[in] _Ptr A string to compare with
- @param[in] _Count Number of chars to compare
- @return 0 if the strings match
- *************************************************************************/
- int compare(size_t _Pos1, size_t _Num1, const char* _Ptr, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Less than operator.
- @param[in] _Str A string to compare with
- @return True on success
- *************************************************************************/
- bool operator<(const CPVRTString & _Str) const;
-
- /*!***********************************************************************
- @brief == Operator.
- @param[in] _Str A string to compare with
- @return True if they match
- *************************************************************************/
- bool operator==(const CPVRTString& _Str) const;
-
- /*!***********************************************************************
- @brief == Operator.
- @param[in] _Ptr A string to compare with
- @return True if they match
- *************************************************************************/
- bool operator==(const char* const _Ptr) const;
-
- /*!***********************************************************************
- @brief != Operator.
- @param[in] _Str A string to compare with
- @return True if they don't match
- *************************************************************************/
- bool operator!=(const CPVRTString& _Str) const;
-
- /*!***********************************************************************
- @brief != Operator.
- @param[in] _Ptr A string to compare with
- @return True if they don't match
- *************************************************************************/
- bool operator!=(const char* const _Ptr) const;
-
- /*!***********************************************************************
- @fn copy
- @param[in,out] _Ptr A string to copy to
- @param[in] _Count Size of _Ptr
- @param[in] _Off Position to start copying from
- @return Number of bytes copied
- @brief Copies the string to _Ptr.
- *************************************************************************/
- size_t copy(char* _Ptr, size_t _Count, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @fn data
- @return A const char* version of the string
- @brief Returns a const char* version of the string.
- *************************************************************************/
- const char* data( ) const;
-
- /*!***********************************************************************
- @fn empty
- @return True if the string is empty
- @brief Returns true if the string is empty.
- *************************************************************************/
- bool empty() const;
-
- // const_iterator end() const;
- // iterator end();
-
- //iterator erase(iterator _First, iterator _Last);
- //iterator erase(iterator _It);
-
- /*!***********************************************************************
- @brief Erases a portion of the string.
- @param[in] _Pos The position to start erasing from
- @param[in] _Count Number of chars to erase
- @return An updated string
- *************************************************************************/
- CPVRTString& erase(size_t _Pos = 0, size_t _Count = npos);
-
- /*!***********************************************************************
- @brief Erases a portion of the string.
- @param[in] _src Character to search
- @param[in] _subDes Character to substitute for
- @param[in] _all Substitute all
- @return An updated string
- *************************************************************************/
- CPVRTString& substitute(char _src,char _subDes, bool _all = true);
-
- /*!***********************************************************************
- @brief Erases a portion of the string.
- @param[in] _src Character to search
- @param[in] _subDes Character to substitute for
- @param[in] _all Substitute all
- @return An updated string
- *************************************************************************/
- CPVRTString& substitute(const char* _src, const char* _subDes, bool _all = true);
-
- //size_t find(char _Ch, size_t _Off = 0) const;
- //size_t find(const char* _Ptr, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Finds a substring within this string.
- @param[in] _Ptr String to search.
- @param[in] _Off Offset to search from.
- @param[in] _Count Number of characters in this string.
- @return Position of the first matched string.
- *************************************************************************/
- size_t find(const char* _Ptr, size_t _Off, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Finds a substring within this string.
- @param[in] _Str String to search.
- @param[in] _Off Offset to search from.
- @return Position of the first matched string.
- *************************************************************************/
- size_t find(const CPVRTString& _Str, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the first char that is not _Ch.
- @param[in] _Ch A char
- @param[in] _Off Start position of the find
- @return Position of the first char that is not _Ch
- *************************************************************************/
- size_t find_first_not_of(char _Ch, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the first char that is not in _Ptr.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @return Position of the first char that is not in _Ptr
- *************************************************************************/
- size_t find_first_not_of(const char* _Ptr, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the first char that is not in _Ptr.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @param[in] _Count Number of chars in _Ptr
- @return Position of the first char that is not in _Ptr
- *************************************************************************/
- size_t find_first_not_of(const char* _Ptr, size_t _Off, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Returns the position of the first char that is not in _Str.
- @param[in] _Str A string
- @param[in] _Off Start position of the find
- @return Position of the first char that is not in _Str
- *************************************************************************/
- size_t find_first_not_of(const CPVRTString& _Str, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the first char that is _Ch.
- @param[in] _Ch A char
- @param[in] _Off Start position of the find
- @return Position of the first char that is _Ch
- *************************************************************************/
- size_t find_first_of(char _Ch, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the first char that matches a char in _Ptr.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @return Position of the first char that matches a char in _Ptr
- *************************************************************************/
- size_t find_first_of(const char* _Ptr, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the first char that matches a char in _Ptr.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @param[in] _Count Size of _Ptr
- @return Position of the first char that matches a char in _Ptr
- *************************************************************************/
- size_t find_first_of(const char* _Ptr, size_t _Off, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Returns the position of the first char that matches all chars in _Ptr.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @param[in] _Count Size of _Ptr
- @return Position of the first char that matches a char in _Ptr
- *************************************************************************/
- size_t find_first_ofn(const char* _Ptr, size_t _Off, size_t _Count) const;
-
-
- /*!***********************************************************************
- @brief Returns the position of the first char that matches a char in _Str.
- @param[in] _Str A string
- @param[in] _Off Start position of the find
- @return Position of the first char that matches a char in _Str
- *************************************************************************/
- size_t find_first_of(const CPVRTString& _Str, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the last char that is not _Ch.
- @param[in] _Ch A char
- @param[in] _Off Start position of the find
- @return Position of the last char that is not _Ch
- *************************************************************************/
- size_t find_last_not_of(char _Ch, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the last char that is not in _Ptr.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @return Position of the last char that is not in _Ptr
- *************************************************************************/
- size_t find_last_not_of(const char* _Ptr, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the last char that is not in _Ptr.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @param[in] _Count Length of _Ptr
- @return Position of the last char that is not in _Ptr
- *************************************************************************/
- size_t find_last_not_of(const char* _Ptr, size_t _Off, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Returns the position of the last char that is not in _Str.
- @param[in] _Str A string
- @param[in] _Off Start position of the find
- @return Position of the last char that is not in _Str
- *************************************************************************/
- size_t find_last_not_of(const CPVRTString& _Str, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the last char that is _Ch.
- @param[in] _Ch A char
- @param[in] _Off Start position of the find
- @return Position of the last char that is _Ch
- *************************************************************************/
- size_t find_last_of(char _Ch, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the last char that is in _Ptr.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @return Position of the last char that is in _Ptr
- *************************************************************************/
- size_t find_last_of(const char* _Ptr, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the position of the last char that is in _Ptr.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @param[in] _Count Length of _Ptr
- @return Position of the last char that is in _Ptr
- *************************************************************************/
- size_t find_last_of(const char* _Ptr, size_t _Off, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Returns the position of the last char that is in _Str.
- @param[in] _Str A string
- @param[in] _Off Start position of the find
- @return Position of the last char that is in _Str
- *************************************************************************/
- size_t find_last_of(const CPVRTString& _Str, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the number of occurances of _Ch in the parent string.
- @param[in] _Ch A char
- @param[in] _Off Start position of the find
- @return Number of occurances of _Ch in the parent string.
- *************************************************************************/
- size_t find_number_of(char _Ch, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the number of occurances of _Ptr in the parent string.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @return Number of occurances of _Ptr in the parent string.
- *************************************************************************/
- size_t find_number_of(const char* _Ptr, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the number of occurances of _Ptr in the parent string.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @param[in] _Count Size of _Ptr
- @return Number of occurances of _Ptr in the parent string.
- *************************************************************************/
- size_t find_number_of(const char* _Ptr, size_t _Off, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Returns the number of occurances of _Str in the parent string.
- @param[in] _Str A string
- @param[in] _Off Start position of the find
- @return Number of occurances of _Str in the parent string.
- *************************************************************************/
- size_t find_number_of(const CPVRTString& _Str, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the next occurance of _Ch in the parent string
- after or at _Off. If not found, returns the length of the string.
- @param[in] _Ch A char
- @param[in] _Off Start position of the find
- @return Next occurance of _Ch in the parent string.
- *************************************************************************/
- int find_next_occurance_of(char _Ch, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the next occurance of _Ptr in the parent string
- after or at _Off. If not found, returns the length of the string.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @return Next occurance of _Ptr in the parent string.
- *************************************************************************/
- int find_next_occurance_of(const char* _Ptr, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the next occurance of _Ptr in the parent string
- after or at _Off. If not found, returns the length of the string.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @param[in] _Count Size of _Ptr
- @return Next occurance of _Ptr in the parent string.
- *************************************************************************/
- int find_next_occurance_of(const char* _Ptr, size_t _Off, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Returns the next occurance of _Str in the parent string
- after or at _Off. If not found, returns the length of the string.
- @param[in] _Str A string
- @param[in] _Off Start position of the find
- @return Next occurance of _Str in the parent string.
- *************************************************************************/
- int find_next_occurance_of(const CPVRTString& _Str, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the previous occurance of _Ch in the parent string.
- before _Off. If not found, returns -1.
- @param[in] _Ch A char
- @param[in] _Off Start position of the find
- @return Previous occurance of _Ch in the parent string.
- *************************************************************************/
- int find_previous_occurance_of(char _Ch, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the previous occurance of _Ptr in the parent string.
- before _Off. If not found, returns -1.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @return Previous occurance of _Ptr in the parent string.
- *************************************************************************/
- int find_previous_occurance_of(const char* _Ptr, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @brief Returns the previous occurance of _Ptr in the parent string.
- before _Off. If not found, returns -1.
- @param[in] _Ptr A string
- @param[in] _Off Start position of the find
- @param[in] _Count Size of _Ptr
- @return Previous occurance of _Ptr in the parent string.
- *************************************************************************/
- int find_previous_occurance_of(const char* _Ptr, size_t _Off, size_t _Count) const;
-
- /*!***********************************************************************
- @brief Returns the previous occurance of _Str in the parent string.
- before _Off. If not found, returns -1.
- @param[in] _Str A string
- @param[in] _Off Start position of the find
- @return Previous occurance of _Str in the parent string.
- *************************************************************************/
- int find_previous_occurance_of(const CPVRTString& _Str, size_t _Off = 0) const;
-
- /*!***********************************************************************
- @fn left
- @param[in] iSize number of characters to return (excluding null character)
- @return The leftmost 'iSize' characters of the string.
- @brief Returns the leftmost characters of the string (excluding
- the null character) in a new CPVRTString. If iSize is
- larger than the string, a copy of the original string is returned.
- *************************************************************************/
- CPVRTString left(size_t iSize) const;
-
- /*!***********************************************************************
- @fn right
- @param[in] iSize number of characters to return (excluding null character)
- @return The rightmost 'iSize' characters of the string.
- @brief Returns the rightmost characters of the string (excluding
- the null character) in a new CPVRTString. If iSize is
- larger than the string, a copy of the original string is returned.
- *************************************************************************/
- CPVRTString right(size_t iSize) const;
-
- //allocator_type get_allocator( ) const;
-
- //CPVRTString& insert(size_t _P0, const char* _Ptr);
- //CPVRTString& insert(size_t _P0, const char* _Ptr, size_t _Count);
- //CPVRTString& insert(size_t _P0, const CPVRTString& _Str);
- //CPVRTString& insert(size_t _P0, const CPVRTString& _Str, size_t _Off, size_t _Count);
- //CPVRTString& insert(size_t _P0, size_t _Count, char _Ch);
- //iterator insert(iterator _It, char _Ch = char());
- //template void insert(iterator _It, InputIterator _First, InputIterator _Last);
- //void insert(iterator _It, size_t _Count, char _Ch);
-
- /*!***********************************************************************
- @fn length
- @return Length of the string
- @brief Returns the length of the string.
- *************************************************************************/
- size_t length() const;
-
- /*!***********************************************************************
- @fn max_size
- @return The maximum number of chars that the string can contain
- @brief Returns the maximum number of chars that the string can contain.
- *************************************************************************/
- size_t max_size() const;
-
- /*!***********************************************************************
- @fn push_back
- @param[in] _Ch A char to append
- @brief Appends _Ch to the string.
- *************************************************************************/
- void push_back(char _Ch);
-
- // const_reverse_iterator rbegin() const;
- // reverse_iterator rbegin();
-
- // const_reverse_iterator rend() const;
- // reverse_iterator rend();
-
- //CPVRTString& replace(size_t _Pos1, size_t _Num1, const char* _Ptr);
- //CPVRTString& replace(size_t _Pos1, size_t _Num1, const CPVRTString& _Str);
- //CPVRTString& replace(size_t _Pos1, size_t _Num1, const char* _Ptr, size_t _Num2);
- //CPVRTString& replace(size_t _Pos1, size_t _Num1, const CPVRTString& _Str, size_t _Pos2, size_t _Num2);
- //CPVRTString& replace(size_t _Pos1, size_t _Num1, size_t _Count, char _Ch);
-
- //CPVRTString& replace(iterator _First0, iterator _Last0, const char* _Ptr);
- //CPVRTString& replace(iterator _First0, iterator _Last0, const CPVRTString& _Str);
- //CPVRTString& replace(iterator _First0, iterator _Last0, const char* _Ptr, size_t _Num2);
- //CPVRTString& replace(iterator _First0, iterator _Last0, size_t _Num2, char _Ch);
- //template CPVRTString& replace(iterator _First0, iterator _Last0, InputIterator _First, InputIterator _Last);
-
- /*!***********************************************************************
- @fn reserve
- @param[in] _Count Size of string to reserve
- @brief Reserves space for _Count number of chars.
- *************************************************************************/
- void reserve(size_t _Count = 0);
-
- /*!***********************************************************************
- @fn resize
- @param[in] _Count Size of string to resize to
- @param[in] _Ch Character to use to fill any additional space
- @brief Resizes the string to _Count in length.
- *************************************************************************/
- void resize(size_t _Count, char _Ch = char());
-
- //size_t rfind(char _Ch, size_t _Off = npos) const;
- //size_t rfind(const char* _Ptr, size_t _Off = npos) const;
- //size_t rfind(const char* _Ptr, size_t _Off = npos, size_t _Count) const;
- //size_t rfind(const CPVRTString& _Str, size_t _Off = npos) const;
-
- /*!***********************************************************************
- @fn size
- @return Size of the string
- @brief Returns the size of the string.
- *************************************************************************/
- size_t size() const;
-
- /*!***********************************************************************
- @fn substr
- @param[in] _Off Start of the substring
- @param[in] _Count Length of the substring
- @return A substring of the string
- @brief Returns the size of the string.
- *************************************************************************/
- CPVRTString substr(size_t _Off = 0, size_t _Count = npos) const;
-
- /*!***********************************************************************
- @fn swap
- @param[in] _Str A string to swap with
- @brief Swaps the contents of the string with _Str.
- *************************************************************************/
- void swap(CPVRTString& _Str);
-
- /*!***********************************************************************
- @fn toLower
- @return An updated string
- @brief Converts the string to lower case.
- *************************************************************************/
- CPVRTString& toLower();
-
- /*!***********************************************************************
- @fn toUpper
- @return An updated string
- @brief Converts the string to upper case.
- *************************************************************************/
- CPVRTString& toUpper();
-
- /*!***********************************************************************
- @fn format
- @param[in] pFormat A string containing the formating
- @return A formatted string
- @brief Return the formatted string.
- ************************************************************************/
- CPVRTString format(const char *pFormat, ...);
-
-#ifndef UNDER_CE
- /*!***********************************************************************
- @fn formatPositional
- @param[in] pFormat A string containing the formatting.
- Positional modifiers may be used.
- @return A formatted string
- @brief Return the formatted string.
- ************************************************************************/
- CPVRTString formatPositional(const char *pFormat, ...);
-#endif
-
- /*!***********************************************************************
- @brief += Operator.
- @param[in] _Ch A char
- @return An updated string
- *************************************************************************/
- CPVRTString& operator+=(char _Ch);
-
- /*!***********************************************************************
- @brief += Operator.
- @param[in] _Ptr A string
- @return An updated string
- *************************************************************************/
- CPVRTString& operator+=(const char* _Ptr);
-
- /*!***********************************************************************
- @brief += Operator.
- @param[in] _Right A string
- @return An updated string
- *************************************************************************/
- CPVRTString& operator+=(const CPVRTString& _Right);
-
- /*!***********************************************************************
- @brief = Operator.
- @param[in] _Ch A char
- @return An updated string
- *************************************************************************/
- CPVRTString& operator=(char _Ch);
-
- /*!***********************************************************************
- @brief = Operator.
- @param[in] _Ptr A string
- @return An updated string
- *************************************************************************/
- CPVRTString& operator=(const char* _Ptr);
-
- /*!***********************************************************************
- @brief = Operator.
- @param[in] _Right A string
- @return An updated string
- *************************************************************************/
- CPVRTString& operator=(const CPVRTString& _Right);
-
- /*!***********************************************************************
- @brief [] Operator.
- @param[in] _Off An index into the string
- @return A character
- *************************************************************************/
- const_reference operator[](size_t _Off) const;
-
- /*!***********************************************************************
- @brief [] Operator.
- @param[in] _Off An index into the string
- @return A character
- *************************************************************************/
- reference operator[](size_t _Off);
-
- /*!***********************************************************************
- @brief + Operator.
- @param[in] _Left A string
- @param[in] _Right A string
- @return An updated string
- *************************************************************************/
- friend CPVRTString operator+ (const CPVRTString& _Left, const CPVRTString& _Right);
-
- /*!***********************************************************************
- @brief + Operator.
- @param[in] _Left A string
- @param[in] _Right A string
- @return An updated string
- *************************************************************************/
- friend CPVRTString operator+ (const CPVRTString& _Left, const char* _Right);
-
- /*!***********************************************************************
- @brief + Operator.
- @param[in] _Left A string
- @param[in] _Right A string
- @return An updated string
- *************************************************************************/
- friend CPVRTString operator+ (const CPVRTString& _Left, const char _Right);
-
- /*!***********************************************************************
- @brief + Operator.
- @param[in] _Left A string
- @param[in] _Right A string
- @return An updated string
- *************************************************************************/
- friend CPVRTString operator+ (const char* _Left, const CPVRTString& _Right);
-
-
- /*!***********************************************************************
- @brief + Operator.
- @param[in] _Left A string
- @param[in] _Right A string
- @return An updated string
- *************************************************************************/
- friend CPVRTString operator+ (const char _Left, const CPVRTString& _Right);
-
-protected:
- char* m_pString;
- size_t m_Size;
- size_t m_Capacity;
-};
-
-/*************************************************************************
-* MISCELLANEOUS UTILITY FUNCTIONS
-*************************************************************************/
-/*!***********************************************************************
- @fn PVRTStringGetFileExtension
- @param[in] strFilePath A string
- @return Extension
- @brief Extracts the file extension from a file path.
- Returns an empty CPVRTString if no extension is found.
-************************************************************************/
-CPVRTString PVRTStringGetFileExtension(const CPVRTString& strFilePath);
-
-/*!***********************************************************************
- @fn PVRTStringGetContainingDirectoryPath
- @param[in] strFilePath A string
- @return Directory
- @brief Extracts the directory portion from a file path.
-************************************************************************/
-CPVRTString PVRTStringGetContainingDirectoryPath(const CPVRTString& strFilePath);
-
-/*!***********************************************************************
- @fn PVRTStringGetFileName
- @param[in] strFilePath A string
- @return FileName
- @brief Extracts the name and extension portion from a file path.
-************************************************************************/
-CPVRTString PVRTStringGetFileName(const CPVRTString& strFilePath);
-
-/*!***********************************************************************
- @fn PVRTStringStripWhiteSpaceFromStartOf
- @param[in] strLine A string
- @return Result of the white space stripping
- @brief Strips white space characters from the beginning of a CPVRTString.
-************************************************************************/
-CPVRTString PVRTStringStripWhiteSpaceFromStartOf(const CPVRTString& strLine);
-
-/*!***********************************************************************
- @fn PVRTStringStripWhiteSpaceFromEndOf
- @param[in] strLine A string
- @return Result of the white space stripping
- @brief Strips white space characters from the end of a CPVRTString.
-************************************************************************/
-CPVRTString PVRTStringStripWhiteSpaceFromEndOf(const CPVRTString& strLine);
-
-/*!***********************************************************************
- @fn PVRTStringFromFormattedStr
- @param[in] pFormat A string containing the formating
- @return A formatted string
- @brief Creates a formatted string.
-************************************************************************/
-CPVRTString PVRTStringFromFormattedStr(const char *pFormat, ...);
-
-#ifndef UNDER_CE
-/*!***********************************************************************
-@Function PVRTStringFromFormattedStrPositional
-@Input pFormat A string containing the formatting
- with optional positional qualifiers
-@Returns A formatted string
-@Description Creates a formatted string
-************************************************************************/
-CPVRTString PVRTStringFromFormattedStrPositional(const char *pFormat, ...);
-#endif
-
-#endif // _PVRTSTRING_H_
-
-/*****************************************************************************
-End of file (PVRTString.h)
-*****************************************************************************/
-
diff --git a/deps/PVRTT/include/PVRTTexture.h b/deps/PVRTT/include/PVRTTexture.h
deleted file mode 100644
index 23765f0c0a..0000000000
--- a/deps/PVRTT/include/PVRTTexture.h
+++ /dev/null
@@ -1,736 +0,0 @@
-/*!****************************************************************************
-
- @file PVRTTexture.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief Texture loading.
-
-******************************************************************************/
-#ifndef _PVRTTEXTURE_H_
-#define _PVRTTEXTURE_H_
-
-#include "PVRTGlobal.h"
-
-/*****************************************************************************
-* Texture related constants and enumerations.
-*****************************************************************************/
-// V3 Header Identifiers.
-const PVRTuint32 PVRTEX3_IDENT = 0x03525650; // 'P''V''R'3
-const PVRTuint32 PVRTEX3_IDENT_REV = 0x50565203;
-// If endianness is backwards then PVR3 will read as 3RVP, hence why it is written as an int.
-
-//Current version texture identifiers
-const PVRTuint32 PVRTEX_CURR_IDENT = PVRTEX3_IDENT;
-const PVRTuint32 PVRTEX_CURR_IDENT_REV = PVRTEX3_IDENT_REV;
-
-// PVR Header file flags. Condition if true. If false, opposite is true unless specified.
-const PVRTuint32 PVRTEX3_FILE_COMPRESSED = (1<<0); // Texture has been file compressed using PVRTexLib (currently unused)
-const PVRTuint32 PVRTEX3_PREMULTIPLIED = (1<<1); // Texture has been premultiplied by alpha value.
-
-// Mip Map level specifier constants. Other levels are specified by 1,2...n
-const PVRTint32 PVRTEX_TOPMIPLEVEL = 0;
-const PVRTint32 PVRTEX_ALLMIPLEVELS = -1; //This is a special number used simply to return a total of all MIP levels when dealing with data sizes.
-
-//values for each meta data type that we know about. Texture arrays hinge on each surface being identical in all but content, including meta data.
-//If the meta data varies even slightly then a new texture should be used. It is possible to write your own extension to get around this however.
-enum EPVRTMetaData
-{
- ePVRTMetaDataTextureAtlasCoords=0,
- ePVRTMetaDataBumpData,
- ePVRTMetaDataCubeMapOrder,
- ePVRTMetaDataTextureOrientation,
- ePVRTMetaDataBorderData,
- ePVRTMetaDataPadding,
- ePVRTMetaDataNumMetaDataTypes
-};
-
-enum EPVRTAxis
-{
- ePVRTAxisX = 0,
- ePVRTAxisY = 1,
- ePVRTAxisZ = 2
-};
-
-enum EPVRTOrientation
-{
- ePVRTOrientLeft = 1<
-class CPVRTMap;
-
-
-/*!***********************************************************************
- @fn PVRTGetBitsPerPixel
- @param[in] u64PixelFormat A PVR Pixel Format ID.
- @return const PVRTuint32 Number of bits per pixel.
- @brief Returns the number of bits per pixel in a PVR Pixel Format
- identifier.
-*************************************************************************/
-PVRTuint32 PVRTGetBitsPerPixel(PVRTuint64 u64PixelFormat);
-
-/*!***********************************************************************
- @fn PVRTGetFormatMinDims
- @param[in] u64PixelFormat A PVR Pixel Format ID.
- @param[in,out] minX Returns the minimum width.
- @param[in,out] minY Returns the minimum height.
- @param[in,out] minZ Returns the minimum depth.
- @brief Gets the minimum dimensions (x,y,z) for a given pixel format.
-*************************************************************************/
-void PVRTGetFormatMinDims(PVRTuint64 u64PixelFormat, PVRTuint32 &minX, PVRTuint32 &minY, PVRTuint32 &minZ);
-
-/*!***********************************************************************
- @fn PVRTConvertOldTextureHeaderToV3
- @param[in] LegacyHeader Legacy header for conversion.
- @param[in,out] NewHeader New header to output into.
- @param[in,out] pMetaData MetaData Map to output into.
- @brief Converts a legacy texture header (V1 or V2) to a current
- generation header (V3).
-*************************************************************************/
-void PVRTConvertOldTextureHeaderToV3(const PVR_Texture_Header* LegacyHeader, PVRTextureHeaderV3& NewHeader, CPVRTMap >* pMetaData);
-
-/*!***********************************************************************
- @fn PVRTMapLegacyTextureEnumToNewFormat
- @param[in] OldFormat Legacy Enumeration Value
- @param[in,out] newType New PixelType identifier.
- @param[in,out] newCSpace New ColourSpace
- @param[in,out] newChanType New Channel Type
- @param[in,out] isPreMult Whether format is pre-multiplied
- @brief Maps a legacy enumeration value to the new PVR3 style format.
-*************************************************************************/
-void PVRTMapLegacyTextureEnumToNewFormat(PVRTPixelType OldFormat, PVRTuint64& newType, EPVRTColourSpace& newCSpace, EPVRTVariableType& newChanType, bool& isPreMult);
-
-/*!***************************************************************************
- @fn PVRTTextureLoadTiled
- @param[in,out] pDst Texture to place the tiled data
- @param[in] nWidthDst Width of destination texture
- @param[in] nHeightDst Height of destination texture
- @param[in] pSrc Texture to tile
- @param[in] nWidthSrc Width of source texture
- @param[in] nHeightSrc Height of source texture
- @param[in] nElementSize Bytes per pixel
- @param[in] bTwiddled True if the data is twiddled
- @brief Needed by PVRTTextureTile() in the various PVRTTextureAPIs.
-*****************************************************************************/
-void PVRTTextureLoadTiled(
- PVRTuint8 * const pDst,
- const unsigned int nWidthDst,
- const unsigned int nHeightDst,
- const PVRTuint8 * const pSrc,
- const unsigned int nWidthSrc,
- const unsigned int nHeightSrc,
- const unsigned int nElementSize,
- const bool bTwiddled);
-
-
-/*!***************************************************************************
- @fn PVRTTextureTwiddle
- @param[out] a Twiddled value
- @param[in] u Coordinate axis 0
- @param[in] v Coordinate axis 1
- @brief Combine a 2D coordinate into a twiddled value.
-*****************************************************************************/
-void PVRTTextureTwiddle(unsigned int &a, const unsigned int u, const unsigned int v);
-
-/*!***************************************************************************
- @fn PVRTTextureDeTwiddle
- @param[out] u Coordinate axis 0
- @param[out] v Coordinate axis 1
- @param[in] a Twiddled value
- @brief Extract 2D coordinates from a twiddled value.
-*****************************************************************************/
-void PVRTTextureDeTwiddle(unsigned int &u, unsigned int &v, const unsigned int a);
-
-/*!***********************************************************************
- @fn PVRTGetTextureDataSize
- @param[in] sTextureHeader Specifies the texture header.
- @param[in] iMipLevel Specifies a mip level to check, 'PVRTEX_ALLMIPLEVELS'
- can be passed to get the size of all MIP levels.
- @param[in] bAllSurfaces Size of all surfaces is calculated if true,
- only a single surface if false.
- @param[in] bAllFaces Size of all faces is calculated if true,
- only a single face if false.
- @return PVRTuint32 Size in BYTES of the specified texture area.
- @brief Gets the size in BYTES of the texture, given various input
- parameters. User can retrieve the size of either all
- surfaces or a single surface, all faces or a single face and
- all MIP-Maps or a single specified MIP level.
-*************************************************************************/
-PVRTuint32 PVRTGetTextureDataSize(PVRTextureHeaderV3 sTextureHeader, PVRTint32 iMipLevel=PVRTEX_ALLMIPLEVELS, bool bAllSurfaces = true, bool bAllFaces = true);
-
-#endif /* _PVRTTEXTURE_H_ */
-
-/*****************************************************************************
-End of file (PVRTTexture.h)
-*****************************************************************************/
-
diff --git a/deps/PVRTT/include/PVRTexture.h b/deps/PVRTT/include/PVRTexture.h
deleted file mode 100644
index b1694a7817..0000000000
--- a/deps/PVRTT/include/PVRTexture.h
+++ /dev/null
@@ -1,291 +0,0 @@
-/*!***********************************************************************
-
- @file PVRTexture.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief Contains methods concerning basic CPVRTexture creation, saving
- and data duplication. This is the main class for PVRTexLib.
-
-*************************************************************************/
-
-/*****************************************************************************/
-/*! @mainpage PVRTexLib
-******************************************************************************
-
- @section overview Overview
-*****************************
-
-PVRTexLib is a library for the management of textures. It occupies the @ref pvrtexture
-namespace and allows users to access the PVRTexTool functionality in a library,
-for easy integration with existing tool chains.
-
-PVRTexLib contains the facility to:
- \li Load and save PVR files.
- \li Transcode to and from many different texture formats.
- \li Perform a variety of pre-process techniques on decompressed pixel data.
- \li Provide information about a texture file loaded by the library.
-
- @section pvrtools PVRTools
-*****************************
-A number of header files from the PowerVR SDK Tools libraries are present in PVRTexLib:
- \li PVRTGlobal.h
- \li PVRTError.h
- \li PVRTArray.h
- \li PVRTMap.h
- \li PVRTString.h
- \li PVRTTexture.h
-
-These header files are included in the PVRTexLib package so that separate installation
-of the tools libraries is not required. If PowerVR Graphics SDK Tools are installed,
-documentation for the these files can be found in the ‘Tools’ folder
-in the PowerVR Insider SDK directory.
-
-*/
-
-#ifndef _PVRTEXTURE_H
-#define _PVRTEXTURE_H
-
-#include
-
-#include "PVRTextureHeader.h"
-#include "PVRTString.h"
-
-namespace pvrtexture
-{
- /*!***********************************************************************
- @class CPVRTexture
- @brief A full public texture container format, with support for custom
- meta-data, and complete, optimised, resource loading code into PVRTools.
- *************************************************************************/
- class PVR_DLL CPVRTexture : public CPVRTextureHeader
- {
- public:
- // Construction methods for a texture.
-
- /*!***********************************************************************
- @brief Creates a new empty texture
- @return A new CPVRTexture.
- *************************************************************************/
- CPVRTexture();
-
- /*!***********************************************************************
- @brief Creates a new texture based on a texture header,
- pre-allocating the correct amount of memory. If data is
- supplied, it will be copied into memory.
- @param[in] sHeader Texture header
- @param[in] pData Texture data
- @return A new CPVRTexture.
- *************************************************************************/
- CPVRTexture(const CPVRTextureHeader& sHeader, const void* pData=NULL);
-
- /*!***********************************************************************
- @brief Creates a new texture from a filepath.
- @param[in] szFilePath File path to existing texture
- @return A new CPVRTexture.
- *************************************************************************/
- CPVRTexture(const char* szFilePath);
-
- /*!***********************************************************************
- @brief Creates a new texture from a pointer that includes a header
- structure, meta data and texture data as laid out in a file.
- This functionality is primarily for user-defined file loading.
- Header may be any version of pvr.
- @param[in] pTexture Pointer to texture data
- @return A new CPVRTexture.
- *************************************************************************/
- CPVRTexture( const void* pTexture );
-
- /*!***********************************************************************
- @brief Creates a new texture as a copy of another.
- @param[in] texture Texture to copy
- @return A new CPVRTexture
- *************************************************************************/
- CPVRTexture(const CPVRTexture& texture);
-
- /*!***********************************************************************
- @brief Deconstructor for CPVRTextures.
- *************************************************************************/
- ~CPVRTexture();
-
- /*!***********************************************************************
- @brief Will copy the contents and information of another texture into this one.
- @param[in] rhs Texture to copy
- @return This texture.
- *************************************************************************/
- CPVRTexture& operator=(const CPVRTexture& rhs);
-
- // Texture accessor functions - others are inherited from CPVRTextureHeader.
-
- /*!***********************************************************************
- @brief Returns a pointer into the texture's data.
- @details It is possible to specify an offset to specific array members,
- faces and MIP Map levels.
- @param[in] uiMIPLevel Offset to MIP Map levels
- @param[in] uiArrayMember Offset to array members
- @param[in] uiFaceNumber Offset to face numbers
- @return Pointer to a location in the texture.
- *************************************************************************/
- void* getDataPtr(uint32 uiMIPLevel = 0, uint32 uiArrayMember = 0, uint32 uiFaceNumber = 0) const;
-
- /*!***********************************************************************
- @brief Gets the header for this texture, allowing you to create a new
- texture based on this one with some changes. Useful for passing
- information about a texture without passing all of its data.
- @return Returns the header only for this texture.
- *************************************************************************/
- const CPVRTextureHeader& getHeader() const;
-
- // File io.
-
- /*!***********************************************************************
- @brief When writing the texture out to a PVR file, it is often
- desirable to pad the meta data so that the start of the
- texture data aligns to a given boundary.
- @details This function pads to a boundary value equal to "uiPadding".
- For example setting uiPadding=8 will align the start of the
- texture data to an 8 byte boundary.
- Note - this should be called immediately before saving as
- the value is worked out based on the current meta data size.
- @param[in] uiPadding Padding boundary value
- *************************************************************************/
- void addPaddingMetaData( uint32 uiPadding );
-
- /*!***********************************************************************
- @brief Writes out to a file, given a filename and path.
- @details File type will be determined by the extension present in the string.
- If no extension is present, PVR format will be selected.
- Unsupported formats will result in failure.
- @param[in] filepath File path to write to
- @return True if the method succeeds.
- *************************************************************************/
- bool saveFile(const CPVRTString& filepath) const;
-
- /*!***********************************************************************
- @brief Writes out to a file, stripping any extensions specified
- and appending .pvr. This function is for legacy support only
- and saves out to PVR Version 2 file. The target api must be
- specified in order to save to this format.
- @param[in] filepath File path to write to
- @param[in] eApi Target API
- @return True if the method succeeds.
- *************************************************************************/
- bool saveFileLegacyPVR(const CPVRTString& filepath, ELegacyApi eApi) const;
-
- /*!***********************************************************************
- @brief Saves an ASTC File.
- @param[in] filepath File path to write to
- @return True if the method succeeds.
- *************************************************************************/
- bool saveASTCFile(const CPVRTString& filepath) const;
-
- /*!***********************************************************************
- @brief Convert texture to KTX
- @param[in] out Output stream for KTX data
- *************************************************************************/
- void toKTX(std::ostream & out) const;
-
- /*!***********************************************************************
- @brief Convert texture to ASTC
- @param[in] out Output stream for ASTC data
- *************************************************************************/
- void toASTC(std::ostream & out) const;
-
- /*!***********************************************************************
- @brief Makes a PVRTexture from a KTX file stream
- @param[in] in The KTX file stream
- @return The texture
- *************************************************************************/
- static CPVRTexture fromKTX(std::istream & in);
-
- /*!***********************************************************************
- @brief Makes a PVRTexture from a pointer to an ASTC file in memory
- @param[in] in The ASTC file stream
- @return The texture
- *************************************************************************/
- static CPVRTexture fromASTC(std::istream & in);
-
- private:
- size_t m_stDataSize; //!< Size of the texture data.
- uint8* m_pTextureData; //!< Pointer to texture data.
-
- // Private IO functions
-
- /*!***********************************************************************
- @brief Loads a PVR file.
- @param[in] pTextureFile PVR texture file
- @return True if the method succeeds.
- *************************************************************************/
- bool privateLoadPVRFile(FILE* pTextureFile);
-
- /*!***********************************************************************
- @brief Saves a PVR File.
- @param[in] pTextureFile PVR texture file
- @return True if the method succeeds.
- *************************************************************************/
- bool privateSavePVRFile(FILE* pTextureFile) const;
-
- /*!***********************************************************************
- @brief Loads a KTX file.
- @param[in] pTextureFile KTX texture file
- @return True if the method succeeds.
- *************************************************************************/
- bool privateLoadKTXFile(FILE* pTextureFile);
- bool privateLoadKTXFile(std::istream & in);
-
- /*!***********************************************************************
- @brief Saves a KTX File.
- @param[in] pTextureFile KTX texture file
- @return True if the method succeeds.
- *************************************************************************/
- bool privateSaveKTXFile(FILE* pTextureFile) const;
-
- /*!***********************************************************************
- @brief Loads a DDS file.
- @param[in] pTextureFile DDS texture file
- @return True if the method succeeds.
- *************************************************************************/
- bool privateLoadDDSFile(FILE* pTextureFile);
-
- /*!***********************************************************************
- @brief Saves a DDS File.
- @param[in] pTextureFile DDS texture file
- @return True if the method succeeds.
- *************************************************************************/
- bool privateSaveDDSFile(FILE* pTextureFile) const;
-
- /*!***********************************************************************
- @brief Loads an ASTC file.
- @param[in] pTextureFile ASTC texture file
- @return True if the method succeeds.
- *************************************************************************/
- bool privateLoadASTCFile(FILE* pTextureFile);
- bool privateLoadASTCFile(std::istream & in);
-
- /*!***********************************************************************
- @brief Saves an ASTC file.
- @param[in] pTextureFile ASTC texture file
- @return True if the method succeeds.
- *************************************************************************/
- bool privateSaveASTCFile(FILE* pTextureFile) const;
-
- //Legacy IO
-
- /*!***********************************************************************
- @brief Saves a .h File. Legacy operator
- @param[in] pTextureFile PVR texture file
- @param[in] filename File path to write to
- @return True if the method succeeds.
- *************************************************************************/
- bool privateSaveCHeaderFile(FILE* pTextureFile, CPVRTString filename) const;
-
- /*!***********************************************************************
- @brief Saves a legacy PVR File - Uses version 2 file format.
- @param[in] pTextureFile PVR texture file
- @param[in] eApi Target API
- @return True if the method succeeds.
- *************************************************************************/
- bool privateSaveLegacyPVRFile(FILE* pTextureFile, ELegacyApi eApi) const;
- };
-}
-
-#endif //_PVRTEXTURE_H
-
diff --git a/deps/PVRTT/include/PVRTextureDefines.h b/deps/PVRTT/include/PVRTextureDefines.h
deleted file mode 100644
index cb66e55eff..0000000000
--- a/deps/PVRTT/include/PVRTextureDefines.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*!***********************************************************************
-
- @file PVRTextureDefines.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief Method, template and type defines for PVRTexture.
-
-*************************************************************************/
-
-#ifndef _PVRTEXTURE_DEFINES_H
-#define _PVRTEXTURE_DEFINES_H
-
-//To use the PVRTexLib .dll on Windows, you need to define _WINDLL_IMPORT
-#ifndef PVR_DLL
-#if defined(_WINDLL_EXPORT)
-#define PVR_DLL __declspec(dllexport)
-//Forward declaration of various classes/structs used by this library. This exports their interfaces for DLLs.
-struct PVR_DLL PVRTextureHeaderV3;
-struct PVR_DLL MetaDataBlock;
-template
-class PVR_DLL CPVRTMap;
-template
-class PVR_DLL CPVRTArray;
-class PVR_DLL CPVRTString;
-#elif defined(_WINDLL_IMPORT)
-#define PVR_DLL __declspec(dllimport)
-//Forward declaration of various classes/structs used by this library. This imports their interfaces for DLLs.
-struct PVR_DLL PVRTextureHeaderV3;
-struct PVR_DLL MetaDataBlock;
-template
-class PVR_DLL CPVRTMap;
-template
-class PVR_DLL CPVRTArray;
-class PVR_DLL CPVRTString;
-#else
-
-/*!***********************************************************************
- @def PVR_DLL
- @brief Required to use PVRTexLib.dll on Windows.
-*************************************************************************/
-#define PVR_DLL
-#endif
-#endif
-
-#include "PVRTTexture.h"
-
-/*!***********************************************************************
- @namespace pvrtexture
- @brief PVRTexture namespace. Contains methods and classes for PVRTexLib.
-*************************************************************************/
-namespace pvrtexture
-{
- // Type defines for standard variable sizes.
-
- typedef signed char int8; //!< Signed 8 bit integer
- typedef signed short int16; //!< Signed 16 bit integer
- typedef signed int int32; //!< Signed 32 bit integer
- typedef signed long long int64; //!< Signed 64 bit integer
- typedef unsigned char uint8; //!< Unsigned 8 bit integer
- typedef unsigned short uint16; //!< Unsigned 16 bit integer
- typedef unsigned int uint32; //!< Unsigned 32 bit integer
- typedef unsigned long long uint64; //!< Unsigned 64 bit integer
-
- // Texture related constants and enumerations.
-
- /*!***********************************************************************
- @enum ECompressorQuality
- @brief Quality level to compress the texture with. Currently valid with
- ETC and PVRTC formats.
- *************************************************************************/
- enum ECompressorQuality
- {
- ePVRTCFastest=0, //!< PVRTC fastest
- ePVRTCFast, //!< PVRTC fast
- ePVRTCNormal, //!< PVRTC normal
- ePVRTCHigh, //!< PVRTC high
- ePVRTCBest, //!< PVRTC best
- eNumPVRTCModes, //!< Number of PVRTC modes
-
- eETCFast=0, //!< ETC fast
- eETCFastPerceptual, //!< ETC fast perceptual
- eETCSlow, //!< ETC slow
- eETCSlowPerceptual, //!< ETC slow perceptual
- eNumETCModes, //!< Number of ETC modes
-
- eASTCVeryFast=0, //!< ASTC very fast
- eASTCFast, //!< ASTC fast
- eASTCMedium, //!< ASTC medium
- eASTCThorough, //!< ASTC thorough
- eASTCExhaustive, //!< ASTC exhaustive
- eNumASTCModes //!< Number of ASTC modes
- };
-
- /*!***********************************************************************
- @enum EResizeMode
- @brief Texture resize mode
- *************************************************************************/
- enum EResizeMode
- {
- eResizeNearest, //!< Nearest filtering
- eResizeLinear, //!< Linear filtering
- eResizeCubic, //!< Cubic filtering, uses Catmull-Rom splines.
- eNumResizeModes //!< Number of resize modes
- };
-
- /*!***********************************************************************
- @enum ELegacyApi
- @brief Legacy API enum.
- *************************************************************************/
- enum ELegacyApi
- {
- eOGLES=1, //!< OpenGL ES 1.x
- eOGLES2, //!< OpenGL ES 2.0
- eD3DM, //!< Direct 3D M
- eOGL, //!< Open GL
- eDX9, //!< DirextX 9
- eDX10, //!< DirectX 10
- eOVG, //!< Open VG
- eMGL, //!< MGL
- };
-
- // Useful macros.
- /*!***************************************************************************
- @def TEXOFFSET2D
- @brief 2D texture offset
- *****************************************************************************/
- #define TEXOFFSET2D(x,y,width) ( ((x)+(y)*(width)) )
-
- /*!***************************************************************************
- @def TEXOFFSET3D
- @brief 3D texture offset
- *****************************************************************************/
- #define TEXOFFSET3D(x,y,z,width,height) ( ((x)+(y)*(width)+(z)*(width)*(height)) )
-
- /*!***************************************************************************
- @typedef MetaDataMap
- @brief Useful typedef for generating maps of MetaData blocks.
- *****************************************************************************/
- typedef CPVRTMap > MetaDataMap;
-}
-#endif //_PVRTEXTURE_DEFINES_H
diff --git a/deps/PVRTT/include/PVRTextureFormat.h b/deps/PVRTT/include/PVRTextureFormat.h
deleted file mode 100644
index 48627ec278..0000000000
--- a/deps/PVRTT/include/PVRTextureFormat.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef _PVRT_PIXEL_FORMAT_H
-#define _PVRT_PIXEL_FORMAT_H
-
-#include "PVRTextureDefines.h"
-#include "PVRTString.h"
-
-namespace pvrtexture
-{
- //Channel Names
- enum EChannelName
- {
- eNoChannel,
- eRed,
- eGreen,
- eBlue,
- eAlpha,
- eLuminance,
- eIntensity,
- eUnspecified,
- eNumChannels
- };
-
- //PixelType union
- union PVR_DLL PixelType
- {
- /*!***********************************************************************
- @Function PixelType
- @Return A new PixelType
- @Description Creates an empty pixeltype.
- *************************************************************************/
- PixelType();
-
- /*!***********************************************************************
- @Function PixelType
- @Input Type
- @Return A new PixelType
- @Description Initialises a new pixel type from a 64 bit integer value.
- *************************************************************************/
- PixelType(uint64 Type);
-
- /*!***********************************************************************
- @Function PixelType
- @Input C1Name
- @Input C2Name
- @Input C3Name
- @Input C4Name
- @Input C1Bits
- @Input C2Bits
- @Input C3Bits
- @Input C4Bits
- @Return A new PixelType
- @Description Takes up to 4 characters (CnName) and 4 values (CnBits)
- to create a new PixelType. Any unused channels should be set to 0.
- For example: PixelType('r','g','b',0,8,8,8,0);
- *************************************************************************/
- PixelType(uint8 C1Name, uint8 C2Name, uint8 C3Name, uint8 C4Name, uint8 C1Bits, uint8 C2Bits, uint8 C3Bits, uint8 C4Bits);
-
- struct PVR_DLL LowHigh
- {
- uint32 Low;
- uint32 High;
- } Part;
-
- uint64 PixelTypeID;
- uint8 PixelTypeChar[8];
- };
-
- static const PixelType PVRStandard8PixelType = PixelType('r','g','b','a',8,8,8,8);
- static const PixelType PVRStandard16PixelType = PixelType('r','g','b','a',16,16,16,16);
- static const PixelType PVRStandard32PixelType = PixelType('r','g','b','a',32,32,32,32);
-}
-
-#endif
diff --git a/deps/PVRTT/include/PVRTextureHeader.h b/deps/PVRTT/include/PVRTextureHeader.h
deleted file mode 100644
index f6109416b5..0000000000
--- a/deps/PVRTT/include/PVRTextureHeader.h
+++ /dev/null
@@ -1,552 +0,0 @@
-/*!***********************************************************************
-
- @file PVRTextureHeader.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief Texture header methods.
- @details Includes pixel and channel type methods, size retrieval and
- dimension manipulation. As well as set and get methods for
- BumpMaps, Meta Data and cube map order.
-
-*************************************************************************/
-
-#ifndef _PVRTEXTURE_HEADER_H
-#define _PVRTEXTURE_HEADER_H
-
-#include "PVRTextureDefines.h"
-#include "PVRTextureFormat.h"
-#include "PVRTString.h"
-#include "PVRTMap.h"
-
-namespace pvrtexture
-{
- /*!***********************************************************************
- @class CPVRTextureHeader
- @brief Wrapper class for PVRTextureHeaderV3, adds 'smart' accessor functions.
- *************************************************************************/
- class PVR_DLL CPVRTextureHeader
- {
- protected:
- PVRTextureHeaderV3 m_sHeader; //!< Texture header as laid out in a file.
- CPVRTMap > m_MetaData; //!< Map of all the meta data stored for a texture.
-
- public:
- // Construction methods for a texture header.
- /*!***********************************************************************
- @brief Default constructor for a CPVRTextureHeader. Returns an empty header.
- @return A new texture header.
- *************************************************************************/
- CPVRTextureHeader();
-
- /*!***********************************************************************
- @brief Creates a new texture header from a PVRTextureHeaderV3,
- and appends Meta data if any is supplied.
- @param[in] fileHeader PVRTextureHeaderV3
- @param[in] metaDataCount Number of Meta data blocks to add
- @param[in] metaData Pointer to meta data block
- @return A new texture header.
- *************************************************************************/
- CPVRTextureHeader( PVRTextureHeaderV3 fileHeader,
- uint32 metaDataCount=0,
- MetaDataBlock* metaData=NULL);
-
- /*!***********************************************************************
- @brief Creates a new texture header based on individual header
- variables.
- @param[in] u64PixelFormat PixelFormat
- @param[in] u32Height Texture height
- @param[in] u32Width Texture width
- @param[in] u32Depth Texture depth
- @param[in] u32NumMipMaps Number of MIP Maps
- @param[in] u32NumArrayMembers Number of array members
- @param[in] u32NumFaces Number of faces
- @param[in] eColourSpace Colour space
- @param[in] eChannelType Channel type
- @param[in] bPreMultiplied Whether or not the texture's colour has been
- pre-multiplied by the alpha values
- @return A new texture header.
- *************************************************************************/
- CPVRTextureHeader( uint64 u64PixelFormat,
- uint32 u32Height=1,
- uint32 u32Width=1,
- uint32 u32Depth=1,
- uint32 u32NumMipMaps=1,
- uint32 u32NumArrayMembers=1,
- uint32 u32NumFaces=1,
- EPVRTColourSpace eColourSpace=ePVRTCSpacelRGB,
- EPVRTVariableType eChannelType=ePVRTVarTypeUnsignedByteNorm,
- bool bPreMultiplied=false);
-
- /*!***********************************************************************
- @brief Deconstructor for CPVRTextureHeader.
- *************************************************************************/
- ~CPVRTextureHeader();
-
- /*!***********************************************************************
- @brief Will copy the contents and information of another header into this one.
- @param[in] rhs Header to copy.
- @return This header.
- *************************************************************************/
- CPVRTextureHeader& operator=(const CPVRTextureHeader& rhs);
-
- // Accessor Methods for a texture's properties - getters.
-
- /*!***********************************************************************
- @brief Gets the file header structure.
- @return The file header.
- *************************************************************************/
- PVRTextureHeaderV3 getFileHeader() const;
-
- /*!***********************************************************************
- @brief Gets the 64-bit pixel type ID of the texture.
- @return 64-bit pixel type ID.
- *************************************************************************/
- PixelType getPixelType() const;
-
- /*!***********************************************************************
- @brief Gets the bits per pixel of the texture format.
- @return Number of bits per pixel.
- *************************************************************************/
- uint32 getBitsPerPixel() const;
-
- /*!***********************************************************************
- @brief Returns the colour space of the texture.
- @return enum representing colour space.
- *************************************************************************/
- EPVRTColourSpace getColourSpace() const;
-
- /*!***********************************************************************
- @brief Returns the variable type that the texture's data is stored in.
- @return enum representing the type of the texture.
- *************************************************************************/
- EPVRTVariableType getChannelType() const;
-
- /*!***********************************************************************
- @brief Gets the width of the user specified MIP-Map
- level for the texture
- @param[in] uiMipLevel MIP level that user is interested in.
- @return Width of the specified MIP-Map level.
- *************************************************************************/
- uint32 getWidth(uint32 uiMipLevel=PVRTEX_TOPMIPLEVEL) const;
-
- /*!***********************************************************************
- @brief Gets the height of the user specified MIP-Map
- level for the texture
- @param[in] uiMipLevel MIP level that user is interested in.
- @return Height of the specified MIP-Map level.
- *************************************************************************/
- uint32 getHeight(uint32 uiMipLevel=PVRTEX_TOPMIPLEVEL) const;
-
- /*!***********************************************************************
- @brief Gets the depth of the user specified MIP-Map
- level for the texture
- @param[in] uiMipLevel MIP level that user is interested in.
- @return Depth of the specified MIP-Map level.
- *************************************************************************/
- uint32 getDepth(uint32 uiMipLevel=PVRTEX_TOPMIPLEVEL) const;
-
- /*!***********************************************************************
- @brief Gets the size in PIXELS of the texture, given various input
- parameters. User can retrieve the total size of either all
- surfaces or a single surface, all faces or a single face and
- all MIP-Maps or a single specified MIP level. All of these
- @param[in] iMipLevel Specifies a MIP level to check,
- 'PVRTEX_ALLMIPLEVELS' can be passed to get
- the size of all MIP levels.
- @param[in] bAllSurfaces Size of all surfaces is calculated if true,
- only a single surface if false.
- @param[in] bAllFaces Size of all faces is calculated if true,
- only a single face if false.
- @return Size in PIXELS of the specified texture area.
- *************************************************************************/
- uint32 getTextureSize(int32 iMipLevel=PVRTEX_ALLMIPLEVELS, bool bAllSurfaces = true, bool bAllFaces = true) const;
-
- /*!***********************************************************************
- @brief Gets the size in BYTES of the texture, given various input
- parameters. User can retrieve the size of either all
- surfaces or a single surface, all faces or a single face
- and all MIP-Maps or a single specified MIP level.
- @param[in] iMipLevel Specifies a mip level to check,
- 'PVRTEX_ALLMIPLEVELS' can be passed to get
- the size of all MIP levels.
- @param[in] bAllSurfaces Size of all surfaces is calculated if true,
- only a single surface if false.
- @param[in] bAllFaces Size of all faces is calculated if true,
- only a single face if false.
- @return Size in BYTES of the specified texture area.
- *************************************************************************/
- uint32 getDataSize(int32 iMipLevel=PVRTEX_ALLMIPLEVELS, bool bAllSurfaces = true, bool bAllFaces = true) const;
-
- /*!***********************************************************************
- @brief Gets the number of array members stored in this texture.
- @return Number of array members in this texture.
- *************************************************************************/
- uint32 getNumArrayMembers() const;
-
- /*!***********************************************************************
- @brief Gets the number of MIP-Map levels stored in this texture.
- @return Number of MIP-Map levels in this texture.
- *************************************************************************/
- uint32 getNumMIPLevels() const;
-
- /*!***********************************************************************
- @brief Gets the number of faces stored in this texture.
- @return Number of faces in this texture.
- *************************************************************************/
- uint32 getNumFaces() const;
-
- /*!***********************************************************************
- @brief Gets the data orientation for this texture.
- @param[in] axis EPVRTAxis type specifying the axis to examine.
- @return Enum orientation of the axis.
- *************************************************************************/
- EPVRTOrientation getOrientation(EPVRTAxis axis) const;
-
- /*!***********************************************************************
- @brief Returns whether or not the texture is compressed using
- PVRTexLib's FILE compression - this is independent of
- any texture compression.
- @return True if it is file compressed.
- *************************************************************************/
- bool isFileCompressed() const;
-
- /*!***********************************************************************
- @brief Returns whether or not the texture's colour has been
- pre-multiplied by the alpha values.
- @return True if texture is premultiplied.
- *************************************************************************/
- bool isPreMultiplied() const;
-
- /*!***********************************************************************
- @brief Returns the total size of the meta data stored in the header.
- This includes the size of all information stored in all MetaDataBlocks.
- @return Size, in bytes, of the meta data stored in the header.
- *************************************************************************/
- uint32 getMetaDataSize() const;
-
- /*!***********************************************************************
- @brief Gets the OpenGL equivalent values of internal format, format
- and type for this texture. This will return any supported
- OpenGL texture values, it is up to the user to decide if
- these are valid for their current platform.
- @param[in,out] internalformat Internal format
- @param[in,out] format Format
- @param[in,out] type Type
- *************************************************************************/
- void getOGLFormat(uint32& internalformat, uint32& format, uint32& type) const;
-
- /*!***********************************************************************
- @brief Gets the OpenGLES equivalent values of internal format,
- format and type for this texture. This will return any
- supported OpenGLES texture values, it is up to the user
- to decide if these are valid for their current platform.
- @param[in,out] internalformat Internal format
- @param[in,out] format Format
- @param[in,out] type Type
- *************************************************************************/
- void getOGLESFormat(uint32& internalformat, uint32& format, uint32& type) const;
-
- /*!***********************************************************************
- @brief Gets the Vulkan equivalent values for this texture.
- This will return any supported Vulkan texture formats, it is up to
- the user to decide if these are valid for their current platform.
- @return VkFormat, represented by a uint32.
- *************************************************************************/
- uint32 getVulkanFormat() const;
-
- /*!***********************************************************************
- @brief Gets the D3DFormat (up to DirectX 9 and Direct 3D Mobile)
- equivalent values for this texture. This will return any
- supported D3D texture formats, it is up to the user to
- decide if this is valid for their current platform.
- @return D3D format, represented by an uint32.
- *************************************************************************/
- uint32 getD3DFormat() const;
-
- /*!***********************************************************************
- @brief Gets the DXGIFormat (DirectX 10 onward) equivalent values
- for this texture. This will return any supported DX texture
- formats, it is up to the user to decide if this is valid
- for their current platform.
- @return DXGIFormat, represented by a uint32.
- *************************************************************************/
- uint32 getDXGIFormat() const;
-
- // Accessor Methods for a texture's properties - setters.
-
- /*!***********************************************************************
- @brief Sets the pixel format for this texture.
- @param[in] uPixelFormat The format of the pixel.
- *************************************************************************/
- void setPixelFormat(PixelType uPixelFormat);
-
- /*!***********************************************************************
- @brief Sets the colour space for this texture. Default is lRGB.
- @param[in] eColourSpace A colour space enum.
- *************************************************************************/
- void setColourSpace(EPVRTColourSpace eColourSpace);
-
- /*!***********************************************************************
- @brief Sets the variable type for the channels in this texture.
- @param[in] eVarType A variable type enum.
- *************************************************************************/
- void setChannelType(EPVRTVariableType eVarType);
-
- /*!***********************************************************************
- @brief Sets the format of the texture to PVRTexLib's internal
- representation of the OGL format.
- @param[in,out] internalformat Internal format
- @param[in,out] format Format
- @param[in,out] type Type
- @return True if successful.
- *************************************************************************/
- bool setOGLFormat(const uint32& internalformat, const uint32& format, const uint32& type);
-
- /*!***********************************************************************
- @brief Sets the format of the texture to PVRTexLib's internal
- representation of the OGLES format.
- @param[in,out] internalformat Internal format
- @param[in,out] format Format
- @param[in,out] type Type
- @return True if successful.
- *************************************************************************/
- bool setOGLESFormat(const uint32& internalformat, const uint32& format, const uint32& type);
-
- /*!***********************************************************************
- @brief Sets the format of the texture to PVRTexLib's internal
- representation of the D3D format.
- @return True if successful.
- *************************************************************************/
- bool setD3DFormat(const uint32& DWORD_D3D_FORMAT);
-
- /*!***********************************************************************
- @brief Sets the format of the texture to PVRTexLib's internal
- representation of the DXGI format.
- @return True if successful.
- *************************************************************************/
- bool setDXGIFormat(const uint32& DWORD_DXGI_FORMAT);
-
- /*!***********************************************************************
- @brief Sets the width.
- @param[in] newWidth The new width.
- *************************************************************************/
- void setWidth(uint32 newWidth);
-
- /*!***********************************************************************
- @brief Sets the height.
- @param[in] newHeight The new height.
- *************************************************************************/
- void setHeight(uint32 newHeight);
-
- /*!***********************************************************************
- @brief Sets the depth.
- @param[in] newDepth The new depth.
- *************************************************************************/
- void setDepth(uint32 newDepth);
-
- /*!***********************************************************************
- @brief Sets the depth.
- @param[in] newNumMembers The new number of members in this array.
- *************************************************************************/
- void setNumArrayMembers(uint32 newNumMembers);
-
- /*!***********************************************************************
- @brief Sets the number of MIP-Map levels in this texture.
- @param[in] newNumMIPLevels New number of MIP-Map levels.
- *************************************************************************/
- void setNumMIPLevels(uint32 newNumMIPLevels);
-
- /*!***********************************************************************
- @brief Sets the number of faces stored in this texture.
- @param[in] newNumFaces New number of faces for this texture.
- *************************************************************************/
- void setNumFaces(uint32 newNumFaces);
-
- /*!***********************************************************************
- @brief Sets the data orientation for a given axis in this texture.
- @param[in] eAxisOrientation Enum specifying axis and orientation.
- *************************************************************************/
- void setOrientation(EPVRTOrientation eAxisOrientation);
-
- /*!***********************************************************************
- @brief Sets whether or not the texture is compressed using
- PVRTexLib's FILE compression - this is independent of
- any texture compression. Currently unsupported.
- @param[in] isFileCompressed Sets file compression to true/false.
- *************************************************************************/
- void setIsFileCompressed(bool isFileCompressed);
-
- /*!***********************************************************************
- @brief Sets whether or not the texture's colour has been
- pre-multiplied by the alpha values.
- @return isPreMultiplied Sets if texture is premultiplied.
- *************************************************************************/
- void setIsPreMultiplied(bool isPreMultiplied);
-
- // Meta Data functions - Getters.
-
- /*!***********************************************************************
- @brief Returns whether the texture is a bump map or not.
- @return True if the texture is a bump map.
- *************************************************************************/
- bool isBumpMap() const;
-
- /*!***********************************************************************
- @brief Gets the bump map scaling value for this texture.
- @details If the texture is not a bump map, 0.0f is returned. If the
- texture is a bump map but no meta data is stored to
- specify its scale, then 1.0f is returned.
- @return Returns the bump map scale value as a float.
- *************************************************************************/
- float getBumpMapScale() const;
-
- /*!***********************************************************************
- @brief Gets the bump map channel order relative to rgba.
- @details For example, an RGB texture with bumps mapped to XYZ returns
- 'xyz'. A BGR texture with bumps in the order ZYX will also
- return 'xyz' as the mapping is the same: R=X, G=Y, B=Z.
- If the letter 'h' is present in the string, it means that
- the height map has been stored here.
- Other characters are possible if the bump map was created
- manually, but PVRTexLib will ignore these characters. They
- are returned simply for completeness.
- @return Bump map order relative to rgba.
- *************************************************************************/
- CPVRTString getBumpMapOrder() const;
-
- /*!***********************************************************************
- @brief Works out the number of possible texture atlas members in
- the texture based on the w/h/d and the data size.
- @return The number of sub textures defined by meta data.
- *************************************************************************/
- int getNumTextureAtlasMembers() const;
-
- /*!***********************************************************************
- @brief Returns a pointer to the texture atlas data.
- @return A pointer directly to the texture atlas data.
- *************************************************************************/
- const float* getTextureAtlasData() const;
-
- /*!***********************************************************************
- @brief Gets the cube map face order.
- @details Returned string will be in the form "ZzXxYy" with capitals
- representing positive and small letters representing
- negative. I.e. Z=Z-Positive, z=Z-Negative.
- @return Cube map order string.
- *************************************************************************/
- CPVRTString getCubeMapOrder() const;
-
- /*!***********************************************************************
- @brief Obtains the border size in each dimension for this texture.
- @param[in] uiBorderWidth Border width
- @param[in] uiBorderHeight Border height
- @param[in] uiBorderDepth Border depth
- *************************************************************************/
- void getBorder(uint32& uiBorderWidth, uint32& uiBorderHeight, uint32& uiBorderDepth) const;
-
- /*!***********************************************************************
- @brief Returns a block of meta data from the texture. If the meta
- data doesn't exist, a block with data size 0 will be returned.
- @param[in] DevFOURCC Four character descriptor representing the
- creator of the meta data
- @param[in] u32Key Key value representing the type of meta
- data stored
- @return A copy of the meta data from the texture.
- *************************************************************************/
- MetaDataBlock getMetaData(uint32 DevFOURCC, uint32 u32Key) const;
-
- /*!***********************************************************************
- @brief Returns whether or not the specified meta data exists as
- part of this texture header.
- @param[in] DevFOURCC Four character descriptor representing the
- creator of the meta data
- @param[in] u32Key Key value representing the type of meta
- data stored
- @return True if the specified meta data bock exists
- *************************************************************************/
- bool hasMetaData(uint32 DevFOURCC, uint32 u32Key) const;
-
- /*!***********************************************************************
- @brief A pointer directly to the Meta Data Map, to allow users to read out data.
- @return A direct pointer to the MetaData map.
- *************************************************************************/
- const MetaDataMap* getMetaDataMap() const;
-
- // Meta Data functions - Setters.
-
- /*!***********************************************************************
- @brief Sets a texture's bump map data.
- @param[in] bumpScale Floating point "height" value to scale the bump map.
- @param[in] bumpOrder Up to 4 character string, with values x,y,z,h in
- some combination. Not all values need to be present.
- Denotes channel order; x,y,z refer to the
- corresponding axes, h indicates presence of the
- original height map. It is possible to have only some
- of these values rather than all. For example if 'h'
- is present alone it will be considered a height map.
- The values should be presented in RGBA order, regardless
- of the texture format, so a zyxh order in a bgra texture
- should still be passed as 'xyzh'. Capitals are allowed.
- Any character stored here that is not one of x,y,z,h
- or a NULL character will be ignored when PVRTexLib
- reads the data, but will be preserved. This is useful
- if you wish to define a custom data channel for instance.
- In these instances PVRTexLib will assume it is simply
- colour data.
- *************************************************************************/
- void setBumpMap(float bumpScale, CPVRTString bumpOrder="xyz");
-
- /*!***********************************************************************
- @brief Sets the texture atlas coordinate meta data for later display.
- It is up to the user to make sure that this texture atlas
- data actually makes sense in the context of the header. It is
- suggested that the "generateTextureAtlas" method in the tools
- is used to create a texture atlas, manually setting one up is
- possible but should be done with care.
- @param[in] pAtlasData Pointer to an array of atlas data.
- @param[in] dataSize Number of floats that the data pointer contains.
- *************************************************************************/
- void setTextureAtlas(float* pAtlasData, uint32 dataSize);
-
- /*!***********************************************************************
- @brief Sets a texture's bump map data.
- @param[in] cubeMapOrder Up to 6 character string, with values
- x,X,y,Y,z,Z in some combination. Not all
- values need to be present. Denotes face
- order; Capitals refer to positive axis
- positions and small letters refer to
- negative axis positions. E.g. x=X-Negative,
- X=X-Positive. It is possible to have only
- some of these values rather than all, as
- long as they are NULL terminated.
- NB: Values past the 6th character are not read.
- *************************************************************************/
- void setCubeMapOrder(CPVRTString cubeMapOrder="XxYyZz");
-
- /*!***********************************************************************
- @brief Sets a texture's border size data. This value is subtracted
- from the current texture height/width/depth to get the valid
- texture data.
- @param[in] uiBorderWidth Border width
- @param[in] uiBorderHeight Border height
- @param[in] uiBorderDepth Border depth
- *************************************************************************/
- void setBorder(uint32 uiBorderWidth, uint32 uiBorderHeight, uint32 uiBorderDepth);
-
- /*!***********************************************************************
- @brief Adds an arbitrary piece of meta data.
- @param[in] MetaBlock Meta data block to be added.
- *************************************************************************/
- void addMetaData(const MetaDataBlock& MetaBlock);
-
- /*!***********************************************************************
- @brief Removes a specified piece of meta data, if it exists.
- @param[in] DevFOURCC Four character descriptor representing the
- creator of the meta data
- @param[in] u32Key Key value representing the type of meta
- data stored
- *************************************************************************/
- void removeMetaData(const uint32& DevFOURCC, const uint32& u32Key);
- };
-}
-
-#endif
diff --git a/deps/PVRTT/include/PVRTextureUtilities.h b/deps/PVRTT/include/PVRTextureUtilities.h
deleted file mode 100644
index 7aabe1a721..0000000000
--- a/deps/PVRTT/include/PVRTextureUtilities.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/*!***********************************************************************
-
- @file PVRTextureUtilities.h
- @copyright Copyright (c) Imagination Technologies Limited.
- @brief This is the main PVRTexLib header file. This header contains
- a utility function for transcoding textures, as well as
- pre-processor utilities such as; resizing, rotating, channel
- copying and MIPMap manipulation.
-
-*************************************************************************/
-
-#ifndef _PVRTEXTURE_UTILITIES_H
-#define _PVRTEXTURE_UTILITIES_H
-
-#include "PVRTextureFormat.h"
-#include "PVRTexture.h"
-
-namespace pvrtexture
-{
- /*!***********************************************************************
- @brief Resizes the texture to new specified dimensions. Filtering
- mode is specified with "eResizeMode".
- @param[in] sTexture Texture to resize
- @param[in] u32NewWidth New width
- @param[in] u32NewHeight New height
- @param[in] u32NewDepth New depth
- @param[in] eResizeMode Filtering mode
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL Resize(CPVRTexture& sTexture, const uint32& u32NewWidth, const uint32& u32NewHeight, const uint32& u32NewDepth, const EResizeMode eResizeMode);
-
- /*!***********************************************************************
- @brief Resizes the canvas of a texture to new specified dimensions. Filtering
- mode is specified with "eResizeMode".
- @details Offset area is filled with transparent black colour.
- @param[in] sTexture Texture
- @param[in] u32NewWidth New width
- @param[in] u32NewHeight New height
- @param[in] u32NewDepth New depth
- @param[in] i32XOffset X Offset value from the top left corner
- @param[in] i32YOffset Y Offset value from the top left corner
- @param[in] i32ZOffset Z Offset value from the top left corner
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL ResizeCanvas(CPVRTexture& sTexture, const uint32& u32NewWidth, const uint32& u32NewHeight, const uint32& u32NewDepth, const int32& i32XOffset, const int32& i32YOffset, const int32& i32ZOffset);
-
- /*!***********************************************************************
- @brief Rotates a texture by 90 degrees around the given axis. bForward controls direction of rotation.
- @param[in] sTexture Texture to rotate
- @param[in] eRotationAxis Rotation axis
- @param[in] bForward Direction of rotation; 1 = clockwise, 0 = anti-clockwise
- @return True if the method succeeds or not.
- *************************************************************************/
- bool PVR_DLL Rotate90(CPVRTexture& sTexture, const EPVRTAxis eRotationAxis, const bool bForward);
-
- /*!***********************************************************************
- @brief Flips a texture in a given direction.
- @param[in] sTexture Texture to flip
- @param[in] eFlipDirection Flip direction
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL Flip(CPVRTexture& sTexture, const EPVRTAxis eFlipDirection);
-
- /*!***********************************************************************
- @brief Adds a user specified border to the texture.
- @param[in] sTexture Texture
- @param[in] uiBorderX X border
- @param[in] uiBorderY Y border
- @param[in] uiBorderZ Z border
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL Border(CPVRTexture& sTexture, uint32 uiBorderX, uint32 uiBorderY, uint32 uiBorderZ);
-
- /*!***********************************************************************
- @brief Pre-multiplies a texture's colours by its alpha values.
- @param[in] sTexture Texture to premultiply
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL PreMultiplyAlpha(CPVRTexture& sTexture);
-
- /*!***********************************************************************
- @brief Allows a texture's colours to run into any fully transparent areas.
- @param[in] sTexture Texture
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL Bleed(CPVRTexture& sTexture);
-
- /*!***********************************************************************
- @brief Sets the specified number of channels to values specified in pValues.
- @param[in] sTexture Texture
- @param[in] uiNumChannelSets Number of channels to set
- @param[in] eChannels Channels to set
- @param[in] pValues uint32 values to set channels to
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL SetChannels(CPVRTexture& sTexture, uint32 uiNumChannelSets, EChannelName *eChannels, uint32 *pValues);
-
- /*!***********************************************************************
- @brief Sets the specified number of channels to values specified in float pValues.
- @param[in] sTexture Texture
- @param[in] uiNumChannelSets Number of channels to set
- @param[in] eChannels Channels to set
- @param[in] pValues float values to set channels to
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL SetChannelsFloat(CPVRTexture& sTexture, uint32 uiNumChannelSets, EChannelName *eChannels, float *pValues);
-
- /*!***********************************************************************
- @brief Copies the specified channels from sTextureSource into sTexture.
- @details sTextureSource is not modified so it is possible to use the
- same texture as both input and output. When using the same
- texture as source and destination, channels are preserved
- between swaps (e.g. copying Red to Green and then Green to Red
- will result in the two channels trading places correctly).
- Channels in eChannels are set to the value of the channels
- in eChannelSource.
- @param[in] sTexture Destination texture to copy channels to
- @param[in] sTextureSource Source texture to copy channels from
- @param[in] uiNumChannelCopies Number of channels to copy
- @param[in] eChannels Channels to set
- @param[in] eChannelsSource Source channels to copy from
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL CopyChannels(CPVRTexture& sTexture, const CPVRTexture& sTextureSource, uint32 uiNumChannelCopies, EChannelName *eChannels, EChannelName *eChannelsSource);
-
- /*!***********************************************************************
- @brief Generates a Normal Map from a given height map.
- @details Assumes the red channel has the height values.
- By default outputs to red/green/blue = x/y/z,
- this can be overridden by specifying a channel
- order in sChannelOrder. The channels specified
- will output to red/green/blue/alpha in that order.
- So "xyzh" maps x to red, y to green, z to blue
- and h to alpha. 'h' is used to specify that the
- original height map data should be preserved in
- the given channel.
- @param[in] sTexture Texture
- @param[in] fScale Scale factor
- @param[in] sChannelOrder Channel order
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL GenerateNormalMap(CPVRTexture& sTexture, const float fScale, CPVRTString sChannelOrder);
-
- /*!***********************************************************************
- @brief Generates MIPMaps for a source texture. Default is to
- create a complete MIPMap chain, however this can be
- overridden with uiMIPMapsToDo.
- @param[in] sTexture Texture
- @param[in] eFilterMode Filter mode
- @param[in] uiMIPMapsToDo Level of MIPMap chain to create
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL GenerateMIPMaps(CPVRTexture& sTexture, const EResizeMode eFilterMode, const uint32 uiMIPMapsToDo=PVRTEX_ALLMIPLEVELS);
-
- /*!***********************************************************************
- @brief Colours a texture's MIPMap levels with artificial colours
- for debugging. MIP levels are coloured in the following order:
- Red, Green, Blue, Cyan, Magenta and Yellow
- in a repeating pattern.
- @param[in] sTexture Texture
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL ColourMIPMaps(CPVRTexture& sTexture);
-
- /*!***********************************************************************
- @brief Transcodes a texture from its original format into a newly specified format.
- Will either quantise or dither to lower precisions based on bDoDither.
- uiQuality specifies the quality for PVRTC and ETC compression.
- @param[in] sTexture Texture
- @param[in] ptFormat Pixel format type
- @param[in] eChannelType Channel type
- @param[in] eColourspace Colour space
- @param[in] eQuality Quality for PVRTC and ETC compression
- @param[in] bDoDither Dither the texture to lower precisions
- @return True if the method succeeds.
- *************************************************************************/
- bool PVR_DLL Transcode(CPVRTexture& sTexture, const PixelType ptFormat, const EPVRTVariableType eChannelType, const EPVRTColourSpace eColourspace, const ECompressorQuality eQuality=ePVRTCNormal, const bool bDoDither=false);
-}
-#endif //_PVRTEXTURE_UTILTIES_H
-
diff --git a/deps/PVRTT/include/PVRTextureVersion.h b/deps/PVRTT/include/PVRTextureVersion.h
deleted file mode 100644
index 872f17e86d..0000000000
--- a/deps/PVRTT/include/PVRTextureVersion.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef PVRTEXLIBVERSION_H
-#define PVRTEXLIBVERSION_H
-#define PVRTLMAJORVERSION 4
-#define PVRTLMINORVERSION 22
-#define PVRTLSUBVERSION 0
-#define PVRTLSTRINGVERSION "4.22.0"
-#endif
diff --git a/deps/PVRTT/linux-x64/PVRTexLib.so b/deps/PVRTT/linux-x64/PVRTexLib.so
new file mode 100755
index 0000000000..6f6885b832
--- /dev/null
+++ b/deps/PVRTT/linux-x64/PVRTexLib.so
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ecc516b705f99497d4201dd3da0925d9b5172eabc2d66e0fab7801634a9c0c66
+size 6510344
diff --git a/deps/PVRTT/source/PVRTDecompress.cpp b/deps/PVRTT/source/PVRTDecompress.cpp
deleted file mode 100644
index 000e24cf8a..0000000000
--- a/deps/PVRTT/source/PVRTDecompress.cpp
+++ /dev/null
@@ -1,956 +0,0 @@
-/******************************************************************************
-
- @File PVRTDecompress.cpp
-
- @Title PVRTDecompress
-
- @Version
-
- @Copyright Copyright (c) Imagination Technologies Limited.
-
- @Platform ANSI compatible
-
- @Description PVRTC Texture Decompression.
-
-******************************************************************************/
-
-/*****************************************************************************
- * INCLUDES
- *****************************************************************************/
-#include
-#include
-#include
-#include
-#include
-#include "PVRTDecompress.h"
-#include "PVRTTexture.h"
-#include "PVRTGlobal.h"
-
-/***********************************************************
- DECOMPRESSION ROUTINES
-************************************************************/
-/*****************************************************************************
- * Useful structs
- *****************************************************************************/
-struct Pixel32
-{
- PVRTuint8 red,green,blue,alpha;
-};
-
-struct Pixel128S
-{
- PVRTint32 red,green,blue,alpha;
-};
-
-struct PVRTCWord
-{
- PVRTuint32 u32ModulationData;
- PVRTuint32 u32ColourData;
-};
-
-struct PVRTCWordIndices
-{
- int P[2], Q[2], R[2], S[2];
-};
-/********************************************************************************/
-/*!***********************************************************************
- @Function getColourA
- @Input u32ColourData Colour information from a PVRTCWord.
- @Return Returns the first colour in a PVRTCWord's colour data.
- @Description Decodes the first colour in a PVRTCWord's colour data.
-*************************************************************************/
-static Pixel32 getColourA(PVRTuint32 u32ColourData)
-{
- Pixel32 colour;
-
- // Opaque Colour Mode - RGB 554
- if ((u32ColourData & 0x8000) != 0)
- {
- colour.red = (PVRTuint8)((u32ColourData & 0x7c00) >> 10); // 5->5 bits
- colour.green = (PVRTuint8)((u32ColourData & 0x3e0) >> 5); // 5->5 bits
- colour.blue = (PVRTuint8)(u32ColourData & 0x1e) | ((u32ColourData & 0x1e) >> 4); // 4->5 bits
- colour.alpha = (PVRTuint8)0xf;// 0->4 bits
- }
- // Transparent Colour Mode - ARGB 3443
- else
- {
- colour.red = (PVRTuint8)((u32ColourData & 0xf00) >> 7) | ((u32ColourData & 0xf00) >> 11); // 4->5 bits
- colour.green = (PVRTuint8)((u32ColourData & 0xf0) >> 3) | ((u32ColourData & 0xf0) >> 7); // 4->5 bits
- colour.blue = (PVRTuint8)((u32ColourData & 0xe) << 1) | ((u32ColourData & 0xe) >> 2); // 3->5 bits
- colour.alpha = (PVRTuint8)((u32ColourData & 0x7000) >> 11);// 3->4 bits - note 0 at right
- }
-
- return colour;
-}
-
-/*!***********************************************************************
- @Function getColourB
- @Input u32ColourData Colour information from a PVRTCWord.
- @Return Returns the second colour in a PVRTCWord's colour data.
- @Description Decodes the second colour in a PVRTCWord's colour data.
-*************************************************************************/
-static Pixel32 getColourB(PVRTuint32 u32ColourData)
-{
- Pixel32 colour;
-
- // Opaque Colour Mode - RGB 555
- if (u32ColourData & 0x80000000)
- {
- colour.red = (PVRTuint8)((u32ColourData & 0x7c000000) >> 26); // 5->5 bits
- colour.green = (PVRTuint8)((u32ColourData & 0x3e00000) >> 21); // 5->5 bits
- colour.blue = (PVRTuint8)((u32ColourData & 0x1f0000) >> 16); // 5->5 bits
- colour.alpha = (PVRTuint8)0xf;// 0 bits
- }
- // Transparent Colour Mode - ARGB 3444
- else
- {
- colour.red = (PVRTuint8)(((u32ColourData & 0xf000000) >> 23) | ((u32ColourData & 0xf000000) >> 27)); // 4->5 bits
- colour.green = (PVRTuint8)(((u32ColourData & 0xf00000) >> 19) | ((u32ColourData & 0xf00000) >> 23)); // 4->5 bits
- colour.blue = (PVRTuint8)(((u32ColourData & 0xf0000) >> 15) | ((u32ColourData & 0xf0000) >> 19)); // 4->5 bits
- colour.alpha = (PVRTuint8)((u32ColourData & 0x70000000) >> 27);// 3->4 bits - note 0 at right
- }
-
- return colour;
-}
-
-/*!***********************************************************************
- @Function interpolateColours
- @Input P,Q,R,S Low bit-rate colour values for each PVRTCWord.
- @Modified pPixel Output array for upscaled colour values.
- @Input ui8Bpp Number of bpp.
- @Description Bilinear upscale from 2x2 pixels to 4x4/8x4 pixels (depending on PVRTC bpp mode).
-*************************************************************************/
-static void interpolateColours(Pixel32 P, Pixel32 Q, Pixel32 R, Pixel32 S,
- Pixel128S *pPixel, PVRTuint8 ui8Bpp)
-{
- PVRTuint32 ui32WordWidth=4;
- PVRTuint32 ui32WordHeight=4;
- if (ui8Bpp==2)
- ui32WordWidth=8;
-
- //Convert to int 32.
- Pixel128S hP = {(PVRTint32)P.red,(PVRTint32)P.green,(PVRTint32)P.blue,(PVRTint32)P.alpha};
- Pixel128S hQ = {(PVRTint32)Q.red,(PVRTint32)Q.green,(PVRTint32)Q.blue,(PVRTint32)Q.alpha};
- Pixel128S hR = {(PVRTint32)R.red,(PVRTint32)R.green,(PVRTint32)R.blue,(PVRTint32)R.alpha};
- Pixel128S hS = {(PVRTint32)S.red,(PVRTint32)S.green,(PVRTint32)S.blue,(PVRTint32)S.alpha};
-
- //Get vectors.
- Pixel128S QminusP = {hQ.red - hP.red, hQ.green - hP.green, hQ.blue - hP.blue, hQ.alpha - hP.alpha};
- Pixel128S SminusR = {hS.red - hR.red, hS.green - hR.green, hS.blue - hR.blue, hS.alpha - hR.alpha};
-
- //Multiply colours.
- hP.red *= ui32WordWidth;
- hP.green *= ui32WordWidth;
- hP.blue *= ui32WordWidth;
- hP.alpha *= ui32WordWidth;
- hR.red *= ui32WordWidth;
- hR.green *= ui32WordWidth;
- hR.blue *= ui32WordWidth;
- hR.alpha *= ui32WordWidth;
-
- if (ui8Bpp==2)
- {
- //Loop through pixels to achieve results.
- for (unsigned int x=0; x < ui32WordWidth; x++)
- {
- Pixel128S Result={4*hP.red, 4*hP.green, 4*hP.blue, 4*hP.alpha};
- Pixel128S dY = {hR.red - hP.red, hR.green - hP.green, hR.blue - hP.blue, hR.alpha - hP.alpha};
-
- for (unsigned int y=0; y < ui32WordHeight; y++)
- {
- pPixel[y*ui32WordWidth+x].red = (PVRTint32)((Result.red >> 7) + (Result.red >> 2));
- pPixel[y*ui32WordWidth+x].green = (PVRTint32)((Result.green >> 7) + (Result.green >> 2));
- pPixel[y*ui32WordWidth+x].blue = (PVRTint32)((Result.blue >> 7) + (Result.blue >> 2));
- pPixel[y*ui32WordWidth+x].alpha = (PVRTint32)((Result.alpha >> 5) + (Result.alpha >> 1));
-
- Result.red += dY.red;
- Result.green += dY.green;
- Result.blue += dY.blue;
- Result.alpha += dY.alpha;
- }
-
- hP.red += QminusP.red;
- hP.green += QminusP.green;
- hP.blue += QminusP.blue;
- hP.alpha += QminusP.alpha;
-
- hR.red += SminusR.red;
- hR.green += SminusR.green;
- hR.blue += SminusR.blue;
- hR.alpha += SminusR.alpha;
- }
- }
- else
- {
- //Loop through pixels to achieve results.
- for (unsigned int y=0; y < ui32WordHeight; y++)
- {
- Pixel128S Result={4*hP.red, 4*hP.green, 4*hP.blue, 4*hP.alpha};
- Pixel128S dY = {hR.red - hP.red, hR.green - hP.green, hR.blue - hP.blue, hR.alpha - hP.alpha};
-
- for (unsigned int x=0; x < ui32WordWidth; x++)
- {
- pPixel[y*ui32WordWidth+x].red = (PVRTint32)((Result.red >> 6) + (Result.red >> 1));
- pPixel[y*ui32WordWidth+x].green = (PVRTint32)((Result.green >> 6) + (Result.green >> 1));
- pPixel[y*ui32WordWidth+x].blue = (PVRTint32)((Result.blue >> 6) + (Result.blue >> 1));
- pPixel[y*ui32WordWidth+x].alpha = (PVRTint32)((Result.alpha >> 4) + (Result.alpha));
-
- Result.red += dY.red;
- Result.green += dY.green;
- Result.blue += dY.blue;
- Result.alpha += dY.alpha;
- }
-
- hP.red += QminusP.red;
- hP.green += QminusP.green;
- hP.blue += QminusP.blue;
- hP.alpha += QminusP.alpha;
-
- hR.red += SminusR.red;
- hR.green += SminusR.green;
- hR.blue += SminusR.blue;
- hR.alpha += SminusR.alpha;
- }
- }
-}
-
-/*!***********************************************************************
- @Function unpackModulations
- @Input word PVRTCWord to be decompressed
- @Input offsetX X position within the PVRTCWord
- @Input offsetY Y position within the PVRTCWord
- @Modified i32ModulationValues The array of modulation values.
- @Modified i32ModulationModes The array of modulation modes.
- @Input ui8Bpp Number of bpp.
- @Description Reads out and decodes the modulation values within the a given PVRTCWord
-*************************************************************************/
-static void unpackModulations(const PVRTCWord& word, int offsetX, int offsetY, PVRTint32 i32ModulationValues[16][8], PVRTint32 i32ModulationModes[16][8], PVRTuint8 ui8Bpp)
-{
- PVRTuint32 WordModMode = word.u32ColourData & 0x1;
- PVRTuint32 ModulationBits = word.u32ModulationData;
-
- // Unpack differently depending on 2bpp or 4bpp modes.
- if (ui8Bpp==2)
- {
- if(WordModMode)
- {
- // determine which of the three modes are in use:
-
- // If this is the either the H-only or V-only interpolation mode...
- if(ModulationBits & 0x1)
- {
- // look at the "LSB" for the "centre" (V=2,H=4) texel. Its LSB is now
- // actually used to indicate whether it's the H-only mode or the V-only...
-
- // The centre texel data is the at (y==2, x==4) and so its LSB is at bit 20.
- if(ModulationBits & (0x1 << 20))
- {
- // This is the V-only mode
- WordModMode = 3;
- }
- else
- {
- // This is the H-only mode
- WordModMode = 2;
- }
-
- // Create an extra bit for the centre pixel so that it looks like
- // we have 2 actual bits for this texel. It makes later coding much easier.
- if(ModulationBits & (0x1 << 21))
- {
- // set it to produce code for 1.0
- ModulationBits |= (0x1 << 20);
- }
- else
- {
- // clear it to produce 0.0 code
- ModulationBits &= ~(0x1 << 20);
- }
- }// end if H-Only or V-Only interpolation mode was chosen
-
- if(ModulationBits & 0x2)
- {
- ModulationBits |= 0x1; /*set it*/
- }
- else
- {
- ModulationBits &= ~0x1; /*clear it*/
- }
-
- // run through all the pixels in the block. Note we can now treat all the
- // "stored" values as if they have 2bits (even when they didn't!)
- for(int y = 0; y < 4; y++)
- {
- for(int x = 0; x < 8; x++)
- {
- i32ModulationModes[x+offsetX][y+offsetY] = WordModMode;
-
- // if this is a stored value...
- if(((x^y)&1) == 0)
- {
- i32ModulationValues[x+offsetX][y+offsetY] = ModulationBits & 3;
- ModulationBits >>= 2;
- }
- }
- } // end for y
- }
- // else if direct encoded 2bit mode - i.e. 1 mode bit per pixel
- else
- {
- for(int y = 0; y < 4; y++)
- {
- for(int x = 0; x < 8; x++)
- {
- i32ModulationModes[x+offsetX][y+offsetY] = WordModMode;
-
- /*
- // double the bits so 0=> 00, and 1=>11
- */
- if(ModulationBits & 1)
- {
- i32ModulationValues[x+offsetX][y+offsetY] = 0x3;
- }
- else
- {
- i32ModulationValues[x+offsetX][y+offsetY] = 0x0;
- }
- ModulationBits >>= 1;
- }
- }// end for y
- }
- }
- else
- {
- //Much simpler than the 2bpp decompression, only two modes, so the n/8 values are set directly.
- // run through all the pixels in the word.
- if (WordModMode)
- {
- for(int y = 0; y < 4; y++)
- {
- for(int x = 0; x < 4; x++)
- {
- i32ModulationValues[y+offsetY][x+offsetX] = ModulationBits & 3;
- //if (i32ModulationValues==0) {}; don't need to check 0, 0 = 0/8.
- if (i32ModulationValues[y+offsetY][x+offsetX]==1) { i32ModulationValues[y+offsetY][x+offsetX]=4;}
- else if (i32ModulationValues[y+offsetY][x+offsetX]==2) { i32ModulationValues[y+offsetY][x+offsetX]=14;} //+10 tells the decompressor to punch through alpha.
- else if (i32ModulationValues[y+offsetY][x+offsetX]==3) { i32ModulationValues[y+offsetY][x+offsetX]=8;}
- ModulationBits >>= 2;
- } // end for x
- } // end for y
- }
- else
- {
- for(int y = 0; y < 4; y++)
- {
- for(int x = 0; x < 4; x++)
- {
- i32ModulationValues[y+offsetY][x+offsetX] = ModulationBits & 3;
- i32ModulationValues[y+offsetY][x+offsetX]*=3;
- if (i32ModulationValues[y+offsetY][x+offsetX]>3) i32ModulationValues[y+offsetY][x+offsetX]-=1;
- ModulationBits >>= 2;
- } // end for x
- } // end for y
- }
- }
-}
-
-/*!***********************************************************************
- @Function getModulationValues
- @Input i32ModulationValues The array of modulation values.
- @Input i32ModulationModes The array of modulation modes.
- @Input xPos The x Position within the current word.
- @Input yPos The y Position within the current word.
- @Input ui8Bpp Number of bpp.
- @Return Returns the modulation value.
- @Description Gets the effective modulation values for a given pixel.
-*************************************************************************/
-static PVRTint32 getModulationValues(PVRTint32 i32ModulationValues[16][8],PVRTint32 i32ModulationModes[16][8],PVRTuint32 xPos,PVRTuint32 yPos,PVRTuint8 ui8Bpp)
-{
- if (ui8Bpp==2)
- {
- const int RepVals0[4] = {0, 3, 5, 8};
-
- // extract the modulation value. If a simple encoding
- if(i32ModulationModes[xPos][yPos]==0)
- {
- return RepVals0[i32ModulationValues[xPos][yPos]];
- }
- else
- {
- // if this is a stored value
- if(((xPos^yPos)&1)==0)
- {
- return RepVals0[i32ModulationValues[xPos][yPos]];
- }
-
- // else average from the neighbours
- // if H&V interpolation...
- else if(i32ModulationModes[xPos][yPos] == 1)
- {
- return (RepVals0[i32ModulationValues[xPos][yPos-1]] +
- RepVals0[i32ModulationValues[xPos][yPos+1]] +
- RepVals0[i32ModulationValues[xPos-1][yPos]] +
- RepVals0[i32ModulationValues[xPos+1][yPos]] + 2) / 4;
- }
- // else if H-Only
- else if(i32ModulationModes[xPos][yPos] == 2)
- {
- return (RepVals0[i32ModulationValues[xPos-1][yPos]] +
- RepVals0[i32ModulationValues[xPos+1][yPos]] + 1) / 2;
- }
- // else it's V-Only
- else
- {
- return (RepVals0[i32ModulationValues[xPos][yPos-1]] +
- RepVals0[i32ModulationValues[xPos][yPos+1]] + 1) / 2;
- }
- }
- }
- else if (ui8Bpp==4)
- return i32ModulationValues[xPos][yPos];
-
- return 0;
-}
-
-/*!***********************************************************************
- @Function pvrtcGetDecompressedPixels
- @Input P,Q,R,S PVRTWords in current decompression area.
- @Modified pColourData Output pixels.
- @Input ui8Bpp Number of bpp.
- @Description Gets decompressed pixels for a given decompression area.
-*************************************************************************/
-static void pvrtcGetDecompressedPixels(const PVRTCWord& P, const PVRTCWord& Q,
- const PVRTCWord& R, const PVRTCWord& S,
- Pixel32 *pColourData,
- PVRTuint8 ui8Bpp)
-{
- //4bpp only needs 8*8 values, but 2bpp needs 16*8, so rather than wasting processor time we just statically allocate 16*8.
- PVRTint32 i32ModulationValues[16][8];
- //Only 2bpp needs this.
- PVRTint32 i32ModulationModes[16][8];
- //4bpp only needs 16 values, but 2bpp needs 32, so rather than wasting processor time we just statically allocate 32.
- Pixel128S upscaledColourA[32];
- Pixel128S upscaledColourB[32];
-
- PVRTuint32 ui32WordWidth=4;
- PVRTuint32 ui32WordHeight=4;
- if (ui8Bpp==2)
- ui32WordWidth=8;
-
- //Get the modulations from each word.
- unpackModulations(P, 0, 0, i32ModulationValues, i32ModulationModes, ui8Bpp);
- unpackModulations(Q, ui32WordWidth, 0, i32ModulationValues, i32ModulationModes, ui8Bpp);
- unpackModulations(R, 0, ui32WordHeight, i32ModulationValues, i32ModulationModes, ui8Bpp);
- unpackModulations(S, ui32WordWidth, ui32WordHeight, i32ModulationValues, i32ModulationModes, ui8Bpp);
-
- // Bilinear upscale image data from 2x2 -> 4x4
- interpolateColours(getColourA(P.u32ColourData), getColourA(Q.u32ColourData),
- getColourA(R.u32ColourData), getColourA(S.u32ColourData),
- upscaledColourA, ui8Bpp);
- interpolateColours(getColourB(P.u32ColourData), getColourB(Q.u32ColourData),
- getColourB(R.u32ColourData), getColourB(S.u32ColourData),
- upscaledColourB, ui8Bpp);
-
- for (unsigned int y=0; y < ui32WordHeight; y++)
- {
- for (unsigned int x=0; x < ui32WordWidth; x++)
- {
- PVRTint32 mod = getModulationValues(i32ModulationValues,i32ModulationModes,x+ui32WordWidth/2,y+ui32WordHeight/2,ui8Bpp);
- bool punchthroughAlpha=false;
- if (mod>10) {punchthroughAlpha=true; mod-=10;}
-
- Pixel128S result;
- result.red = (upscaledColourA[y*ui32WordWidth+x].red * (8-mod) + upscaledColourB[y*ui32WordWidth+x].red * mod) / 8;
- result.green = (upscaledColourA[y*ui32WordWidth+x].green * (8-mod) + upscaledColourB[y*ui32WordWidth+x].green * mod) / 8;
- result.blue = (upscaledColourA[y*ui32WordWidth+x].blue * (8-mod) + upscaledColourB[y*ui32WordWidth+x].blue * mod) / 8;
- if (punchthroughAlpha) result.alpha = 0;
- else result.alpha = (upscaledColourA[y*ui32WordWidth+x].alpha * (8-mod) + upscaledColourB[y*ui32WordWidth+x].alpha * mod) / 8;
-
- //Convert the 32bit precision result to 8 bit per channel colour.
- if (ui8Bpp==2)
- {
- pColourData[y*ui32WordWidth+x].red = (PVRTuint8)result.red;
- pColourData[y*ui32WordWidth+x].green = (PVRTuint8)result.green;
- pColourData[y*ui32WordWidth+x].blue = (PVRTuint8)result.blue;
- pColourData[y*ui32WordWidth+x].alpha = (PVRTuint8)result.alpha;
- }
- else if (ui8Bpp==4)
- {
- pColourData[y+x*ui32WordHeight].red = (PVRTuint8)result.red;
- pColourData[y+x*ui32WordHeight].green = (PVRTuint8)result.green;
- pColourData[y+x*ui32WordHeight].blue = (PVRTuint8)result.blue;
- pColourData[y+x*ui32WordHeight].alpha = (PVRTuint8)result.alpha;
- }
- }
- }
-}
-
-/*!***********************************************************************
- @Function wrapWordIndex
- @Input numWords Total number of PVRTCWords in the current surface.
- @Input word Original index for a PVRTCWord.
- @Return unsigned int Wrapped PVRTCWord index.
- @Description Maps decompressed data to the correct location in the output buffer.
-*************************************************************************/
-static unsigned int wrapWordIndex(unsigned int numWords, int word)
-{
- return ((word + numWords) % numWords);
-}
-
-#if defined(_DEBUG)
- /*!***********************************************************************
- @Function isPowerOf2
- @Input input Value to be checked
- @Returns true if the number is an integer power of two, else false.
- @Description Check that a number is an integer power of two, i.e.
- 1, 2, 4, 8, ... etc.
- Returns false for zero.
-*************************************************************************/
-static bool isPowerOf2( unsigned int input )
-{
- unsigned int minus1;
-
- if( !input ) return 0;
-
- minus1 = input - 1;
- return ( (input | minus1) == (input ^ minus1) );
-}
-#endif
-
-/*!***********************************************************************
- @Function TwiddleUV
- @Input YSize Y dimension of the texture in pixels
- @Input XSize X dimension of the texture in pixels
- @Input YPos Pixel Y position
- @Input XPos Pixel X position
- @Returns The twiddled offset of the pixel
- @Description Given the Word (or pixel) coordinates and the dimension of
- the texture in words (or pixels) this returns the twiddled
- offset of the word (or pixel) from the start of the map.
-
- NOTE: the dimensions of the texture must be a power of 2
-*************************************************************************/
-static PVRTuint32 TwiddleUV(PVRTuint32 XSize, PVRTuint32 YSize, PVRTuint32 XPos, PVRTuint32 YPos)
-{
- //Initially assume X is the larger size.
- PVRTuint32 MinDimension=XSize;
- PVRTuint32 MaxValue=YPos;
- PVRTuint32 Twiddled=0;
- PVRTuint32 SrcBitPos=1;
- PVRTuint32 DstBitPos=1;
- int ShiftCount=0;
-
- //Check the sizes are valid.
- _ASSERT(YPos < YSize);
- _ASSERT(XPos < XSize);
- _ASSERT(isPowerOf2(YSize));
- _ASSERT(isPowerOf2(XSize));
-
- //If Y is the larger dimension - switch the min/max values.
- if(YSize < XSize)
- {
- MinDimension = YSize;
- MaxValue = XPos;
- }
-
- // Step through all the bits in the "minimum" dimension
- while(SrcBitPos < MinDimension)
- {
- if(YPos & SrcBitPos)
- {
- Twiddled |= DstBitPos;
- }
-
- if(XPos & SrcBitPos)
- {
- Twiddled |= (DstBitPos << 1);
- }
-
- SrcBitPos <<= 1;
- DstBitPos <<= 2;
- ShiftCount += 1;
- }
-
- // Prepend any unused bits
- MaxValue >>= ShiftCount;
- Twiddled |= (MaxValue << (2*ShiftCount));
-
- return Twiddled;
-}
-
-/*!***********************************************************************
- @Function mapDecompressedData
- @Modified pOutput The PVRTC texture data to decompress
- @Input width Width of the texture surface.
- @Input pWord A pointer to the decompressed PVRTCWord in pixel form.
- @Input &words Indices for the PVRTCword.
- @Input ui8Bpp number of bits per pixel
- @Description Maps decompressed data to the correct location in the output buffer.
-*************************************************************************/
-static void mapDecompressedData(Pixel32* pOutput, int width,
- const Pixel32 *pWord,
- const PVRTCWordIndices &words,
- const PVRTuint8 ui8Bpp)
-{
- PVRTuint32 ui32WordWidth=4;
- PVRTuint32 ui32WordHeight=4;
- if (ui8Bpp==2)
- ui32WordWidth=8;
-
- for (unsigned int y=0; y < ui32WordHeight/2; y++)
- {
- for (unsigned int x=0; x < ui32WordWidth/2; x++)
- {
- pOutput[(((words.P[1] * ui32WordHeight) + y + ui32WordHeight/2)
- * width + words.P[0] *ui32WordWidth + x + ui32WordWidth/2)] = pWord[y*ui32WordWidth+x]; // map P
-
- pOutput[(((words.Q[1] * ui32WordHeight) + y + ui32WordHeight/2)
- * width + words.Q[0] *ui32WordWidth + x)] = pWord[y*ui32WordWidth+x+ui32WordWidth/2]; // map Q
-
- pOutput[(((words.R[1] * ui32WordHeight) + y)
- * width + words.R[0] *ui32WordWidth + x + ui32WordWidth/2)] = pWord[(y+ui32WordHeight/2)*ui32WordWidth+x]; // map R
-
- pOutput[(((words.S[1] * ui32WordHeight) + y)
- * width + words.S[0] *ui32WordWidth + x)] = pWord[(y+ui32WordHeight/2)*ui32WordWidth+x+ui32WordWidth/2]; // map S
- }
- }
-}
-/*!***********************************************************************
- @Function pvrtcDecompress
- @Input pCompressedData The PVRTC texture data to decompress
- @Modified pDecompressedData The output buffer to decompress into.
- @Input ui32Width X dimension of the texture
- @Input ui32Height Y dimension of the texture
- @Input ui8Bpp number of bits per pixel
- @Description Internally decompresses PVRTC to RGBA 8888
-*************************************************************************/
-static int pvrtcDecompress( PVRTuint8 *pCompressedData,
- Pixel32 *pDecompressedData,
- PVRTuint32 ui32Width,
- PVRTuint32 ui32Height,
- PVRTuint8 ui8Bpp)
-{
- PVRTuint32 ui32WordWidth=4;
- PVRTuint32 ui32WordHeight=4;
- if (ui8Bpp==2)
- ui32WordWidth=8;
-
- PVRTuint32 *pWordMembers = (PVRTuint32 *)pCompressedData;
- Pixel32 *pOutData = pDecompressedData;
-
- // Calculate number of words
- int i32NumXWords = (int)(ui32Width / ui32WordWidth);
- int i32NumYWords = (int)(ui32Height / ui32WordHeight);
-
- // Structs used for decompression
- PVRTCWordIndices indices;
- Pixel32 *pPixels;
- pPixels = (Pixel32*)malloc(ui32WordWidth*ui32WordHeight*sizeof(Pixel32));
-
- // For each row of words
- for(int wordY=-1; wordY < i32NumYWords-1; wordY++)
- {
- // for each column of words
- for(int wordX=-1; wordX < i32NumXWords-1; wordX++)
- {
- indices.P[0] = wrapWordIndex(i32NumXWords, wordX);
- indices.P[1] = wrapWordIndex(i32NumYWords, wordY);
- indices.Q[0] = wrapWordIndex(i32NumXWords, wordX + 1);
- indices.Q[1] = wrapWordIndex(i32NumYWords, wordY);
- indices.R[0] = wrapWordIndex(i32NumXWords, wordX);
- indices.R[1] = wrapWordIndex(i32NumYWords, wordY + 1);
- indices.S[0] = wrapWordIndex(i32NumXWords, wordX + 1);
- indices.S[1] = wrapWordIndex(i32NumYWords, wordY + 1);
-
- //Work out the offsets into the twiddle structs, multiply by two as there are two members per word.
- PVRTuint32 WordOffsets[4] =
- {
- TwiddleUV(i32NumXWords,i32NumYWords,indices.P[0], indices.P[1])*2,
- TwiddleUV(i32NumXWords,i32NumYWords,indices.Q[0], indices.Q[1])*2,
- TwiddleUV(i32NumXWords,i32NumYWords,indices.R[0], indices.R[1])*2,
- TwiddleUV(i32NumXWords,i32NumYWords,indices.S[0], indices.S[1])*2,
- };
-
- //Access individual elements to fill out PVRTCWord
- PVRTCWord P,Q,R,S;
- P.u32ColourData = pWordMembers[WordOffsets[0]+1];
- P.u32ModulationData = pWordMembers[WordOffsets[0]];
- Q.u32ColourData = pWordMembers[WordOffsets[1]+1];
- Q.u32ModulationData = pWordMembers[WordOffsets[1]];
- R.u32ColourData = pWordMembers[WordOffsets[2]+1];
- R.u32ModulationData = pWordMembers[WordOffsets[2]];
- S.u32ColourData = pWordMembers[WordOffsets[3]+1];
- S.u32ModulationData = pWordMembers[WordOffsets[3]];
-
- // assemble 4 words into struct to get decompressed pixels from
- pvrtcGetDecompressedPixels(P,Q,R,S,pPixels,ui8Bpp);
- mapDecompressedData(pOutData, ui32Width, pPixels, indices, ui8Bpp);
-
- } // for each word
- } // for each row of words
-
- free(pPixels);
- //Return the data size
- return ui32Width * ui32Height / (PVRTuint32)(ui32WordWidth/2);
-}
-
-/*!***********************************************************************
- @Function PVRTDecompressPVRTC
- @Input pCompressedData The PVRTC texture data to decompress
- @Input Do2bitMode Signifies whether the data is PVRTC2 or PVRTC4
- @Input XDim X dimension of the texture
- @Input YDim Y dimension of the texture
- @Modified pResultImage The decompressed texture data
- @Return Returns the amount of data that was decompressed.
- @Description Decompresses PVRTC to RGBA 8888
-*************************************************************************/
-int PVRTDecompressPVRTC(const void *pCompressedData,
- const int Do2bitMode,
- const int XDim,
- const int YDim,
- unsigned char* pResultImage)
-{
- //Cast the output buffer to a Pixel32 pointer.
- Pixel32* pDecompressedData = (Pixel32*)pResultImage;
-
- //Check the X and Y values are at least the minimum size.
- int XTrueDim = PVRT_MAX(XDim,((Do2bitMode==1)?16:8));
- int YTrueDim = PVRT_MAX(YDim,8);
-
- //If the dimensions aren't correct, we need to create a new buffer instead of just using the provided one, as the buffer will overrun otherwise.
- if(XTrueDim!=XDim || YTrueDim!=YDim)
- {
- pDecompressedData=(Pixel32*)malloc(XTrueDim*YTrueDim*sizeof(Pixel32));
- }
-
- //Decompress the surface.
- int retval = pvrtcDecompress((PVRTuint8*)pCompressedData,pDecompressedData,XTrueDim,YTrueDim,(Do2bitMode==1?2:4));
-
- //If the dimensions were too small, then copy the new buffer back into the output buffer.
- if(XTrueDim!=XDim || YTrueDim!=YDim)
- {
- //Loop through all the required pixels.
- for (int x=0; x>(index+24))&0x1)+((mostSig>>(index+8))&0x2)];
- else
- pixelMod = mod[modTable][((modBlock>>(index+8))&0x1)+((mostSig>>(index-8))&0x2)];
-
- red = _CLAMP_(red+pixelMod,0,255);
- green = _CLAMP_(green+pixelMod,0,255);
- blue = _CLAMP_(blue+pixelMod,0,255);
-
- return ((red<<16) + (green<<8) + blue)|0xff000000;
-}
-
- /*!***********************************************************************
- @Function ETCTextureDecompress
- @Input pSrcData The ETC texture data to decompress
- @Input x X dimension of the texture
- @Input y Y dimension of the texture
- @Modified pDestData The decompressed texture data
- @Input nMode The format of the data
- @Returns The number of bytes of ETC data decompressed
- @Description Decompresses ETC to RGBA 8888
-*************************************************************************/
-static int ETCTextureDecompress(const void * const pSrcData, const int &x, const int &y, const void *pDestData,const int &/*nMode*/)
-{
- unsigned int blockTop, blockBot, *input = (unsigned int*)pSrcData, *output;
- unsigned char red1, green1, blue1, red2, green2, blue2;
- bool bFlip, bDiff;
- int modtable1,modtable2;
-
- for(int i=0;i>16);
- green1 = (unsigned char)((blockTop&0xf800)>>8);
- red1 = (unsigned char)(blockTop&0xf8);
-
- // get differential colour for subblock 2
- signed char blues = (signed char)(blue1>>3) + ((signed char) ((blockTop & 0x70000) >> 11)>>5);
- signed char greens = (signed char)(green1>>3) + ((signed char)((blockTop & 0x700) >>3)>>5);
- signed char reds = (signed char)(red1>>3) + ((signed char)((blockTop & 0x7)<<5)>>5);
-
- blue2 = (unsigned char)blues;
- green2 = (unsigned char)greens;
- red2 = (unsigned char)reds;
-
- red1 = red1 +(red1>>5); // copy bits to lower sig
- green1 = green1 + (green1>>5); // copy bits to lower sig
- blue1 = blue1 + (blue1>>5); // copy bits to lower sig
-
- red2 = (red2<<3) +(red2>>2); // copy bits to lower sig
- green2 = (green2<<3) + (green2>>2); // copy bits to lower sig
- blue2 = (blue2<<3) + (blue2>>2); // copy bits to lower sig
- }
- else
- { // individual mode 4 + 4 colour bits
- // get base colour for subblock 1
- blue1 = (unsigned char)((blockTop&0xf00000)>>16);
- blue1 = blue1 +(blue1>>4); // copy bits to lower sig
- green1 = (unsigned char)((blockTop&0xf000)>>8);
- green1 = green1 + (green1>>4); // copy bits to lower sig
- red1 = (unsigned char)(blockTop&0xf0);
- red1 = red1 + (red1>>4); // copy bits to lower sig
-
- // get base colour for subblock 2
- blue2 = (unsigned char)((blockTop&0xf0000)>>12);
- blue2 = blue2 +(blue2>>4); // copy bits to lower sig
- green2 = (unsigned char)((blockTop&0xf00)>>4);
- green2 = green2 + (green2>>4); // copy bits to lower sig
- red2 = (unsigned char)((blockTop&0xf)<<4);
- red2 = red2 + (red2>>4); // copy bits to lower sig
- }
- // get the modtables for each subblock
- modtable1 = (blockTop>>29)&0x7;
- modtable2 = (blockTop>>26)&0x7;
-
- if(!bFlip)
- { // 2 2x4 blocks side by side
-
- for(int j=0;j<4;j++) // vertical
- {
- for(int k=0;k<2;k++) // horizontal
- {
- *(output+j*x+k) = modifyPixel(red1,green1,blue1,k,j,blockBot,modtable1);
- *(output+j*x+k+2) = modifyPixel(red2,green2,blue2,k+2,j,blockBot,modtable2);
- }
- }
-
- }
- else
- { // 2 4x2 blocks on top of each other
- for(int j=0;j<2;j++)
- {
- for(int k=0;k<4;k++)
- {
- *(output+j*x+k) = modifyPixel(red1,green1,blue1,k,j,blockBot,modtable1);
- *(output+(j+2)*x+k) = modifyPixel(red2,green2,blue2,k,j+2,blockBot,modtable2);
- }
- }
- }
- }
- }
-
- return x*y/2;
-}
-
-/*!***********************************************************************
-@Function PVRTDecompressETC
-@Input pSrcData The ETC texture data to decompress
-@Input x X dimension of the texture
-@Input y Y dimension of the texture
-@Modified pDestData The decompressed texture data
-@Input nMode The format of the data
-@Returns The number of bytes of ETC data decompressed
-@Description Decompresses ETC to RGBA 8888
-*************************************************************************/
-int PVRTDecompressETC(const void * const pSrcData,
- const unsigned int &x,
- const unsigned int &y,
- void *pDestData,
- const int &nMode)
-{
- int i32read;
-
- if(x
-#include
-#include
-
-#include "PVRTGlobal.h"
-
-const size_t CPVRTString::npos = (size_t) -1;
-
-#if defined(_WIN32) && !defined(__BADA__)
-#define vsnprintf _vsnprintf
-#endif
-
-/*!***********************************************************************
-@Function CPVRTString
-@Input _Ptr A string
-@Input _Count Length of _Ptr
-@Description Constructor
-************************************************************************/
-CPVRTString::CPVRTString(const char* _Ptr, size_t _Count) :
-m_pString(0), m_Capacity(0)
-{
- if (_Count == npos)
- assign(_Ptr);
- else
- assign(_Ptr, _Count);
-}
-
-/*!***********************************************************************
-@Function CPVRTString
-@Input _Right A string
-@Input _Roff Offset into _Right
-@Input _Count Number of chars from _Right to assign to the new string
-@Description Constructor
-************************************************************************/
-CPVRTString::CPVRTString(const CPVRTString& _Right, size_t _Roff, size_t _Count) :
-m_pString(0), m_Capacity(0)
-{
- assign(_Right, _Roff, _Count);
-}
-
-/*!***********************************************************************
-@Function CPVRTString
-@Input _Count Length of new string
-@Input _Ch A char to fill it with
-@Description Constructor
-*************************************************************************/
-CPVRTString::CPVRTString(size_t _Count, char _Ch) :
-m_pString(0), m_Capacity(0)
-{
- assign(_Count,_Ch);
-}
-
-/*!***********************************************************************
-@Function CPVRTString
-@Input _Ch A char
-@Description Constructor
-*************************************************************************/
-CPVRTString::CPVRTString(const char _Ch) :
-m_pString(0), m_Capacity(0)
-{
- assign( 1, _Ch);
-}
-
-/*!***********************************************************************
-@Function CPVRTString
-@Description Constructor
-*************************************************************************/
-CPVRTString::CPVRTString() :
-m_Size(0), m_Capacity(1)
-{
- m_pString = (char*)calloc(1, 1);
-}
-
-/*!***********************************************************************
-@Function ~CPVRTString
-@Description Destructor
-*************************************************************************/
-CPVRTString::~CPVRTString()
-{
- free(m_pString);
-}
-
-/*!***********************************************************************
-@Function append
-@Input _Ptr A string
-@Returns Updated string
-@Description Appends a string
-*************************************************************************/
-CPVRTString& CPVRTString::append(const char* _Ptr)
-{
- return append(_Ptr,strlen(_Ptr));
-}
-
-/*!***********************************************************************
-@Function append
-@Input _Ptr A string
-@Input _Count String length
-@Returns Updated string
-@Description Appends a string of length _Count
-*************************************************************************/
-CPVRTString& CPVRTString::append(const char* _Ptr, size_t _Count)
-{
- char* pString = m_pString;
- size_t newCapacity = _Count + m_Size + 1; // +1 for null termination
-
- // extend CPVRTString if necessary
- if (m_Capacity < newCapacity)
- {
- pString = (char*)malloc(newCapacity);
- m_Capacity = newCapacity;
- memmove(pString, m_pString, m_Size);
- pString[m_Capacity-1]='\0';
- }
-
- // append chars from _Ptr
- memmove(pString + m_Size, _Ptr, _Count);
- m_Size += _Count;
- pString[m_Size] = 0;
-
- // remove old CPVRTString if necessary
- if (pString != m_pString)
- {
- free(m_pString);
- m_pString = pString;
- }
- return *this;
-}
-
-/*!***********************************************************************
-@Function append
-@Input _Str A string
-@Returns Updated string
-@Description Appends a string
-*************************************************************************/
-CPVRTString& CPVRTString::append(const CPVRTString& _Str)
-{
- return append(_Str.m_pString,_Str.m_Size);
-}
-
-/*!***********************************************************************
-@Function append
-@Input _Str A string
-@Input _Off A position in string
-@Input _Count Number of letters to append
-@Returns Updated string
-@Description Appends _Count letters of _Str from _Off in _Str
-*************************************************************************/
-CPVRTString& CPVRTString::append(const CPVRTString& _Str, size_t _Off, size_t _Count)
-{
- return append(_Str.m_pString+_Off,_Count);
-}
-
-/*!***********************************************************************
-@Function append
-@Input _Ch A char
-@Input _Count Number of times to append _Ch
-@Returns Updated string
-@Description Appends _Ch _Count times
-*************************************************************************/
-CPVRTString& CPVRTString::append(size_t _Count, char _Ch)
-{
- char* pString = m_pString;
- size_t newCapacity = _Count + m_Size + 1; // +1 for null termination
- // extend CPVRTString if necessary
- if (m_Capacity < newCapacity)
- {
- pString = (char*)malloc(newCapacity);
- m_Capacity = newCapacity;
- memmove(pString, m_pString, m_Size+1);
- }
-
- char* newChar = &pString[m_Size];
- // fill new space with _Ch
- for(size_t i=0;i<_Count;++i)
- {
- *newChar++ = _Ch;
- }
- *newChar = '\0'; // set null terminato
- m_Size+=_Count; // adjust length of string for new characters
-
- // remove old CPVRTString if necessary
- if (pString != m_pString)
- {
- free(m_pString);
- m_pString = pString;
- }
- return *this;
-}
-
-/*!***********************************************************************
-@Function assign
-@Input _Ptr A string
-@Returns Updated string
-@Description Assigns the string to the string _Ptr
-*************************************************************************/
-CPVRTString& CPVRTString::assign(const char* _Ptr)
-{
- return assign(_Ptr, strlen(_Ptr));
-}
-
-/*!***********************************************************************
-@Function assign
-@Input _Ptr A string
-@Input _Count Length of _Ptr
-@Returns Updated string
-@Description Assigns the string to the string _Ptr
-*************************************************************************/
-CPVRTString& CPVRTString::assign(const char* _Ptr, size_t _Count)
-{
- char* pString = m_pString;
- if (m_Capacity <= _Count)
- {
- pString = (char*)malloc(_Count + 1);
- m_Capacity = _Count+1;
- }
- m_Size = _Count;
-
- memmove(pString, _Ptr, m_Size);
- pString[m_Size] = 0;
-
- if (pString != m_pString)
- {
- free(m_pString);
- m_pString = pString;
- }
- return *this;
-}
-
-/*!***********************************************************************
-@Function assign
-@Input _Str A string
-@Returns Updated string
-@Description Assigns the string to the string _Str
-*************************************************************************/
-CPVRTString& CPVRTString::assign(const CPVRTString& _Str)
-{
- return assign(_Str.m_pString, _Str.m_Size);
-}
-
-/*!***********************************************************************
-@Function assign
-@Input _Str A string
-@Input _Off First char to start assignment from
-@Input _Count Length of _Str
-@Returns Updated string
-@Description Assigns the string to _Count characters in string _Str starting at _Off
-*************************************************************************/
-CPVRTString& CPVRTString::assign(const CPVRTString& _Str, size_t _Off, size_t _Count)
-{
- if(_Count==npos)
- {
- _Count = _Str.m_Size - _Off;
- }
- return assign(&_Str.m_pString[_Off], _Count);
-}
-
-/*!***********************************************************************
-@Function assign
-@Input _Ch A string
-@Input _Count Number of times to repeat _Ch
-@Returns Updated string
-@Description Assigns the string to _Count copies of _Ch
-*************************************************************************/
-CPVRTString& CPVRTString::assign(size_t _Count,char _Ch)
-{
- if (m_Capacity <= _Count)
- {
- free(m_pString);
- m_pString = (char*)malloc(_Count + 1);
- m_Capacity = _Count+1;
- }
- m_Size = _Count;
- memset(m_pString, _Ch, _Count);
- m_pString[m_Size] = 0;
-
- return *this;
-}
-
-//const_reference at(size_t _Off) const;
-//reference at(size_t _Off);
-
-/*!***********************************************************************
-@Function c_str
-@Returns const char* pointer of the string
-@Description Returns a const char* pointer of the string
-*************************************************************************/
-const char* CPVRTString::c_str() const
-{
- return m_pString;
-}
-
-/*!***********************************************************************
-@Function capacity
-@Returns The size of the character array reserved
-@Description Returns the size of the character array reserved
-*************************************************************************/
-size_t CPVRTString::capacity() const
-{
- return m_Capacity;
-}
-
-/*!***********************************************************************
-@Function clear
-@Description Clears the string
-*************************************************************************/
-void CPVRTString::clear()
-{
- free(m_pString);
- m_pString = (char*)calloc(1, 1);
- m_Size = 0;
- m_Capacity = 1;
-}
-
-/*!***********************************************************************
-@Function compare
-@Input _Str A string to compare with
-@Returns 0 if the strings match
-@Description Compares the string with _Str
-*************************************************************************/
-int CPVRTString::compare(const CPVRTString& _Str) const
-{
- return strcmp(m_pString,_Str.m_pString);
-}
-
-/*!***********************************************************************
-@Function <
-@Input _Str A string to compare with
-@Returns True on success
-@Description Less than operator
-*************************************************************************/
-bool CPVRTString::operator<(const CPVRTString & _Str) const
-{
- return (strcmp(m_pString, _Str.m_pString) < 0);
-}
-
-/*!***********************************************************************
-@Function compare
-@Input _Pos1 Position to start comparing from
-@Input _Num1 Number of chars to compare
-@Input _Str A string to compare with
-@Returns 0 if the strings match
-@Description Compares the string with _Str
-*************************************************************************/
-int CPVRTString::compare(size_t _Pos1, size_t _Num1, const CPVRTString& _Str) const
-{
- _ASSERT(_Pos1<=m_Size); // check comparison starts within lhs CPVRTString
-
- int i32Ret; // value to return if no difference in actual comparisons between chars
- size_t stLhsLength = m_Size-_Pos1;
- size_t stSearchLength = PVRT_MIN(stLhsLength,PVRT_MIN(_Str.m_Size,_Num1)); // number of comparisons to do
- if(PVRT_MIN(stLhsLength,_Num1)PVRT_MIN(_Str.m_Size,_Num1))
- {
- i32Ret = 1;
- }
- else
- {
- i32Ret = 0;
- }
-
- // do actual comparison
- const char* lhptr = &m_pString[_Pos1];
- const char* rhptr = _Str.m_pString;
- for(size_t i=0;i*rhptr)
- return 1;
- lhptr++;rhptr++;
- }
- // no difference found in compared characters
- return i32Ret;
-}
-
-/*!***********************************************************************
-@Function compare
-@Input _Pos1 Position to start comparing from
-@Input _Num1 Number of chars to compare
-@Input _Str A string to compare with
-@Input _Off Position in _Str to compare from
-@Input _Count Number of chars in _Str to compare with
-@Returns 0 if the strings match
-@Description Compares the string with _Str
-*************************************************************************/
-int CPVRTString::compare(size_t _Pos1, size_t _Num1, const CPVRTString& _Str, size_t /*_Off*/, size_t _Count) const
-{
- _ASSERT(_Pos1<=m_Size); // check comparison starts within lhs CPVRTString
-
- int i32Ret; // value to return if no difference in actual comparisons between chars
- size_t stLhsLength = m_Size-_Pos1;
- size_t stSearchLength = PVRT_MIN(stLhsLength,PVRT_MIN(_Str.m_Size,PVRT_MIN(_Num1,_Count))); // number of comparisons to do
- if(PVRT_MIN(stLhsLength,_Num1)PVRT_MIN(_Str.m_Size,_Count))
- {
- i32Ret = 1;
- }
- else
- {
- i32Ret = 0;
- }
-
-
- // do actual comparison
- char* lhptr = &m_pString[_Pos1];
- char* rhptr = _Str.m_pString;
- for(size_t i=0;i*rhptr)
- return 1;
- lhptr++;rhptr++;
- }
- // no difference found in compared characters
- return i32Ret;
-}
-
-/*!***********************************************************************
-@Function compare
-@Input _Ptr A string to compare with
-@Returns 0 if the strings match
-@Description Compares the string with _Ptr
-*************************************************************************/
-int CPVRTString::compare(const char* _Ptr) const
-{
- return strcmp(m_pString,_Ptr);
-}
-
-/*!***********************************************************************
-@Function compare
-@Input _Pos1 Position to start comparing from
-@Input _Num1 Number of chars to compare
-@Input _Ptr A string to compare with
-@Returns 0 if the strings match
-@Description Compares the string with _Ptr
-*************************************************************************/
-int CPVRTString::compare(size_t _Pos1, size_t _Num1, const char* _Ptr) const
-{
- _ASSERT(_Pos1<=m_Size); // check comparison starts within lhs CPVRTString
-
- int i32Ret; // value to return if no difference in actual comparisons between chars
- size_t stLhsLength = m_Size-_Pos1;
- size_t stRhsLength = strlen(_Ptr);
- size_t stSearchLength = PVRT_MIN(stLhsLength,PVRT_MIN(stRhsLength,_Num1)); // number of comparisons to do
- if(PVRT_MIN(stLhsLength,_Num1)PVRT_MIN(stRhsLength,_Num1))
- {
- i32Ret = 1;
- }
- else
- {
- i32Ret = 0;
- }
-
- // do actual comparison
- const char* lhptr = &m_pString[_Pos1];
- const char* rhptr = _Ptr;
- for(size_t i=0;i*rhptr)
- return 1;
- lhptr++;rhptr++;
- }
- // no difference found in compared characters
- return i32Ret;
-}
-
-/*!***********************************************************************
-@Function compare
-@Input _Pos1 Position to start comparing from
-@Input _Num1 Number of chars to compare
-@Input _Ptr A string to compare with
-@Input _Count Number of char to compare
-@Returns 0 if the strings match
-@Description Compares the string with _Str
-*************************************************************************/
-int CPVRTString::compare(size_t _Pos1, size_t _Num1, const char* _Ptr, size_t _Count) const
-{
- _ASSERT(_Pos1<=m_Size); // check comparison starts within lhs CPVRTString
-
- int i32Ret; // value to return if no difference in actual comparisons between chars
- size_t stLhsLength = m_Size-_Pos1;
- size_t stRhsLength = strlen(_Ptr);
- size_t stSearchLength = PVRT_MIN(stLhsLength,PVRT_MIN(stRhsLength,PVRT_MIN(_Num1,_Count))); // number of comparisons to do
- if(PVRT_MIN(stLhsLength,_Num1)PVRT_MIN(stRhsLength,_Count))
- {
- i32Ret = 1;
- }
- else
- {
- i32Ret = 0;
- }
-
-
- // do actual comparison
- char* lhptr = &m_pString[_Pos1];
- const char* rhptr = _Ptr;
- for(size_t i=0;i*rhptr)
- return 1;
- lhptr++;rhptr++;
- }
- // no difference found in compared characters
- return i32Ret;
-}
-
-/*!***********************************************************************
-@Function ==
-@Input _Str A string to compare with
-@Returns True if they match
-@Description == Operator
-*************************************************************************/
-bool CPVRTString::operator==(const CPVRTString& _Str) const
-{
- return strcmp(m_pString, _Str.m_pString)==0;
-}
-
-/*!***********************************************************************
-@Function ==
-@Input _Ptr A string to compare with
-@Returns True if they match
-@Description == Operator
-*************************************************************************/
-bool CPVRTString::operator==(const char* const _Ptr) const
-{
- return strcmp(m_pString, _Ptr)==0;
-}
-
-/*!***********************************************************************
-@Function !=
-@Input _Str A string to compare with
-@Returns True if they don't match
-@Description != Operator
-*************************************************************************/
-bool CPVRTString::operator!=(const CPVRTString& _Str) const
-{
- return strcmp(m_pString, _Str.m_pString)!=0;
-}
-
-/*!***********************************************************************
-@Function !=
-@Input _Ptr A string to compare with
-@Returns True if they don't match
-@Description != Operator
-*************************************************************************/
-bool CPVRTString::operator!=(const char* const _Ptr) const
-{
- return strcmp(m_pString, _Ptr)!=0;
-}
-
-/*!***********************************************************************
-@Function copy
-@Modified _Ptr A string to copy to
-@Input _Count Size of _Ptr
-@Input _Off Position to start copying from
-@Returns Number of bytes copied
-@Description Copies the string to _Ptr
-*************************************************************************/
-size_t CPVRTString::copy(char* _Ptr, size_t _Count, size_t _Off) const
-{
- if(memcpy(_Ptr, &m_pString[_Off], PVRT_MIN(_Count, m_Size - _Off)))
- return _Count;
-
- return 0;
-}
-
-/*!***********************************************************************
-@Function data
-@Returns A const char* version of the string
-@Description Returns a const char* version of the string
-*************************************************************************/
-const char* CPVRTString::data() const
-{
- return m_pString;
-}
-
-/*!***********************************************************************
-@Function empty
-@Returns True if the string is empty
-@Description Returns true if the string is empty
-*************************************************************************/
-bool CPVRTString::empty() const
-{
- return (m_Size == 0);
-}
-
-/*!***********************************************************************
-@Function erase
-@Input _Pos The position to start erasing from
-@Input _Count Number of chars to erase
-@Returns An updated string
-@Description Erases a portion of the string
-*************************************************************************/
-CPVRTString& CPVRTString::erase(size_t _Pos, size_t _Count)
-{
- if (_Count == npos || _Pos + _Count >= m_Size)
- {
- resize(_Pos, 0);
- }
- else
- {
- memmove(&m_pString[_Pos], &m_pString[_Pos + _Count], m_Size + 1 - (_Pos + _Count));
- }
- return *this;
-}
-
-/*!***********************************************************************
-@Function find_first_not_of
-@Input _Ch A char
-@Input _Off Start position of the find
-@Returns Position of the first char that is not _Ch
-@Description Returns the position of the first char that is not _Ch
-*************************************************************************/
-size_t CPVRTString::find_first_not_of(char _Ch, size_t _Off) const
-{
- for(size_t i=_Off;i= m_Capacity)
- {
- m_pString = (char*)realloc(m_pString, _Count + 1);
- m_Capacity = _Count + 1;
- }
-}
-
-/*!***********************************************************************
-@Function resize
-@Input _Count Size of string to resize to
-@Input _Ch Character to use to fill any additional space
-@Description Resizes the string to _Count in length
-*************************************************************************/
-void CPVRTString::resize(size_t _Count, char _Ch)
-{
- if (_Count <= m_Size)
- {
- m_Size = _Count;
- m_pString[m_Size] = 0;
- }
- else
- {
- append(_Count - m_Size,_Ch);
- }
-}
-
-//size_t rfind(char _Ch, size_t _Off = npos) const;
-//size_t rfind(const char* _Ptr, size_t _Off = npos) const;
-//size_t rfind(const char* _Ptr, size_t _Off = npos, size_t _Count) const;
-//size_t rfind(const CPVRTString& _Str, size_t _Off = npos) const;
-
-/*!***********************************************************************
-@Function size
-@Returns Size of the string
-@Description Returns the size of the string
-*************************************************************************/
-size_t CPVRTString::size() const
-{
- return m_Size;
-}
-
-/*!***********************************************************************
-@Function substr
-@Input _Off Start of the substring
-@Input _Count Length of the substring
-@Returns A substring of the string
-@Description Returns the size of the string
-*************************************************************************/
-CPVRTString CPVRTString::substr(size_t _Off, size_t _Count) const
-{
- return CPVRTString(*this, _Off, _Count);
-}
-
-/*!***********************************************************************
-@Function swap
-@Input _Str A string to swap with
-@Description Swaps the contents of the string with _Str
-*************************************************************************/
-void CPVRTString::swap(CPVRTString& _Str)
-{
- size_t Size = _Str.m_Size;
- size_t Capacity = _Str.m_Capacity;
- char* pString = _Str.m_pString;
- _Str.m_Size = m_Size;
- _Str.m_Capacity = m_Capacity;
- _Str.m_pString = m_pString;
- m_Size = Size;
- m_Capacity = Capacity;
- m_pString = pString;
-}
-
-/*!***********************************************************************
-@Function toLower
-@Returns An updated string
-@Description Converts the string to lower case
-*************************************************************************/
-CPVRTString& CPVRTString::toLower()
-{
- int i = 0;
- while ( (m_pString[i] = (m_pString[i]>='A'&&m_pString[i]<='Z') ? ('a'+m_pString[i])-'A': m_pString[i]) != 0) i++;
- return *this;
-}
-
-/*!***********************************************************************
-@Function +=
-@Input _Ch A char
-@Returns An updated string
-@Description += Operator
-*************************************************************************/
-CPVRTString& CPVRTString::operator+=(char _Ch)
-{
- return append(_Ch, 1);
-}
-
-/*!***********************************************************************
-@Function +=
-@Input _Ptr A string
-@Returns An updated string
-@Description += Operator
-*************************************************************************/
-CPVRTString& CPVRTString::operator+=(const char* _Ptr)
-{
- return append(_Ptr);
-}
-
-/*!***********************************************************************
-@Function +=
-@Input _Right A string
-@Returns An updated string
-@Description += Operator
-*************************************************************************/
-CPVRTString& CPVRTString::operator+=(const CPVRTString& _Right)
-{
- return append(_Right);
-}
-
-/*!***********************************************************************
-@Function =
-@Input _Ch A char
-@Returns An updated string
-@Description = Operator
-*************************************************************************/
-CPVRTString& CPVRTString::operator=(char _Ch)
-{
- return assign(_Ch, 1);
-}
-
-/*!***********************************************************************
-@Function =
-@Input _Ptr A string
-@Returns An updated string
-@Description = Operator
-*************************************************************************/
-CPVRTString& CPVRTString::operator=(const char* _Ptr)
-{
- return assign(_Ptr);
-}
-
-/*!***********************************************************************
-@Function =
-@Input _Right A string
-@Returns An updated string
-@Description = Operator
-*************************************************************************/
-CPVRTString& CPVRTString::operator=(const CPVRTString& _Right)
-{
- return assign(_Right);
-}
-
-/*!***********************************************************************
-@Function []
-@Input _Off An index into the string
-@Returns A character
-@Description [] Operator
-*************************************************************************/
-CPVRTString::const_reference CPVRTString::operator[](size_t _Off) const
-{
- return m_pString[_Off];
-}
-
-/*!***********************************************************************
-@Function []
-@Input _Off An index into the string
-@Returns A character
-@Description [] Operator
-*************************************************************************/
-CPVRTString::reference CPVRTString::operator[](size_t _Off)
-{
- return m_pString[_Off];
-}
-
-/*!***********************************************************************
-@Function +
-@Input _Left A string
-@Input _Right A string
-@Returns An updated string
-@Description + Operator
-*************************************************************************/
-CPVRTString operator+ (const CPVRTString& _Left, const CPVRTString& _Right)
-{
- return CPVRTString(_Left).append(_Right);
-}
-
-/*!***********************************************************************
-@Function +
-@Input _Left A string
-@Input _Right A string
-@Returns An updated string
-@Description + Operator
-*************************************************************************/
-CPVRTString operator+ (const CPVRTString& _Left, const char* _Right)
-{
- return CPVRTString(_Left).append(_Right);
-}
-
-/*!***********************************************************************
-@Function +
-@Input _Left A string
-@Input _Right A string
-@Returns An updated string
-@Description + Operator
-*************************************************************************/
-CPVRTString operator+ (const CPVRTString& _Left, const char _Right)
-{
- return CPVRTString(_Left).append(_Right);
-}
-
-/*!***********************************************************************
-@Function +
-@Input _Left A string
-@Input _Right A string
-@Returns An updated string
-@Description + Operator
-*************************************************************************/
-CPVRTString operator+ (const char* _Left, const CPVRTString& _Right)
-{
- return CPVRTString(_Left).append(_Right);
-}
-
-/*!***********************************************************************
-@Function +
-@Input _Left A string
-@Input _Right A string
-@Returns An updated string
-@Description + Operator
-*************************************************************************/
-CPVRTString operator+ (const char _Left, const CPVRTString& _Right)
-{
- return CPVRTString(_Left).append(_Right);
-}
-
-/*************************************************************************
-* MISCELLANEOUS UTILITY FUNCTIONS
-*************************************************************************/
-/*!***********************************************************************
-@Function PVRTStringGetFileExtension
-@Input strFilePath A string
-@Returns Extension
-@Description Extracts the file extension from a file path.
- Returns an empty CPVRTString if no extension is found.
-************************************************************************/
-CPVRTString PVRTStringGetFileExtension(const CPVRTString& strFilePath)
-{
- CPVRTString::size_type idx = strFilePath.find_last_of ( '.' );
-
- if (idx == CPVRTString::npos)
- return CPVRTString("");
- else
- return strFilePath.substr(idx);
-}
-
-/*!***********************************************************************
-@Function PVRTStringGetContainingDirectoryPath
-@Input strFilePath A string
-@Returns Directory
-@Description Extracts the directory portion from a file path.
-************************************************************************/
-CPVRTString PVRTStringGetContainingDirectoryPath(const CPVRTString& strFilePath)
-{
- size_t i32sep = strFilePath.find_last_of('/');
- if(i32sep == strFilePath.npos)
- {
- i32sep = strFilePath.find_last_of('\\');
- if(i32sep == strFilePath.npos)
- { // can't find an actual \ or /, so return an empty string
- return CPVRTString("");
- }
- }
- return strFilePath.substr(0,i32sep);
-}
-
-/*!***********************************************************************
-@Function PVRTStringGetFileName
-@Input strFilePath A string
-@Returns FileName
-@Description Extracts the name and extension portion from a file path.
-************************************************************************/
-CPVRTString PVRTStringGetFileName(const CPVRTString& strFilePath)
-{
- size_t i32sep = strFilePath.find_last_of('/');
- if(i32sep == strFilePath.npos)
- {
- i32sep = strFilePath.find_last_of('\\');
- if(i32sep == strFilePath.npos)
- { // can't find an actual \ or / so leave it be
- return strFilePath;
- }
- }
- return strFilePath.substr(i32sep+1,strFilePath.length());
-}
-
-/*!***********************************************************************
-@Function PVRTStringStripWhiteSpaceFromStartOf
-@Input strLine A string
-@Returns Result of the white space stripping
-@Description strips white space characters from the beginning of a CPVRTString.
-************************************************************************/
-CPVRTString PVRTStringStripWhiteSpaceFromStartOf(const CPVRTString& strLine)
-{
- size_t start = strLine.find_first_not_of(" \t \n\r");
- if(start!=strLine.npos)
- return strLine.substr(start,strLine.length()-(start));
- return strLine;
-}
-
-
-/*!***********************************************************************
-@Function PVRTStringStripWhiteSpaceFromEndOf
-@Input strLine A string
-@Returns Result of the white space stripping
-@Description strips white space characters from the end of a CPVRTString.
-************************************************************************/
-CPVRTString PVRTStringStripWhiteSpaceFromEndOf(const CPVRTString& strLine)
-{
- size_t end = strLine.find_last_not_of(" \t \n\r");
- if(end!=strLine.npos)
- return strLine.substr(0,end+1);
- return strLine;
-}
-
-/*!***********************************************************************
-@Function PVRTStringFromFormattedStr
-@Input pFormat A string containing the formating
-@Returns A formatted string
-@Description Creates a formatted string
-************************************************************************/
-CPVRTString PVRTStringFromFormattedStr(const char *pFormat, ...)
-{
- va_list arg;
- char buf[1024];
-
- va_start(arg, pFormat);
-#if defined(__SYMBIAN32__) || defined(UITRON) || defined(_UITRON_)
- vsprintf(buf, pFormat, arg);
-#else
- vsnprintf(buf, 1024, pFormat, arg);
-#endif
- va_end(arg);
-
- return buf;
-}
-
-///*!***************************************************************************
-
-#endif // _USING_PVRTSTRING_
-
-/*****************************************************************************
- End of file (PVRTString.cpp)
-*****************************************************************************/
-
-#endif // DEBUG
\ No newline at end of file
diff --git a/deps/PVRTT/win-x64/PVRTexLib.dll b/deps/PVRTT/win-x64/PVRTexLib.dll
index 3b46352c73..70cf4e109f 100644
--- a/deps/PVRTT/win-x64/PVRTexLib.dll
+++ b/deps/PVRTT/win-x64/PVRTexLib.dll
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9b686bacc28059ab06517a39a741346195817e93782cb72bd3eb3b7e336e9c4f
-size 2182144
+oid sha256:9312bd0e039fbf5d915160a81cda754c3d3c6e941d949a3382f152f07708302b
+size 5041456
diff --git a/deps/PVRTT/win-x64/PVRTexLib.lib b/deps/PVRTT/win-x64/PVRTexLib.lib
index 5e7ae82d9b..5d3bf49f0e 100644
--- a/deps/PVRTT/win-x64/PVRTexLib.lib
+++ b/deps/PVRTT/win-x64/PVRTexLib.lib
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1a5b85a2714ddbb3d4f607578cee925e9c601f16222eff0578c4c5b929e77271
-size 4498620
+oid sha256:56f5446a72a4abc8b4ff1174227863ee24f1c3d8065081cae9ffac23d1443818
+size 31118
diff --git a/deps/PVRTT/win-x86/PVRTexLib.dll b/deps/PVRTT/win-x86/PVRTexLib.dll
index dc7716f2cb..15b1bf1e98 100644
--- a/deps/PVRTT/win-x86/PVRTexLib.dll
+++ b/deps/PVRTT/win-x86/PVRTexLib.dll
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1816a1f3c9fe0b994347ecf2f449e1fbd1870f157fb4283a73a8d74b9801f967
-size 2180608
+oid sha256:135e1b54296afe3bb5d19a09f4f8f77b14d1ea3bd3af319a879746a2794e412b
+size 4670768
diff --git a/deps/PVRTT/win-x86/PVRTexLib.lib b/deps/PVRTT/win-x86/PVRTexLib.lib
index f06870bc8a..6fcf10d70a 100644
--- a/deps/PVRTT/win-x86/PVRTexLib.lib
+++ b/deps/PVRTT/win-x86/PVRTexLib.lib
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:74fa42864a5347d5464ed257273cad7eaf1e23ef470db8cd9300b9b960114332
-size 3685238
+oid sha256:4906ce719c799292d8c33283edd2e067605e0342e08d86189b11b6b5bd2019e9
+size 31670
diff --git a/deps/Stride.GitVersioning/Nerdbank.GitVersioning/GitExtensions.cs b/deps/Stride.GitVersioning/Nerdbank.GitVersioning/GitExtensions.cs
index 53bd268755..02703a8899 100644
--- a/deps/Stride.GitVersioning/Nerdbank.GitVersioning/GitExtensions.cs
+++ b/deps/Stride.GitVersioning/Nerdbank.GitVersioning/GitExtensions.cs
@@ -347,11 +347,11 @@ public static string FindLibGit2NativeBinaries(string basePath)
{
return Path.Combine(basePath, "lib", "win32", IntPtr.Size == 4 ? "x86" : "x64");
}
- else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
return Path.Combine(basePath, "lib", "linux", IntPtr.Size == 4 ? "x86" : "x86_64");
}
- else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
return Path.Combine(basePath, "lib", "osx");
}
diff --git a/deps/TextureWrappers/Debug/win-x86/PvrttWrapper.dll b/deps/TextureWrappers/Debug/win-x86/PvrttWrapper.dll
deleted file mode 100644
index a450e29413..0000000000
--- a/deps/TextureWrappers/Debug/win-x86/PvrttWrapper.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a9dda5b511882cd26b2bc8a095a635d1b27b00353509a3eb9ce0ee9941477d59
-size 3564544
diff --git a/deps/TextureWrappers/Debug/win-x86/PvrttWrapper.pdb b/deps/TextureWrappers/Debug/win-x86/PvrttWrapper.pdb
deleted file mode 100644
index 80e5ea70ce..0000000000
--- a/deps/TextureWrappers/Debug/win-x86/PvrttWrapper.pdb
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b7ed578fecdc89ae8f8771c522932b544c01ee35d1cc5e6468929d305a184aad
-size 1413120
diff --git a/deps/TextureWrappers/Release/linux-x64/DxtWrapper.so b/deps/TextureWrappers/Release/linux-x64/DxtWrapper.so
new file mode 100755
index 0000000000..ba9dcf7e95
--- /dev/null
+++ b/deps/TextureWrappers/Release/linux-x64/DxtWrapper.so
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ccbef484862a90f89c08cbf247bd4e6ba3c126637b6e08e902512427ba6e44e2
+size 2389936
diff --git a/deps/TextureWrappers/Release/win-x64/PvrttWrapper.dll b/deps/TextureWrappers/Release/win-x64/PvrttWrapper.dll
deleted file mode 100644
index bfc9ef4333..0000000000
--- a/deps/TextureWrappers/Release/win-x64/PvrttWrapper.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a5043f0fcf13c203e65660f5c72fb7635ab925d7535204c36935d3494a07a6ce
-size 2849280
diff --git a/deps/TextureWrappers/Release/win-x64/PvrttWrapper.pdb b/deps/TextureWrappers/Release/win-x64/PvrttWrapper.pdb
deleted file mode 100644
index 90ce8d8a82..0000000000
--- a/deps/TextureWrappers/Release/win-x64/PvrttWrapper.pdb
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:501157c577dfd76201e2adc747bc164a5ea06559b27800cb444ff07a0a104dff
-size 1191936
diff --git a/deps/TextureWrappers/Release/win-x86/PvrttWrapper.dll b/deps/TextureWrappers/Release/win-x86/PvrttWrapper.dll
deleted file mode 100644
index 15e264e1cd..0000000000
--- a/deps/TextureWrappers/Release/win-x86/PvrttWrapper.dll
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b1e09b968aacde5d3ac7239bd9473fc364881d6a330274e386d1d9021ca6dd06
-size 2723328
diff --git a/deps/TextureWrappers/Release/win-x86/PvrttWrapper.pdb b/deps/TextureWrappers/Release/win-x86/PvrttWrapper.pdb
deleted file mode 100644
index f0c7504959..0000000000
--- a/deps/TextureWrappers/Release/win-x86/PvrttWrapper.pdb
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5e0470e9dc4060fd209cf68988d55ce2591a98cc7de84ca395e95cba83787627
-size 1191936
diff --git a/deps/VHACD/linux-x64/VHACD.so b/deps/VHACD/linux-x64/VHACD.so
new file mode 100755
index 0000000000..7c0a27e6bd
--- /dev/null
+++ b/deps/VHACD/linux-x64/VHACD.so
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:032a6f8542277a53168faa8bf739a54b3d5a1a172cb07cc29c4c5b130d913159
+size 900776
diff --git a/docs/BuildDetails.md b/docs/BuildDetails.md
deleted file mode 100644
index a84170cf8f..0000000000
--- a/docs/BuildDetails.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# Build
-
-## Overview
-
-This is a technical description what happens in our build and how it is organized. This covers mostly the build architecture of Stride itself.
-
-* [Targets](../Targets) contains the MSBuild target files used by Games
-* [sources/common/targets](../sources/common/targets) (generic) and [sources/targets](../sources/targets) (Stride-specific) contains the MSBuild target files used to build Stride itself.
-
-Since 3.1, we switched from our custom build system to the new csproj system with one nuget package per assembly.
-
-We use `TargetFrameworks` to properly compile the different platforms using a single project (Android, iOS, etc...).
-
-Also, we use `RuntimeIdentifiers` to select graphics platform. [MSBuild.Sdk.Extras](https://github.com/onovotny/MSBuildSdkExtras) is used to properly build NuGet packages with multiple `RuntimeIdentifiers` (not supported out of the box).
-
-### Limitations
-
-* Dependencies are per `TargetFramework` and can't be done per `RuntimeIdentifier` (tracked in [NuGet#1660](https://github.com/NuGet/Home/issues/1660)).
-* FastUpToDate check doesn't work with multiple `TargetFrameworks` (tracked in [project-system#2487](https://github.com/dotnet/project-system/issues/2487)).
-
-## NuGet resolver
-
-Since we want to package tools (i.e. GameStudio, ConnectionRouter, CompilerApp) with a package that contains only the executable with proper dependencies to other NuGet runtime packages, we use NuGet API to resolve assemblies at runtime.
-
-The code responsible for this is located in [Stride.NuGetResolver](../sources/shared/Stride.NuGetResolver).
-
-Later, we might want to take advantage of .NET Core dependency resolving to do that natively. Also, we might want to use actual project information/dependencies to resolve to different runtime assemblies and better support plugins.
-
-## Versioning
-
-Stride is versioned using `SharedAssemblyInfo.cs`.
-For example, assuming version `4.1.3.135+gfa0f5cc4`:
-- `4.1` is the Stride major and minor version, as they are grouped in the launcher. Versions inside this group shouldn't have breaking changes
-- `3` is the asset version. This can be bumped if asset files require some upgrade.
-- `135` is the git height (number of commits since `4.1.3` is set), computed automatically when building packages.
- Note: when building packages locally, this will typically be 1. This is the reason why the asset version needs to be bumped when asset changes to keep things ordered (otherwise the git height version `1` will always be lower than official version).
-- `+gfa0f5cc4` means git commit `fa0f5cc4`
-
-## Assembly processor
-
-Assembly processor is run by both Game and Stride targets.
-
-It performs various transforms to the compiled assemblies:
-* Generate [DataSerializer](../sources/common/core/Stride.Core/Serialization/DataSerializer.cs) serialization code (and merge it back in assembly using IL-Repack)
-* Generate [UpdateEngine](../sources/engine/Stride.Engine/Updater/UpdateEngine.cs) code
-* Scan for types or attributes with `[ScanAssembly]` to quickly enumerate them without needing `Assembly.GetTypes()`
-* Optimize calls to [Stride.Core.Utilities](../sources/common/core/Stride.Core/Utilities.cs)
-* Automatically call methods tagged with [ModuleInitializer](../sources/common/core/Stride.Core/ModuleInitializerAttribute.cs)
-* Cache lambdas and various other code generation related to [Dispatcher](../sources/common/core/Stride.Core/Threading/Dispatcher.cs)
-* A few other internal tasks
-
-For performance reasons, it is run as a MSBuild Task (avoid reload/JIT-ing). If you wish to make it run the executable directly, set `StrideAssemblyProcessorDev` to `true`.
-
-## Dependencies
-
-We want an easy mechanism to attach some files to copy alongside a referenced .dll or .exe, including content and native libraries.
-
-As a result, `` and `` item types were added.
-
-When a project declare them, they will be saved alongside the assembly with extension `.ssdeps`, to instruct referencing projects what needs to be copied.
-
-Also, for the specific case of ``, we automatically copy them in appropriate folders and link them if necessary.
-
-Note: we don't apply them transitively yet (project output won't contains the `.ssdeps` file anymore so it is mostly useful to reference from executables/apps directly)
-
-## Native
-
-By adding a reference to `Stride.Native.targets`, it is easy to build some C/C++ files that will be compiled on all platforms and automatically added to the `.ssdeps` file.
-
-### Limitations
-
-It seems that using those optimization don't work well with shadow copying and [probing privatePath](https://msdn.microsoft.com/en-us/library/823z9h8w(v=vs.110).aspx). This forces us to copy the `Direct3D11` specific assemblies to the top level `Windows` folder at startup of some tools. This is little bit unfortunate as it seems to disturb the MSBuild assembly searching (happens before `$(AssemblySearchPaths)`). As a result, inside Stride solution it is necessary to explicitely add `` to the graphics specific assemblies otherwise wrong ones might be picked up.
-
-This will require further investigation to avoid this copying at all.
-
-## Asset Compiler
-
-Both Games and Stride unit tests are running the asset compiler as part of the build process to create assets.
\ No newline at end of file
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
deleted file mode 100644
index 40bd212b7c..0000000000
--- a/docs/CONTRIBUTING.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Contributing to Stride
-
-## Check our issue tracker
-
-Please take a look at our [issue tracker](https://github.com/stride3d/stride/issues).
-
-If you are just getting started with Stride, issues marked with ['good first issue'](https://github.com/stride3d/stride/labels/good%20first%20issue) can be a good entry point.
-
-## Notify users
-
-Once you start working leave a message on the appropriate issue or create one if none exists to:
-* make sure that no one else is working on that same issue
-* lay out your plans and discuss it with collaborators and users to make sure it is properly architectured and would fit well in the project
-
-## Coding style
-
-Please use and follow Stride's `.editorconfig` when making changes to files.
-
-## Submitting Changes
-
-* Push your changes to a specific branch in your fork.
-* Use that branch to create and fill out a pull request to the official repository.
-* After creating that pull request and if it's your first time contributing a [CLA assistant](https://cla-assistant.io/) will ask you to sign the [Contributor License Agreement](https://github.com/stride3d/stride/blob/master/docs/ContributorLicenseAgreement.md).
diff --git a/docs/ContributorLicenseAgreement.md b/docs/ContributorLicenseAgreement.md
deleted file mode 100644
index 7ef6a76f75..0000000000
--- a/docs/ContributorLicenseAgreement.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# Stride Individual Contributor License Agreement
-
-Thank you for your interest in contributing to Stride ("We" or "Us").
-
-This contributor agreement ("Agreement") documents the rights granted by contributors to Us. To make this document effective, please sign it and send it to Us by electronic submission, following the instructions given by [CLA assistant](https://github.com/CLAassistant) who will send a comment in your first pull request. This is a legally binding document, so please read it carefully before agreeing to it. The Agreement may cover more than one software project managed by Us.
-
-## 1. Definitions
-
-"You" means the individual who Submits a Contribution to Us.
-
-"Contribution" means any work of authorship that is Submitted by You to Us in which You own or assert ownership of the Copyright. If You do not own the Copyright in the entire work of authorship, please follow the instructions in https://github.com/stride3d/stride.
-
-"Copyright" means all rights protecting works of authorship owned or controlled by You, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence including any extensions by You.
-
-"Material" means the work of authorship which is made available by Us to third parties. When this Agreement covers more than one software project, the Material means the work of authorship to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material.
-
-"Submit" means any form of electronic, verbal, or written communication sent to Us or our representatives, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us for the purpose of discussing and improving the Material, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."
-
-"Submission Date" means the date on which You Submit a Contribution to Us.
-
-"Effective Date" means the date You execute this Agreement or the date You first Submit a Contribution to Us, whichever is earlier.
-
-## 2. Grant of Rights
-
-### 2.1 Copyright License
-
-(a) You retain ownership of the Copyright in Your Contribution and have the same rights to use or license the Contribution which You would have had without entering into the Agreement.
-
-(b) To the maximum extent permitted by the relevant law, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license under the Copyright covering the Contribution, with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute the Contribution as part of the Material; provided that this license is conditioned upon compliance with Section 2.3.
-
-### 2.2 Patent License
-
-For patent claims including, without limitation, method, process, and apparatus claims which You own, control or have the right to grant, now or in the future, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable patent license, with the right to sublicense these rights to multiple tiers of sublicensees, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with the Material (and portions of such combination). This license is granted only to the extent that the exercise of the licensed rights infringes such patent claims; and provided that this license is conditioned upon compliance with Section 2.3.
-
-### 2.3 Outbound License
-
-Based on the grant of rights in Sections 2.1 and 2.2, if We include Your Contribution in a Material, We may license the Contribution under any license, including copyleft, permissive, commercial, or proprietary licenses.
-
-### 2.4 Moral Rights
-
-If moral rights apply to the Contribution, to the maximum extent permitted by law, You waive and agree not to assert such moral rights against Us or our successors in interest, or any of our licensees, either direct or indirect.
-
-### 2.5 Our Rights
-
-You acknowledge that We are not obligated to use Your Contribution as part of the Material and may decide to include any Contribution We consider appropriate.
-
-### 2.6 Reservation of Rights
-
-Any rights not expressly licensed under this section are expressly reserved by You.
-
-## 3. Agreement
-
-You confirm that:
-
-(a) You have the legal authority to enter into this Agreement.
-
-(b) You own the Copyright and patent claims covering the Contribution which are required to grant the rights under Section 2.
-
-(c) The grant of rights under Section 2 does not violate any grant of rights which You have made to third parties, including Your employer. If You are an employee, You have had Your employer approve this Agreement or sign the Entity version of this document. If You are less than eighteen years old, please have Your parents or guardian sign the Agreement.
-
-(d) You have followed the instructions in https://github.com/stride3d/stride, if You do not own the Copyright in the entire work of authorship Submitted.
-
-## 4. Disclaimer
-
-EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED "AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW.
-
-## 5. Consequential Damage Waiver
-
-TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED.
-
-## 6. Miscellaneous
-
-6.1 This Agreement will be governed by and construed in accordance with the laws of excluding its conflicts of law provisions. Under certain circumstances, the governing law in this section might be superseded by the United Nations Convention on Contracts for the International Sale of Goods ("UN Convention") and the parties intend to avoid the application of the UN Convention to this Agreement and, thus, exclude the application of the UN Convention in its entirety to this Agreement.
-
-6.2 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.
-
-6.3 If You or We assign the rights or obligations received through this Agreement to a third party, as a condition of the assignment, that third party must agree in writing to abide by all the rights and obligations in the Agreement.
-
-6.4 The failure of either party to require performance by the other party of any provision of this Agreement in one situation shall not affect the right of a party to require such performance at any time in the future. A waiver of performance under a provision in one situation shall not be considered a waiver of the performance of the provision in the future or a waiver of the provision in its entirety.
-
-6.5 If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and which is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.
diff --git a/docs/localization.md b/docs/localization.md
deleted file mode 100644
index e010058342..0000000000
--- a/docs/localization.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Localization
-
-## Translation
-
-Please help us translate by updating existing translations and/or adding new language at https://hosted.weblate.org/projects/stride/
-
-Translation are manually merged back from `weblate` branch to `master` branch.
-
-## Activate new language in Game Studio
-
-Once a new language has been added on weblate, it needs to be activated in the Game Studio during build & startup.
-
-Please check commit https://github.com/stride3d/stride/commit/c70f07f449 for an example on how to add a new language in Game Studio.
diff --git a/docs/technical/asset-introspection.md b/docs/technical/asset-introspection.md
deleted file mode 100644
index 0a2b27cd5c..0000000000
--- a/docs/technical/asset-introspection.md
+++ /dev/null
@@ -1,249 +0,0 @@
-# Asset, introspection and prefab
-
-## Assets
-
-*NOTE: Please read the Terminology section of the [Build Pipeline](build-pipeline.md) documentation first*
-
-### Design notes
-
-Assets contains various properties describing how a given **Content** should be generated. Some constraints are defined by design:
-
-* All types that can be referenced directly or indirectly by an asset must be serializable. This means that it should have the `[DataContract]` attribute, and the type of all its members must have it too.
-* Members that cannot or should not be serialized can have the `[DataMemberIgnore]` attributes
-* Other members can have additional metadata regarding serialization by using the `[DataMember]` attributes. There is also a large list of other attributes that can be used to customize serialization and presentation of those members.
-* Arrays are not properly supported
-* Any type of ordered collection is supported, but unordered collection (sets, bags) are not.
-* Dictionaries are supported as long as the type of the key is a primitive type (see below for the definition of primitive type)
-* When an asset references another asset, the member or item shouldn't use the type of the target asset, but the corresponding **Content**. For example, the ``MaterialAsset`` needs to reference a texture, it will have a ``Texture`` member and not a `TextureAsset`.
-* It is possible to use the `AssetReference` type to represent a reference to any type of asset.
-* Nullable value types are not properly supported
-* An asset can reference multiple times the same objects through various members/items, but one of the member/item must be the "real instance", and the others must be defined as "object references", see below for more details.
-
-### Yaml metadata
-
-When assets are serialized to/deserialized from Yaml files, dictionaries of metadata is created or consumed in the process. There is one dictionary per type of metadata. The dictionary maps a property path (using `YamlAssetPath`) to a value, and is stored in a instance of `YamlAssetMetadata`. These dictionary are exchanged between the low-level Yaml serialization layer and the asset-aware layer via the `AssetItem.Metadata` property. This property is not synchronized all the time, it is just consumed after deserialization, to apply metadata to the asset, and generated just before serialization, to allow the metadata to be consumed during serialization.
-
-### Overrides
-
-The prefab and archetype system introduces the possibility to override properties of an asset. Some nodes of the property tree of an asset might have a *base*. (usually all of them in case of archetype, and some specific entities that are prefab instances in case of scene). How nodes are connected together is explained later on this documentation, but from a serialization point of view, any property that is overridden will have associated yaml metadata. Then we usa a custom serializer backend, `AssetObjectSerializerBackend`, that will append a star symbol `*` at the end of the property name in Yaml.
-
-### Collections
-
-Collections need special handling to properly support override. An item of a collection that is inherited from a base can be either modified (have another value) or deleted. Also, new items that are not present in the base can have been added. This is problematic in the case of ordered collection such as `List` because adding/deleting items changes the indices of item.
-
-To solve all these issues, we introduce an object called `CollectionItemIdentifiers`. There is one instance of this object per collection that supports override. This instance is created or retrieved using the `CollectionItemIdHelper`. They are stored using `ShadowObject`, which maintain weak references from the collection to the `CollectionItemIdentifiers`. This means that it is currently not possible to have overridable items in collection that are `struct`.
-
-A collection that can't or shouldn't have overridable items should have the `NonIdentifiableCollectionItemsAttribute`.
-
-The `CollectionItemIdentifiers` associates an item of the collection to a unique id. It also keep track of deleted items, to be able to tell, when an item in an instance collection is missing comparing to the base collection, if it's because it has been removed purposely from the instance collection, or if it's because it has been added after the instance collection creation to the base collection.
-
-Items, in the `CollectionItemIdentifiers`, are represented by their key (for dictionaries) or index (list). This means that any collection operation (add, remove...) must call the proper method of this class to properly update this collection. This is automatically done as long as the collection is updated through Quantum (see below).
-
-In term of inheritance and override, the item id is what connect a given item of the base to a given item of the instance. This means that items can be re-ordered, and other items can be inserted, without loosing or messing the connection between base and instances. Also, for dictionary, keys can be renamed in the instance.
-
-At serialization, the item id is written in front of each item (so collections are transformed to dictionaries of [`ItemId`, `TValue`] and dictionary are transformed to dictionaries of [`KeyWithId`,` TValue`], with `KeyWithId` being equivalent to a Tuple).
-Here is an example of Yaml for a base collection and an instance collection:
-
-Base collection, with one id per item:
-```
-Strings:
- 309e0b5643c5a94caa799a5ea1480617: Hello
- e09ec493d05e0446b75358f0e1c0fbdd: World
- 9550f04dcee1d24fa8a30e41eea71a94: Example
- 1da8adce3f0ce9449a9ed0e48cd32f20: BaseClass
-```
-Derived collection. The first item is overridden, the 4th is a new item (added), and the last one express that the `BaseClass` entry has been deleted in the derived instance.
-```
-Strings:
- 309e0b5643c5a94caa799a5ea1480617*: Hi
- e09ec493d05e0446b75358f0e1c0fbdd: World
- 9550f04dcee1d24fa8a30e41eea71a94: Example
- cfce75d38d66e24fae426d1f40aa4f8a*: Override
- 1da8adce3f0ce9449a9ed0e48cd32f20: ~(Deleted)
-```
-
-When two assets that are connected with a base relationship are loaded, it is then possible to reconcile them:
-* any item missing in the derived collection is re-added (so the `~(Deleted)` is need to purposely delete items)
-* any item existing in the derived collection that doesn't exist in the base collection and doesn't have the star `*` is removed
-* any item that exists in both collection but have a different value is overwritten with the value of the base collection
-* overridden items (with the star `*`) are untouched
-
-## Quantum
-
-In Stride, we use an introspection framework called *Quantum*.
-
-### Type descriptors
-
-The first layer used to introspect object is in `Stride.Core.Reflection`. This assembly contains type descriptors, which are basically objects abstracting the reflection infrastructure. It is currently using .NET reflection (`System.Reflection`) but could later be implemented in a more efficient way (using `Expression`, or IL code).
-
-The `TypeDescriptorFactory` allows to retrieve introspection information on any type. `ObjectDescriptor`s contains descriptor for members which allow to access them. Collections, dictionaries and arrays are also handled (NOTE: arrays are not fully supported in Quantum itself).
-
-This assembly also provides an `AttributeRegistry` which allows to attach `Attribute`s to any class or member externally.
-
-> **TODO:** make sure all locations where we read `Attribute`s are using the `AttributeRegistry` and not the default .NET methods, so we properly support externally attached attributes.
-
-### Node graphs
-
-In order to introspect object, we build graphs on top of each object, representing their members, and referencing the graphs of other objects they reference through members or collection.
-The classes handling theses graphs are in the `Stride.Core.Quantum` assembly.
-
-#### Node containers
-
-Nodes of the graphs are created into an instance of `NodeContainer`. Usually a single instance of `NodeContainer` is enough, but we have some scenarios where we use multiple ones: for example each instance of scene editor contains its own `NodeContainer` instance to build graphs of game-side objects, which are different from asset-side (ie. UI-side) objects, have a different lifespan, and require different metadata.
-
-In the GameStudio, the `NodeContainer` class has two derivations: the `AssetNodeContainer` class, which expands the primitive types to add Stride-specific types (such as `Vector3`, `Matrix`, `Guid`...). This class is inherited to a `SessionNodeContainer`, which additionally allows plugin to register their own primitive types and metadata.
-
-#### Node builders
-
-The `NodeContainer` contains an `INodeBuilder` member and provides a default implementation for it. So far we didn't had the need to make a custom implementation, since the structure of the graphs themselves is pretty stable.
-
-However, the `INodeBuilder` interface presents an `INodeFactory` member which we override. This factory allows to customize the nodes to be constructed.
-
-The `INodeBuilder` also contains a list of types to be considered as *primitive types*, which means that even if the type contains members or is a reference type, it will be, in term of graph, considered as a primitive value and won't be expanded.
-
-#### Nodes
-
-There are 3 types of nodes in Quantum:
-
-* `ObjectNode` are node corresponding to an object that is a reference type. They can contain members (properties, fields...), and items (collection).
-* `BoxedNode` are a special case of `ObjectNode` that handles `struct`. They are able to write back the value of the struct in other nodes that reference them
-* `MemberNode` are node corresponding to the members of an object. If the value of the member is a class or a struct, the member will also contain a reference to the corresponding `ObjectNode`.
-* `ObjectNode` that are representing a collection of class/struct items will also have a collection of reference to target nodes via the `ItemReferences` property.
-
-Each node has some methods that allow to manipulate the value it's wrapping. `Retrieve` returns the current value, `Update` changes it. Collections can be manipulated with the `Add` and `Remove` methods (and a single item can be modified also with `Update`).
-
-#### Events
-
-Each node presents events that can be registered to:
-* `PrepareChange` and `FinalizeChange` are raised at the very beginning and the very end of a change of the node value. These events are internal to Quantum.
-* `MemberNode`s have the `ValueChanging` and `ValueChanged` events that are raised when the value is being modified.
-* `ObjectNode` have `ItemChanging` and `ItemChanged` events that are raised when the wrapped object is a collection, and this collection is modified.
-
-The arguments of these events all inherits from `INodeChangeEventArgs`, which allows to share the handlers between collection changes and member changes.
-
-Finally, Quantum nodes are specialized for assets, where the implementation of the support of override and base is. These specialized classes also present `OverrideChanging` and `OverrideChanged` event to handle changes in the override state.
-
-## AssetPropertyGraph
-
-### Concept
-
-We use Quantum nodes mainly to represent and save the properties of an asset. The AssetPropertyGraph is a container of all the nodes related to an asset, and describes certain rules such as which node is an object reference, etc.
-
-### Asset references
-
-When an asset needs to reference another asset, it should never contains a member that is of the type of the referenced asset. Rather, the type of the member should be the type of the *Content* corresponding to the referenced asset.
-
-### Node listener
-
-A node listener is an object that can listen to changes in a graph of node (rather than an individual nodes). The base class is `GraphNodeChangeListener`, and this class must define a visitor that can visit the graph of nodes to register, and stop at the boundaries of that graph.
-
-### Object references
-
-In many scenarios of serialization (in YAML, but also in the property grid where objects are represented by a tree rather than a graph), we need a way to represent multiple referencers of the same object such a way that the object is actually expanded at one unique location, and shown/serialized as a reference to all other locations. We introduce the concept of **Object references** to solve this issue.
-
-By design, only objects implementing the `IIdentifiable` interface can be referenced from multiple locations from the same root object. But right now they can only be referenced from the same unique root object (usually an `Asset`). Later on we might support *cross-asset references* but this would require to change how we serialize them.
-
-There are two methods to implement to define if a node must be considered as an object reference or not:
-
-* one for members of an object: `IsMemberTargetObjectReference`
-* one for items of a collection: `IsTargetItemObjectReference`
-
-## Node presenters
-
-Node presenters are objects used to present the properties of an object to a view system, such as a property grid.
-They transform a graph of nodes to a tree of nodes, and contains metadata to be consumed by the view.
-The resulting tree is slightly different from the graph. When an object A contains a member that is an object B that contains a property C, the graph will look like this:
-
-`ObjectNode A --(members)--> MemberNode B --(target)--> ObjectNode B --(members)--> MemberNode C`
-
-the corresponding tree of node presenters will be:
-
-`RootNodePresenter A --> MemberNodePresenter B --> MemberNodePresenter C`
-
-There is also a `ItemNodePresenter` for collection. On the example above, if B is instead a collection that contains a single item C, the graph would be:
-
-`ObjectNode A --(members)--> MemberNode B --(target)--> ObjectNode B --(items)--> ObjectNode C`
-
-the corresponding tree of node presenters will be:
-
-`RootNodePresenter A --> ItemNodePresenter B --> MemberNodePresenter C`
-
-Node presenter are constructed by a `INodePresenterFactory` in which `INodePresenterUpdater` can be registered. A `INodePresenterUpdater` allows to attach metadata to nodes, and re-organize the hierarchy in case it want to be presented differently from the actual structures (by inserting nodes to create category, bypassing a class object to inline its members, etc.).
-`INodePresenterUpdater` have two methods to update node:
-
-* `void UpdateNode(INodePresenter node)` is called on **each** node, after its children have been created. But it's not guaranteed that its siblings, or the siblings of its parents, will be constructed.
-* `void FinalizeTree(INodePresenter root)` is called once, at the end of the creation of the tree, and only on the root. Here it's guaranteed that every node is constructed, but you have to visit manually the tree to find the node that you want to customize.
-
-Node presenters listens to changes in the graph node they are wrapping. In case of an update, the children of the modified node are discarded and reconstructed. `UpdateNode` is called again on all new children, and `FinalizeTree` is also called again at the end on the root of the tree. Therefore, you have to be aware that an updater can run multiple time on the same nodes/trees.
-
-Metadata can be attached to node presenters via the `NodePresenterBase.AttachedProperties` property containers. These metadata are exposed to the view models as described in the section below.
-
-Commands can also be attached to node presenters. A command does special actions on a node, in order to update it. Node presenter commands implements the `INodePresenterCommand` interface. A command is divided in three steps, in order to handle multi-selection:
-* `PreExecute` and `PostExecute` are run only once, for a selection of similar node presenters, before and after `Execute` respectively.
-* `Execute` is run once per selected node presenter.
-
-### Node view models
-
-The view models are created on top of node presenters. Each node presenter has a corresponding `NodeViewModel`. In case of multi-selection, a `NodeViewModel` can actually wrap a collection of node presenters, rather than a single one.
-
-Metadata (ie. attached properties) are also exposed from the node presenter to the view via the view model, assuming they are common to all wrapped node presenter, if not, it is possible to add a `PropertyCombinerMetadata` to the property key to define the rule to combine the metadata. The default behavior for combining is to set the value to `DifferentValues` (a special object representing different values) if the values are not equals.
-
-Commands are also exposed. They are added to the view model, combined depending on their `CombineMode` property. They are transformed into WPF commands by being wrapped into a `NodePresenterCommandWrapper`.
-
-All members, attached properties, and commands of node view models are exposed as `dynamic` properties, and can therefore be used in databinding.
-
-All node view models are contained in an instance of `GraphViewModel`. A `GraphViewModelService` is passed in this object that acts as a registry for the node presenter commands and updaters that are available during the construction of the tree.
-
-### Template selector
-
-In order to be presented to the property grid, a proper template must be selected for each NodeViewModel. The `TemplateProviderSelector` object picks the proper template by finding the first registered one that accept the given node. Templates are defined in various XAML resource dictionaries, the base one being `DefaultPropertyTemplateProviders.xaml`. There is a priority mechanism that uses an `OverrideRule` enum with four values: `All`, `Most`, `Some`, `None`. One template can also explicitly override the other with the `OverriddenProviderNames` collection. The algorithm that picks the best match is in the `CompareTo` method of `TemplateProviderBase`.
-
-There is actually 3 levels of templates for each property. `PropertyHeader` and `PropertyFooter` represent the section above and the section below the expander that contains the children properties. In the default implementation (`DefaultPropertyHeaderTemplate` and most of its specializations), the header presents the left part of the property (the name, sometimes a checkbox...), and use the third template category, `PropertyEditor`, for the right side of the property grid.
-
-## Bases
-
-The base-derived concept and the override are stored in specialized Quantum nodes that implements `IAssetNode`. Properties (as well are items of collections) are automatically overridden when `Update`/`Add`/`Remove` methods are called. Some methods are also provided to manually interact with overrides, but it should not be used directly by users of Quantum.
-
-### Node linker
-
-`GraphNodeLinker` is an object that link a given node to another node. It has two main usages: it links objects that are game-side in the scene editor to their counterpart asset-side, and they also link a node to its base if it has one.
-
-The `AssetToBaseNodeLinker` is used to do that. It is invoked at initialization, as well as each time a property changes. It has a `FindTarget` method and `FindTargetReference`, which basically resolve, when visiting the derived graph, which equivalent node of the base graph corresponds to it.
-
-This linker is run from the `AssetPropertyGraph` that can then call `SetBaseNode` to actually link the nodes together.
-
-### Reconciliation with base
-
-Each time a change occurs in an asset, all nodes that have the modified nodes as base will call `ReconcileWithBase`. This method visits the graph, starting from the modified properties, and "reconcile" the change. The method is a bit long but well commented. The principle is, for each node, to detect first if something should be reconciled, and if yes, find the proper value (either cloning the value from the base, or find a corresponding existing object in the derived) and set it.
-
-`ReconcileWithBase` is also called at initialization to make sure that any desynchronization that could happen offline is fixed.
-
-## Future
-
-### Undo/redo
-
-The undo/redo system currently records only the change on the modified object, and rely on `ReconcileWithBase` to undo/redo the changes on the derived object. This is not an ideal design because there are a lot of consideration to take, and a lot of special cases.
-
-What we would like to do is:
-* record everything that changes, both in derived and in base nodes
-* disbranch totally automatic propagation during an undo/redo
-
-This design was not possible initially, and I'm not sure it is possible to do now - it's possible to hit a blocker when implementing it, or that it requires a lot of refactoring here and there before being doable.
-
-### Dynamic nodes
-
-Currently we still expose the real asset object in `AssetViewModel`, which it should never, in the editor, be modified out of Quantum node. Also, manipulating Quantum node is quite difficult sometimes due to indirection with target nodes, and access to members.
-
-```
-var partsNode = RootNode[nameof(AssetCompositeHierarchy.Hierarchy)].Target[nameof(AssetCompositeHierarchyData, IIdentifiable>.Parts)].Target;
-partsNode.Add(newPart);
-```
-
-Ideally, we would like to use the `DynamicNode` objects (currently broken) to manipulate quantum nodes:
-
-```
-dynamic root = DynamicNode.Get(RootNode);
-root.Hierarchy.Parts.Add(newPart)
-```
-
-If this is done properly, `AssetViewModel.Asset` could be turned private, and `AssetViewModel` could just expose the root dynamic node, which would allow to seemlessly manipulate the asset through a `dynamic` object.
diff --git a/docs/technical/build-pipeline.md b/docs/technical/build-pipeline.md
deleted file mode 100644
index 8e78d508f0..0000000000
--- a/docs/technical/build-pipeline.md
+++ /dev/null
@@ -1,153 +0,0 @@
-# Build pipeline
-
-This document describes the Build pipeline in Stride, its current implementation (and legacy), and the work that should be done to improve it.
-
-## Terminology
-
-* An **Asset** is a design-time object containing information to generate **Content** that can be loaded at runtime. For example, a **Model asset** contains the path to a source FBX file, and additional information such as an offset for the pivot point of the model, a scale factor, a list of materials to use for this model. A **Sprite font asset** contains a path to a source font, multiple parameters such as the size, kerning, etc. and information describing in which form it should be compiled (such as pre-rasterized, or using distance field...). **Asset** are serialized on disk using the YAML format, and are part of the data that a team developing a game should be sharing on a source control system.
-
-* **Content** is the name given to compiled data (usually generated from **Asset**s) that can be loaded at runtime. This means that in term of format, **Content** is optimized for performance and size (using binary serialization, and data structured in a way so that the runtime can consume it without re-transforming it). Therefore **Content** is the platform-specific optimized version of your game data.
-
-## Design
-
-Stride uses *Content-addressable storage* to store the data generated by the compilation. The main concept is that the actual name of each generated file is the hash of the file. So if, after a change, the resulting content built from the asset is different, then the file name will be different. An index map file contains the mapping between the content *URL* and the actual hash of the corresponding file. Parameters of each compilation commands are also hashed and stored in this database, so if a command is ran again with the same parameters, the build engine can easily recover the hashes of the corresponding generated files.
-
-### Build Engine
-
-The build engine is the part of the infrastructure that transforms data from the **assets** into actual **content** and save it to the database. It was originally designed to build content from input similar to a makefile. (eg. "compile all files in `MyModels/*.fbx` into Stride models). It has then been changed to work with individual assets when the asset layer has been implemented. Due to this legacy, this library is still not perfectly suited or optimal to build assets in an efficient way (dependencies of build steps, management of a queue for live-compiling in the Game Studio, etc.).
-
-#### Builder
-
-The `Builder` class is the entry point of the build engine. A `Builder` will spawn a given number of threads, each one running a `Microthread` scheduler (see `RunUntilEnd` method).
-
-#### Build Steps
-
-The `Builder` takes a root `BuildStep` as input. We currently have two types of `BuildStep`s:
-* A `ListBuildStep` contains a sequence of `BuildStep` (Formerly we had an additional parent class called `EnumerableBuildStep`, but it has been merged into `ListBuildStep`). A `ListBuildStep` will schedule all the build steps it contains at the same time, to be run in parallel. Formerly we had a synchronization mechanism using a special `WaitBuildStep` but it has been removed. We now use `PrerequisiteSteps` with `LinkBuildSteps` to manage dependencies.
-* A `CommandBuildStep` contains a single `Command` to run, which does actual work to compile asset.
-
-> **TODO:** Currently, when compiling a graph of build steps, we need to have all steps to compile in the root `ListBuildStep`. More especially, if we have a `ListBuildStep` container in which we want to put a step A that depends on a step B and C, we need to put A, B, C in the `ListBuildStep` container. This is cumbersome and error-prone. What we would like to do is to rely only on the `PrerequisiteSteps` of a given step to find what we have to compile. If we do so, we wouldn't need to return a `ListBuildStep` in `AssetCompilerResult`, but just the final build step for the asset, the graph of dependent build steps being described by recursive `PrerequisiteSteps`. The `ListBuildStep` container could be removed. We would still need to have lists of build steps when we compile multiple asset (eg. when compiling the full game), but it would be nothing that the build engine should be aware of.
-
-#### Commands
-
-Most command inherits from `IndexFileCommand`, which automatically register the output of the command into the command context.
-
-Basically, at the beginning of the command (in the `PreCommand` method), a `BuildTransaction` object is created. This transaction contains a subset of the database of objects that have been already compiled, provided by the `ICommandContext.GetOutputObjectsGroups()`. In term of implementation, this method returns all the objects that where written by prerequisite build steps, and all the objects that are already written in any of the parent `ListBuildStep`s, recursively. The objects coming from the parent `ListBuildStep` are a legacy of when we were using `WaitBuildStep` to synchronize the build steps. This hopefully should be implemented differently, relying only on prerequisite (since no synchronization can happen in the `ListBuildStep itself, everything is run in parallel).
-
-> **TODO:** Rewrite how OutputObjects are transfered from `BuildStep`s to other `BuildStep`s. Only the output from prerequisite `BuildStep` should be transfered. A lot of legacy makes this code very convoluted and hard to maintain.
-
-The `BuildTransaction` created during this step is mounted as a *Microthread-local database*, which is accessible only from the current microthread (which is basically the current command).
-
-At the end of the command (in the `PostCommand` method), every object that has been written in the database by the command are extracted from the `BuildTransaction` and registered to the current `ICommandContext` (which is how the `ICommandContext` can "flow" objects from one command to the other.
-
-It's important to keep in mind that objects accessible in a given command (in the `DoCommandOverride`) using a `ContentManager` are those provided during the `PreCommand` step, and therefore it is important that dependencies between commands (what other commmands a command needs to be completed to start) are properly set.
-
-### Compilers
-
-Compilers are classes that generate a set of `BuildStep`s to compile a given `Asset` in a specific context. This list could grow in the future if we have other needs, but the current different contexts are:
-- compiling the asset for the game
-- compiling the asset for the scene editor
-- compiling the asset to display in the preview
-- compiling the asset to generate a thumbnail
-
-#### IAssetCompiler
-
-This is the base interface for compiler. The entry point is the `Prepare` method, which takes an `AssetItem` and returns a `AssetCompilerResult`, which is a mix of a `LoggerResult` and a `ListBuildStep`. Usually there are two implementations per asset types, one to compile asset for the game and one to compile asset for its thumbnails. Some asset types such as animations might have an additional implementation for the preview.
-
-Each implementation of `IAssetCompiler` must have the `AssetCompilerAttribute` attached to the class, in order to be registered (compilers are registered via the `AssetCompilerRegistry`.
-
-> **TODO:** The `AssetCompilerRegistry` could be merged into the `AssetRegistry` to have a single location where asset-related types and meta-information are registered.
-
-Each compiler provides a set of methods to help discover the dependencies between assets and compilers. They will be covered later in this document.
-
-#### ICompilationContext
-
-> Not to be mistaken with `CompilerContext` and `AssetCompilerContext`.
-
-Contexts of compilation are defined by *types*, which allow to use inheritance mechanism to fallback on a default compiler when there is no specific compiler for a given context. Each compilation context type must implement `ICompilationContext`. Currently we have:
-
-* `AssetCompilationContext` is the context used when we compile an asset for the runtime (ie. the game).
-* `EditorGameCompilationContext` is the context used when we compile an asset for the scene editor, which is a specific runtime. Therefore, it inherits from `AssetCompilationContext`.
-* `PreviewCompilationContext` is the context used when we compile an asset for the preview, which is a specific runtime. Therefore, it inherits from `AssetCompilationContext`.
-* `ThumbnailCompilationContext` is the context used when we compile an asset to generate a thumbnail. Generally, for thumbnails, we compile one or several assets for the runtime, and use additional steps to generate the thumbnail with the `ThumbnailCompilationContext` (see below).
-
-> **TODO:** Currently thumbnail compilation is in a poor state. In `ThumbnailListCompiler.Compile`, we first generate the steps to compile the asset in `PreviewCompilationContext`, then generate the steps to compile the asset in `ThumbnailCompilationContext`, and finally we like the first with the latter. Dependencies from thumbnail compilers (which load a scene and take screenshots) to the runtime compiler (which compile the asset) is **not** expressed at all. It just works now because in all current cases, the `PreviewCompilationContext` does what we need for thumbnails (for example, the `AnimationAssetPreviewCompiler` adds the preview model to the normal compilation of the animation, which is needed for both preview and thumbnail).
-
-### Dependency managers
-
-We currently have two mechanisms that handle dependencies.
-
-> **TODO:** Merge the `AssetDependencyManager` and the `BuildDependencyManager` together into a single dependency manager object. There is a lot of redundancy between both, one rely on the other, some code is duplicated. See `XK-4862`
-
-#### AssetDependencyManager
-
-The `AssetDependencyManager` was the first implementation of an mechanism to manage dependencies between assets. It works independently of the build, which is one of the main issue it had and the reason why we started to develop a new infrastructure.
-
-It is based essentially on visiting assets with a `DataVisitorBase` to find references to other assets. There are two ways of referencing an asset:
-
-- Having a property whose type is an implementation of `IReference`. More explicitely the only case we have currently is `AssetReference`. This type contains an `AssetId` and a `Location` corresponding to the referenced asset.
-- Having a property whose type correspond to a *Content* type, ie. a type registered as being the compiled version of an asset type (for example, `Texture` is the Content type of `TextureAsset`).
-
-The problem of that design was that once all the references are collected, there is no way to know of the referenced assets are actually consumed, which could be one of the three following way:
-
-- the referenced asset is not needed to compile this asset, but it's needed at runtime to use the compiled content (eg. Models need Materials, who need Textures. But you can compile Models, Materials and Textures independently).
-- the referenced asset needs to be compiled before this asset, and the compiler of this asset needs to load the corresponding content generated from the referenced asset (eg. A prefab model, which aggregates multiple models together, needs the compiled version of each model it's referencing to be able to merge them).
-- the referenced asset is read when compiling this asset because it depends on some of its parameter, but the referenced asset itself doesn't need to be compiled first (eg. Navigation Meshes need to read the scene asset they are related to in order to gather static colliders it contains, but they don't need to compile the scene itself).
-
-#### BuildDependencyManager
-
-The `BuildDependencyManager` has been introduced recently to solve the problems of the `AssetDependencyManager`. It is currently not complete, and the ultimate goal is to merge it totally with the `AssetDependencyManager`.
-
-The approach is a bit different. Rather than extracting dependencies from the asset itself, we extract them from the compilers of the assets, which are better suited to know what they exactly need to compile the asset and what will be needed to load the asset at runtime.
-
-But one asset type can have multiple compilers associated to it (for the game, for the thumbnail, for the preview...). So the `BuildDependencyManager` works in the context of a specific compiler.
-
-Currently there is one `BuildDependencyManager` for each type of compiler.
-
-> **TODO:** Have a single global instance of `BuildDependencyManager` that contains all types of dependencies for all context of compilers. For example, we have thumbnail compilers that requires *game* version of assets, which means that the `BuildDependencyManager` for thumbnails will also contain a large part of the `BuildDependencyManager` to build the game. Merging everything into a single graph would reduce redundancy and risk to trigger the same operation multiple times simultaneously.
-
-#### AssetDependenciesCompiler
-
-The `AssetDependenciesCompiler` is the object that computes the dependencies with the `BuildDependencyManager`, and then generates the build steps for a given asset, including the runtime dependencies. It's the main entry point of compilation for the CompilerApp, the scene editor, and the preview. Thumbnails also use it, via the `ThumbnailListCompiler` class.
-
-> **TODO:** This class should be removed, and its content moved into the `BuildDependencyManager` class. By doing so, it should be possible to make `BuildAssetNode` and `BuildAssetLink` internal - those classes are just the data of the dependency graph, they should not be exposed publicly. To do that, a method to retrieve the dependencies in a given context must be implemented in `BuildDependencyManager` in order to fix the usage of `BuildAssetNode` in `EditorContentLoader`.
-
-### In the Game Studio
-
-The Game Studio compiles assets in various versions all the time. It has some specific way of managing database and content depending on the context.
-
-Remark: the Game Studio never saves index file on the disk, it keeps the url -> hash mapping in memory, always.
-
-#### Databases
-
-Before accessing content to load, a Microthread-local database must be mounted. Depending on the context, it can be a database containing a scene and its dependencies (scene editor), the assets needed to create a thumbnail, an asset to display in the preview...
-
-For the scene editor, this is handled by the `GameStudioDatabase` class. Thumbnails and preview also handle database mounting internally (in `ThumbnailGenerator` for example).
-
-> **TODO:** See if it could be possible/useful to wrap all database-mounting in the Game Studio into the GameStudioDatabase class.
-
-#### Builder service
-
-All compilations that occur in the Game Studio is done through the `GameStudioBuilderService`. This class creates an instance of `Builder`, a `DynamicBuilder` which allows to feed the Builder with build steps at any time. Having a single builder for the whole Game Studio allows to control the number of threads and concurrent tasks more easily.
-
-The `DynamicBuilder` class simply creates a thread to run the Builder on, and set a special build step, `DynamicBuildStep`, as root step of this builder. This step is permanently waiting for other child build step to be posted, and execute them.
-
-> **TODO:** Currently the dynamic build step waits arbitratly with the `CompleteOneBuildStep` method when more than 8 assets compiling. This is a poor design because if the 8 assets are for example prefabs who contains a lot of models, materials, textures, it will block until all are done, although we could complete the thumbnails of these models/materials/textures individually. Ideally, this `await` should be removed, and a way to make sure thumbnails of assets which are compiled are created as soon as possible should be implemented.
-
-The builder service uses `AssetBuildUnit`s as unit of compilation. A build unit corresponds to a single asset, and encapsulates the compiler and the generated build step of this asset.
-
-#### EditorContentLoader
-
-The scene editor needs a special behavior in term of asset loading. The main issue is that any type of asset can be modified by the user (for example a texture), and then need to be reloaded. Stride use the `ContentManager` to handle reference counting of loaded assets. With a few exception (Materials, maybe Textures), it does not support hot-swapping an asset. Therefore, when an asset needs to be reloaded, we actually need to unload and reload the *first-referencer* of this asset.
-
-The *first-referencer* is the first asset referenced by an entity, that contains a way (in term of reference) to the asset to reload. For example, in case of a texture, we will have to reload all models that use materials that use the texture to reload.
-
-This is done by the `EditorContentLoader` class. At initialization, this class collects all *first-referencer* assets and build them. Each time an asset is built, it is then loaded into the scene editor game, and the references (from the entity to the asset) are updated. This means that this class needs to track all first-referencers on its own and update them. This is done specifically by the `LoaderReferenceManager` object. The reference are collected from the `GameEditorChangePropagator`, an object that takes the responsibility to push synchronization of changes between the assets and the game (for all properties, including non-references). There is one instance of it per entity. When a property of an entity that contains a reference to an asset (a *first-referencer*) is modified, the propagator will trigger the work to compile and update the entity. In case of a referenced asset modified by the user, `EditorContentLoader.AssetPropertiesChanged` takes the responsibility to gather, build, unload and reload what needs to be reloaded.
-
-## Additional Todos
-
-> **TODO:** `GetInputFiles` exists both in `Command` and in `IAssetCompiler`. It has the same signature in both case, so it's returning information using `ObjectUrl` and `UrlType` in the compiler, where we are trying to describe dependency. That signature should be changed, so it returns information using `BuildDependencyType` and `AssetCompilationContext`, just like the GetInputTypes method. Also, the method is passed to the command via the `InputFilesGetter` which is not very nice and has to be done manually (super error-prone, we had multiple commands that were missing it!). An automated way should be provided.
-
-> **TODO:** The current design of the build steps and list build steps is a *tree*. For this reason, same build steps are often generated multiple times and appears in multiple trees. It could be possible to cache and share the build step if the structure was a *graph* rather than a *tree*. Do to that, the `Parent` property of build steps should be removed. The main difficulty is that the way output objects of build steps flow between steps has to be rewritten.
-
-
diff --git a/docs/technical/copy-paste.md b/docs/technical/copy-paste.md
deleted file mode 100644
index 7014f03cbf..0000000000
--- a/docs/technical/copy-paste.md
+++ /dev/null
@@ -1,218 +0,0 @@
-# Copy and paste
-
-## Introduction
-
-### Rationale
-Any good editing software has some kind of copy/paste system and Stride is no exception. Copy/paste should be intuitive and work in a lot of cases: any situation that make sense for a user.
-
-### Goals
-From a usability point of view, the capabilities of the copy/paste system should be:
-* Copy anything.
-* Paste anywhere.
-
-### Scope
-The copy/paste system should at term support all those cases:
-* copy/paste of assets
-* copy/paste of properties of assets
-* copy/paste of parts of assets (e.g. entities in a scene or prefab)
-* copy/paste of settings
-* support for copy/paste between different instances of the GameStudio
-
-### Current state (October 2017)
-
-* [x] copy/paste of assets
-* [-] copy/paste of properties of assets
- * [x] support for primitives
- * [x] support for collections
- * [-] partial support for dictionaries
- * [x] support for asset references and asset part references
- * [x] support for structures and class instances
- * [ ] no support for virtual properties (copy works in some cases, paste doesn't)
-* [-] copy/paste of parts of assets
- * [x] support for entities in scene or prefab
- * [x] support for UI elements, but need more testing, especially regarding attached properties
- * [x] support for sprites in spritesheet
-* [ ] copy/paste of settings (should be easy to add)
-* [-] support for copy/paste between different instances of the GameStudio
- * there is no technical obstacle as copying use the clipboard
- * already working, but need more testing, especially regarding identifiers and references
- * might need to introduce a unique Guid per project (or even per GameStudio instance) to detect and solve potential conflicts
-
-## Workflow
-From the user point of view, the entry points in the GameStudio are context menus (property grid, assets in asset view, entities in scene and prefab editors, etc.). Keyboard shortcuts ("Ctrl+C" and "Ctrl+V") also work in the same location.
-
-### Copy
-The order of events when the user copies "something" are:
-1. keyboard or context menu
-2. copy command in the corresponding editor or viewmodel
-3. eventually, some preparation code specific to the editor or asset
-4. call to one of `ICopyPasteService` copy methods
- 1. encapsulation into a `CopyPasteData` container
- 2. collection of necessary metadata
- 3. serialization to `string`
-5. save to clipboard
-
-### Paste
-The order of events when the user pastes "something" are:
-1. get text from clipboard and check that data is valid
-2. call `ICopyPasteService.DeserializeCopiedData()` method
- 1. deserialization from `string`
- 2. find a valid `IPasteProcessor` for the data
- 3. call `IPasteProcessor.ProcessDeserializedData()` method
- 4. apply metadata overrides
-3. actual paste
- * either use the result directly (simple case)
- * or call `IPasteProcessor.Paste()` (more complex scenario such as entities)
-
-## Implementation details
-The copy/paste API is exposed by the `ICopyPasteService` interface. It is available by consumers through the `ServiceProvider` (see `ViewModelBase` class).
-
-Implementation details are hidden from the API as only interfaces are exposed: `ICopyPasteService`, `IPasteResult`, `IPasteItem`, `IPasteProcessor`. This makes integration easier and allows extensibility for the future.
-
-### Service
-
-#### `ICopyPasteService` interface
-This interface is the main entry point for the copy/paste API. It exposes the copy and paste method as well as the registration (or unregistration) of processors.
-
-##### `CopyFromAsset()` and `CopyFromAssets()` methods
-Those methods create a serialized version of an asset or part of an asset that can then be put into the clipboard.
-
-##### `CopyMultipleAssets()` method
-This is a legacy method that is only used to copy a collection of `AssetItem`. Ideally it should be reworked so that `CopyFromAssets()` could be used instead. That implies modifying the call-site of this method (see `AssetCollectionViewModel.CopySelection()`) as well as the corresponding paste process (see `AssetItemPasteProcessor` and `AssetCollectionViewModel.Paste()`).
-
-##### `CanPaste()` method
-This method allows to quickly check if the serialized data can be pasted given the expected types of the target.
-
-##### `DeserializeCopiedData()` method
-This method attempts to deserialize the string data into a object compatible with the target. The object returned (`IPasteResult` see below) contains the data (if the process was successful) and a reference to the paste processors that were used.
-
-#### `CopyPasteService` class
-Internal implementation of the `ICopyPasteService` interface. it doesn't expose more functionalities than the interface.
-
-### Data and serialization
-When the copy service is asked to copy some objects, it first put them in a container before serialization. The container has some additional properties and metadata that gives some context to the copied objects. These metadata will then be used when pasting to help resolve some situations.
-
-#### `CopyPasteData` class
-It is the top container of copied data. In the serialized YAML it is the root of the document.
-
-##### `ItemType` property
-This string property contains the type of the copied items, serialized as a YAML tag. Having the type available as a top property allows before pasting to quickly check the type of the data without deserializing the whole document.
-
-##### `Items` property
-The copy/paste feature supports copying more than one object at a time, provided that the object types are all compatible (either same type or share a common base type). This property holds the list of copied items.
-
-##### `Overrides` property
-Objects that are copied from the property grid can override their base (e.g. in case of an archetype or prefab). Before serialization, the overrides metadata are collected for the copied objects and put into this property.
-
-#### `CopyPasteItem` class
-Each item is also put inside a container in order to attach per-item contextual metadata.
-
-##### `Data` property
-The copied data itself.
-
-##### `SourceId` property
-Identifier to the asset from which the data was copied. This will be used later by the paste processors to determine whether the pasted data must be cloned or used as-is depending on some conditions.
-
-##### `IsRootObjectReference` property
-Indicates if the copied data is a reference to another object.
-
-#### `PasteResult` class
-(implements `IPasteResult` interface)
-Similarly to the copy step, pasted data (i.e. copied data that has been deserialized and processed by a paste processor) is returned by the service inside a container. The paste result is itself a collection of items as each `CopyPasteItem` from the copied data is processed separately.
-
-#### `PasteItem` class
-(implements `IPasteItem` interface)
-Represents one item of the resulting paste data. It also contains a reference to the processor that was used to process the deserialized data.
-
-### Copy processors
-(implement `ICopyProcessor`)
-
-A copy processor processes the data before it is serialized. At the moment there is only one such processor.
-
-Remark: copy processors are registered as plugins (see `AssetsPlugin.RegisterCopyProcessors()`).
-
-#### `EntityComponentCopyProcessor`
-This copy processor is applied when copying a `TransformComponent` or an `EntityComponentCollection` containing one or more `TransformComponent`. In such cases, the list of children of the transform is cleared so that only the transform properties (position, rotation and scale) are copied.
-
-### Paste processors
-(implement `IPasteProcessor`)
-
-A paste processor has two roles:
-* first, it processed the data just after it has been deserialized. That step prepares the data before it can be applies to the target. This usually involves converting to match certain types and resolving references.
-* if the data could be processed, it then paste it into the final target object. Only during that step is an actual asset modified.
-
-Paste processors are registered as plugins (see `AssetsPlugin.RegisterPasteProcessors()`). The order of registration matters: when looking for a matching processor, the service will iterate through the list of registered processors in reverse order (last registered first) and return the first one than can process the data (i.e. the first one which `Accept()` method returns `true`). At the moment it is working fine but when plugins will be more widely supported it might cause some conflicts. An explicit priority order could be given to each processor.
-
-Currently the registration order is:
-1. `AssetPropertyPasteProcessor`
-2. `AssetItemPasteProcessor`
-3. `EntityComponentPasteProcessor`
-4. `EntityHierarchyPasteProcessor`
-5. `UIHierarchyPasteProcessor`
-
-#### `AssetPropertyPasteProcessor` class
-This is the default paste processor with the lowest priority (registered first, see above). It supports the following features:
-* pasting a value into a target property
-* pasting a single item into a target collection (appending or adding one item depending on the index)
-* pasting a collection into a target collection (appending or inserting items depending on the index)
-* replacing a target collection with a single item or a collection
-
-It will also try to convert the pasted value into the type or the target (see `TypeConverterHelper` helper class).
-
-#### `AssetItemPasteProcessor` class
-This processor only accepts single object or collection of `AssetItem`. It is used when copying and pasting assets in the asset view.
-
-#### `EntityComponentPasteProcessor` class
-(inherits `AssetPropertyPasteProcessor`)
-
-This processor extends the behavior of `AssetPropertyPasteProcessor` in the case of `EntityComponent`. It adds some special rules specific to components:
-* the `TransformComponent` cannot be removed from an `EntityComponentCollection`
-* the `TransformComponent` cannot be replaced by a different type of component
-* when replacing the `TransformComponent`, instead manually replace its properties (position, rotation and scale)
-* multiple instances of component are allowed only if the component class is decorated with a `AllowMultipleComponentAttribute`.
-
-#### `AssetCompositeHierarchyPasteProcessor` class
-This processor supports pasting hierarchical data (`AssetCompositeHierarchyData`) into a hierarchical asset composite (`AssetCompositeHierarchy`). Typically used for prefab, scene or UI assets.
-
-The tricky part is actually handling all the part references (hierarchy) and the inheritance from the base (composite). There is a lot of cloning and remapping of identifiers involved in that process.
-
-#### `EntityHierarchyPasteProcessor` class
-(inherits `AssetCompositeHierarchyPasteProcessor`)
-
-This processor is dedicated to hierarchy of entities (i.e. scene or prefab assets). It handles the actual pasting into the target asset.
-
-#### `UIHierarchyPasteProcessor` class
-(inherits `AssetCompositeHierarchyPasteProcessor`)
-
-This processor is dedicated to hierarchy of UI elements (i.e. UI page or library assets). It handles the actual pasting into the target asset.
-
-### Post-paste processors
-(implement `IAssetPostPasteProcessor`)
-
-Small hack to apply special case when a scene asset is copied/pasted in the asset view. This should be reworked to allow more general cases.
-
-Remark: post-paste processors are registered as plugins (see `AssetsPlugin.RegisterPostPasteProcessors()`).
-
-#### `ScenePostPasteProcessor` class
-Because scene asset are also hierarchical (a scene can contain child scenes), when creating a copy of a scene those relationship must be cleared.
-
-### Editor commands
-In the property grid, the copy, paste and replace capabilities are available through the context menu of the properties and keyboard shortcuts. There are implemented by node commands.
-
-#### `CopyPropertyCommand` class
-This command assumes that data can always be copied and thus is available on all asset nodes. It basically asks the `ICopyService` to serialize the node value and then sets the clipboard.
-
-#### `PastePropertyCommandBase` class
-This command implements the paste capability in the property grid. It is always attached to all asset nodes. However it is disabled, when pasting is not possible: readonly property, incompatible data.
-
-When pasting, the command automatically creates a transaction to enable undo and redo.
-
-This abstract class is inherited by `PastePropertyCommand` and `ReplacePropertyCommand` where the only difference is that the latter will set the `AssetPropertyPasteProcessor.IsReplaceKey` property key to `true`. Depending on the value, paste processors will either paste or replace. It is only meaningful in the context of collection, as pasting a value to a single property is the same as replacing it.
-
-### Others
-
-#### `SafeClipboard` class
-The `System.Windows.Clipboard` can sometimes throw `COMException` when the clipboard is not available (only one process can access the clipboard at a given time). This class is a tiny wrapper that silently ignores (catches) those exceptions.
-
-## Documentation and references
-The only user documentation currently existing can be found in one blog post (https://stride3d.net/blog/copy-paste/) and the release notes of the 1.9-beta version (http://doc.stride3d.net/latest/en/ReleaseNotes/ReleaseNotes-1.9.html).
diff --git a/docs/technical/editor-localization.md b/docs/technical/editor-localization.md
deleted file mode 100644
index 47c069433c..0000000000
--- a/docs/technical/editor-localization.md
+++ /dev/null
@@ -1,657 +0,0 @@
-# Editor localization
-
-## Introduction
-
-### Rationale
-Currently (Stride 2.1) the editor is mostly available in English, although there is very partial support for Japanese. Ideally Stride should be available in a range of languages, starting with English and Japanese. Other languages will probably be be easy to add later if needed.
-
-Supporting multiple languages not only covers every text or tooltip that appear in the UI of the editor, but also error messages, logs and the documentation (we have plan to integrate part of the documentation directly in the Game Studio).
-
-We want also to simplify the workflow of translating the application so that future updates and fixes can be easily integrated. The translation itself will probably be done by an external contractor that doesn't necessarily have technical knowledge of Stride.
-
-And finally, we should have a solution that is flexible enough so that translations can be added/updated without recompiling. This could allow third-party or community-based translation for languages that we won't officially support but that might add value for some people.
-
-### Goals
-To summarize, the design goals of the localization system are:
-
-* Easy for developers to add, change or remove text that should be localized.
-* Easy for translators to understand the context of the text to be localized, so they can provide the best translation.
- * This also means that they should be provided with a unified document format independent of the underlying technology used.
-* Support for versioning.
- * i.e. text format.
-* No need to recompile the GameStudio to update a language, an application restart should be able to pickup the latest version.
- * Consider delivery of translation updates outside of the normal release cycle.
-
-### Scope
-The localization system should at term support all those cases:
-
-* static UI (mostly XAML)
- * essentially text, but that may also include images or icons
-* messages defined in code
- * error messages, logs, etc.
-* property grid attributes and types
- * `[Display]`, `[Category]`, enums, types, etc.
-* assets
- * game templates that contain a description
-
-### Current state (October 2017)
-* [x] static UI
-* [x] messages in code (but not all translated)
-* [ ] property grid
- * [x] support for enum tooltips
-* [ ] assets
-
-## Workflow
-
-### Basic workflow
-First localized text need to be identified and "marked". Then they can be extracted to an independent text file (template) which is given to translators. For each supported language translators create or update a file matching the template. Those translated text file can then be imported by the Game Studio and used to display texts and messages in the UI.
-
-In short, development -> extraction -> translation -> import.
-
-A special care should be taken in case of update of existing (and possibly already translated) strings.
-
-### Development
-To ease the work of the developer, the API should be minimal and text to translate should be extractable by a tool.
-
-#### XAML
-Traditionally, when working with resource files (**.resx**) and satellite assemblies, the developer must lookup the correct key or create a new one if necessary. This is both time-consuming and error-prone.
-
-The current solution, based on a gettext-like technology, use a markup extension (`LocalizeExtension`) for most cases and a value converter (`Translate`) for more advanced cases. The main advantage of a gettext approach is that localization context and plurals are supported out of the box without much trouble. Plurals especially can be complex as the rules differ depending on the language: Japanese doesn't have plurals, Latin-based languages usually have two forms: singular and plural, Arabic has 6 forms, etc.
-
-Examples of use of `LocalizeExtension`:
-```xml
-
-
-
-
-
-
-```
-
-Examples of use of `Translate`:
-```xml
-
-
-
-
-```
-
-Notes:
-* Since the converter is used for bindings, the text to localize cannot be extracted from the XAML (same case as when using a static string reference with the markup extension). So the developer must ensure that the related entries are available.
-* Plurals and context are not supported as binding (context is supported as a literal attribute), but could be added if necessary using a kind of multi-binding (not implemented yet). A typical use could look like:
-```xml
-
-```
-* Also one difference between the markup extension (Localize) and the converter (Translate) is that the latter converts dynamically. So if the value changes, it will look for the translation of that new value. On the other hand the markup extension works statically: the value is only provided once.
-
-#### C# Code
-The main entry point is the `ITranslationManager` interface which is accessed through the singleton `TranslationManager.Instance` (lazy initialized). It is agnostic of the underlying technology (though inspired by Gettext) used for providing the translation and define a minimal interface. Several providers can be registered to the manager (typically one per localized assembly). Through the provider interface (`ITranslationProvider`), developer can query for translated text. For convenience `ITranslationManager` itself implements the `ITranslationProvider` interface.
-
-Initialization (typically in the `Module` class of an assembly):
-```csharp
-TranslationManager.Instance.RegisterProvider(new GettextTranslationProvider());
-```
-
-Change current language:
-```csharp
-TranslationManager.Instance.CurrentLanguage = new CultureInfo("en-US");
-```
-
-Examples of use:
-```csharp
-// Get a simple string
-var str = TranslationManager.Instance.GetString("Some text.");
-// Get a string supporting plurals
-var plural = TranslationManager.Instance.GetPluralString("{0} fox", "{0} foxes", 42);
-// Get a string with a context
-var context = TranslationManager.Instance.GetParticularString("Some text.", "some context");
-// Get a string with a context and supporting plurals
-var contextPlural = TranslationManager.Instance.GetParticularPluralString("{0} fox", "{0} foxes", 42, "some other context");
-```
-
-Notes:
-* When a translation is not available in the current language, the methods from the provider return the original string.
-
-Like the `ResourceSet` and `ResourceManager` (**.resx** files) that it mimics, Gettext supports language inheritance, i.e. if the current locale is "fr-FR" it will first look for translation for "fr-FR", then fallback to "fr" if not found, then fallback to neutral if not found (then fallback to returning the string as-is as a last resort).
-
-```csharp
-TranslationManager.Instance.RegisterProvider(new GettextTranslationProvider());
-// Change current culture to French (neutral)
-TranslationManager.Instance.CurrentLanguage = new CultureInfo("fr");
-// if a French translation exists, returns it. Otherwise returns the same text
-Console.WriteLine(provider.GetString("Hello, World!"));
-// Change current culture to French (France)
-TranslationManager.Instance.CurrentLanguage = new CultureInfo("fr-FR");
-// if a French (France) translation exists, returns it. Otherwise looks for French (neutral). Otherwise returns the same text
-Console.WriteLine(provider.GetString("Hello, World!"));
-```
-
-To localize C# constructs such as class, enum or property, the `TranslationAttribute` can be used. Typical use of this feature includes decorating static strings and enums.
-
-Declarations:
-```csharp
-public static class Strings
-{
- [Translation("Some text")]
- public static readonly string SomeText = "Some text";
-}
-
-public enum Groups
-{
- [Translation("First group")]
- Group0,
- [Translation("Second group")]
- Group1,
-}
-```
-
-Uses (C#):
-```csharp
-var group = Groups.Group0;
-Console.WriteLine(TranslationManager.Instance.GetString(group.ToString()));
-```
-
-Uses (XAML):
-```xml
-
-
-```
-
-### Extraction
-Instead of manually creating the resources files, a tool is responsible to extract all localizable strings from the source code (both **.cs** and **.xaml** files).
-
-Notes:
-* For convenience, a batch script (**extract_strings.bat**) is provided in **sources\localization**.
-
-#### Export formats
-The extractor too can export the strings into a gettext-compatible format (**.pot**). Other formats could be added later (e.g. CSV, XLIFF).
-
-#### Example of exported file
-```t
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"POT-Creation-Date: 2017-05-26 14:41:20+0900\n"
-"PO-Revision-Date: 2017-05-26 14:41:20+0900\n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MonoDevelop Gettext addin\n"
-
-#: ViewModels/MainWindowViewModel.cs:17
-msgid "Some translated text"
-msgstr ""
-
-#: ViewModels/MainWindowViewModel.cs:14
-msgctxt "UI"
-msgid "Main Window"
-msgstr ""
-
-#: ViewModels/MainWindowViewModel.cs:55
-msgid "{0} fox"
-msgid_plural "{0} foxes"
-msgstr[0] ""
-msgstr[1] ""
-```
-
-Each entry consists of a few elements:
-* `msgid` is the original (untranslated) `text`. It corresponds to the text parameter in the `ITranslationProvider` methods.
-* `msgid_plural` is the original (untranslated) plural version of the text and is an optional parameter. It corresponds to the `textPlural` parameter in the `ITranslationProvider` methods.
-* `msgstr` will be the language-specific translation(s). In a template (.pot) file, it is empty. It will be filled by the translator when creating the dedicated **.po** file for a given language.
- * when a plural form is expected, this become an indexed array of translations. The .pot contains two indexed entries (0 and 1), since it is the default in most Latin-based language (e.g English).
-* `msgctxt` is the context of the text and is an optional parameter. It corresponds to the context parameter in the `ITranslationProvider` methods.
-* Comments are supported and indicated with a starting **#** character. The character immediately following indicates the type of comment:
- * a whitespace indicates a manual comment, usually added by the translator.
- * a colon (**:**) indicates a source file reference where occurrences of the text appear. If there is more than one occurrence, multiple comments can be used.
- * a point (**.**) indicates a comment added by the developers.
- * other types are supported. See https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html#PO-Files.
-
-#### Merging
-The `Catalog` class in the `GNU.Gettext` library already supports some kind of merging with an existing **.pot** file. Additionally, some tools (such as Poedit, see below) support updating an existing translation with a template (**.pot**) file.
-
-When the `--merge` option is used, the existing file is read and new entries found by the extractor tool are added. For the moment, existing entries that are not found again are not deleted but this could be added as an option.
-
-Additionally, the standard distribution of Gettext includes a set of utilities that can be used to automatize the manipulation of existing .po files. This includes:
-
-* ``msgmerge`` to merge two existing .po files together, or to update a **.po** files from a more recent **.pot** files (see https://www.gnu.org/software/gettext/manual/html_node/msgmerge-Invocation.html#msgmerge-Invocation) * Note that the "merge with POT" option in Poedit is probably based on this utility.
-* all kind of manipulations such as comparing, appending, filtering. See complete list here: https://www.gnu.org/software/gettext/manual/html_node/Manipulating.html#Manipulating
-
-##### Text added
-New text entries are added to the newly extracted **.pot** template compared to the one that was used to create the existing **.po** files.
-
-In that case, the merge is easy and non conflicting: after using msgmerge (or Poedit), the new entries will be added to the **.po** files with empty translations.
-
-previous **MyApp.fr.po**:
-```t
-msgid "{0} horse"
-msgid_plural "{0} horses"
-msgstr[0] "{0} cheval"
-msgstr[1] "{0} chevaux"
-```
-
-new **MyApp.pot**:
-```t
-msgid "{0} horse"
-msgid_plural "{0} horses"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "{0} fox"
-msgid_plural "{0} foxes"
-msgstr[0] ""
-msgstr[1] ""
-```
-
-new (merged) **MyApp.fr.po**:
-```t
-msgid "{0} horse"
-msgid_plural "{0} horses"
-msgstr[0] "{0} cheval"
-msgstr[1] "{0} chevaux"
-
-msgid "{0} fox"
-msgid_plural "{0} foxes"
-msgstr[0] ""
-msgstr[1] ""
-```
-
-##### Text removed
-Text entries are missing in the newly extracted **.pot** template compared to the one that was used to create the existing **.po** files.
-
-When using `msgmerge` (or Poedit), the missing entries that have already been translated will be mark as obsolete in the **.po** files (commented out with `#~`). They won't appear in Poedit UI anymore, until they are restored in the **.pot** later. Missing entries that were not translated yet are completely removed to keep the file clean.
-
-previous **MyApp.fr.po**:
-```t
-msgid "{0} horse"
-msgid_plural "{0} horses"
-msgstr[0] "{0} cheval"
-msgstr[1] "{0} chevaux"
-
-msgid "{0} fox"
-msgid_plural "{0} foxes"
-msgstr[0] "renard"
-msgstr[1] "renards"
-```
-
-new **MyApp.pot**:
-```t
-msgid "{0} horse"
-msgid_plural "{0} horses"
-msgstr[0] ""
-msgstr[1] ""
-```
-
-new (merged) **MyApp.fr.po**:
-```t
-msgid "{0} horse"
-msgid_plural "{0} horses"
-msgstr[0] "{0} cheval"
-msgstr[1] "{0} chevaux"
-
-#~ msgid "{0} fox"
-#~ msgid_plural "{0} foxes"
-#~ msgstr[0] "renard"
-#~ msgstr[1] "renards"
-```
-
-##### Text changed
-When an original text in an entry has changed, `msgmerge` (or Poedit) will attempt to find and match the previous text and will mark the translation as fuzzy (i.e. need work). When used with the `--previous` option (which seem to be the case in Poedit), the previous matched text will be preserved (commented out with `#|`).
-
-previous **MyApp.fr.po**:
-```t
-msgid "{0} horse"
-msgid_plural "{0} horses"
-msgstr[0] "{0} cheval"
-msgstr[1] "{0} chevaux"
-```
-
-new **MyApp.pot**:
-```t
-msgid "{0} big horse"
-msgid_plural "{0} big horses"
-msgstr[0] ""
-msgstr[1] ""
-```
-
-new (merged) **MyApp.fr.po**:
-```t
-#, fuzzy
-#| msgid "{0} horse"
-#| msgid_plural "{0} horses"
-msgid "{0} big horse"
-msgid_plural "{0} big horses"
-msgstr[0] "{0} cheval"
-msgstr[1] "{0} chevaux"
-```
-Note that if `msgmerge` (or Poedit) cannot find and match a previous text, it will fallback to the add/remove cases.
-
-Of course, after the merge the new file must be transmitted to the translators for update.
-
-### Translation
-After having extracted the localizable strings, the next step is to actually translate them into the supported languages.
-
-The **.pot** file is a textual format that can theoretically be edited manually. However, this can be a difficult especially for non-technical people. Fortunately a number of tools exist than can recognize this format and work with it smoothly.
-
-#### Using Poedit
-Poedit ([website](https://poedit.net/), [source code (MIT)](https://github.com/vslavik/poedit/)) allows to create and manage gettext catalog file (**.po**). It also support creating and updating an existing catalog from a template (**.pot**) applying the correct plural rules corresponding to the selected language.
-
-Poedit application is translated into several language including Japanese (100% according to the [Crowdin project](https://crowdin.com/project/poedit/ja)).
-
-##### Open a file (**.pot** or **.po**)
-Poedit supports opening both **.po** (catalog) and **.pot** (template) files. The main difference is that a template is not bound to a particular localization while a catalog is. Templates contains extracted strings and ce be seen as a read-only input in the translation process. Catalogs can be modified and are the output of this process.
-
-After opening a template file, the translator can create a new translation by clicking on the "Create new translation" button at the bottom. It opens a dialog where the target language can be selected. This is important in order to setup the correct plural rules for the chosen language.
-
-![](media/poedit-open-pot-file.png)
-
-##### Editing a catalog
-The process of editing in poedit is straightforward. A list of source strings is visible at the top. After selecting an entry, the translation (or translations incase of plurals) can be edited at the bottom. Poedit also offers translation suggestions based on some external database, but is not always accurate and is a limited feature in the free version.
-
-Comments (added by developers and by the extraction tool) are also visible at the bottom right. Translators can also add their own comments. This can be use for example to communicate between the translators team and the developers.
-
-![](media/poedit-edit-po-file.png)
-
-It also supports a "Need work" flag (that is translated into the fuzzy flag in the **.po** file) to indicate when a translation might be incorrect or need more work. In that case it will appear in orange in the list. The flag is usually set by the extraction tool, but translators can also set or unset it at will.
-
-##### Update from a more recent template
-After a translation has been created by a translator, changes can still happen as development continues. To deal with this case, Poedit has an option to update a catalog (**.po**) from a template (**.pot**). To do so go to **Menu-->Catalog-->Update from POT files...** and select the corresponding file.
-
-What happens is that any new entry is added while previously existing one are kept as-is. There is also a very neat option when a source text has slightly changed, Poedit will detect it and display the entry has fuzzy while also indicated that it detected a change.
-
-On the other hand, if an entry is completely removed, it will disappear from the Poedit interface but will stay in the **.po** file (commented out using the `#~` prefix) until it is purged. One advantage of not removing it completely is that if it is reintroduced, the existing translation will be restored.
-
-Notes:
-* Internally Poedit seem to be using the `msgmerge` tool (see "Merging" section above).
-
-##### Saving
-By convention the name of the catalog file should match the name of the template with the addition of the target language (in [IETF language tag](https://en.wikipedia.org/wiki/IETF_language_tag) format). It should also be saved in a folder corresponding to that language.
-
-For example the Japanese catalog for `Stride.GameStudio` should be named **Stride.GameStudio.ja.po** and saved in a **ja/** folder.
-
-### Import
-
-#### Supported import formats
-For the moment we only support **.po** and **.resx** files compiled into satellite assemblies. However the `Stride.Core.Translation` library is flexible and can be extended to support additional providers. This could include CSV (not necessarily compiled), XLIFF, **.mo** files (which is another kind of compiled **.po**). This could also be considered for asset translation (e.g. **.sdtpl**) where we externalize the translations into files that can be distributed separately and loaded/discovered using a dedicated provider.
-
-#### Compilation to satellite assemblies
-**.po** files can be compiled into a satellite assemblies that the `GettextTranslationProvider` (and under the hood the `GNU.Gettext` library) will use to retrieve translations for a given language. It it a similar mechanism to the satellite assemblies generated from the **.resx files**. In fact `GettextResourceManager` inherits from `ResourceManager` with additional support for capabilities provided by Gettext such as context and plurals.
-
-To create such assembly, the GNU.Gettext.Msgfmt.exe command line must be used. Usage is show below:
-
-```
-Msgfmt (Gettext.NET tools)
-Custom message formatter from *.po to satellite assembly DLL or to *.resources files
-
-Usage:
- GNU.Gettext.Msgfmt[.exe] [OPTIONS] filename.po ...
- -r resource, --resource=resource Base name for resources catalog i.e. 'Solution1.App2.Module3'
- Note that '.Messages' suffix will be added for using by GettextResourceManager
-
- -o file, --output-file=file Output file name for .NET resources file.
- Ignored when -d is specified
-
- -d directory Output directory for satellite assemblies.
- Subdirectory for specified locale will be created
-
- -l locale, --locale=locale .NET locale (culture) name i.e. "en-US", "en" etc.
-
- -L path, --lib-dir=path Path to directory where GNU.Gettext.dll is located (need to compile DLL)
-
- --compiler-name=name C# compiler name.
- Defaults are "mcs" for Mono and "csc" for Windows.NET.
- On Windows you should check if compiler directory is in PATH environment variable
-
- --check-format Verify C# format strings and raise error if invalid format is detected
-
- --csharp-resources Convert a PO file to a .resources file instead of satellite assembly
-
- -v, --verbose Verbose output
-
- -h, --help Display this help and exit
-```
-
-The command needs to find a C# compiler in the path (in our case csc that can be found in the Roslyn folder under the *MSBuild* installation).
-
-In Stride's projects file, a command line similar to the following one is used:
-
-```
-Path=$(MSBuildBinPath)\Roslyn;$(Path)
-IF EXIST "$(SolutionDir)..\sources\localization\ja\$(TargetName).ja.po" "$(SolutionDir)..\sources\common\deps\Gettext.Net\GNU.Gettext.Msgfmt.exe" --lib-dir "$(SolutionDir)..\sources\common\deps\Gettext.Net" --resource $(TargetName) -d "$(TargetDir)." --locale ja "$(SolutionDir)..\sources\localization\ja\$(TargetName).ja.po" --verbose
-```
-
-Remarks:
-
-* By convention, the **.po** filenames are suffixed by the [IETF language tag](https://en.wikipedia.org/wiki/IETF_language_tag) (e.g. "en" for English, "fr" for French, "ja" for Japanese). Note that the same tags are recognized by the .Net `CultureInfo` class.
-* The generated satellite assemblies must be located into a dedicated subfolder relative to where the executable is (same rule as with assemblies generated from **.resx** files). The command line already takes care of it through the `-d` argument.
-* The generated satellite assemblies are named after the corresponding assembly that is localized, suffixed by ".Messages" (then by ".resources" as is the convention for satellites). For example for **Stride.GameStudio.exe** the satellite assembly is named **Stride.GameStudio.Messages.resources.dll**
-
-### Update
-When developers add or remove the strings that can be localized, the same workflow as described above must be run. Because it includes changes in both the original assemblies and the satellite assemblies, it implies that a new version of the product must be released.
-
-There are some cases though were we might just want to correct typos, without adding or removing localizable strings. Normally developers would fix the typos in code. But that means that they "keys" of the gettext catalog would change which will require updating all translations as well.
-
-If only a few corrections are needed, there is another alternative. The localizable strings present in the code (**.cs** or **.xaml** file) are considered as *neutral* language, not as *English*. So there is a way to provide an English translation to them. While that may sound a bit silly (those strings are already in English), it is a nice hack to make quick fixes.
-
-Consider this: instead of fixing in code, rebuilding the whole product and updating all translations and then releasing the whole as a brand new Stride version, developers just need to follow the same workflow as with any other language but by creating an English translation instead (e.g. **Stride.GameStudio.en.po**). Then just fix the entries that need fixing and generate a satellite assembly (e.g. **Stride.GameStudio.Messages.resources.dll**) and distribute it. Tell the users to copy it into a **en/** folder in **Bin/Windows** of Stride installation and voilà ! At runtime when the English language is selected (which is the default), the translation system will pick-up this satellite assembly and uses its entries as a translation for English.
-
-## Implementation details
-
-### `GNU.Gettext` assembly
-This assembly contains a port of GNU gettext to .Net. It is part of the [Gettext for .NET/Mono project](https://sourceforge.net/projects/gettextnet/).
-
-#### `GettextResourceManager` class
-This class inherits from `System.Resources.ResourceManager`. Instances of this class are used by the `GettextTranslationProvider` to retrieve translations from localized strings. A resource manager handles one or several resource sets corresponding to a language and its derivatives (e.g. "en" and "en-US").
-
-#### `GettextResourceSet` class
-This class inherits from `System.Resources.ResourceSet`. Instances of this class will be generated from **.po** files and compiled into satellite assemblies. A resource set is a big hashtable of strings with the original localized string as key and the translated string as value.
-
-### `Stride.Core.Translation` assembly
-This assembly contains the translation API that developers will use.
-
-#### `ITranslationProvider` class
-Interface defining the API of a translation provider. The methods signatures imitate the API provided by `GettextResourceManager`.
-
-#### `GettextTranslationProvider` class
-Basically a wrapper around a `GettextResourceManager`.
-
-#### `ResxTranslationProvider` class
-Basically a wrapper around a `GettextResourceManager`, provided as a convenience class in case we need to also include satellite assemblies generated from **.resx** files.
-
-It doesn't support context and plurals (as this feature is only provided by gettext) but returns nicely either a normal translation of the string (i.e. singular and without context) or the string itself. It is preferable to throwing an exception, although it would be better to also log that behavior.
-
-#### `TranslationManager` class
-Main entry point of the API, its implementation is hidden and a single instance (singleton) is available through the `TranslationManager.Instance` static property.
-
-Providers can be registered to it (this usually happens in the `Module` class of its localized assembly). When the user requests the translation of a string, the manager will select the correct provider based on the calling assembly name.
-
-The manager itself implements the `ITranslationProvider`. This is convenient and enables scenario where nested manager could be used (register a manager as a provider of another manager).
-
-##### `GetString(string text)`
-| Parameter name | Description |
-|----------------|-------------------------|
-| text | The string to translate |
-
-Example:
-```csharp
-Console.WriteLine(TranslationManager.Instance.GetString("Hello World!"));
-```
-
-##### `GetPluralString(string text, string textPlural, int count)`
-| Parameter name | Description |
-|----------------|----------------------------------------------|
-| text | The string to translate |
-| pluralText | The plural version of the text to translate |
-| count | An integer used to determine the plural form |
-
-Example:
-```csharp
-long count = 2;
-Console.WriteLine(TranslationManager.Instance.GetPluralString("Hello World!", "Hello Worlds!", count));
-```
-
-##### `GetParticularString(string context, string text)`
-| Parameter name | Description |
-|----------------|---------------------------------|
-| context | The context for the translation |
-| text | The string to translate |
-
-Example:
-```csharp
-Console.WriteLine(TranslationManager.Instance.GetParticularString("Messages", "Hello World!"));
-```
-
-##### `GetParticularPluralString(string context, string text, string textPlural, int count)`
-| Parameter name | Description |
-|----------------|----------------------------------------------|
-| context | The context for the translation |
-| text | The string to translate |
-| pluralText | The plural version of the text to translate |
-| count | An integer used to determine the plural form |
-
-Example:
-```csharp
-long count = 2;
-Console.WriteLine(TranslationManager.Instance.GetParticularPluralString("Messages", "Hello World!", "Hello Worlds!", count));
-```
-
-#### `TranslationAttribute` class
-Sometimes, we need to localize certain C# constructs such as enum values, especially when they are displayed to the end-user. For that purpose, the `TranslationAttribute` can be used.
-
-Example:
-```csharp
-public enum Hoyle
-{
- [Translation("Big")]
- Big,
- [Translation("Bang")]
- Bang,
-}
-```
-
-#### `Tr` helper class
-Writing `TranslationManager.Instance.GetString()` for every call to the translation API is a bit long. For that reason convenient shortcuts are provided in the `Tr` helper class. The following table describes the relation between the shortcut method and the corresponding API:
-
-| `Tr` | `TranslationManager.Instance` |
-|-------------------------------------|-----------------------------------------------------------|
-| `_(text)` | `GetString(text)` |
-| `_n(text, textPlural, count)` | `GetPluralString(text, textPlural, count)` |
-| `_p(context, text)` | `GetParticularString(context, text)` |
-| `_pn(context, text, textPlural, count)` | `GetParticularPluralString(context, text, textPlural, count)` |
-
-### `Stride.Core.Translation.Presentation` assembly
-
-This assembly enables the support of localization in **.xaml** files.
-
-#### `LocalizeExtension` class
-
-This markup extension has a double use. It is used by the extractor to detect localizable strings. At runtime it uses the localization API to provide the correct string depending on the language.
-
-Examples of use in XAML:
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-#### `LocalizeConverter` class
-Base class for markup extensions/value converters that support some kind of localization. The base class retrieve the current local assembly where this markup extension/value converter is used. Inheriting classes can then pass this assembly as parameter to the `TranslationManager` methods to get the corresponding translation. Currently three converters inherits from this class: `EnumToTooltip`, `ContentReferenceToUrl` and `Translate`. The first two already existed and were adapted to support localization.
-
-#### `Translate` class
-The `LocalizeExtension` described above can only localize static strings and can't be used in bindings. For that scenario the `Translate` markup extension/value converter can be used. It will dynamically query the translation manager with the bound value converted to a `string`.
-
-Note that for the localization to work, the bound value must match one of the localized string.
-
-### `Stride.Core.Translation.Extractor` standalone
-The extractor is a standalone command line that can be used to retrieve all *localizable* strings from **.cs** and **.xaml** source file and generate a template **.pot** file.
-
-The usage of the command line is
-```
-Stride.Core.Translation.Extractor[.exe] [options] [inputfile | filemask] ...
-```
-
- with the following options:
-* `-D directory` or `--directory=directory`: Look for files in the given directory. This option can be added more than once.
-* `-r` or `--recursive`: Look for files in sub-directories.
-* `-x` or `--exclude=filemask`: Exclude a file or filemask from the search.
-* `-d` or `--domain-name=name`: Output 'name.pot' instead of default 'messages.pot'
-* `-b` or `--backup`: Create a backup file (.bak) in case the output file already exists
-* `-o file` or `--output=file`: Write output to specified file (instead of 'name.pot or 'messages.pot').
-* `-m` or `--merge`: Attempt to merge extracted strings with an existing file.
-* `-C` or `--preserve-comments`: Attempt to preserve comments on existing entries.
-* `-v` or `--verbose`: More verbose message in the command prompt.
-* `-h` or `--help`: Display usage and exit.
-
-For example to extract the strings for the `Stride.GameStudio` project, the command line is:
-
-```
-Stride.Core.Translation.Extractor -D ..\editor\Stride.GameStudio -d Stride.GameStudio -r -C -x *.Designer.cs *.xaml *.cs
-```
-
-It will look into all **.xaml** and **.cs** files in the whole project (*recursive* option) except the file matching the **\*.Designer.cs** pattern and output the extracted strings into `Stride.GameStudio.pot` (*domain-name* option). Existing comments will be preserved.
-
-Notes:
-* Internally it uses the C#-port of the Gettext library, retrieved from the seemingly non-longer maintained [Gettext for .NET/Mono](https://sourceforge.net/projects/gettextnet/) (last update 2016-05-08). Note that the source code is provided under the LGPL v2 license so if we make modifications we need to publish it under the same license. Maybe we should fork it (and publish it on GitHub) to be on the safe side.
-* For the moment I didn't have to do any modification as I rewrote the extractor tool, instead of using/modifying the one that cam with the code (GNU.Gettext.Xgettext), so using the compiled binaries of the `GNU.Gettext.dll` (use at design time and runtime) and `GNU.Getopt.dll` (used only at design time) is fine.
-
-#### `CSharpExtractor` class
-This class parses **.cs** files and extracts the localizable strings by matching regular expressions with the methods from `ITranslationProvider` interface and `Tr` helper class.
-
-Note: using regular expressions is not perfect and ideally we should parse the **.cs** file properly (using Roslyn?) to make sure we don't get false positives.
-
-#### `XamlExtractor` class
-This class parses **.xaml** files and extracts strings that are localized with the `{sskk:Localize}` extension. It uses a `XamlReader` to parse the nodes, which is more robust than regular expressions.
-
-#### `POExporter` class
-This class exports the extracted strings in a template **.pot** file that can be then used by translators. It uses the capabilities from the `GNU.Gettext.Catalog` class to manage and save the **.pot** file.
-
-#### `ResxExporter` class
-Not yet implemented. The idea is to be able to export the extracted strings in a regular **.resx** file, in case this format is to be used.
-
-## Documentation and references
-https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization IStringLocalizer (Asp.Net Core)
-
-https://docs.microsoft.com/en-us/windows/uwp/globalizing/prepare-your-app-for-localization using resw files
-
-https://en.wikipedia.org/wiki/XLIFF standardized format for localization files. See https://github.com/Microsoft/XLIFF2-Object-Model for a possible implementation.
-
-### Tools and frameworks
-Gettext references: https://www.gnu.org/software/gettext/manual/index.html, for C# https://www.gnu.org/software/gettext/manual/html_node/C_0023.html
-
-Alternative implementation of gettext for .Net (https://github.com/neris/NGettext)
-
-Another .Net implementation (https://sourceforge.net/projects/gettextnet/)
-
-Could be combined with https://github.com/pdfforge/translatable
-
-#### Tools
-ResX editor: https://github.com/UweKeim/ZetaResourceEditor
-
-Poedit (for gettext .po files): https://poedit.net/. Source code here: https://github.com/vslavik/poedit/
-
-Babylon.Net: http://www.redpin.eu/
-
-Pootle: http://pootle.translatehouse.org/. Source code here: https://github.com/translate/pootle
-
-### Misc.
-http://wp12674741.server-he.de/tiki/tiki-index.php
-
-http://www.tbs-apps.com/lsacreator/
-
-https://crowdin.net/ crowd-source localization (nice community, but only for the texts, still need a tool to collect and a tool to build)
-
-https://weblate.org/en/ free web-based translation software. The company also offers hosting plan and support for a price, but self hosting is possible.
-
-
diff --git a/docs/technical/media/poedit-edit-po-file.png b/docs/technical/media/poedit-edit-po-file.png
deleted file mode 100644
index e0248b47ed..0000000000
--- a/docs/technical/media/poedit-edit-po-file.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:08bf4890d05f049064610915de66e25bb717965ad27b92eef96c8972d9cf9d86
-size 52882
diff --git a/docs/technical/media/poedit-open-pot-file.png b/docs/technical/media/poedit-open-pot-file.png
deleted file mode 100644
index 407fef6d7e..0000000000
--- a/docs/technical/media/poedit-open-pot-file.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:624de8c115f2d5ed6cd72550c280dc96e874ace7f86847fa170cfeb26930e9ef
-size 39017
diff --git a/samples/Audio/SimpleAudio/SimpleAudio.Game/SimpleAudio.Game.csproj b/samples/Audio/SimpleAudio/SimpleAudio.Game/SimpleAudio.Game.csproj
index 7aa2eb807b..84ccd03ced 100644
--- a/samples/Audio/SimpleAudio/SimpleAudio.Game/SimpleAudio.Game.csproj
+++ b/samples/Audio/SimpleAudio/SimpleAudio.Game/SimpleAudio.Game.csproj
@@ -1,13 +1,13 @@
- net8.0
+ net8.0
SimpleAudio
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Audio/SimpleAudio/SimpleAudio.Game/SimpleAudio.Game.sdpkg b/samples/Audio/SimpleAudio/SimpleAudio.Game/SimpleAudio.Game.sdpkg
index 35067e6df8..2c894b68f8 100644
--- a/samples/Audio/SimpleAudio/SimpleAudio.Game/SimpleAudio.Game.sdpkg
+++ b/samples/Audio/SimpleAudio/SimpleAudio.Game/SimpleAudio.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Audio/SimpleAudio/SimpleAudio.Windows/SimpleAudio.Windows.csproj b/samples/Audio/SimpleAudio/SimpleAudio.Windows/SimpleAudio.Windows.csproj
index 9860c3f017..2de591ec21 100644
--- a/samples/Audio/SimpleAudio/SimpleAudio.Windows/SimpleAudio.Windows.csproj
+++ b/samples/Audio/SimpleAudio/SimpleAudio.Windows/SimpleAudio.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
SimpleAudio
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\SimpleAudio.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Audio/SimpleAudio/SimpleAudio.Windows/SimpleAudioApp.cs b/samples/Audio/SimpleAudio/SimpleAudio.Windows/SimpleAudioApp.cs
index 1ebf838adc..89957d38c3 100644
--- a/samples/Audio/SimpleAudio/SimpleAudio.Windows/SimpleAudioApp.cs
+++ b/samples/Audio/SimpleAudio/SimpleAudio.Windows/SimpleAudioApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace SimpleAudio
-{
- class SimpleAudioApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Games/JumpyJet/Assets/Shared/Font.sdfnt b/samples/Games/JumpyJet/Assets/Shared/Font.sdfnt
index 39025586c0..8715f0fe92 100644
--- a/samples/Games/JumpyJet/Assets/Shared/Font.sdfnt
+++ b/samples/Games/JumpyJet/Assets/Shared/Font.sdfnt
@@ -2,7 +2,5 @@
Id: f10885f3-72a0-469e-9ba2-6ca635fee4e7
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
-FontSource: !SystemFontProvider
- FontName: Arial
- Style: Regular
+FontSource: !SystemFontProvider {}
FontType: !RuntimeRasterizedSpriteFontType {}
diff --git a/samples/Games/JumpyJet/JumpyJet.Game/JumpyJet.Game.csproj b/samples/Games/JumpyJet/JumpyJet.Game/JumpyJet.Game.csproj
index cb616b61fd..4fab56daa4 100644
--- a/samples/Games/JumpyJet/JumpyJet.Game/JumpyJet.Game.csproj
+++ b/samples/Games/JumpyJet/JumpyJet.Game/JumpyJet.Game.csproj
@@ -1,14 +1,14 @@
- net8.0
+ net8.0
JumpyJet
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Games/JumpyJet/JumpyJet.Game/JumpyJet.Game.sdpkg b/samples/Games/JumpyJet/JumpyJet.Game/JumpyJet.Game.sdpkg
index 7009d1204a..bc1caad9a0 100644
--- a/samples/Games/JumpyJet/JumpyJet.Game/JumpyJet.Game.sdpkg
+++ b/samples/Games/JumpyJet/JumpyJet.Game/JumpyJet.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Games/JumpyJet/JumpyJet.Windows/JumpyJet.Windows.csproj b/samples/Games/JumpyJet/JumpyJet.Windows/JumpyJet.Windows.csproj
index f6c91aab1b..18c5f03d97 100644
--- a/samples/Games/JumpyJet/JumpyJet.Windows/JumpyJet.Windows.csproj
+++ b/samples/Games/JumpyJet/JumpyJet.Windows/JumpyJet.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
JumpyJet
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\JumpyJet.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Games/JumpyJet/JumpyJet.Windows/JumpyJetApp.cs b/samples/Games/JumpyJet/JumpyJet.Windows/JumpyJetApp.cs
index 0983f1597a..89957d38c3 100644
--- a/samples/Games/JumpyJet/JumpyJet.Windows/JumpyJetApp.cs
+++ b/samples/Games/JumpyJet/JumpyJet.Windows/JumpyJetApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace JumpyJet
-{
- class JumpyJetApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Games/SpaceEscape/Assets/Shared/Font.sdfnt b/samples/Games/SpaceEscape/Assets/Shared/Font.sdfnt
index cfcfb46c83..4f6e293d27 100644
--- a/samples/Games/SpaceEscape/Assets/Shared/Font.sdfnt
+++ b/samples/Games/SpaceEscape/Assets/Shared/Font.sdfnt
@@ -2,7 +2,5 @@
Id: aa317d9b-bbd3-4240-9ad6-11efad9c4d4d
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
-FontSource: !SystemFontProvider
- FontName: Arial
- Style: Regular
+FontSource: !SystemFontProvider {}
FontType: !RuntimeRasterizedSpriteFontType {}
diff --git a/samples/Games/SpaceEscape/SpaceEscape.Game/SpaceEscape.Game.csproj b/samples/Games/SpaceEscape/SpaceEscape.Game/SpaceEscape.Game.csproj
index 0e6a994d0d..c4fdb3c021 100644
--- a/samples/Games/SpaceEscape/SpaceEscape.Game/SpaceEscape.Game.csproj
+++ b/samples/Games/SpaceEscape/SpaceEscape.Game/SpaceEscape.Game.csproj
@@ -1,14 +1,14 @@
- net8.0
+ net8.0
SpaceEscape
true
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Games/SpaceEscape/SpaceEscape.Game/SpaceEscape.Game.sdpkg b/samples/Games/SpaceEscape/SpaceEscape.Game/SpaceEscape.Game.sdpkg
index 9bdc696241..5f2231d1d2 100644
--- a/samples/Games/SpaceEscape/SpaceEscape.Game/SpaceEscape.Game.sdpkg
+++ b/samples/Games/SpaceEscape/SpaceEscape.Game/SpaceEscape.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Games/SpaceEscape/SpaceEscape.Windows/SpaceEscape.Windows.csproj b/samples/Games/SpaceEscape/SpaceEscape.Windows/SpaceEscape.Windows.csproj
index 745424e78d..b9819ff48e 100644
--- a/samples/Games/SpaceEscape/SpaceEscape.Windows/SpaceEscape.Windows.csproj
+++ b/samples/Games/SpaceEscape/SpaceEscape.Windows/SpaceEscape.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
SpaceEscape
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\SpaceEscape.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Games/SpaceEscape/SpaceEscape.Windows/SpaceEscapeApp.cs b/samples/Games/SpaceEscape/SpaceEscape.Windows/SpaceEscapeApp.cs
index dea05ce69c..89957d38c3 100644
--- a/samples/Games/SpaceEscape/SpaceEscape.Windows/SpaceEscapeApp.cs
+++ b/samples/Games/SpaceEscape/SpaceEscape.Windows/SpaceEscapeApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace SpaceEscape
-{
- class SpaceEscapeApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Graphics/AnimatedModel/AnimatedModel.Game/AnimatedModel.Game.csproj b/samples/Graphics/AnimatedModel/AnimatedModel.Game/AnimatedModel.Game.csproj
index 42822f93ac..a145f87cf8 100644
--- a/samples/Graphics/AnimatedModel/AnimatedModel.Game/AnimatedModel.Game.csproj
+++ b/samples/Graphics/AnimatedModel/AnimatedModel.Game/AnimatedModel.Game.csproj
@@ -1,13 +1,13 @@
- net8.0
+ net8.0
AnimatedModel
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Graphics/AnimatedModel/AnimatedModel.Game/AnimatedModel.Game.sdpkg b/samples/Graphics/AnimatedModel/AnimatedModel.Game/AnimatedModel.Game.sdpkg
index c5334f88d3..2a1c7cb4e2 100644
--- a/samples/Graphics/AnimatedModel/AnimatedModel.Game/AnimatedModel.Game.sdpkg
+++ b/samples/Graphics/AnimatedModel/AnimatedModel.Game/AnimatedModel.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Graphics/AnimatedModel/AnimatedModel.Windows/AnimatedModel.Windows.csproj b/samples/Graphics/AnimatedModel/AnimatedModel.Windows/AnimatedModel.Windows.csproj
index 3c1122dae6..895a090515 100644
--- a/samples/Graphics/AnimatedModel/AnimatedModel.Windows/AnimatedModel.Windows.csproj
+++ b/samples/Graphics/AnimatedModel/AnimatedModel.Windows/AnimatedModel.Windows.csproj
@@ -1,59 +1,18 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
AnimatedModel
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\AnimatedModel.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
-
+
diff --git a/samples/Graphics/AnimatedModel/AnimatedModel.Windows/AnimatedModelApp.cs b/samples/Graphics/AnimatedModel/AnimatedModel.Windows/AnimatedModelApp.cs
index 7661294fad..89957d38c3 100644
--- a/samples/Graphics/AnimatedModel/AnimatedModel.Windows/AnimatedModelApp.cs
+++ b/samples/Graphics/AnimatedModel/AnimatedModel.Windows/AnimatedModelApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace AnimatedModel
-{
- class AnimatedModelApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Graphics/CustomEffect/CustomEffect.Game/CustomEffect.Game.csproj b/samples/Graphics/CustomEffect/CustomEffect.Game/CustomEffect.Game.csproj
index 9209bb0960..76d64e5b23 100644
--- a/samples/Graphics/CustomEffect/CustomEffect.Game/CustomEffect.Game.csproj
+++ b/samples/Graphics/CustomEffect/CustomEffect.Game/CustomEffect.Game.csproj
@@ -1,13 +1,13 @@
- net8.0
+ net8.0
CustomEffect
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Graphics/CustomEffect/CustomEffect.Game/CustomEffect.Game.sdpkg b/samples/Graphics/CustomEffect/CustomEffect.Game/CustomEffect.Game.sdpkg
index efb89d17ae..47f0213abf 100644
--- a/samples/Graphics/CustomEffect/CustomEffect.Game/CustomEffect.Game.sdpkg
+++ b/samples/Graphics/CustomEffect/CustomEffect.Game/CustomEffect.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Graphics/CustomEffect/CustomEffect.Windows/CustomEffect.Windows.csproj b/samples/Graphics/CustomEffect/CustomEffect.Windows/CustomEffect.Windows.csproj
index ba7b5027b3..50671aea6e 100644
--- a/samples/Graphics/CustomEffect/CustomEffect.Windows/CustomEffect.Windows.csproj
+++ b/samples/Graphics/CustomEffect/CustomEffect.Windows/CustomEffect.Windows.csproj
@@ -1,59 +1,18 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
CustomEffect
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\CustomEffect.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
-
+
diff --git a/samples/Graphics/CustomEffect/CustomEffect.Windows/CustomEffectApp.cs b/samples/Graphics/CustomEffect/CustomEffect.Windows/CustomEffectApp.cs
index bcc2e29dd4..89957d38c3 100644
--- a/samples/Graphics/CustomEffect/CustomEffect.Windows/CustomEffectApp.cs
+++ b/samples/Graphics/CustomEffect/CustomEffect.Windows/CustomEffectApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace CustomEffect
-{
- class CustomEffectApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Graphics/MaterialShader/MaterialShader.Game/MaterialShader.Game.csproj b/samples/Graphics/MaterialShader/MaterialShader.Game/MaterialShader.Game.csproj
index ecc11d0099..c5347bba75 100644
--- a/samples/Graphics/MaterialShader/MaterialShader.Game/MaterialShader.Game.csproj
+++ b/samples/Graphics/MaterialShader/MaterialShader.Game/MaterialShader.Game.csproj
@@ -1,13 +1,13 @@
- net8.0
+ net8.0
MaterialShader
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Graphics/MaterialShader/MaterialShader.Game/MaterialShader.Game.sdpkg b/samples/Graphics/MaterialShader/MaterialShader.Game/MaterialShader.Game.sdpkg
index 68c48001e4..1d903d7d6f 100644
--- a/samples/Graphics/MaterialShader/MaterialShader.Game/MaterialShader.Game.sdpkg
+++ b/samples/Graphics/MaterialShader/MaterialShader.Game/MaterialShader.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Graphics/MaterialShader/MaterialShader.Windows/MaterialShader.Windows.csproj b/samples/Graphics/MaterialShader/MaterialShader.Windows/MaterialShader.Windows.csproj
index cb52bc08d4..83b897b5fe 100644
--- a/samples/Graphics/MaterialShader/MaterialShader.Windows/MaterialShader.Windows.csproj
+++ b/samples/Graphics/MaterialShader/MaterialShader.Windows/MaterialShader.Windows.csproj
@@ -1,59 +1,18 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
MaterialShader
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\MaterialShader.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
-
+
diff --git a/samples/Graphics/MaterialShader/MaterialShader.Windows/MaterialShaderApp.cs b/samples/Graphics/MaterialShader/MaterialShader.Windows/MaterialShaderApp.cs
index e1e9a79eaa..89957d38c3 100644
--- a/samples/Graphics/MaterialShader/MaterialShader.Windows/MaterialShaderApp.cs
+++ b/samples/Graphics/MaterialShader/MaterialShader.Windows/MaterialShaderApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace MaterialShader
-{
- class MaterialShaderApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Graphics/SpriteFonts/Assets/Shared/AliasedFont.sdfnt b/samples/Graphics/SpriteFonts/Assets/Shared/AliasedFont.sdfnt
index 469a5fc217..7be9918686 100644
--- a/samples/Graphics/SpriteFonts/Assets/Shared/AliasedFont.sdfnt
+++ b/samples/Graphics/SpriteFonts/Assets/Shared/AliasedFont.sdfnt
@@ -2,9 +2,7 @@
Id: 5376e512-4179-43b6-9d7c-75b0a1ea6f9c
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
-FontSource: !SystemFontProvider
- FontName: Arial
- Style: Regular
+FontSource: !SystemFontProvider {}
FontType: !OfflineRasterizedSpriteFontType
Size: 40.0
CharacterSet: null
diff --git a/samples/Graphics/SpriteFonts/Assets/Shared/AntialiasedFont.sdfnt b/samples/Graphics/SpriteFonts/Assets/Shared/AntialiasedFont.sdfnt
index de86329a49..1026951d35 100644
--- a/samples/Graphics/SpriteFonts/Assets/Shared/AntialiasedFont.sdfnt
+++ b/samples/Graphics/SpriteFonts/Assets/Shared/AntialiasedFont.sdfnt
@@ -2,9 +2,7 @@
Id: 5b5f75d3-4f7f-4325-b957-fd50161e104c
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
-FontSource: !SystemFontProvider
- FontName: Arial
- Style: Regular
+FontSource: !SystemFontProvider {}
FontType: !OfflineRasterizedSpriteFontType
Size: 40.0
CharacterSet: null
diff --git a/samples/Graphics/SpriteFonts/Assets/Shared/BoldFont.sdfnt b/samples/Graphics/SpriteFonts/Assets/Shared/BoldFont.sdfnt
index 4d472f395c..a8ceb9a626 100644
--- a/samples/Graphics/SpriteFonts/Assets/Shared/BoldFont.sdfnt
+++ b/samples/Graphics/SpriteFonts/Assets/Shared/BoldFont.sdfnt
@@ -3,7 +3,6 @@ Id: 4f741cf1-f3b2-4eda-837b-e29f8597c47d
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
FontSource: !SystemFontProvider
- FontName: Arial
Style: Bold
FontType: !RuntimeRasterizedSpriteFontType
Size: 22.0
diff --git a/samples/Graphics/SpriteFonts/Assets/Shared/ClearTypeFont.sdfnt b/samples/Graphics/SpriteFonts/Assets/Shared/ClearTypeFont.sdfnt
index bf1053dbc4..d8572949e7 100644
--- a/samples/Graphics/SpriteFonts/Assets/Shared/ClearTypeFont.sdfnt
+++ b/samples/Graphics/SpriteFonts/Assets/Shared/ClearTypeFont.sdfnt
@@ -2,9 +2,7 @@
Id: bdc10dde-cc94-45e6-88ee-bd5fe156f982
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
-FontSource: !SystemFontProvider
- FontName: Arial
- Style: Regular
+FontSource: !SystemFontProvider {}
FontType: !OfflineRasterizedSpriteFontType
Size: 40.0
CharacterSet: null
diff --git a/samples/Graphics/SpriteFonts/Assets/Shared/DynamicFont.sdfnt b/samples/Graphics/SpriteFonts/Assets/Shared/DynamicFont.sdfnt
index 019f14ec51..d5c44b3f87 100644
--- a/samples/Graphics/SpriteFonts/Assets/Shared/DynamicFont.sdfnt
+++ b/samples/Graphics/SpriteFonts/Assets/Shared/DynamicFont.sdfnt
@@ -2,8 +2,6 @@
Id: cbbbd736-43d0-490e-b3e4-28207140d6cc
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
-FontSource: !SystemFontProvider
- FontName: Arial
- Style: Regular
+FontSource: !SystemFontProvider {}
FontType: !RuntimeRasterizedSpriteFontType
Size: 22.0
diff --git a/samples/Graphics/SpriteFonts/Assets/Shared/ItalicFont.sdfnt b/samples/Graphics/SpriteFonts/Assets/Shared/ItalicFont.sdfnt
index bbd70a644f..2152760b4e 100644
--- a/samples/Graphics/SpriteFonts/Assets/Shared/ItalicFont.sdfnt
+++ b/samples/Graphics/SpriteFonts/Assets/Shared/ItalicFont.sdfnt
@@ -3,7 +3,6 @@ Id: 5fad01ad-2649-4de9-8a81-b117e320a2ef
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
FontSource: !SystemFontProvider
- FontName: Arial
Style: Italic
FontType: !RuntimeRasterizedSpriteFontType
Size: 22.0
diff --git a/samples/Graphics/SpriteFonts/Assets/Shared/StaticFont.sdfnt b/samples/Graphics/SpriteFonts/Assets/Shared/StaticFont.sdfnt
index db7b403b49..d9f699d69c 100644
--- a/samples/Graphics/SpriteFonts/Assets/Shared/StaticFont.sdfnt
+++ b/samples/Graphics/SpriteFonts/Assets/Shared/StaticFont.sdfnt
@@ -2,9 +2,7 @@
Id: b6582bd2-276e-4b0e-a0f1-8682e271ab59
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
-FontSource: !SystemFontProvider
- FontName: Arial
- Style: Regular
+FontSource: !SystemFontProvider {}
FontType: !OfflineRasterizedSpriteFontType
Size: 36.0
CharacterSet: null
diff --git a/samples/Graphics/SpriteFonts/SpriteFonts.Game/SpriteFonts.Game.csproj b/samples/Graphics/SpriteFonts/SpriteFonts.Game/SpriteFonts.Game.csproj
index 27ee77ef94..6cf2ca4ab9 100644
--- a/samples/Graphics/SpriteFonts/SpriteFonts.Game/SpriteFonts.Game.csproj
+++ b/samples/Graphics/SpriteFonts/SpriteFonts.Game/SpriteFonts.Game.csproj
@@ -1,13 +1,13 @@
- net8.0
+ net8.0
SpriteFonts
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Graphics/SpriteFonts/SpriteFonts.Game/SpriteFonts.Game.sdpkg b/samples/Graphics/SpriteFonts/SpriteFonts.Game/SpriteFonts.Game.sdpkg
index 1e100f9c38..f7cfa5958a 100644
--- a/samples/Graphics/SpriteFonts/SpriteFonts.Game/SpriteFonts.Game.sdpkg
+++ b/samples/Graphics/SpriteFonts/SpriteFonts.Game/SpriteFonts.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Graphics/SpriteFonts/SpriteFonts.Windows/SpriteFonts.Windows.csproj b/samples/Graphics/SpriteFonts/SpriteFonts.Windows/SpriteFonts.Windows.csproj
index ad50e1d936..de60f19338 100644
--- a/samples/Graphics/SpriteFonts/SpriteFonts.Windows/SpriteFonts.Windows.csproj
+++ b/samples/Graphics/SpriteFonts/SpriteFonts.Windows/SpriteFonts.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
SpriteFonts
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\SpriteFonts.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Graphics/SpriteFonts/SpriteFonts.Windows/SpriteFontsApp.cs b/samples/Graphics/SpriteFonts/SpriteFonts.Windows/SpriteFontsApp.cs
index bcfc4075ac..89957d38c3 100644
--- a/samples/Graphics/SpriteFonts/SpriteFonts.Windows/SpriteFontsApp.cs
+++ b/samples/Graphics/SpriteFonts/SpriteFonts.Windows/SpriteFontsApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace SpriteFonts
-{
- class SpriteFontsApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Game/SpriteStudioDemo.Game.csproj b/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Game/SpriteStudioDemo.Game.csproj
index 288caf16bc..d0ec3408f4 100644
--- a/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Game/SpriteStudioDemo.Game.csproj
+++ b/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Game/SpriteStudioDemo.Game.csproj
@@ -1,15 +1,15 @@
- net8.0
+ net8.0
SpriteStudioDemo
-
-
-
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Game/SpriteStudioDemo.Game.sdpkg b/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Game/SpriteStudioDemo.Game.sdpkg
index 9a7ae89471..f2daf200d6 100644
--- a/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Game/SpriteStudioDemo.Game.sdpkg
+++ b/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Game/SpriteStudioDemo.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Windows/SpriteStudioDemo.Windows.csproj b/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Windows/SpriteStudioDemo.Windows.csproj
index aa06931be6..e5af06c354 100644
--- a/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Windows/SpriteStudioDemo.Windows.csproj
+++ b/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Windows/SpriteStudioDemo.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
SpriteStudioDemo
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\SpriteStudioDemo.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Windows/SpriteStudioDemoApp.cs b/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Windows/SpriteStudioDemoApp.cs
index 140344b401..89957d38c3 100644
--- a/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Windows/SpriteStudioDemoApp.cs
+++ b/samples/Graphics/SpriteStudioDemo/SpriteStudioDemo.Windows/SpriteStudioDemoApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace SpriteStudioDemo
-{
- class SpriteStudioDemoApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Input/GravitySensor/Assets/Shared/SpriteFont.sdfnt b/samples/Input/GravitySensor/Assets/Shared/SpriteFont.sdfnt
index eade692c01..7e5e0bbd4c 100644
--- a/samples/Input/GravitySensor/Assets/Shared/SpriteFont.sdfnt
+++ b/samples/Input/GravitySensor/Assets/Shared/SpriteFont.sdfnt
@@ -2,8 +2,6 @@
Id: e69c3c0c-baca-4e05-9c03-a3f95cdeb5ed
SerializedVersion: {Stride: 2.0.0.0}
Tags: []
-FontSource: !SystemFontProvider
- FontName: Arial
- Style: Regular
+FontSource: !SystemFontProvider {}
FontType: !RuntimeRasterizedSpriteFontType
Size: 21.33333
diff --git a/samples/Input/GravitySensor/GravitySensor.Game/GravitySensor.Game.csproj b/samples/Input/GravitySensor/GravitySensor.Game/GravitySensor.Game.csproj
index eabaa7b25f..4b42c7fef9 100644
--- a/samples/Input/GravitySensor/GravitySensor.Game/GravitySensor.Game.csproj
+++ b/samples/Input/GravitySensor/GravitySensor.Game/GravitySensor.Game.csproj
@@ -1,14 +1,14 @@
- net8.0
+ net8.0
GravitySensor
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Input/GravitySensor/GravitySensor.Game/GravitySensor.Game.sdpkg b/samples/Input/GravitySensor/GravitySensor.Game/GravitySensor.Game.sdpkg
index 0c2d774241..31f664b3a2 100644
--- a/samples/Input/GravitySensor/GravitySensor.Game/GravitySensor.Game.sdpkg
+++ b/samples/Input/GravitySensor/GravitySensor.Game/GravitySensor.Game.sdpkg
@@ -8,7 +8,8 @@ Meta:
Dependencies: null
AssetFolders:
- Path: !dir ../Assets/Shared
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Input/GravitySensor/GravitySensor.Windows/GravitySensor.Windows.csproj b/samples/Input/GravitySensor/GravitySensor.Windows/GravitySensor.Windows.csproj
index fd6398f863..af060a650b 100644
--- a/samples/Input/GravitySensor/GravitySensor.Windows/GravitySensor.Windows.csproj
+++ b/samples/Input/GravitySensor/GravitySensor.Windows/GravitySensor.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
GravitySensor
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\GravitySensor.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Input/GravitySensor/GravitySensor.Windows/GravitySensorApp.cs b/samples/Input/GravitySensor/GravitySensor.Windows/GravitySensorApp.cs
index 3f01e0efa4..89957d38c3 100644
--- a/samples/Input/GravitySensor/GravitySensor.Windows/GravitySensorApp.cs
+++ b/samples/Input/GravitySensor/GravitySensor.Windows/GravitySensorApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace GravitySensor
-{
- class GravitySensorApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Input/TouchInputs/TouchInputs.Game/TouchInputs.Game.csproj b/samples/Input/TouchInputs/TouchInputs.Game/TouchInputs.Game.csproj
index fce429caaa..18372b0eab 100644
--- a/samples/Input/TouchInputs/TouchInputs.Game/TouchInputs.Game.csproj
+++ b/samples/Input/TouchInputs/TouchInputs.Game/TouchInputs.Game.csproj
@@ -1,13 +1,13 @@
- net8.0
+ net8.0
TouchInputs
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Input/TouchInputs/TouchInputs.Game/TouchInputs.Game.sdpkg b/samples/Input/TouchInputs/TouchInputs.Game/TouchInputs.Game.sdpkg
index bcb963657d..60bb055dc1 100644
--- a/samples/Input/TouchInputs/TouchInputs.Game/TouchInputs.Game.sdpkg
+++ b/samples/Input/TouchInputs/TouchInputs.Game/TouchInputs.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Input/TouchInputs/TouchInputs.Windows/TouchInputs.Windows.csproj b/samples/Input/TouchInputs/TouchInputs.Windows/TouchInputs.Windows.csproj
index 2dae439809..5e55005cfa 100644
--- a/samples/Input/TouchInputs/TouchInputs.Windows/TouchInputs.Windows.csproj
+++ b/samples/Input/TouchInputs/TouchInputs.Windows/TouchInputs.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
TouchInputs
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\TouchInputs.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Input/TouchInputs/TouchInputs.Windows/TouchInputsApp.cs b/samples/Input/TouchInputs/TouchInputs.Windows/TouchInputsApp.cs
index 8cda946563..89957d38c3 100644
--- a/samples/Input/TouchInputs/TouchInputs.Windows/TouchInputsApp.cs
+++ b/samples/Input/TouchInputs/TouchInputs.Windows/TouchInputsApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace TouchInputs
-{
- class TouchInputsApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Particles/ParticlesSample/ParticlesSample.Game/ParticlesSample.Game.csproj b/samples/Particles/ParticlesSample/ParticlesSample.Game/ParticlesSample.Game.csproj
index 88cc0d4354..a3b3465546 100644
--- a/samples/Particles/ParticlesSample/ParticlesSample.Game/ParticlesSample.Game.csproj
+++ b/samples/Particles/ParticlesSample/ParticlesSample.Game/ParticlesSample.Game.csproj
@@ -1,14 +1,14 @@
- net8.0
+ net8.0
ParticlesSample
true
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Particles/ParticlesSample/ParticlesSample.Game/ParticlesSample.Game.sdpkg b/samples/Particles/ParticlesSample/ParticlesSample.Game/ParticlesSample.Game.sdpkg
index 6a7535cb9f..72188d05b1 100644
--- a/samples/Particles/ParticlesSample/ParticlesSample.Game/ParticlesSample.Game.sdpkg
+++ b/samples/Particles/ParticlesSample/ParticlesSample.Game/ParticlesSample.Game.sdpkg
@@ -10,7 +10,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Particles/ParticlesSample/ParticlesSample.Windows/ParticlesSample.Windows.csproj b/samples/Particles/ParticlesSample/ParticlesSample.Windows/ParticlesSample.Windows.csproj
index fcf48dc645..89bda55a5b 100644
--- a/samples/Particles/ParticlesSample/ParticlesSample.Windows/ParticlesSample.Windows.csproj
+++ b/samples/Particles/ParticlesSample/ParticlesSample.Windows/ParticlesSample.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
ParticlesSample
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\ParticlesSample.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Particles/ParticlesSample/ParticlesSample.Windows/ParticlesSampleApp.cs b/samples/Particles/ParticlesSample/ParticlesSample.Windows/ParticlesSampleApp.cs
index c02dca0e73..89957d38c3 100644
--- a/samples/Particles/ParticlesSample/ParticlesSample.Windows/ParticlesSampleApp.cs
+++ b/samples/Particles/ParticlesSample/ParticlesSample.Windows/ParticlesSampleApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace ParticlesSample
-{
- class ParticlesSampleApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Physics/PhysicsSample/PhysicsSample.Game/PhysicsSample.Game.csproj b/samples/Physics/PhysicsSample/PhysicsSample.Game/PhysicsSample.Game.csproj
index 71005127dc..dde154743a 100644
--- a/samples/Physics/PhysicsSample/PhysicsSample.Game/PhysicsSample.Game.csproj
+++ b/samples/Physics/PhysicsSample/PhysicsSample.Game/PhysicsSample.Game.csproj
@@ -1,14 +1,14 @@
- net8.0
+ net8.0
PhysicsSample
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Physics/PhysicsSample/PhysicsSample.Game/PhysicsSample.Game.sdpkg b/samples/Physics/PhysicsSample/PhysicsSample.Game/PhysicsSample.Game.sdpkg
index 183d122325..87cc03c78d 100644
--- a/samples/Physics/PhysicsSample/PhysicsSample.Game/PhysicsSample.Game.sdpkg
+++ b/samples/Physics/PhysicsSample/PhysicsSample.Game/PhysicsSample.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Physics/PhysicsSample/PhysicsSample.Windows/PhysicsSample.Windows.csproj b/samples/Physics/PhysicsSample/PhysicsSample.Windows/PhysicsSample.Windows.csproj
index b4312b0468..7905e35bd1 100644
--- a/samples/Physics/PhysicsSample/PhysicsSample.Windows/PhysicsSample.Windows.csproj
+++ b/samples/Physics/PhysicsSample/PhysicsSample.Windows/PhysicsSample.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
PhysicsSample
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\PhysicsSample.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Physics/PhysicsSample/PhysicsSample.Windows/PhysicsSampleApp.cs b/samples/Physics/PhysicsSample/PhysicsSample.Windows/PhysicsSampleApp.cs
index edb7d6d03f..89957d38c3 100644
--- a/samples/Physics/PhysicsSample/PhysicsSample.Windows/PhysicsSampleApp.cs
+++ b/samples/Physics/PhysicsSample/PhysicsSample.Windows/PhysicsSampleApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace PhysicsSample
-{
- class PhysicsSampleApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/StrideSamples.userprefs b/samples/StrideSamples.userprefs
deleted file mode 100644
index 45b6978e73..0000000000
--- a/samples/StrideSamples.userprefs
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Game/FirstPersonShooter.Game.csproj b/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Game/FirstPersonShooter.Game.csproj
index 3eb346560e..c4defbbe00 100644
--- a/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Game/FirstPersonShooter.Game.csproj
+++ b/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Game/FirstPersonShooter.Game.csproj
@@ -1,15 +1,15 @@
- net8.0
+ net8.0
FirstPersonShooter
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Game/FirstPersonShooter.Game.sdpkg b/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Game/FirstPersonShooter.Game.sdpkg
index 3cca3a4f90..f3f98765da 100644
--- a/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Game/FirstPersonShooter.Game.sdpkg
+++ b/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Game/FirstPersonShooter.Game.sdpkg
@@ -10,7 +10,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Windows/FirstPersonShooter.Windows.csproj b/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Windows/FirstPersonShooter.Windows.csproj
index 4e7a73e37f..0642bec585 100644
--- a/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Windows/FirstPersonShooter.Windows.csproj
+++ b/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Windows/FirstPersonShooter.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
FirstPersonShooter
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\FirstPersonShooter.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Windows/FirstPersonShooterApp.cs b/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Windows/FirstPersonShooterApp.cs
index 9c8b1ab095..89957d38c3 100644
--- a/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Windows/FirstPersonShooterApp.cs
+++ b/samples/Templates/FirstPersonShooter/FirstPersonShooter/FirstPersonShooter.Windows/FirstPersonShooterApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace FirstPersonShooter
-{
- class FirstPersonShooterApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Templates/Packs/MaterialPackage/MaterialPackage.csproj b/samples/Templates/Packs/MaterialPackage/MaterialPackage.csproj
index 643079e796..71dc80c8d1 100644
--- a/samples/Templates/Packs/MaterialPackage/MaterialPackage.csproj
+++ b/samples/Templates/Packs/MaterialPackage/MaterialPackage.csproj
@@ -1,9 +1,9 @@

- net8.0
+ net8.0
-
-
+
+
\ No newline at end of file
diff --git a/samples/Templates/Packs/MaterialPackage/MaterialPackage.sdpkg b/samples/Templates/Packs/MaterialPackage/MaterialPackage.sdpkg
index 39fd49217c..3da28be6f3 100644
--- a/samples/Templates/Packs/MaterialPackage/MaterialPackage.sdpkg
+++ b/samples/Templates/Packs/MaterialPackage/MaterialPackage.sdpkg
@@ -8,7 +8,8 @@ Meta:
Dependencies: null
AssetFolders:
- Path: !dir Assets
-ResourceFolders: []
+ResourceFolders:
+ - !dir Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Templates/Packs/PrototypingBlocks/PrototypingBlocks.csproj b/samples/Templates/Packs/PrototypingBlocks/PrototypingBlocks.csproj
index e8cab14173..60b8a9d62b 100644
--- a/samples/Templates/Packs/PrototypingBlocks/PrototypingBlocks.csproj
+++ b/samples/Templates/Packs/PrototypingBlocks/PrototypingBlocks.csproj
@@ -1,10 +1,10 @@
- net8.0
+ net8.0
-
-
-
+
+
+
\ No newline at end of file
diff --git a/samples/Templates/Packs/PrototypingBlocks/PrototypingBlocks.sdpkg b/samples/Templates/Packs/PrototypingBlocks/PrototypingBlocks.sdpkg
index 74eb1f64d0..224bbb38b0 100644
--- a/samples/Templates/Packs/PrototypingBlocks/PrototypingBlocks.sdpkg
+++ b/samples/Templates/Packs/PrototypingBlocks/PrototypingBlocks.sdpkg
@@ -8,7 +8,8 @@ Meta:
Dependencies: null
AssetFolders:
- Path: !dir Assets
-ResourceFolders: []
+ResourceFolders:
+ - !dir Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Templates/Packs/SamplesAssetPackage/SamplesAssetPackage.csproj b/samples/Templates/Packs/SamplesAssetPackage/SamplesAssetPackage.csproj
index 795a4bfba2..2ebbb85c29 100644
--- a/samples/Templates/Packs/SamplesAssetPackage/SamplesAssetPackage.csproj
+++ b/samples/Templates/Packs/SamplesAssetPackage/SamplesAssetPackage.csproj
@@ -1,9 +1,9 @@
- net8.0
+ net8.0
-
-
+
+
\ No newline at end of file
diff --git a/samples/Templates/Packs/SamplesAssetPackage/SamplesAssetPackage.sdpkg b/samples/Templates/Packs/SamplesAssetPackage/SamplesAssetPackage.sdpkg
index a9d22ee512..0165ee9bc4 100644
--- a/samples/Templates/Packs/SamplesAssetPackage/SamplesAssetPackage.sdpkg
+++ b/samples/Templates/Packs/SamplesAssetPackage/SamplesAssetPackage.sdpkg
@@ -8,7 +8,8 @@ Meta:
Dependencies: null
AssetFolders:
- Path: !dir Assets
-ResourceFolders: []
+ResourceFolders:
+ - !dir Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Templates/Packs/VFXPackage/VFXPackage.csproj b/samples/Templates/Packs/VFXPackage/VFXPackage.csproj
index df8aca4e46..69d02f9497 100644
--- a/samples/Templates/Packs/VFXPackage/VFXPackage.csproj
+++ b/samples/Templates/Packs/VFXPackage/VFXPackage.csproj
@@ -1,10 +1,10 @@

- net8.0
+ net8.0
-
-
-
+
+
+
\ No newline at end of file
diff --git a/samples/Templates/Packs/VFXPackage/VFXPackage.sdpkg b/samples/Templates/Packs/VFXPackage/VFXPackage.sdpkg
index d9ebedda2f..55e807d047 100644
--- a/samples/Templates/Packs/VFXPackage/VFXPackage.sdpkg
+++ b/samples/Templates/Packs/VFXPackage/VFXPackage.sdpkg
@@ -8,7 +8,8 @@ Meta:
Dependencies: null
AssetFolders:
- Path: !dir Assets
-ResourceFolders: []
+ResourceFolders:
+ - !dir Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Templates/Packs/mannequinModel/mannequinModel.csproj b/samples/Templates/Packs/mannequinModel/mannequinModel.csproj
index 795a4bfba2..2ebbb85c29 100644
--- a/samples/Templates/Packs/mannequinModel/mannequinModel.csproj
+++ b/samples/Templates/Packs/mannequinModel/mannequinModel.csproj
@@ -1,9 +1,9 @@
- net8.0
+ net8.0
-
-
+
+
\ No newline at end of file
diff --git a/samples/Templates/Packs/mannequinModel/mannequinModel.sdpkg b/samples/Templates/Packs/mannequinModel/mannequinModel.sdpkg
index 475c1c37e2..20d4c99eed 100644
--- a/samples/Templates/Packs/mannequinModel/mannequinModel.sdpkg
+++ b/samples/Templates/Packs/mannequinModel/mannequinModel.sdpkg
@@ -8,7 +8,8 @@ Meta:
Dependencies: null
AssetFolders:
- Path: !dir Assets
-ResourceFolders: []
+ResourceFolders:
+ - !dir Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Game/ThirdPersonPlatformer.Game.csproj b/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Game/ThirdPersonPlatformer.Game.csproj
index a3202db40d..5bff64deb4 100644
--- a/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Game/ThirdPersonPlatformer.Game.csproj
+++ b/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Game/ThirdPersonPlatformer.Game.csproj
@@ -1,15 +1,15 @@
- net8.0
+ net8.0
ThirdPersonPlatformer
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Game/ThirdPersonPlatformer.Game.sdpkg b/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Game/ThirdPersonPlatformer.Game.sdpkg
index 3227e59d04..b310961209 100644
--- a/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Game/ThirdPersonPlatformer.Game.sdpkg
+++ b/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Game/ThirdPersonPlatformer.Game.sdpkg
@@ -10,7 +10,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Windows/ThirdPersonPlatformer.Windows.csproj b/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Windows/ThirdPersonPlatformer.Windows.csproj
index 97a22cd1e5..56756b3e63 100644
--- a/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Windows/ThirdPersonPlatformer.Windows.csproj
+++ b/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Windows/ThirdPersonPlatformer.Windows.csproj
@@ -1,59 +1,18 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
ThirdPersonPlatformer
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\ThirdPersonPlatformer.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
-
+
diff --git a/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Windows/ThirdPersonPlatformerApp.cs b/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Windows/ThirdPersonPlatformerApp.cs
index 9750cea2b1..89957d38c3 100644
--- a/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Windows/ThirdPersonPlatformerApp.cs
+++ b/samples/Templates/ThirdPersonPlatformer/ThirdPersonPlatformer/ThirdPersonPlatformer.Windows/ThirdPersonPlatformerApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace ThirdPersonPlatformer
-{
- class ThirdPersonPlatformerApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Game/TopDownRPG.Game.csproj b/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Game/TopDownRPG.Game.csproj
index 17fbd3e69a..4a510e631b 100644
--- a/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Game/TopDownRPG.Game.csproj
+++ b/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Game/TopDownRPG.Game.csproj
@@ -1,16 +1,16 @@
- net8.0
+ net8.0
TopDownRPG
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Game/TopDownRPG.Game.sdpkg b/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Game/TopDownRPG.Game.sdpkg
index 94b8126032..70c70d88b3 100644
--- a/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Game/TopDownRPG.Game.sdpkg
+++ b/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Game/TopDownRPG.Game.sdpkg
@@ -10,7 +10,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Windows/TopDownRPG.Windows.csproj b/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Windows/TopDownRPG.Windows.csproj
index 614358be90..9e5e9a9c6c 100644
--- a/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Windows/TopDownRPG.Windows.csproj
+++ b/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Windows/TopDownRPG.Windows.csproj
@@ -1,58 +1,17 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
TopDownRPG
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\TopDownRPG.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
diff --git a/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Windows/TopDownRPGApp.cs b/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Windows/TopDownRPGApp.cs
index 91ecf293ef..89957d38c3 100644
--- a/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Windows/TopDownRPGApp.cs
+++ b/samples/Templates/TopDownRPG/TopDownRPG/TopDownRPG.Windows/TopDownRPGApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace TopDownRPG
-{
- class TopDownRPGApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Game/VRSandbox.Game.csproj b/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Game/VRSandbox.Game.csproj
index d8c770325d..2fa3ccf9da 100644
--- a/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Game/VRSandbox.Game.csproj
+++ b/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Game/VRSandbox.Game.csproj
@@ -1,15 +1,15 @@
- net8.0
+ net8.0
VRSandbox
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Game/VRSandbox.Game.sdpkg b/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Game/VRSandbox.Game.sdpkg
index d3051ec605..c4df63fbd1 100644
--- a/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Game/VRSandbox.Game.sdpkg
+++ b/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Game/VRSandbox.Game.sdpkg
@@ -10,7 +10,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Windows/VRSandbox.Windows.csproj b/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Windows/VRSandbox.Windows.csproj
index 456f71b805..8fb8d853c8 100644
--- a/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Windows/VRSandbox.Windows.csproj
+++ b/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Windows/VRSandbox.Windows.csproj
@@ -1,59 +1,18 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
VRSandbox
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\VRSandbox.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
-
+
diff --git a/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Windows/VRSandboxApp.cs b/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Windows/VRSandboxApp.cs
index 6196822e2b..0b0945c537 100644
--- a/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Windows/VRSandboxApp.cs
+++ b/samples/Templates/VRSandbox/VRSandbox/VRSandbox.Windows/VRSandboxApp.cs
@@ -1,15 +1,5 @@
-using Stride.Engine;
+using VRSandbox;
+
+using var game = new VRGame();
+game.Run();
-namespace VRSandbox
-{
- class VRSandboxApp
- {
- static void Main(string[] args)
- {
- using (var game = new VRGame())
- {
- game.Run();
- }
- }
- }
-}
diff --git a/samples/Tests/Stride.Samples.Tests.csproj b/samples/Tests/Stride.Samples.Tests.csproj
index 46bbd96d2c..b9c9893bd6 100644
--- a/samples/Tests/Stride.Samples.Tests.csproj
+++ b/samples/Tests/Stride.Samples.Tests.csproj
@@ -11,8 +11,8 @@
true
-
-
+
+
@@ -29,4 +29,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Game/CSharpBeginner.Game.csproj b/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Game/CSharpBeginner.Game.csproj
index 702d998593..35ccb1f009 100644
--- a/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Game/CSharpBeginner.Game.csproj
+++ b/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Game/CSharpBeginner.Game.csproj
@@ -1,16 +1,16 @@
- net8.0
+ net8.0
CSharpBeginner
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Windows/CSharpBeginner.Windows.csproj b/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Windows/CSharpBeginner.Windows.csproj
index 3bf976e560..97a8a9ae63 100644
--- a/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Windows/CSharpBeginner.Windows.csproj
+++ b/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Windows/CSharpBeginner.Windows.csproj
@@ -1,6 +1,6 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
CSharpBeginner.Windows
diff --git a/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Windows/CSharpBeginnerApp.cs b/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Windows/CSharpBeginnerApp.cs
index c0fdd4620d..89957d38c3 100644
--- a/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Windows/CSharpBeginnerApp.cs
+++ b/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Windows/CSharpBeginnerApp.cs
@@ -1,13 +1,5 @@
-namespace CSharpBeginner
-{
- class CSharpBeginnerApp
- {
- static void Main(string[] args)
- {
- using (var game = new Stride.Engine.Game())
- {
- game.Run();
- }
- }
- }
-}
+using Stride.Engine;
+
+using var game = new Game();
+game.Run();
+
diff --git a/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Game/05_Async/AsyncWebApi.cs b/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Game/05_Async/AsyncWebApi.cs
index 1276f6b509..2aab93c40c 100644
--- a/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Game/05_Async/AsyncWebApi.cs
+++ b/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Game/05_Async/AsyncWebApi.cs
@@ -2,8 +2,8 @@
// Distributed under the MIT license. See the LICENSE.md file in the project root for more information.
using System.Collections.Generic;
using System.Net.Http;
+using System.Text.Json;
using System.Threading.Tasks;
-using Newtonsoft.Json;
using Stride.Core.Mathematics;
using Stride.Engine;
@@ -50,8 +50,8 @@ private async Task RetrieveStrideRepos()
// We store the contents of the response in a string
string responseContent = await response.Content.ReadAsStringAsync();
- // We serialze the string in to an object
- openCollectiveEvents = JsonConvert.DeserializeObject>(responseContent);
+ // We deserialze the string into an object
+ openCollectiveEvents = JsonSerializer.Deserialize>(responseContent);
}
}
diff --git a/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Game/CSharpIntermediate.Game.csproj b/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Game/CSharpIntermediate.Game.csproj
index 7ab38d8070..f30d0339d8 100644
--- a/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Game/CSharpIntermediate.Game.csproj
+++ b/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Game/CSharpIntermediate.Game.csproj
@@ -1,17 +1,16 @@
- net8.0
+ net8.0
CSharpIntermediate
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Windows/CSharpIntermediate.Windows.csproj b/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Windows/CSharpIntermediate.Windows.csproj
index ff1add1122..48455dd4ab 100644
--- a/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Windows/CSharpIntermediate.Windows.csproj
+++ b/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Windows/CSharpIntermediate.Windows.csproj
@@ -1,6 +1,6 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
CSharpIntermediate.Windows
diff --git a/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Windows/CSharpIntermediateApp.cs b/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Windows/CSharpIntermediateApp.cs
index 326297cc7a..89957d38c3 100644
--- a/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Windows/CSharpIntermediateApp.cs
+++ b/samples/Tutorials/CSharpIntermediate/CSharpIntermediate/CSharpIntermediate.Windows/CSharpIntermediateApp.cs
@@ -1,13 +1,5 @@
-namespace CSharpIntermediate
-{
- class CSharpIntermediateApp
- {
- static void Main(string[] args)
- {
- using (var game = new Stride.Engine.Game())
- {
- game.Run();
- }
- }
- }
-}
+using Stride.Engine;
+
+using var game = new Game();
+game.Run();
+
diff --git a/samples/UI/GameMenu/GameMenu.Game/GameMenu.Game.csproj b/samples/UI/GameMenu/GameMenu.Game/GameMenu.Game.csproj
index 2f4bc7959f..628d33132a 100644
--- a/samples/UI/GameMenu/GameMenu.Game/GameMenu.Game.csproj
+++ b/samples/UI/GameMenu/GameMenu.Game/GameMenu.Game.csproj
@@ -1,13 +1,13 @@
- net8.0
+ net8.0
GameMenu
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/UI/GameMenu/GameMenu.Game/GameMenu.Game.sdpkg b/samples/UI/GameMenu/GameMenu.Game/GameMenu.Game.sdpkg
index 9d25ae3eac..38a6cc55da 100644
--- a/samples/UI/GameMenu/GameMenu.Game/GameMenu.Game.sdpkg
+++ b/samples/UI/GameMenu/GameMenu.Game/GameMenu.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/UI/GameMenu/GameMenu.Windows/GameMenu.Windows.csproj b/samples/UI/GameMenu/GameMenu.Windows/GameMenu.Windows.csproj
index 098c1455de..772e08830a 100644
--- a/samples/UI/GameMenu/GameMenu.Windows/GameMenu.Windows.csproj
+++ b/samples/UI/GameMenu/GameMenu.Windows/GameMenu.Windows.csproj
@@ -1,59 +1,18 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
GameMenu
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\GameMenu.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
-
+
diff --git a/samples/UI/GameMenu/GameMenu.Windows/GameMenuApp.cs b/samples/UI/GameMenu/GameMenu.Windows/GameMenuApp.cs
index bb1c0bdef6..89957d38c3 100644
--- a/samples/UI/GameMenu/GameMenu.Windows/GameMenuApp.cs
+++ b/samples/UI/GameMenu/GameMenu.Windows/GameMenuApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace GameMenu
-{
- class GameMenuApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/UI/UIElementLink/UIElementLink.Game/UIElementLink.Game.csproj b/samples/UI/UIElementLink/UIElementLink.Game/UIElementLink.Game.csproj
index dd840b51c3..c8eb51a644 100644
--- a/samples/UI/UIElementLink/UIElementLink.Game/UIElementLink.Game.csproj
+++ b/samples/UI/UIElementLink/UIElementLink.Game/UIElementLink.Game.csproj
@@ -1,13 +1,13 @@
- net8.0
+ net8.0
UIElementLink
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/UI/UIElementLink/UIElementLink.Game/UIElementLink.Game.sdpkg b/samples/UI/UIElementLink/UIElementLink.Game/UIElementLink.Game.sdpkg
index 9e344b4419..67993a7ec5 100644
--- a/samples/UI/UIElementLink/UIElementLink.Game/UIElementLink.Game.sdpkg
+++ b/samples/UI/UIElementLink/UIElementLink.Game/UIElementLink.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/UI/UIElementLink/UIElementLink.Windows/UIElementLink.Windows.csproj b/samples/UI/UIElementLink/UIElementLink.Windows/UIElementLink.Windows.csproj
index 8cef0be33a..f36a7c5c80 100644
--- a/samples/UI/UIElementLink/UIElementLink.Windows/UIElementLink.Windows.csproj
+++ b/samples/UI/UIElementLink/UIElementLink.Windows/UIElementLink.Windows.csproj
@@ -1,59 +1,18 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
UIElementLink
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\UIElementLink.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
-
+
diff --git a/samples/UI/UIElementLink/UIElementLink.Windows/UIElementLinkApp.cs b/samples/UI/UIElementLink/UIElementLink.Windows/UIElementLinkApp.cs
index b96b5b3335..89957d38c3 100644
--- a/samples/UI/UIElementLink/UIElementLink.Windows/UIElementLinkApp.cs
+++ b/samples/UI/UIElementLink/UIElementLink.Windows/UIElementLinkApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace UIElementLink
-{
- class UIElementLinkApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/samples/UI/UIParticles/UIParticles.Game/UIParticles.Game.csproj b/samples/UI/UIParticles/UIParticles.Game/UIParticles.Game.csproj
index b0c0ed18f7..f448a4f2a1 100644
--- a/samples/UI/UIParticles/UIParticles.Game/UIParticles.Game.csproj
+++ b/samples/UI/UIParticles/UIParticles.Game/UIParticles.Game.csproj
@@ -1,13 +1,13 @@
- net8.0
+ net8.0
UIParticles
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/UI/UIParticles/UIParticles.Game/UIParticles.Game.sdpkg b/samples/UI/UIParticles/UIParticles.Game/UIParticles.Game.sdpkg
index 5d3488456c..90f1075d91 100644
--- a/samples/UI/UIParticles/UIParticles.Game/UIParticles.Game.sdpkg
+++ b/samples/UI/UIParticles/UIParticles.Game/UIParticles.Game.sdpkg
@@ -9,7 +9,8 @@ Meta:
AssetFolders:
- Path: !dir ../Assets/Shared
- Path: !dir Effects
-ResourceFolders: []
+ResourceFolders:
+ - !dir ../Resources
OutputGroupDirectories: {}
ExplicitFolders: []
Bundles: []
diff --git a/samples/UI/UIParticles/UIParticles.Windows/UIParticles.Windows.csproj b/samples/UI/UIParticles/UIParticles.Windows/UIParticles.Windows.csproj
index 54ae376460..91a2b30ac9 100644
--- a/samples/UI/UIParticles/UIParticles.Windows/UIParticles.Windows.csproj
+++ b/samples/UI/UIParticles/UIParticles.Windows/UIParticles.Windows.csproj
@@ -1,59 +1,18 @@
- net8.0-windows7.0
+ net8.0-windows
Resources\GameIcon.ico
WinExe
UIParticles
..\Bin\Windows\$(Configuration)\
false
+ STRIDE_PLATFORM_DESKTOP
$(MSBuildThisFileDirectory)..\UIParticles.sdpkg
Executable
Windows
- Windows
-
-
- true
- full
- false
- DEBUG;TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Debug\
- obj\Windows\Debug\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Release\
- obj\Windows\Release\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\Testing\
- obj\Windows\Testing\
- prompt
- 4
- true
-
-
- pdbonly
- true
- TRACE;STRIDE_PLATFORM_WINDOWS;STRIDE_PLATFORM_WINDOWS_DESKTOP
- ..\Bin\Windows\AppStore\
- obj\Windows\AppStore\
- prompt
- 4
- true
-
+
diff --git a/samples/UI/UIParticles/UIParticles.Windows/UIParticlesApp.cs b/samples/UI/UIParticles/UIParticles.Windows/UIParticlesApp.cs
index 9c109863cb..89957d38c3 100644
--- a/samples/UI/UIParticles/UIParticles.Windows/UIParticlesApp.cs
+++ b/samples/UI/UIParticles/UIParticles.Windows/UIParticlesApp.cs
@@ -1,15 +1,5 @@
using Stride.Engine;
-namespace UIParticles
-{
- class UIParticlesApp
- {
- static void Main(string[] args)
- {
- using (var game = new Game())
- {
- game.Run();
- }
- }
- }
-}
+using var game = new Game();
+game.Run();
+
diff --git a/sources/Directory.Packages.props b/sources/Directory.Packages.props
index eb63e30002..1a31b72d8b 100644
--- a/sources/Directory.Packages.props
+++ b/sources/Directory.Packages.props
@@ -5,9 +5,11 @@
-
+
-
+
+
+
@@ -18,49 +20,48 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
-
-
+
-
-
-
+
+
-
-
+
+
-
+
-
+
-
+
@@ -69,13 +70,13 @@
-
-
-
+
+
+
-
-
+
+
@@ -83,54 +84,31 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
- 11.0.5
+ 11.0.10
@@ -138,18 +116,17 @@
-
+
-
-
+
-
-
-
+
+
+
@@ -157,11 +134,9 @@
-
-
-
+
diff --git a/sources/README.md b/sources/README.md
index 1fca7ea931..2899ec29d6 100644
--- a/sources/README.md
+++ b/sources/README.md
@@ -30,9 +30,6 @@ Folders and projects layout
* __Stride.Core.BuildEngine.Common__:
Common parts of the build engine. It can be reused to add new build steps, build commands, and also to build a new custom build engine client.
* __Stride.Core.BuildEngine__: Default implementation of build engine tool (executable)
-* __Stride.Core.BuildEngine.Monitor__: WPF Display live results of build engine (similar to IncrediBuild)
-* __Stride.Core.BuildEngine.Editor__: WPF Build engine rules editor
-and used by most projects.
### shader ###
diff --git a/sources/assets/Stride.Core.Assets.CompilerApp/PackageBuilder.cs b/sources/assets/Stride.Core.Assets.CompilerApp/PackageBuilder.cs
index 03a8bade99..e1aff3183e 100644
--- a/sources/assets/Stride.Core.Assets.CompilerApp/PackageBuilder.cs
+++ b/sources/assets/Stride.Core.Assets.CompilerApp/PackageBuilder.cs
@@ -195,7 +195,7 @@ private void SaveBuildUpToDateFile(string msbuildUpToDateCheckFileBase, string p
{
// Note: check if file exists (since it could be an "implicit package" from csproj)
if (File.Exists(package.FullPath))
- inputs.Add(package.FullPath.ToWindowsPath());
+ inputs.Add(package.FullPath.ToOSPath());
// TODO: optimization: for nuget packages, directly use sha512 file rather than individual assets for faster checking
@@ -203,7 +203,7 @@ private void SaveBuildUpToDateFile(string msbuildUpToDateCheckFileBase, string p
foreach (var assetFolder in package.AssetFolders)
{
if (Directory.Exists(assetFolder.Path))
- inputs.Add(assetFolder.Path.ToWindowsPath() + @"\**\*.*");
+ inputs.Add(assetFolder.Path.ToOSPath() + "/**/*.*".Replace('/', Path.DirectorySeparatorChar));
}
// List project assets
@@ -215,7 +215,7 @@ private void SaveBuildUpToDateFile(string msbuildUpToDateCheckFileBase, string p
{
// Make sure it is not already covered by one of the previously registered asset folders
if (!package.AssetFolders.Any(assetFolder => assetFolder.Path.Contains(assetItem.FullPath)))
- inputs.Add(assetItem.FullPath.ToWindowsPath());
+ inputs.Add(assetItem.FullPath.ToOSPath());
}
}
@@ -233,7 +233,7 @@ private void SaveBuildUpToDateFile(string msbuildUpToDateCheckFileBase, string p
{
if (inputObject.Key.Type == UrlType.File)
{
- inputs.Add(new UFile(inputObject.Key.Path).ToWindowsPath());
+ inputs.Add(new UFile(inputObject.Key.Path).ToOSPath());
}
}
diff --git a/sources/assets/Stride.Core.Assets.CompilerApp/ProcessBuilderRemote.cs b/sources/assets/Stride.Core.Assets.CompilerApp/ProcessBuilderRemote.cs
index 4df4c20331..d64dcf7d37 100644
--- a/sources/assets/Stride.Core.Assets.CompilerApp/ProcessBuilderRemote.cs
+++ b/sources/assets/Stride.Core.Assets.CompilerApp/ProcessBuilderRemote.cs
@@ -56,10 +56,7 @@ public Dictionary GetOutputObjects()
{
foreach (var outputObject in outputObjects)
{
- if (!result.ContainsKey(outputObject.Key))
- {
- result.Add(outputObject.Key, outputObject.Value.ObjectId);
- }
+ result.TryAdd(outputObject.Key, outputObject.Value.ObjectId);
}
}
return result;
diff --git a/sources/assets/Stride.Core.Assets.CompilerApp/Stride.Core.Assets.CompilerApp.csproj b/sources/assets/Stride.Core.Assets.CompilerApp/Stride.Core.Assets.CompilerApp.csproj
index 3663c71c4d..1d6fdc521b 100644
--- a/sources/assets/Stride.Core.Assets.CompilerApp/Stride.Core.Assets.CompilerApp.csproj
+++ b/sources/assets/Stride.Core.Assets.CompilerApp/Stride.Core.Assets.CompilerApp.csproj
@@ -2,20 +2,11 @@
Windows
-
- false
-
-
- false
-
- 8.0.30703
- 2.0
Exe
true
- $(StrideXplatEditorTargetFramework)
- win-x64
+ $(StrideXplatEditorTargetFramework);$(StrideEditorTargetFramework)
false
--auto-module-initializer --serialization
diff --git a/sources/assets/Stride.Core.Assets.CompilerApp/Tasks/PackAssets.cs b/sources/assets/Stride.Core.Assets.CompilerApp/Tasks/PackAssets.cs
index e7224150eb..a73fc4a43b 100644
--- a/sources/assets/Stride.Core.Assets.CompilerApp/Tasks/PackAssets.cs
+++ b/sources/assets/Stride.Core.Assets.CompilerApp/Tasks/PackAssets.cs
@@ -41,7 +41,7 @@ public static bool Run(Core.Diagnostics.Logger logger, string projectFile, strin
void RegisterItem(UFile targetFilePath)
{
- generatedItems.Add((targetFilePath.ToWindowsPath(), UPath.Combine("stride", targetFilePath.MakeRelative(outputPath)).ToWindowsPath()));
+ generatedItems.Add((targetFilePath.ToOSPath(), UPath.Combine("stride", targetFilePath.MakeRelative(outputPath)).ToOSPath()));
}
void TryCopyDirectory(UDirectory sourceDirectory, UDirectory targetDirectory, string exclude = null)
@@ -70,7 +70,7 @@ void TryCopyResource(UFile resourceFilePath, UFile targetFilePath)
if (resourcesTargetToSource.TryGetValue(targetFilePath, out var otherResourceFilePath))
{
- logger.Error($"Could not copy resource file [{targetFilePath.MakeRelative(resourceOutputPath)}] because it exists in multiple locations: [{resourceFilePath.ToWindowsPath()}] and [{otherResourceFilePath.ToWindowsPath()}]");
+ logger.Error($"Could not copy resource file [{targetFilePath.MakeRelative(resourceOutputPath)}] because it exists in multiple locations: [{resourceFilePath.ToOSPath()}] and [{otherResourceFilePath.ToOSPath()}]");
}
else
{
@@ -85,7 +85,7 @@ void TryCopyResource(UFile resourceFilePath, UFile targetFilePath)
}
catch (Exception e)
{
- logger.Error($"Could not copy resource file from [{resourceFilePath.ToWindowsPath()}] to [{targetFilePath.MakeRelative(resourceOutputPath)}]", e);
+ logger.Error($"Could not copy resource file from [{resourceFilePath.ToOSPath()}] to [{targetFilePath.MakeRelative(resourceOutputPath)}]", e);
}
}
}
diff --git a/sources/assets/Stride.Core.Assets.CompilerApp/build/Stride.Core.Assets.CompilerApp.targets b/sources/assets/Stride.Core.Assets.CompilerApp/build/Stride.Core.Assets.CompilerApp.targets
index 1301401ed9..2e78878e5a 100644
--- a/sources/assets/Stride.Core.Assets.CompilerApp/build/Stride.Core.Assets.CompilerApp.targets
+++ b/sources/assets/Stride.Core.Assets.CompilerApp/build/Stride.Core.Assets.CompilerApp.targets
@@ -1,23 +1,30 @@
-
-
+
+
-
+
- <_StrideVisualCRuntime2013 Include="Visual C++ Redistributable for Visual Studio 2013 x86">
- $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\VC\Servicing\12.0\RuntimeMinimum', 'Version', null, RegistryView.Registry32))
- 12.0.21005
- http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe
-
- <_StrideVisualCRuntime2013 Include="Visual C++ Redistributable for Visual Studio 2013 x64">
- $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\VC\Servicing\12.0\RuntimeMinimum', 'Version', null, RegistryView.Registry64))
- 12.0.21005
- http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe
-
-
- <_StrideVisualCRuntime2013NotInstalled Include="@(_StrideVisualCRuntime2013)" Condition="'%(_StrideVisualCRuntime2013.Version)' == '' Or $([System.Version]::Parse('%(Version)').CompareTo($([System.Version]::Parse('%(_StrideVisualCRuntime2013.ExpectedVersion)')))) < 0" />
+
+ <_StrideVisualCRuntime2019 Include="Visual C++ Redistributable for Visual Studio 2019 x86">
+ $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X86', 'Bld', null, RegistryView.Registry32))
+ 27820
+ https://aka.ms/vs/17/release/vc_redist.x86.exe
+
+ <_StrideVisualCRuntime2019 Include="Visual C++ Redistributable for Visual Studio 2019 x64">
+ $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X64', 'Bld', null, RegistryView.Registry64))
+ 27820
+ https://aka.ms/vs/17/release/vc_redist.x64.exe
+
+
+ <_StrideVisualCRuntime2019NotInstalled Include="@(_StrideVisualCRuntime2019)" Condition="'%(_StrideVisualCRuntime2019.Version)' == '' Or $([System.Int32]::Parse('%(Version)').CompareTo($([System.Int32]::Parse('%(_StrideVisualCRuntime2019.ExpectedVersion)')))) < 0" />
-
+
- $(MSBuildThisFileDirectory)..\lib\net8.0\Stride.Core.Assets.CompilerApp.exe
- $(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0\Stride.Core.Assets.CompilerApp.exe
+ $(MSBuildThisFileDirectory)..\lib\net8.0-windows7.0\Stride.Core.Assets.CompilerApp.dll
+ $(MSBuildThisFileDirectory)..\lib\net8.0\Stride.Core.Assets.CompilerApp.dll
+ $(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0\Stride.Core.Assets.CompilerApp.dll
@@ -132,7 +140,7 @@
- "$(StrideCompileAssetCommand)"
+ dotnet "$(StrideCompileAssetCommand)"
$(StrideCompileAssetCommandProxy) $(StrideCompileAssetOptions) --disable-auto-compile --project-configuration "$(Configuration)" --platform=$(StridePlatform) --project-configuration=$(Configuration) --compile-property:StrideGraphicsApi=$(StrideGraphicsApi) --output-path="$(StrideCompileAssetOutputPath)" --build-path="$(StrideCompileAssetBuildPath)" --package-file="$(MSBuildProjectFullPath)" --msbuild-uptodatecheck-filebase="$(StrideCompileAssetUpToDateCheckFileBase)"
$(StrideCompileAssetCommandProxy) --verbose
@@ -212,7 +220,7 @@
-
+
@@ -228,7 +236,7 @@
-
+
-
-
+
+
diff --git a/sources/core/Stride.Core.CompilerServices.Tests/AnalyzerTests/STRDIAG001_Test.cs b/sources/core/Stride.Core.CompilerServices.Tests/AnalyzerTests/STRDIAG001_Test.cs
index 28e77bb127..fe72ea7403 100644
--- a/sources/core/Stride.Core.CompilerServices.Tests/AnalyzerTests/STRDIAG001_Test.cs
+++ b/sources/core/Stride.Core.CompilerServices.Tests/AnalyzerTests/STRDIAG001_Test.cs
@@ -21,14 +21,13 @@ public void No_Error_On_Private_Inner_Class_without_DataContract()
string sourceCode = string.Format(ClassTemplates.BasicClassTemplate, "private class InnerClass { }");
TestHelper.ExpectNoDiagnosticsErrors(sourceCode);
}
- // TODO: Enable with .NET8 merge as we need a higher C# version
- [Fact(Skip = "file scoped classes won't compile")]
+ [Fact]
public void Error_On_file_scope_Class_with_DataContract()
{
string sourceCode = "using Stride.Core; [DataContract] file class FileScopeClass { }";
TestHelper.ExpectDiagnosticsError(sourceCode, STRDIAG001InvalidDataContract.DiagnosticId);
}
- [Fact(Skip = "file scoped classes won't compile")]
+ [Fact]
public void No_Error_On_file_scope_Class_without_DataContract()
{
string sourceCode = "using Stride.Core; file class FileScopeClass { }";
diff --git a/sources/core/Stride.Core.CompilerServices.Tests/AnalyzerTests/STRDIAG010_Test.cs b/sources/core/Stride.Core.CompilerServices.Tests/AnalyzerTests/STRDIAG010_Test.cs
new file mode 100644
index 0000000000..abcf0ab3b4
--- /dev/null
+++ b/sources/core/Stride.Core.CompilerServices.Tests/AnalyzerTests/STRDIAG010_Test.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Stride.Core.CompilerServices.Analyzers;
+using Xunit;
+
+namespace Stride.Core.CompilerServices.Tests.AnalyzerTests;
+public class STRDIAG010_Test
+{
+ [Fact]
+ public void No_Error_On_Default_Constructor()
+ {
+ string sourceCode = string.Format(ClassTemplates.BasicClassTemplate, " ");
+ TestHelper.ExpectNoDiagnosticsErrors(sourceCode);
+ }
+ [Fact]
+ public void No_Error_On_Empty_Constructor()
+ {
+ string sourceCode = string.Format(ClassTemplates.BasicClassTemplate, "public ValidCollection() { }");
+ TestHelper.ExpectNoDiagnosticsErrors(sourceCode);
+ }
+ [Fact]
+ public void No_Error_On_Empty_And_Other_Constructor()
+ {
+ string sourceCode = string.Format(ClassTemplates.BasicClassTemplate, "public ValidCollection() { } public ValidCollection(int x) { }");
+ TestHelper.ExpectNoDiagnosticsErrors(sourceCode);
+ }
+ [Fact]
+ public void Error_On_No_Empty_Constructor()
+ {
+ string sourceCode = string.Format(ClassTemplates.BasicClassTemplate, "public ValidCollection(int x) { }");
+ TestHelper.ExpectDiagnosticsError(sourceCode,STRDIAG010InvalidConstructor.DiagnosticId);
+ }
+ [Fact]
+ public void Error_On_DataContract_Inherited()
+ {
+ string sourceCode = string.Format(ClassTemplates.InheritedDataContract, "public Inherited(int x) { }");
+ TestHelper.ExpectDiagnosticsError(sourceCode, STRDIAG010InvalidConstructor.DiagnosticId);
+ }
+ [Fact]
+ public void Error_On_Primary_Constructor()
+ {
+ string sourceCode = string.Format(ClassTemplates.PrimaryConstructorTemplate, "");
+ TestHelper.ExpectDiagnosticsError(sourceCode, STRDIAG010InvalidConstructor.DiagnosticId);
+ }
+ [Fact]
+ public void No_Error_On_Flipped_DataContract_Parameters()
+ {
+ string sourceCode = string.Format(ClassTemplates.DataContractArgumentsTemplate, "");
+ TestHelper.ExpectNoDiagnosticsErrors(sourceCode);
+ }
+}
diff --git a/sources/core/Stride.Core.CompilerServices.Tests/ClassTemplates.cs b/sources/core/Stride.Core.CompilerServices.Tests/ClassTemplates.cs
index b4d4cfade4..d8a78b84d8 100644
--- a/sources/core/Stride.Core.CompilerServices.Tests/ClassTemplates.cs
+++ b/sources/core/Stride.Core.CompilerServices.Tests/ClassTemplates.cs
@@ -52,6 +52,37 @@ public class ValidCollection
{0} {1} X {{ get; set; }}
}}
+";
+ public const string InheritedDataContract = @"
+using Stride.Core;
+using System;
+[DataContract(Inherited = true)]
+public class Base {{ }}
+
+public class Inherited : Base
+{{
+ {0}
+}}
";
+ public const string PrimaryConstructorTemplate = @"
+using Stride.Core;
+using System;
+[DataContract]
+public class ValidCollection(int x)
+{{
+ {0}
+}}
+";
+ public const string DataContractArgumentsTemplate = @"
+[DataContract(Inherited = true,DefaultMemberMode = DataMemberMode.Assign)]
+public struct ValidCollection
+{{
+}}
+[DataContract(DefaultMemberMode = DataMemberMode.Assign,Inherited = true)]
+public struct ValidCollection2
+{{
+ {0}
+}}
+";
}
diff --git a/sources/core/Stride.Core.CompilerServices.Tests/CompilerUtils.cs b/sources/core/Stride.Core.CompilerServices.Tests/CompilerUtils.cs
index 29b9e1defa..f4bb6a32f5 100644
--- a/sources/core/Stride.Core.CompilerServices.Tests/CompilerUtils.cs
+++ b/sources/core/Stride.Core.CompilerServices.Tests/CompilerUtils.cs
@@ -36,7 +36,7 @@ private static Compilation CreateCompilation(string assemblyName, string source)
// System.Private.CoreLib.dll
MetadataReference.CreateFromFile($"{assembliesDirectory}/System.Private.CoreLib.dll"),
// Stride.Core.dll
- MetadataReference.CreateFromFile($"{assembliesDirectory}/Stride.Core.dll"),
+ MetadataReference.CreateFromFile(typeof(Stride.Core.DataContractAttribute).GetTypeInfo().Assembly.Location),
},
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
public static DiagnosticAnalyzer[] AllAnalyzers => typeof(DiagnosticsAnalyzerHelper).Assembly.GetTypes()
diff --git a/sources/core/Stride.Core.CompilerServices.Tests/Stride.Core.CompilerServices.Tests.csproj b/sources/core/Stride.Core.CompilerServices.Tests/Stride.Core.CompilerServices.Tests.csproj
index 297a912dba..290466c27b 100644
--- a/sources/core/Stride.Core.CompilerServices.Tests/Stride.Core.CompilerServices.Tests.csproj
+++ b/sources/core/Stride.Core.CompilerServices.Tests/Stride.Core.CompilerServices.Tests.csproj
@@ -10,7 +10,10 @@
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
@@ -19,7 +22,7 @@
-
+
diff --git a/sources/core/Stride.Core.CompilerServices/AnalyzerReleases.Shipped.md b/sources/core/Stride.Core.CompilerServices/AnalyzerReleases.Shipped.md
new file mode 100644
index 0000000000..0c3143a2e7
--- /dev/null
+++ b/sources/core/Stride.Core.CompilerServices/AnalyzerReleases.Shipped.md
@@ -0,0 +1,20 @@
+; Shipped analyzer releases
+; https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md
+
+## Release 1.0
+
+### New Rules
+
+Rule ID | Category | Severity | Notes
+--------|----------|----------|-------
+STRDIAG000 | Serialization | Warning | STRDIAG000AttributeContradiction
+STRDIAG001 | Serialization | Warning | STRDIAG001InvalidDataContract
+STRDIAG002 | Serialization | Warning | STRDIAG002InvalidContentMode
+STRDIAG003 | Serialization | Warning | STRDIAG003InaccessibleMember
+STRDIAG004 | Serialization | Warning | STRDIAG004PropertyWithNoGetter
+STRDIAG005 | Serialization | Warning | STRDIAG005ReadonlyMemberTypeIsNotSupported
+STRDIAG006 | Serialization | Warning | STRDIAG006InvalidAssignMode
+STRDIAG007 | Serialization | Warning | STRDIAG007DataMemberOnDelegate
+STRDIAG008 | Serialization | Warning | STRDIAG008FixedFieldInStructs
+STRDIAG009 | Serialization | Warning | STRDIAG009InvalidDictionaryKey
+STRDIAG010 | Serialization | Warning | STRDIAG010InvalidConstructor
diff --git a/sources/core/Stride.Core.CompilerServices/AnalyzerReleases.Unshipped.md b/sources/core/Stride.Core.CompilerServices/AnalyzerReleases.Unshipped.md
new file mode 100644
index 0000000000..30e93e83d5
--- /dev/null
+++ b/sources/core/Stride.Core.CompilerServices/AnalyzerReleases.Unshipped.md
@@ -0,0 +1,3 @@
+; Unshipped analyzer release
+; https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md
+
diff --git a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG001InvalidDataContract.cs b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG001InvalidDataContract.cs
index a4d954f636..ca5601311e 100644
--- a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG001InvalidDataContract.cs
+++ b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG001InvalidDataContract.cs
@@ -36,12 +36,10 @@ private static void AnalyzeCompilationStart(CompilationStartAnalysisContext cont
{
var dataContractAttribute = WellKnownReferences.DataContractAttribute(context.Compilation);
-
if (dataContractAttribute is null)
return;
context.RegisterSymbolAction(symbolContext => AnalyzeSymbol(symbolContext, dataContractAttribute), SymbolKind.NamedType);
-
}
private static void AnalyzeSymbol(SymbolAnalysisContext context, INamedTypeSymbol dataContractAttribute)
@@ -51,7 +49,10 @@ private static void AnalyzeSymbol(SymbolAnalysisContext context, INamedTypeSymbo
if (!symbol.HasAttribute(dataContractAttribute))
return;
- if(!symbol.IsVisibleToSerializer(hasDataMemberAttribute: true))
+ if (symbol.IsFileLocal)
+ Rule.ReportDiagnostics(context, symbol);
+
+ if (!symbol.IsVisibleToSerializer(hasDataMemberAttribute: true))
Rule.ReportDiagnostics(context, symbol);
}
}
diff --git a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG004PropertyWithNoGetter.cs b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG004PropertyWithNoGetter.cs
index 93f70b45bc..35e41fd921 100644
--- a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG004PropertyWithNoGetter.cs
+++ b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG004PropertyWithNoGetter.cs
@@ -8,7 +8,7 @@ public class STRDIAG004PropertyWithNoGetter : DiagnosticAnalyzer
{
public const string DiagnosticId = "STRDIAG004";
private const string Title = "Property with no Getter";
- private const string NonExistentGetterMessageFormat = "The property '{0}' with [DataMember] does not have a getter which is required for serialization.";
+ private const string NonExistentGetterMessageFormat = "The property '{0}' with [DataMember] does not have a getter which is required for serialization";
private const string InvalidAccessibilityOnGetterMessageFormat = "The property '{0}' with [DataMember] does not have an accessible getter which is required for serialization. A public/internal/internal protected getter is expected.";
private const string Category = DiagnosticCategory.Serialization;
diff --git a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG005ReadonlyMemberTypeIsNotSupported.cs b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG005ReadonlyMemberTypeIsNotSupported.cs
index 01185db319..ce3045c16b 100644
--- a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG005ReadonlyMemberTypeIsNotSupported.cs
+++ b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG005ReadonlyMemberTypeIsNotSupported.cs
@@ -51,7 +51,6 @@ private static void AnalyzeField(SymbolAnalysisContext context, INamedTypeSymbol
if (!symbol.IsVisibleToSerializer(dataMemberAttribute))
return;
-
if (!symbol.IsReadOnly)
return;
var fieldType = symbol.Type;
@@ -66,7 +65,6 @@ private static void AnalyzeProperty(SymbolAnalysisContext context, INamedTypeSym
{
var propertySymbol = (IPropertySymbol)context.Symbol;
-
if (!propertySymbol.HasAttribute(dataMemberAttribute))
return;
diff --git a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG006InvalidAssignMode.cs b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG006InvalidAssignMode.cs
index b767bf2bff..38d3e04097 100644
--- a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG006InvalidAssignMode.cs
+++ b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG006InvalidAssignMode.cs
@@ -45,7 +45,6 @@ private static void AnalyzeSymbol(SymbolAnalysisContext context, INamedTypeSymbo
{
var propertySymbol = (IPropertySymbol)context.Symbol;
-
if (!propertySymbol.HasAttribute(dataMemberAttribute))
return;
diff --git a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG008FixedFieldInStructs.cs b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG008FixedFieldInStructs.cs
index a4334da26d..668288fe26 100644
--- a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG008FixedFieldInStructs.cs
+++ b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG008FixedFieldInStructs.cs
@@ -8,7 +8,7 @@ public class STRDIAG008FixedFieldInStructs : DiagnosticAnalyzer
{
public const string DiagnosticId = "STRDIAG008";
private const string Title = "Invalid Struct Member";
- private const string MessageFormat = "Struct members with the 'fixed' Modifier are not supported as a Serialization target on member '{0}'.";
+ private const string MessageFormat = "Struct members with the 'fixed' Modifier are not supported as a Serialization target on member '{0}'";
private const string Category = DiagnosticCategory.Serialization;
private static readonly DiagnosticDescriptor Rule = new DiagnosticDescriptor(
diff --git a/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG010InvalidConstructor.cs b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG010InvalidConstructor.cs
new file mode 100644
index 0000000000..9a1b0a93e4
--- /dev/null
+++ b/sources/core/Stride.Core.CompilerServices/Analyzers/STRDIAG010InvalidConstructor.cs
@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Text;
+using Microsoft.CodeAnalysis;
+using Stride.Core.CompilerServices.Common;
+
+namespace Stride.Core.CompilerServices.Analyzers;
+
+[DiagnosticAnalyzer(LanguageNames.CSharp)]
+public class STRDIAG010InvalidConstructor : DiagnosticAnalyzer
+{
+ public const string DiagnosticId = "STRDIAG010";
+ private const string Title = "Invalid Constructor";
+ private const string MessageFormat = "The Type '{0}' doesn't have a public parameterless constructor, which is needed for Serialization";
+ private const string Category = DiagnosticCategory.Serialization;
+
+ private static readonly DiagnosticDescriptor Rule = new DiagnosticDescriptor(
+ DiagnosticId,
+ Title,
+ MessageFormat,
+ Category,
+ DiagnosticSeverity.Warning,
+ isEnabledByDefault: true,
+ helpLinkUri: string.Format(DiagnosticCategory.LinkFormat, DiagnosticId));
+
+ public override ImmutableArray SupportedDiagnostics { get { return ImmutableArray.Create(Rule); } }
+
+ public override void Initialize(AnalysisContext context)
+ {
+ context.EnableConcurrentExecution();
+ context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics);
+ context.RegisterCompilationStartAction(AnalyzeCompilationStart);
+ }
+
+ private static void AnalyzeCompilationStart(CompilationStartAnalysisContext context)
+ {
+ var dataContractAttribute = WellKnownReferences.DataContractAttribute(context.Compilation);
+
+ if (dataContractAttribute is null)
+ return;
+
+ context.RegisterSymbolAction(symbolContext => AnalyzeSymbol(symbolContext, dataContractAttribute), SymbolKind.NamedType);
+
+ }
+
+ private static void AnalyzeSymbol(SymbolAnalysisContext context, INamedTypeSymbol dataContractAttribute)
+ {
+ var symbol = (INamedTypeSymbol)context.Symbol;
+ if (symbol.IsAbstract)
+ return;
+
+ if (symbol.HasAttribute(dataContractAttribute))
+ {
+ TryReportDiagnostics(symbol, context);
+ return;
+ }
+
+ var type = symbol.BaseType;
+ bool isInherited = false;
+ while (type != null)
+ {
+ // Check if the type has the specified DataContractAttribute through inheritance
+ if (type.TryGetAttribute(dataContractAttribute,out var datacontractData) && datacontractData.AttributeConstructor is not null)
+ {
+ if (datacontractData is { NamedArguments: [.., { Key: "Inherited" , Value: TypedConstant inherited } ] })
+ {
+ isInherited = (bool)inherited.Value!;
+ }
+ break;
+ }
+ type = type.BaseType;
+ }
+ if(isInherited)
+ {
+ TryReportDiagnostics(symbol, context);
+ }
+ }
+ private static void TryReportDiagnostics(INamedTypeSymbol symbol,SymbolAnalysisContext context)
+ {
+ if (HasPublicEmptyConstructor(symbol))
+ {
+ return;
+ }
+ else
+ {
+ Rule.ReportDiagnostics(context, symbol);
+ }
+ }
+ private static bool HasPublicEmptyConstructor(INamedTypeSymbol type)
+ => type.Constructors.Any(x => x.Parameters.Length == 0 && x.DeclaredAccessibility == Accessibility.Public);
+}
diff --git a/sources/core/Stride.Core.CompilerServices/Common/SymbolExtensions.cs b/sources/core/Stride.Core.CompilerServices/Common/SymbolExtensions.cs
index 96365f0358..ee28798b95 100644
--- a/sources/core/Stride.Core.CompilerServices/Common/SymbolExtensions.cs
+++ b/sources/core/Stride.Core.CompilerServices/Common/SymbolExtensions.cs
@@ -1,3 +1,5 @@
+using System.Diagnostics.CodeAnalysis;
+
namespace Stride.Core.CompilerServices.Common;
internal static class SymbolExtensions
{
@@ -13,10 +15,23 @@ public static bool IsVisibleToSerializer(this ISymbol symbol, bool hasDataMember
var accessibility = symbol.DeclaredAccessibility;
if (hasDataMemberAttribute)
- return accessibility == Accessibility.Public || accessibility == Accessibility.Internal || accessibility == Accessibility.ProtectedOrInternal;
+ return accessibility is Accessibility.Public or Accessibility.Internal or Accessibility.ProtectedOrInternal;
return accessibility == Accessibility.Public;
}
+ ///
+ /// Tries to get on the
+ ///
+ /// The Symbol to search on
+ /// The attribute looking for
+ /// The of the Attribute if it is found
+ /// true if the attribute is found, else false
+ public static bool TryGetAttribute(this ISymbol symbol, INamedTypeSymbol attribute, [MaybeNullWhen(false)] out AttributeData attributeData)
+ {
+ attributeData = symbol.GetAttributes().FirstOrDefault(attr => attr.AttributeClass?.OriginalDefinition.Equals(attribute, SymbolEqualityComparer.Default) ?? false)!;
+ return attributeData is not null;
+ }
+
///
/// An Immutable Type is treated if its a non Reference Type ie class
/// A struct and a string are treated as Immutable as the Yaml Serializer can't handle value Types with it's reflection.
diff --git a/sources/core/Stride.Core.CompilerServices/Stride.Core.CompilerServices.csproj b/sources/core/Stride.Core.CompilerServices/Stride.Core.CompilerServices.csproj
index a64e93d3b3..79631d499e 100644
--- a/sources/core/Stride.Core.CompilerServices/Stride.Core.CompilerServices.csproj
+++ b/sources/core/Stride.Core.CompilerServices/Stride.Core.CompilerServices.csproj
@@ -3,7 +3,8 @@
netstandard2.0
Code generators for Stride.Core and its dependents
- preview
+ latest
+ true
true
enable
@@ -18,10 +19,15 @@
Properties\SharedAssemblyInfo.cs
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
diff --git a/sources/core/Stride.Core.Design.Tests/Stride.Core.Design.Tests.csproj b/sources/core/Stride.Core.Design.Tests/Stride.Core.Design.Tests.csproj
index 53fa573f90..3423cb1b14 100644
--- a/sources/core/Stride.Core.Design.Tests/Stride.Core.Design.Tests.csproj
+++ b/sources/core/Stride.Core.Design.Tests/Stride.Core.Design.Tests.csproj
@@ -9,7 +9,10 @@
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/sources/core/Stride.Core.Design.Tests/TestFileLock.cs b/sources/core/Stride.Core.Design.Tests/TestFileLock.cs
index 205ceedc1e..afc62243bd 100644
--- a/sources/core/Stride.Core.Design.Tests/TestFileLock.cs
+++ b/sources/core/Stride.Core.Design.Tests/TestFileLock.cs
@@ -36,7 +36,7 @@ public void TestFilelockWait()
{
// This should never happen. So throw an exception and make sure it is not caught by our catch below.
flag = true;
- Assert.True(false, "Cannot create a file lock if parent directory does not exist.");
+ Assert.Fail("Cannot create a file lock if parent directory does not exist.");
}
}
catch (Exception)
diff --git a/sources/core/Stride.Core.Design.Tests/TestUPath.cs b/sources/core/Stride.Core.Design.Tests/TestUPath.cs
index 678abd9017..139e279a94 100644
--- a/sources/core/Stride.Core.Design.Tests/TestUPath.cs
+++ b/sources/core/Stride.Core.Design.Tests/TestUPath.cs
@@ -330,7 +330,7 @@ public void TestUPathToString()
}
[Fact]
- public void TestUPathToWindowsPath()
+ public void TestUPathToOSPath()
{
// TODO
}
diff --git a/sources/core/Stride.Core.Design/IO/UPath.cs b/sources/core/Stride.Core.Design/IO/UPath.cs
index 864e2eacd7..a6f13954fa 100644
--- a/sources/core/Stride.Core.Design/IO/UPath.cs
+++ b/sources/core/Stride.Core.Design/IO/UPath.cs
@@ -284,15 +284,18 @@ public override string ToString()
{
return FullPath;
}
-
+
///
- /// Converts this path to a Windows path (/ replaced by \)
+ /// Converts this path to a OS path,
+ /// by replacing each separator with the current operating system
+ ///
///
- /// A string representation of this path in windows form.
+ ///A normalized string path
+
[NotNull]
- public string ToWindowsPath()
+ public string ToOSPath()
{
- return FullPath.Replace('/', '\\');
+ return FullPath.Replace('/', Path.DirectorySeparatorChar);
}
///
diff --git a/sources/core/Stride.Core.Design/Reflection/AssemblyContainer.cs b/sources/core/Stride.Core.Design/Reflection/AssemblyContainer.cs
index 98d7a851fe..dd2c9eec14 100644
--- a/sources/core/Stride.Core.Design/Reflection/AssemblyContainer.cs
+++ b/sources/core/Stride.Core.Design/Reflection/AssemblyContainer.cs
@@ -270,8 +270,7 @@ private Assembly LoadAssemblyFromPathInternal([NotNull] string assemblyFullPath)
var assemblyName = Path.GetFileNameWithoutExtension(runtimeFile.Path);
// TODO: Properly deal with file duplicates (same file in multiple package, or RID conflicts)
- if (!dependenciesMapping.ContainsKey(assemblyName))
- dependenciesMapping.Add(assemblyName, fullPath);
+ dependenciesMapping.TryAdd(assemblyName, fullPath);
}
}
}
@@ -295,8 +294,7 @@ private Assembly LoadAssemblyFromPathInternal([NotNull] string assemblyFullPath)
var assemblyName = Path.GetFileNameWithoutExtension(runtimeFile);
// TODO: Properly deal with file duplicates (same file in multiple package, or RID conflicts)
- if (!dependenciesMapping.ContainsKey(assemblyName))
- dependenciesMapping.Add(assemblyName, runtimeFile);
+ dependenciesMapping.TryAdd(assemblyName, runtimeFile);
}
}
}
diff --git a/sources/core/Stride.Core.Design/Settings/AppSettingsProvider.cs b/sources/core/Stride.Core.Design/Settings/AppSettingsProvider.cs
index 87c5abd180..3d8fc94fd8 100644
--- a/sources/core/Stride.Core.Design/Settings/AppSettingsProvider.cs
+++ b/sources/core/Stride.Core.Design/Settings/AppSettingsProvider.cs
@@ -1,5 +1,4 @@
using System.IO;
-using System.Reflection;
using Stride.Core.Yaml;
namespace Stride.Core.Settings
@@ -14,9 +13,9 @@ internal class AppSettingsProvider : IAppSettingsProvider
///
public AppSettings LoadAppSettings()
{
- var execFilePath = Assembly.GetEntryAssembly()?.Location;
+ var execFilePath = PlatformFolders.ApplicationExecutablePath;
- if (execFilePath == null)
+ if (string.IsNullOrEmpty(execFilePath))
return new AppSettings();
var settingsFilePath = Path.ChangeExtension(execFilePath, SettingsExtension);
diff --git a/sources/core/Stride.Core.IO/DirectoryWatcher.Desktop.cs b/sources/core/Stride.Core.IO/DirectoryWatcher.Desktop.cs
index 91779d9017..83516531e6 100644
--- a/sources/core/Stride.Core.IO/DirectoryWatcher.Desktop.cs
+++ b/sources/core/Stride.Core.IO/DirectoryWatcher.Desktop.cs
@@ -135,7 +135,8 @@ private DirectoryInfo GetDirectoryInfoFromPath(string path)
if (path != null && Directory.Exists(path))
{
- info = new DirectoryInfo(path.ToLowerInvariant());
+ // TODO : Need to investigate later whether ToLower method is safe to remove for Windows OS
+ info = new DirectoryInfo(OperatingSystem.IsLinux() ? path : path.ToLowerInvariant());
}
else
{
@@ -326,7 +327,8 @@ private sealed class DirectoryWatcherItem
{
public DirectoryWatcherItem(DirectoryInfo path)
{
- Path = path.FullName.ToLowerInvariant();
+ // TODO : Need to investigate later whether ToLower method is safe to remove for Windows OS
+ Path = OperatingSystem.IsLinux() ? path.FullName : path.FullName.ToLowerInvariant();
}
public DirectoryWatcherItem Parent;
diff --git a/sources/core/Stride.Core.Mathematics.Tests/Stride.Core.Mathematics.Tests.csproj b/sources/core/Stride.Core.Mathematics.Tests/Stride.Core.Mathematics.Tests.csproj
index c8e4b40880..7d4205a593 100644
--- a/sources/core/Stride.Core.Mathematics.Tests/Stride.Core.Mathematics.Tests.csproj
+++ b/sources/core/Stride.Core.Mathematics.Tests/Stride.Core.Mathematics.Tests.csproj
@@ -12,7 +12,10 @@
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/sources/core/Stride.Core.Mathematics.Tests/TestPoint.cs b/sources/core/Stride.Core.Mathematics.Tests/TestPoint.cs
new file mode 100644
index 0000000000..a52dcc2860
--- /dev/null
+++ b/sources/core/Stride.Core.Mathematics.Tests/TestPoint.cs
@@ -0,0 +1,25 @@
+
+using Xunit;
+
+namespace Stride.Core.Mathematics.Tests
+{
+ public class TestPoint
+ {
+
+ readonly Point testPoint1 = new Point(5,5);
+ readonly Point testPoint2 = new Point(10, 10);
+ readonly Point testPoint3 = new Point(5, 5);
+
+ [Fact]
+ public void TestPointsNotEqual()
+ {
+ Assert.NotEqual(testPoint1, testPoint2);
+ }
+
+ [Fact]
+ public void TestPointsEqual()
+ {
+ Assert.True(testPoint1.Equals(testPoint3));
+ }
+ }
+}
diff --git a/sources/core/Stride.Core.Mathematics/CollisionHelper.cs b/sources/core/Stride.Core.Mathematics/CollisionHelper.cs
index 390add6ea0..6dfbda3b73 100644
--- a/sources/core/Stride.Core.Mathematics/CollisionHelper.cs
+++ b/sources/core/Stride.Core.Mathematics/CollisionHelper.cs
@@ -895,7 +895,7 @@ public static bool RayIntersectsBox(ref readonly Ray ray, ref readonly BoundingB
}
///
- /// Determines whether there is an intersection between a and a .
+ /// Determines whether there is an intersection between a and a .
///
/// The ray to test.
/// The box to test.
diff --git a/sources/core/Stride.Core.Mathematics/GuillotinePacker.cs b/sources/core/Stride.Core.Mathematics/GuillotinePacker.cs
index 9bae8c5bf7..9be25b5efe 100644
--- a/sources/core/Stride.Core.Mathematics/GuillotinePacker.cs
+++ b/sources/core/Stride.Core.Mathematics/GuillotinePacker.cs
@@ -8,7 +8,7 @@ namespace Stride.Core.Mathematics
{
///
/// Implementation of a "Guillotine" packer.
- /// More information at http://clb.demon.fi/files/RectangleBinPack.pdf.
+ /// More information at https://github.com/juj/RectangleBinPack/blob/master/RectangleBinPack.pdf.
///
public class GuillotinePacker
{
diff --git a/sources/core/Stride.Core.MicroThreading/Channel.cs b/sources/core/Stride.Core.MicroThreading/Channel.cs
index 781f5c2d3b..a231665d8d 100644
--- a/sources/core/Stride.Core.MicroThreading/Channel.cs
+++ b/sources/core/Stride.Core.MicroThreading/Channel.cs
@@ -10,7 +10,7 @@ namespace Stride.Core.MicroThreading
/// Provides a communication mechanism between .
///
///
- /// can send and receive to a . Depending on the ,
+ /// can send and receive to a . Depending on the ,
/// sending or receiving might be suspended and yield execution to another .
///
/// The type of element handled by this channel.
diff --git a/sources/core/Stride.Core.MicroThreading/ChannelMicroThreadAwaiter.cs b/sources/core/Stride.Core.MicroThreading/ChannelMicroThreadAwaiter.cs
index 711156bed3..e78a112485 100644
--- a/sources/core/Stride.Core.MicroThreading/ChannelMicroThreadAwaiter.cs
+++ b/sources/core/Stride.Core.MicroThreading/ChannelMicroThreadAwaiter.cs
@@ -72,9 +72,8 @@ public T GetResult()
MicroThread = null;
Continuation = null;
Result = default(T);
+ pool.Add(this);
}
-
- pool.Add(this);
}
return result;
diff --git a/sources/core/Stride.Core.MicroThreading/MicroThread.cs b/sources/core/Stride.Core.MicroThreading/MicroThread.cs
index 46bc9d16fe..ba178b959b 100644
--- a/sources/core/Stride.Core.MicroThreading/MicroThread.cs
+++ b/sources/core/Stride.Core.MicroThreading/MicroThread.cs
@@ -92,7 +92,7 @@ public long Priority
///
/// Gets the exception that was thrown by this .
///
- /// It could come from either internally, or from if it was successfully processed.
+ /// It could come from either internally, or from if it was successfully processed.
/// The exception.
public Exception Exception { get; private set; }
diff --git a/sources/core/Stride.Core.Reflection/AttributeRegistry.cs b/sources/core/Stride.Core.Reflection/AttributeRegistry.cs
index ffcd07bef5..1397ecb7a7 100644
--- a/sources/core/Stride.Core.Reflection/AttributeRegistry.cs
+++ b/sources/core/Stride.Core.Reflection/AttributeRegistry.cs
@@ -15,12 +15,12 @@ namespace Stride.Core.Reflection
///
public class AttributeRegistry : IAttributeRegistry
{
- private readonly object lockObject = new object();
- private readonly Dictionary> cachedAttributes = new Dictionary>();
- private readonly Dictionary> registeredAttributes = new Dictionary>();
+ private readonly object lockObject = new();
+ private readonly Dictionary> cachedAttributes = [];
+ private readonly Dictionary> registeredAttributes = [];
// TODO: move this in a different location
- public Action> PrepareMembersCallback { get; set; }
+ public Action>? PrepareMembersCallback { get; set; }
///
/// Gets the attributes associated with the specified member.
@@ -36,9 +36,9 @@ public virtual List GetAttributes(MemberInfo memberInfo, bool inherit
List attributes;
lock (lockObject)
{
- if (cachedAttributes.TryGetValue(key, out attributes))
+ if (cachedAttributes.TryGetValue(key, out var cacheAttributes))
{
- return attributes;
+ return cacheAttributes;
}
// Else retrieve all default attributes
@@ -46,8 +46,7 @@ public virtual List GetAttributes(MemberInfo memberInfo, bool inherit
IEnumerable attributesToCache = defaultAttributes;
// And add registered attributes
- List registered;
- if (registeredAttributes.TryGetValue(memberInfo, out registered))
+ if (registeredAttributes.TryGetValue(memberInfo, out var registered))
{
// Remove "real" attributes overridden by manually registered attributes
attributesToCache = registered.Concat(defaultAttributes.Where(x => GetUsage(x).AllowMultiple || registered.All(y => y.GetType() != x.GetType())));
@@ -71,10 +70,9 @@ public void Register(MemberInfo memberInfo, Attribute attribute)
{
lock (lockObject)
{
- List attributes;
- if (!registeredAttributes.TryGetValue(memberInfo, out attributes))
+ if (!registeredAttributes.TryGetValue(memberInfo, out var attributes))
{
- attributes = new List();
+ attributes = [];
registeredAttributes.Add(memberInfo, attributes);
}
// Insert it in the first position to ensure it will override same attributes from base classes when using First
@@ -85,20 +83,20 @@ public void Register(MemberInfo memberInfo, Attribute attribute)
}
}
- private static AttributeUsageAttribute GetUsage(Attribute attribute)
+ private static AttributeUsageAttribute? GetUsage(Attribute attribute)
{
return Attribute.GetCustomAttribute(attribute.GetType(), typeof(AttributeUsageAttribute)) as AttributeUsageAttribute;
}
- private struct MemberInfoKey : IEquatable
+ private readonly struct MemberInfoKey : IEquatable
{
private readonly MemberInfo memberInfo;
private readonly bool inherit;
- public MemberInfoKey([NotNull] MemberInfo memberInfo, bool inherit)
+ public MemberInfoKey(MemberInfo memberInfo, bool inherit)
{
- if (memberInfo == null) throw new ArgumentNullException(nameof(memberInfo));
+ ArgumentNullException.ThrowIfNull(memberInfo);
this.memberInfo = memberInfo;
this.inherit = inherit;
}
@@ -108,10 +106,10 @@ public bool Equals(MemberInfoKey other)
return memberInfo.Equals(other.memberInfo) && inherit.Equals(other.inherit);
}
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
- return obj is MemberInfoKey && Equals((MemberInfoKey) obj);
+ return obj is MemberInfoKey key && Equals(key);
}
public override int GetHashCode()
diff --git a/sources/core/Stride.Core.Reflection/DefaultKeyComparer.cs b/sources/core/Stride.Core.Reflection/DefaultKeyComparer.cs
index 6309038267..a7ca0de5ff 100644
--- a/sources/core/Stride.Core.Reflection/DefaultKeyComparer.cs
+++ b/sources/core/Stride.Core.Reflection/DefaultKeyComparer.cs
@@ -1,4 +1,4 @@
-// Copyright (c) 2015 SharpYaml - Alexandre Mutel
+// Copyright (c) 2015 SharpYaml - Alexandre Mutel
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@@ -25,11 +25,9 @@ namespace Stride.Core.Reflection
{
public class DefaultKeyComparer : IComparer
{
- public int Compare(object x, object y)
+ public int Compare(object? x, object? y)
{
- var left = x as IMemberDescriptor;
- var right = y as IMemberDescriptor;
- if (left != null && right != null)
+ if (x is IMemberDescriptor left && y is IMemberDescriptor right)
{
// If order is defined, first order by order
if (left.Order.HasValue | right.Order.HasValue)
@@ -43,15 +41,12 @@ public int Compare(object x, object y)
return left.DefaultNameComparer.Compare(left.Name, right.Name);
}
- var sx = x as string;
- var sy = y as string;
- if (sx != null && sy != null)
+ if (x is string sx && y is string sy)
{
return string.CompareOrdinal(sx, sy);
}
- var leftComparable = x as IComparable;
- if (leftComparable != null)
+ if (x is IComparable leftComparable)
{
return leftComparable.CompareTo(y);
}
diff --git a/sources/core/Stride.Core.Reflection/DefaultMemberComparer.cs b/sources/core/Stride.Core.Reflection/DefaultMemberComparer.cs
index 53e3fdbbb2..a5a19a7d30 100644
--- a/sources/core/Stride.Core.Reflection/DefaultMemberComparer.cs
+++ b/sources/core/Stride.Core.Reflection/DefaultMemberComparer.cs
@@ -7,11 +7,9 @@ namespace Stride.Core.Reflection
{
public class DefaultMemberComparer : IComparer
{
- public int Compare(object x, object y)
+ public int Compare(object? x, object? y)
{
- var left = x as IMemberDescriptor;
- var right = y as IMemberDescriptor;
- if (left != null && right != null)
+ if (x is IMemberDescriptor left && y is IMemberDescriptor right)
{
// If order is defined, first order by order
if (left.Order.HasValue | right.Order.HasValue)
@@ -22,8 +20,8 @@ public int Compare(object x, object y)
}
// try to order by class hierarchy + token (same as declaration order)
- var leftMember = (x as MemberDescriptorBase)?.MemberInfo;
- var rightMember = (y as MemberDescriptorBase)?.MemberInfo;
+ var leftMember = left.MemberInfo;
+ var rightMember = right.MemberInfo;
if (leftMember != null || rightMember != null)
{
var comparison = leftMember.CompareMetadataTokenWith(rightMember);
@@ -35,15 +33,12 @@ public int Compare(object x, object y)
return left.DefaultNameComparer.Compare(left.Name, right.Name);
}
- var sx = x as string;
- var sy = y as string;
- if (sx != null && sy != null)
+ if (x is string sx && y is string sy)
{
return string.CompareOrdinal(sx, sy);
}
- var leftComparable = x as IComparable;
- if (leftComparable != null)
+ if (x is IComparable leftComparable)
{
return leftComparable.CompareTo(y);
}
diff --git a/sources/core/Stride.Core.Reflection/IAttributeRegistry.cs b/sources/core/Stride.Core.Reflection/IAttributeRegistry.cs
index fcb06888af..fc27bcc683 100644
--- a/sources/core/Stride.Core.Reflection/IAttributeRegistry.cs
+++ b/sources/core/Stride.Core.Reflection/IAttributeRegistry.cs
@@ -14,7 +14,7 @@ namespace Stride.Core.Reflection
public interface IAttributeRegistry
{
// TODO: move this in a different location
- Action> PrepareMembersCallback { get; set; }
+ Action>? PrepareMembersCallback { get; set; }
///
/// Gets the attributes associated with the specified member.
@@ -22,7 +22,7 @@ public interface IAttributeRegistry
/// The reflection member.
/// if set to true includes inherited attributes.
/// An enumeration of .
- List GetAttributes([NotNull] MemberInfo memberInfo, bool inherit = true);
+ List GetAttributes(MemberInfo memberInfo, bool inherit = true);
///
/// Registers an attribute for the specified member. Restriction: Attributes registered this way cannot be listed in inherited attributes.
@@ -58,7 +58,7 @@ public static IEnumerable GetAttributes(this IAttributeRegistry attributeR
/// The member information.
/// if set to true [inherit].
/// An attribute of type {T} if it was found; otherwise null
- public static T GetAttribute(this IAttributeRegistry attributeRegistry, [NotNull] MemberInfo memberInfo, bool inherit = true) where T : Attribute
+ public static T? GetAttribute(this IAttributeRegistry attributeRegistry, MemberInfo memberInfo, bool inherit = true) where T : Attribute
{
var list = attributeRegistry.GetAttributes(memberInfo, inherit);
return list.OfType().FirstOrDefault();
diff --git a/sources/core/Stride.Core.Reflection/ITypeDescriptorFactory.cs b/sources/core/Stride.Core.Reflection/ITypeDescriptorFactory.cs
index f622016f9f..4f05b71263 100644
--- a/sources/core/Stride.Core.Reflection/ITypeDescriptorFactory.cs
+++ b/sources/core/Stride.Core.Reflection/ITypeDescriptorFactory.cs
@@ -20,6 +20,6 @@ public interface ITypeDescriptorFactory
///
/// The type.
/// ITypeDescriptor.
- ITypeDescriptor Find(Type type);
+ ITypeDescriptor? Find(Type? type);
}
}
diff --git a/sources/core/Stride.Core.Reflection/MemberDescriptors/FieldDescriptor.cs b/sources/core/Stride.Core.Reflection/MemberDescriptors/FieldDescriptor.cs
index 1d313b900e..d92a563c76 100644
--- a/sources/core/Stride.Core.Reflection/MemberDescriptors/FieldDescriptor.cs
+++ b/sources/core/Stride.Core.Reflection/MemberDescriptors/FieldDescriptor.cs
@@ -14,7 +14,7 @@ public class FieldDescriptor : MemberDescriptorBase
public FieldDescriptor(ITypeDescriptor typeDescriptor, FieldInfo fieldInfo, StringComparer defaultNameComparer)
: base(fieldInfo, defaultNameComparer)
{
- if (fieldInfo == null) throw new ArgumentNullException(nameof(fieldInfo));
+ ArgumentNullException.ThrowIfNull(fieldInfo);
FieldInfo = fieldInfo;
TypeDescriptor = typeDescriptor;
@@ -32,12 +32,12 @@ public FieldDescriptor(ITypeDescriptor typeDescriptor, FieldInfo fieldInfo, Stri
public override bool HasSet => !FieldInfo.IsInitOnly;
- public override object Get(object thisObject)
+ public override object? Get(object thisObject)
{
return FieldInfo.GetValue(thisObject);
}
- public override void Set(object thisObject, object value)
+ public override void Set(object thisObject, object? value)
{
FieldInfo.SetValue(thisObject, value);
}
diff --git a/sources/core/Stride.Core.Reflection/MemberDescriptors/IMemberDescriptor.cs b/sources/core/Stride.Core.Reflection/MemberDescriptors/IMemberDescriptor.cs
index a2ee33a4be..4b70f5e938 100644
--- a/sources/core/Stride.Core.Reflection/MemberDescriptors/IMemberDescriptor.cs
+++ b/sources/core/Stride.Core.Reflection/MemberDescriptors/IMemberDescriptor.cs
@@ -118,7 +118,7 @@ public interface IMemberDescriptor
///
/// The this object to get the value from.
/// Value of the member.
- object Get(object thisObject);
+ object? Get(object thisObject);
///
/// Sets a value of this member for the specified instance.
diff --git a/sources/core/Stride.Core.Reflection/MemberDescriptors/MemberDescriptorBase.cs b/sources/core/Stride.Core.Reflection/MemberDescriptors/MemberDescriptorBase.cs
index 9f3d9069a7..cb08ec4736 100644
--- a/sources/core/Stride.Core.Reflection/MemberDescriptors/MemberDescriptorBase.cs
+++ b/sources/core/Stride.Core.Reflection/MemberDescriptors/MemberDescriptorBase.cs
@@ -13,7 +13,7 @@ public abstract class MemberDescriptorBase : IMemberDescriptor
{
protected MemberDescriptorBase(string name)
{
- if (name == null) throw new ArgumentNullException(nameof(name));
+ ArgumentNullException.ThrowIfNull(name);
Name = name;
OriginalName = name;
@@ -21,9 +21,7 @@ protected MemberDescriptorBase(string name)
protected MemberDescriptorBase(MemberInfo memberInfo, StringComparer defaultNameComparer)
{
- if (memberInfo == null) throw new ArgumentNullException(nameof(memberInfo));
-
- MemberInfo = memberInfo;
+ MemberInfo = memberInfo ?? throw new ArgumentNullException(nameof(memberInfo));
Name = MemberInfo.Name;
OriginalName = Name;
DeclaringType = memberInfo.DeclaringType;
@@ -47,7 +45,7 @@ protected MemberDescriptorBase(MemberInfo memberInfo, StringComparer defaultName
public ITypeDescriptor TypeDescriptor { get; protected set; }
public DataMemberMode Mode { get; set; }
- public abstract object Get(object thisObject);
+ public abstract object? Get(object thisObject);
public abstract void Set(object thisObject, object value);
///
/// Gets whether this member has a public getter.
diff --git a/sources/core/Stride.Core.Reflection/MemberDescriptors/MemberDescriptorExtensions.cs b/sources/core/Stride.Core.Reflection/MemberDescriptors/MemberDescriptorExtensions.cs
index 5ee4abe2f2..4a9a0bc85e 100644
--- a/sources/core/Stride.Core.Reflection/MemberDescriptors/MemberDescriptorExtensions.cs
+++ b/sources/core/Stride.Core.Reflection/MemberDescriptors/MemberDescriptorExtensions.cs
@@ -12,9 +12,9 @@ public static class MemberDescriptorExtensions
{
public static int CompareMetadataTokenWith(this MemberInfo leftMember, MemberInfo rightMember)
{
- if (leftMember == null)
+ if (leftMember is null)
return -1;
- if (rightMember == null)
+ if (rightMember is null)
return 1;
// If declared in same type, order by metadata token
@@ -22,7 +22,7 @@ public static int CompareMetadataTokenWith(this MemberInfo leftMember, MemberInf
return leftMember.MetadataToken.CompareTo(rightMember.MetadataToken);
// Otherwise, put base class first
- return (leftMember.DeclaringType.IsSubclassOf(rightMember.DeclaringType)) ? 1 : -1;
+ return leftMember.DeclaringType.IsSubclassOf(rightMember.DeclaringType) ? 1 : -1;
}
}
}
diff --git a/sources/core/Stride.Core.Reflection/MemberDescriptors/PropertyDescriptor.cs b/sources/core/Stride.Core.Reflection/MemberDescriptors/PropertyDescriptor.cs
index 061fe581e2..4dfde37ea5 100644
--- a/sources/core/Stride.Core.Reflection/MemberDescriptors/PropertyDescriptor.cs
+++ b/sources/core/Stride.Core.Reflection/MemberDescriptors/PropertyDescriptor.cs
@@ -11,13 +11,13 @@ namespace Stride.Core.Reflection
///
public class PropertyDescriptor : MemberDescriptorBase
{
- private readonly MethodInfo getMethod;
- private readonly MethodInfo setMethod;
+ private readonly MethodInfo? getMethod;
+ private readonly MethodInfo? setMethod;
public PropertyDescriptor(ITypeDescriptor typeDescriptor, PropertyInfo propertyInfo, StringComparer defaultNameComparer)
: base(propertyInfo, defaultNameComparer)
{
- if (propertyInfo == null) throw new ArgumentNullException(nameof(propertyInfo));
+ ArgumentNullException.ThrowIfNull(propertyInfo);
PropertyInfo = propertyInfo;
@@ -39,17 +39,17 @@ public PropertyDescriptor(ITypeDescriptor typeDescriptor, PropertyInfo propertyI
public override bool HasSet => setMethod != null;
- public override object Get(object thisObject)
+ public override object? Get(object thisObject)
{
- return getMethod.Invoke(thisObject, null);
+ return getMethod?.Invoke(thisObject, null);
}
- public override void Set(object thisObject, object value)
+ public override void Set(object thisObject, object? value)
{
- if (!HasSet)
+ if (setMethod is null)
throw new InvalidOperationException($"The property [{Name}] of type [{DeclaringType.Name}] has no setter.");
- setMethod.Invoke(thisObject, new[] {value});
+ setMethod.Invoke(thisObject, [value]);
}
public override IEnumerable GetCustomAttributes(bool inherit)
diff --git a/sources/core/Stride.Core.Reflection/MemberPath.cs b/sources/core/Stride.Core.Reflection/MemberPath.cs
index fa677095fd..e57c4bc743 100644
--- a/sources/core/Stride.Core.Reflection/MemberPath.cs
+++ b/sources/core/Stride.Core.Reflection/MemberPath.cs
@@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using Stride.Core.Annotations;
@@ -20,7 +21,7 @@ public sealed class MemberPath
///
/// We use a thread local static to avoid allocating a list of reference objects every time we access a property
///
- [ThreadStatic] private static List stackTLS;
+ [ThreadStatic] private static List stackTLS;
private readonly List items;
@@ -46,7 +47,7 @@ public MemberPath(int capacity)
/// The items.
private MemberPath(List items)
{
- if (items == null) throw new ArgumentNullException(nameof(items));
+ ArgumentNullException.ThrowIfNull(items);
this.items = new List(items.Capacity);
foreach (var item in items)
@@ -94,7 +95,7 @@ public void Clear()
///
/// Type of the attribute
/// A custom attribute or null if not found
- public T GetCustomAttribute() where T : Attribute
+ public T? GetCustomAttribute() where T : Attribute
{
if (items == null || items.Count == 0)
{
@@ -121,7 +122,7 @@ public T GetCustomAttribute() where T : Attribute
/// This instance.
public MemberPath Append(MemberPath path)
{
- if (path == null) throw new ArgumentNullException(nameof(path));
+ ArgumentNullException.ThrowIfNull(path);
foreach (var item in path.items)
{
AddItem(item.Clone(null));
@@ -136,8 +137,8 @@ public MemberPath Append(MemberPath path)
/// descriptor
public void Push(IMemberDescriptor descriptor)
{
- if (descriptor == null) throw new ArgumentNullException(nameof(descriptor));
- AddItem(descriptor is FieldDescriptor ? (MemberPathItem)new FieldPathItem((FieldDescriptor)descriptor) : new PropertyPathItem((PropertyDescriptor)descriptor));
+ ArgumentNullException.ThrowIfNull(descriptor);
+ AddItem(descriptor is FieldDescriptor fieldDescriptor ? (MemberPathItem)new FieldPathItem(fieldDescriptor) : new PropertyPathItem((PropertyDescriptor)descriptor));
}
public void Push(ITypeDescriptor descriptor, object key)
@@ -150,7 +151,7 @@ public void Push(ITypeDescriptor descriptor, object key)
{
if (descriptor.Category == DescriptorCategory.Set)
{
- Push(collectionDescriptor as SetDescriptor, key);
+ Push((collectionDescriptor as SetDescriptor)!, key);
}
else
{
@@ -171,7 +172,7 @@ public void Push(ITypeDescriptor descriptor, object key)
/// descriptor
public void Push(ArrayDescriptor descriptor, int index)
{
- if (descriptor == null) throw new ArgumentNullException(nameof(descriptor));
+ ArgumentNullException.ThrowIfNull(descriptor);
AddItem(new ArrayPathItem(descriptor, index));
}
@@ -183,7 +184,7 @@ public void Push(ArrayDescriptor descriptor, int index)
/// descriptor
public void Push(CollectionDescriptor descriptor, int index)
{
- if (descriptor == null) throw new ArgumentNullException(nameof(descriptor));
+ ArgumentNullException.ThrowIfNull(descriptor);
AddItem(new CollectionPathItem(descriptor, index));
}
@@ -195,7 +196,7 @@ public void Push(CollectionDescriptor descriptor, int index)
/// descriptor
public void Push(DictionaryDescriptor descriptor, object key)
{
- if (descriptor == null) throw new ArgumentNullException(nameof(descriptor));
+ ArgumentNullException.ThrowIfNull(descriptor);
AddItem(new DictionaryPathItem(descriptor, key));
}
@@ -207,7 +208,7 @@ public void Push(DictionaryDescriptor descriptor, object key)
/// descriptor
public void Push(SetDescriptor descriptor, object index)
{
- if (descriptor == null) throw new ArgumentNullException(nameof(descriptor));
+ ArgumentNullException.ThrowIfNull(descriptor);
AddItem(new SetPathItem(descriptor, index));
}
@@ -222,9 +223,9 @@ public void Pop()
}
}
- public bool Apply([NotNull] object rootObject, MemberPathAction actionType, object value)
+ public bool Apply(object rootObject, MemberPathAction actionType, object value)
{
- if (rootObject == null) throw new ArgumentNullException(nameof(rootObject));
+ ArgumentNullException.ThrowIfNull(rootObject);
if (rootObject.GetType().IsValueType) throw new ArgumentException("Value type for root objects are not supported", nameof(rootObject));
if (actionType != MemberPathAction.ValueSet && actionType != MemberPathAction.CollectionAdd && value != null)
{
@@ -240,20 +241,20 @@ public bool Apply([NotNull] object rootObject, MemberPathAction actionType, obje
switch (actionType)
{
case MemberPathAction.CollectionAdd:
- if (!(lastItem is CollectionPathItem))
+ if (lastItem is not CollectionPathItem)
{
throw new ArgumentException("Invalid path [{0}] for action [{1}]. Expecting last path to be a collection item".ToFormat(this, actionType));
}
break;
case MemberPathAction.CollectionRemove:
- if (!(lastItem is CollectionPathItem || lastItem is ArrayPathItem))
+ if (lastItem is not (CollectionPathItem or ArrayPathItem))
{
throw new ArgumentException("Invalid path [{0}] for action [{1}]. Expecting last path to be a collection/array item".ToFormat(this, actionType));
}
break;
case MemberPathAction.DictionaryRemove:
- if (!(lastItem is DictionaryPathItem))
+ if (lastItem is not DictionaryPathItem)
{
throw new ArgumentException("Invalid path [{0}] for action [{1}]. Expecting last path to be a dictionary item".ToFormat(this, actionType));
}
@@ -263,11 +264,11 @@ public bool Apply([NotNull] object rootObject, MemberPathAction actionType, obje
var stack = stackTLS;
try
{
- object nextObject = rootObject;
+ object? nextObject = rootObject;
if (stack == null)
{
- stack = new List();
+ stack = [];
stackTLS = stack;
}
else
@@ -328,7 +329,7 @@ public bool Apply([NotNull] object rootObject, MemberPathAction actionType, obje
return true;
}
- public object GetIndex()
+ public object? GetIndex()
{
return items.LastOrDefault()?.GetIndex();
}
@@ -337,15 +338,14 @@ public object GetIndex()
/// Gets the type descriptor of the member or collection represented by this path, or null is this instance is an empty path.
///
/// The type descriptor of the member or collection represented by this path, or null is this instance is an empty path.
- public ITypeDescriptor GetTypeDescriptor()
+ public ITypeDescriptor? GetTypeDescriptor()
{
return items.LastOrDefault()?.TypeDescriptor;
}
- public object GetValue(object rootObject)
+ public object? GetValue(object rootObject)
{
- object result;
- if (!TryGetValue(rootObject, out result))
+ if (!TryGetValue(rootObject, out var result))
throw new InvalidOperationException("Unable to retrieve the value of this member path on this root object.");
return result;
}
@@ -357,9 +357,9 @@ public object GetValue(object rootObject)
/// The returned value.
/// true if evaluation of the path succeeded and the value is valid, false otherwise.
/// rootObject
- public bool TryGetValue(object rootObject, out object value)
+ public bool TryGetValue(object rootObject, out object? value)
{
- if (rootObject == null) throw new ArgumentNullException(nameof(rootObject));
+ ArgumentNullException.ThrowIfNull(rootObject);
value = null;
try
{
@@ -367,7 +367,13 @@ public bool TryGetValue(object rootObject, out object value)
for (int i = 0; i < items.Count; i++)
{
var item = items[i];
- nextObject = item.GetValue(nextObject);
+ var newObject = item.GetValue(nextObject);
+ if (newObject is null)
+ {
+ value = null;
+ return true;
+ }
+ nextObject = newObject;
}
value = nextObject;
}
@@ -379,46 +385,6 @@ public bool TryGetValue(object rootObject, out object value)
return true;
}
- /////
- ///// Gets the value from the specified root object following this instance path.
- /////
- ///// The root object.
- ///// The returned value.
- ///// Type of the override.
- ///// true if evaluation of the path succeeded and the value is valid, false otherwise.
- ///// rootObject
- //public bool TryGetValue(object rootObject, out object value, out OverrideType overrideType)
- //{
- // if (rootObject == null) throw new ArgumentNullException("rootObject");
- // if (items.Count == 0) throw new InvalidOperationException("No items pushed via Push methods");
-
- // value = null;
- // overrideType = OverrideType.Base;
- // try
- // {
- // object nextObject = rootObject;
-
- // var lastItem = items[items.Count - 1];
- // var memberDescriptor = lastItem.MemberDescriptor;
-
- // for (int i = 0; i < items.Count - 1; i++)
- // {
- // var item = items[i];
- // nextObject = item.GetValue(nextObject);
- // }
-
- // overrideType = nextObject.GetOverride(memberDescriptor);
- // value = lastItem.GetValue(nextObject);
-
- // }
- // catch (Exception)
- // {
- // // If an exception occurred, we cannot resolve this member path to a valid property/field
- // return false;
- // }
- // return true;
- //}
-
public IReadOnlyList Decompose()
{
return items;
@@ -445,9 +411,9 @@ public MemberPath CloneNestedPath(int containerNodeCount)
}
///
- /// Returns a that represents this instance.
+ /// Returns a that represents this instance.
///
- /// A that represents this instance.
+ /// A that represents this instance.
public override string ToString()
{
var text = new StringBuilder();
@@ -470,21 +436,21 @@ private void AddItem(MemberPathItem item)
// TODO: improve API for these classes (public part/private part, switch to interfaces)
public abstract class MemberPathItem
{
- public MemberPathItem Parent { get; set; }
+ public MemberPathItem? Parent { get; set; }
public abstract IMemberDescriptor MemberDescriptor { get; }
public virtual ITypeDescriptor TypeDescriptor => MemberDescriptor.TypeDescriptor;
- public abstract object GetValue(object thisObj);
+ public abstract object? GetValue(object thisObj);
- public abstract void SetValue(List stack, int objectIndex, object thisObject, object value);
+ public abstract void SetValue(List stack, int objectIndex, object thisObject, object? value);
- public virtual object GetIndex() => null;
+ public virtual object? GetIndex() => null;
public abstract string GetName(bool isFirst);
- public abstract MemberPathItem Clone(MemberPathItem parent);
+ public abstract MemberPathItem Clone(MemberPathItem? parent);
}
public sealed class PropertyPathItem : MemberPathItem, IEquatable
@@ -494,19 +460,19 @@ public sealed class PropertyPathItem : MemberPathItem, IEquatable descriptor;
- public override object GetValue(object thisObj)
+ public override object? GetValue(object thisObj)
{
return descriptor.Get(thisObj);
}
- public override void SetValue(List stack, int objectIndex, object thisObject, object value)
+ public override void SetValue(List stack, int objectIndex, object thisObject, object? value)
{
descriptor.Set(thisObject, value);
@@ -521,23 +487,23 @@ public override string GetName(bool isFirst)
return isFirst ? descriptor.Name : "." + descriptor.Name;
}
- public override MemberPathItem Clone(MemberPathItem parent)
+ public override MemberPathItem Clone(MemberPathItem? parent)
{
return new PropertyPathItem(descriptor) { Parent = parent };
}
- public bool Equals(PropertyPathItem other)
+ public bool Equals(PropertyPathItem? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Equals(descriptor, other.descriptor) && isValueType == other.isValueType;
}
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
- return obj is PropertyPathItem && Equals((PropertyPathItem)obj);
+ return obj is PropertyPathItem propertyPathItem && Equals(propertyPathItem);
}
public override int GetHashCode()
@@ -556,19 +522,19 @@ public sealed class FieldPathItem : MemberPathItem, IEquatable
public FieldPathItem(FieldDescriptor descriptor)
{
- if (descriptor == null) throw new ArgumentNullException(nameof(descriptor));
+ ArgumentNullException.ThrowIfNull(descriptor);
this.descriptor = descriptor;
isValueType = descriptor.DeclaringType.IsValueType;
}
public override IMemberDescriptor MemberDescriptor => descriptor;
- public override object GetValue(object thisObj)
+ public override object? GetValue(object thisObj)
{
return descriptor.Get(thisObj);
}
- public override void SetValue(List stack, int objectIndex, object thisObject, object value)
+ public override void SetValue(List stack, int objectIndex, object thisObject, object? value)
{
descriptor.Set(thisObject, value);
@@ -583,23 +549,23 @@ public override string GetName(bool isFirst)
return "." + descriptor.Name;
}
- public override MemberPathItem Clone(MemberPathItem parent)
+ public override MemberPathItem Clone(MemberPathItem? parent)
{
return new FieldPathItem(descriptor) { Parent = parent };
}
- public bool Equals(FieldPathItem other)
+ public bool Equals(FieldPathItem? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Equals(descriptor, other.descriptor) && isValueType == other.isValueType;
}
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
- return obj is FieldPathItem && Equals((FieldPathItem)obj);
+ return obj is FieldPathItem fieldPathItem && Equals(fieldPathItem);
}
public override int GetHashCode()
@@ -623,19 +589,19 @@ public sealed class ArrayPathItem : SpecialMemberPathItemBase, IEquatable Descriptor;
- public override object GetValue(object thisObj)
+ public override object? GetValue(object thisObj)
{
return ((Array)thisObj).GetValue(Index);
}
- public override void SetValue(List stack, int objectIndex, object thisObject, object value)
+ public override void SetValue(List stack, int objectIndex, object thisObject, object? value)
{
((Array)thisObject).SetValue(value, Index);
}
@@ -650,23 +616,23 @@ public override object GetIndex()
return Index;
}
- public override MemberPathItem Clone(MemberPathItem parent)
+ public override MemberPathItem Clone(MemberPathItem? parent)
{
return new ArrayPathItem(Descriptor, Index) { Parent = parent };
}
- public bool Equals(ArrayPathItem other)
+ public bool Equals(ArrayPathItem? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Equals(Descriptor, other.Descriptor) && Index == other.Index;
}
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
- return obj is ArrayPathItem && Equals((ArrayPathItem)obj);
+ return obj is ArrayPathItem arrayPathItem && Equals(arrayPathItem);
}
public override int GetHashCode()
@@ -682,19 +648,19 @@ public sealed class CollectionPathItem : SpecialMemberPathItemBase, IEquatable Descriptor;
- public override object GetValue(object thisObj)
+ public override object? GetValue(object thisObj)
{
return Descriptor.GetValue(thisObj, Index);
}
- public override void SetValue(List stack, int objectIndex, object thisObject, object value)
+ public override void SetValue(List stack, int objectIndex, object thisObject, object? value)
{
Descriptor.SetValue(thisObject, Index, value);
}
@@ -709,23 +675,23 @@ public override object GetIndex()
return Index;
}
- public override MemberPathItem Clone(MemberPathItem parent)
+ public override MemberPathItem Clone(MemberPathItem? parent)
{
return new CollectionPathItem(Descriptor, Index) { Parent = parent };
}
- public bool Equals(CollectionPathItem other)
+ public bool Equals(CollectionPathItem? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Equals(Descriptor, other.Descriptor) && Index == other.Index;
}
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
- return obj is CollectionPathItem && Equals((CollectionPathItem)obj);
+ return obj is CollectionPathItem collectionPathItem && Equals(collectionPathItem);
}
public override int GetHashCode()
@@ -744,14 +710,14 @@ public sealed class DictionaryPathItem : SpecialMemberPathItemBase, IEquatable Descriptor;
- public override object GetValue(object thisObj)
+ public override object? GetValue(object thisObj)
{
if (!Descriptor.ContainsKey(thisObj, Key))
throw new KeyNotFoundException();
@@ -759,7 +725,7 @@ public override object GetValue(object thisObj)
return Descriptor.GetValue(thisObj, Key);
}
- public override void SetValue(List stack, int objectIndex, object thisObject, object value)
+ public override void SetValue(List stack, int objectIndex, object thisObject, object? value)
{
Descriptor.SetValue(thisObject, Key, value);
}
@@ -774,23 +740,23 @@ public override object GetIndex()
return Key;
}
- public override MemberPathItem Clone(MemberPathItem parent)
+ public override MemberPathItem Clone(MemberPathItem? parent)
{
return new DictionaryPathItem(Descriptor, Key) { Parent = parent };
}
- public bool Equals(DictionaryPathItem other)
+ public bool Equals(DictionaryPathItem? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Equals(Descriptor, other.Descriptor) && Equals(Key, other.Key);
}
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
- return obj is DictionaryPathItem && Equals((DictionaryPathItem)obj);
+ return obj is DictionaryPathItem dictionaryPathItem && Equals(dictionaryPathItem);
}
public override int GetHashCode()
@@ -809,19 +775,19 @@ public sealed class SetPathItem : SpecialMemberPathItemBase, IEquatable Descriptor;
- public override object GetValue(object thisObj)
+ public override object? GetValue(object thisObj)
{
return Descriptor.GetValue(thisObj, Index);
}
- public override void SetValue(List stack, int objectIndex, object thisObject, object value)
+ public override void SetValue(List stack, int objectIndex, object thisObject, object? value)
{
Descriptor.SetValue(thisObject, Index, value);
}
@@ -836,19 +802,19 @@ public override object GetIndex()
return Index;
}
- public override MemberPathItem Clone(MemberPathItem parent)
+ public override MemberPathItem Clone(MemberPathItem? parent)
{
return new SetPathItem(Descriptor, Index) { Parent = parent };
}
- public bool Equals(SetPathItem other)
+ public bool Equals(SetPathItem? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Equals(Descriptor, other.Descriptor) && Index == other.Index;
}
- public override bool Equals(object obj)
+ public override bool Equals(object? obj)
{
return obj is SetPathItem spi && Equals(spi);
}
diff --git a/sources/core/Stride.Core.Reflection/Stride.Core.Reflection.csproj b/sources/core/Stride.Core.Reflection/Stride.Core.Reflection.csproj
index 5b47106337..9c11faa34f 100644
--- a/sources/core/Stride.Core.Reflection/Stride.Core.Reflection.csproj
+++ b/sources/core/Stride.Core.Reflection/Stride.Core.Reflection.csproj
@@ -8,6 +8,7 @@
2.0
false
true
+ enable
diff --git a/sources/core/Stride.Core.Reflection/TypeDescriptorFactory.cs b/sources/core/Stride.Core.Reflection/TypeDescriptorFactory.cs
index c2819e8769..4934c9aab6 100644
--- a/sources/core/Stride.Core.Reflection/TypeDescriptorFactory.cs
+++ b/sources/core/Stride.Core.Reflection/TypeDescriptorFactory.cs
@@ -1,7 +1,9 @@
// Copyright (c) .NET Foundation and Contributors (https://dotnetfoundation.org/ & https://stride3d.net) and Silicon Studio Corp. (https://www.siliconstudio.co.jp)
// Distributed under the MIT license. See the LICENSE.md file in the project root for more information.
using System;
+using System.Collections;
using System.Collections.Generic;
+using System.Reflection;
using Stride.Core.Yaml.Serialization;
namespace Stride.Core.Reflection
@@ -12,14 +14,14 @@ namespace Stride.Core.Reflection
public class TypeDescriptorFactory : ITypeDescriptorFactory
{
private readonly IComparer keyComparer;
- private readonly Dictionary registeredDescriptors = new Dictionary();
+ private readonly Dictionary registeredDescriptors = [];
private readonly bool emitDefaultValues;
private readonly IMemberNamingConvention namingConvention;
///
/// The default type descriptor factory.
///
- public static readonly TypeDescriptorFactory Default = new TypeDescriptorFactory();
+ public static readonly TypeDescriptorFactory Default = new();
public TypeDescriptorFactory() : this(new AttributeRegistry())
{
@@ -37,7 +39,7 @@ public TypeDescriptorFactory(IAttributeRegistry attributeRegistry, bool emitDefa
public TypeDescriptorFactory(IAttributeRegistry attributeRegistry, bool emitDefaultValues, IMemberNamingConvention namingConvention, IComparer keyComparer)
{
- if (attributeRegistry == null) throw new ArgumentNullException(nameof(attributeRegistry));
+ ArgumentNullException.ThrowIfNull(attributeRegistry);
this.keyComparer = keyComparer;
AttributeRegistry = attributeRegistry;
this.emitDefaultValues = emitDefaultValues;
@@ -46,13 +48,13 @@ public TypeDescriptorFactory(IAttributeRegistry attributeRegistry, bool emitDefa
public IAttributeRegistry AttributeRegistry { get; }
- public ITypeDescriptor Find(Type type)
+ public ITypeDescriptor? Find(Type? type)
{
- if (type == null)
+ if (type is null)
return null;
// Caching is integrated in this class, avoiding a ChainedTypeDescriptorFactory
- ITypeDescriptor descriptor;
+ ITypeDescriptor? descriptor;
lock (registeredDescriptors)
{
if (!registeredDescriptors.TryGetValue(type, out descriptor))
@@ -84,6 +86,7 @@ protected virtual ITypeDescriptor Create(Type type)
{
descriptor = new PrimitiveDescriptor(this, type, emitDefaultValues, namingConvention);
}
+
else if (DictionaryDescriptor.IsDictionary(type)) // resolve dictionary before collections, as they are also collections
{
// IDictionary
@@ -106,7 +109,7 @@ protected virtual ITypeDescriptor Create(Type type)
}
else if (type.IsArray)
{
- if (type.GetArrayRank() == 1 && !type.GetElementType().IsArray)
+ if (type.GetArrayRank() == 1 && !type.GetElementType()!.IsArray)
{
// array[] - only single dimension array is supported
descriptor = new ArrayDescriptor(this, type, emitDefaultValues, namingConvention);
diff --git a/sources/core/Stride.Core.Reflection/TypeDescriptors/ArrayDescriptor.cs b/sources/core/Stride.Core.Reflection/TypeDescriptors/ArrayDescriptor.cs
index 09dc5eeb47..9656582323 100644
--- a/sources/core/Stride.Core.Reflection/TypeDescriptors/ArrayDescriptor.cs
+++ b/sources/core/Stride.Core.Reflection/TypeDescriptors/ArrayDescriptor.cs
@@ -20,7 +20,7 @@ public ArrayDescriptor(ITypeDescriptorFactory factory, Type type, bool emitDefau
throw new ArgumentException("Cannot support dimension [{0}] for type [{1}]. Only supporting dimension of 1".ToFormat(type.GetArrayRank(), type.FullName));
}
- ElementType = type.GetElementType();
+ ElementType = type.GetElementType()!;
}
public override DescriptorCategory Category => DescriptorCategory.Array;
@@ -46,7 +46,7 @@ public Array CreateArray(int dimension)
/// The array in which to read the item.
/// The index of the item to read.
/// The item corresponding to the given index in the array.
- public object GetValue(object array, int index)
+ public object? GetValue(object array, int index)
{
return ((Array)array).GetValue(index);
}
diff --git a/sources/core/Stride.Core.Reflection/TypeDescriptors/CollectionDescriptor.cs b/sources/core/Stride.Core.Reflection/TypeDescriptors/CollectionDescriptor.cs
index 88d516b3c0..9c8a7b10f0 100644
--- a/sources/core/Stride.Core.Reflection/TypeDescriptors/CollectionDescriptor.cs
+++ b/sources/core/Stride.Core.Reflection/TypeDescriptors/CollectionDescriptor.cs
@@ -24,7 +24,7 @@ public CollectionDescriptor(ITypeDescriptorFactory factory, Type type, bool emit
/// true if the specified type is collection; otherwise, false .
public static bool IsCollection(Type type)
{
- if (type == null) throw new ArgumentNullException(nameof(type));
+ ArgumentNullException.ThrowIfNull(type);
var typeInfo = type.GetTypeInfo();
if (typeInfo.IsArray)
{
@@ -103,23 +103,23 @@ public static bool IsCollection(Type type)
///
/// The collection.
/// The index.
- public abstract object GetValue(object collection, object index);
+ public abstract object? GetValue(object collection, object index);
///
/// Returns the value matching the given index in the collection.
///
/// The collection.
/// The index.
- public abstract object GetValue(object collection, int index);
+ public abstract object? GetValue(object collection, int index);
- public abstract void SetValue(object list, object index, object value);
+ public abstract void SetValue(object list, object index, object? value);
///
/// Add to the collections of the same type than this descriptor.
///
/// The collection.
/// The value to add to this collection.
- public abstract void Add(object collection, object value);
+ public abstract void Add(object collection, object? value);
///
/// Insert to the collections of the same type than this descriptor.
@@ -127,14 +127,14 @@ public static bool IsCollection(Type type)
/// The collection.
/// The index of the insertion.
/// The value to insert to this collection.
- public abstract void Insert(object collection, int index, object value);
+ public abstract void Insert(object collection, int index, object? value);
///
/// Removes the item from the collections of the same type.
///
/// The collection.
///
- public abstract void Remove(object collection, object item);
+ public abstract void Remove(object collection, object? item);
///
/// Remove item at the given index from the collections of the same type.
diff --git a/sources/core/Stride.Core.Reflection/TypeDescriptors/DictionaryDescriptor.cs b/sources/core/Stride.Core.Reflection/TypeDescriptors/DictionaryDescriptor.cs
index 9d456965eb..357ffec092 100644
--- a/sources/core/Stride.Core.Reflection/TypeDescriptors/DictionaryDescriptor.cs
+++ b/sources/core/Stride.Core.Reflection/TypeDescriptors/DictionaryDescriptor.cs
@@ -14,48 +14,52 @@ namespace Stride.Core.Reflection
///
public class DictionaryDescriptor : ObjectDescriptor
{
- private static readonly List ListOfMembersToRemove = new List {"Comparer", "Keys", "Values", "Capacity" };
-
- private readonly MethodInfo getEnumeratorGeneric;
- private readonly PropertyInfo getKeysMethod;
- private readonly PropertyInfo getValuesMethod;
- private readonly PropertyInfo indexerProperty;
- private readonly MethodInfo indexerSetter;
- private readonly MethodInfo removeMethod;
- private readonly MethodInfo containsKeyMethod;
- private readonly MethodInfo addMethod;
-
+ private static readonly List ListOfMembersToRemove = ["Comparer", "Keys", "Values", "Capacity"];
+
+ Action addMethod;
+ Action removeMethod;
+ Action setValueMethod;
+ Func containsKeyMethod;
+ Func getKeysMethod;
+ Func getValuesMethod;
+ Func getValueMethod;
+ Func>> getEnumeratorMethod;
+
+ #pragma warning disable CS8618
+ // This warning is disabled because the necessary initialization will occur
+ // in the CreateDictionaryDelegates() method, not in the constructor.
public DictionaryDescriptor(ITypeDescriptorFactory factory, Type type, bool emitDefaultValues, IMemberNamingConvention namingConvention)
: base(factory, type, emitDefaultValues, namingConvention)
{
if (!IsDictionary(type))
- throw new ArgumentException(@"Expecting a type inheriting from System.Collections.IDictionary", nameof(type));
+ throw new ArgumentException(@"Expecting a type inheriting from System.Collections.Generic.IDictionary", nameof(type));
// extract Key, Value types from IDictionary?, ??>
- var interfaceType = type.GetInterface(typeof(IDictionary<,>));
- if (interfaceType != null)
- {
- KeyType = interfaceType.GetGenericArguments()[0];
- ValueType = interfaceType.GetGenericArguments()[1];
- IsGenericDictionary = true;
- getEnumeratorGeneric = typeof(DictionaryDescriptor).GetMethod("GetGenericEnumerable").MakeGenericMethod(KeyType, ValueType);
- containsKeyMethod = interfaceType.GetMethod("ContainsKey", new[] { KeyType });
- // Retrieve the other properties and methods from the interface
- type = interfaceType;
- }
- else
- {
- KeyType = typeof(object);
- ValueType = typeof(object);
- containsKeyMethod = type.GetMethod("Contains", new[] { KeyType });
- }
-
- addMethod = type.GetMethod("Add", new[] { KeyType, ValueType });
- getKeysMethod = type.GetProperty("Keys");
- getValuesMethod = type.GetProperty("Values");
- indexerProperty = type.GetProperty("Item", ValueType, new[] { KeyType });
- indexerSetter = indexerProperty.SetMethod;
- removeMethod = type.GetMethod("Remove", new[] { KeyType });
+ var interfaceType = type.GetInterface(typeof(IDictionary<,>))!;
+ KeyType = interfaceType.GetGenericArguments()[0];
+ ValueType = interfaceType.GetGenericArguments()[1];
+ IsGenericDictionary = true;
+
+ // if the type has late bound generics, no delegates can be created as the type is invalid for calling collection operations
+ if (type.ContainsGenericParameters)
+ return;
+
+ var createMethod = typeof(DictionaryDescriptor).GetMethod(nameof(CreateDictionaryDelegates), BindingFlags.NonPublic | BindingFlags.Instance);
+ var genericCreateMethod = createMethod!.MakeGenericMethod([KeyType, ValueType]);
+ genericCreateMethod!.Invoke(this, []);
+ }
+ void CreateDictionaryDelegates()
+ {
+ addMethod = (dictionary, key, value) => ((IDictionary)dictionary).Add((TKey)key, (TValue?)value);
+ removeMethod = (dictionary, key) => ((IDictionary)dictionary).Remove((TKey)key);
+ containsKeyMethod = (dictionary, key) => ((IDictionary)dictionary).ContainsKey((TKey)key);
+ getKeysMethod = (dictionary) => (ICollection)((IDictionary)dictionary).Keys;
+ getValuesMethod = (dictionary) => (ICollection)((IDictionary)dictionary).Values;
+ getValueMethod = (dictionary, key) => ((IDictionary)dictionary)[(TKey)key];
+ setValueMethod = (dictionary, key, value) => ((IDictionary)dictionary)[(TKey)key] = (TValue?)value;
+ getEnumeratorMethod = (dictionary) => {
+ return GetGenericEnumerable((IDictionary)dictionary);
+ };
}
public override void Initialize(IComparer keyComparer)
@@ -93,7 +97,7 @@ public override void Initialize(IComparer keyComparer)
public bool IsPureDictionary { get; private set; }
///
- /// Determines whether the value passed is readonly.
+ /// Determines whether the specified object is read-only.
///
/// The this object.
/// true if [is read only] [the specified this object]; otherwise, false .
@@ -108,29 +112,10 @@ public bool IsReadOnly(object thisObject)
/// The dictionary.
/// A generic enumerator.
/// dictionary
- public IEnumerable> GetEnumerator(object dictionary)
+ public IEnumerable> GetEnumerator(object dictionary)
{
- if (dictionary == null) throw new ArgumentNullException(nameof(dictionary));
- if (IsGenericDictionary)
- {
- foreach (var item in (IEnumerable>)getEnumeratorGeneric.Invoke(null, new[] {dictionary}))
- {
- yield return item;
- }
- }
- else
- {
- var simpleDictionary = (IDictionary)dictionary;
- foreach (var keyValueObject in simpleDictionary)
- {
- if (!(keyValueObject is DictionaryEntry))
- {
- throw new NotSupportedException($"Key value-pair type [{keyValueObject}] is not supported for IDictionary. Only DictionaryEntry");
- }
- var entry = (DictionaryEntry)keyValueObject;
- yield return new KeyValuePair(entry.Key, entry.Value);
- }
- }
+ ArgumentNullException.ThrowIfNull(dictionary);
+ return getEnumeratorMethod.Invoke(dictionary);
}
///
@@ -140,23 +125,10 @@ public IEnumerable> GetEnumerator(object dictionary
/// The key.
/// The value.
/// No Add() method found on dictionary [{0}].ToFormat(Type)
- public void SetValue(object dictionary, object key, object value)
+ public void SetValue(object dictionary, object key, object? value)
{
- if (dictionary == null) throw new ArgumentNullException(nameof(dictionary));
- var simpleDictionary = dictionary as IDictionary;
- if (simpleDictionary != null)
- {
- simpleDictionary[key] = value;
- }
- else
- {
- // Only throw an exception if the addMethod is not accessible when adding to a dictionary
- if (indexerSetter == null)
- {
- throw new InvalidOperationException("No indexer this[key] method found on dictionary [{0}]".ToFormat(Type));
- }
- indexerSetter.Invoke(dictionary, new[] { key, value });
- }
+ ArgumentNullException.ThrowIfNull(dictionary);
+ setValueMethod(dictionary, key, value);
}
///
@@ -168,22 +140,8 @@ public void SetValue(object dictionary, object key, object value)
/// No Add() method found on dictionary [{0}].DoFormat(Type)
public void AddToDictionary(object dictionary, object key, object value)
{
- if (dictionary == null)
- throw new ArgumentNullException(nameof(dictionary));
- var simpleDictionary = dictionary as IDictionary;
- if (simpleDictionary != null)
- {
- simpleDictionary.Add(key, value);
- }
- else
- {
- // Only throw an exception if the addMethod is not accessible when adding to a dictionary
- if (addMethod == null)
- {
- throw new InvalidOperationException($"No Add() method found on dictionary [{Type}]");
- }
- addMethod.Invoke(dictionary, new[] { key, value });
- }
+ ArgumentNullException.ThrowIfNull(dictionary);
+ addMethod.Invoke(dictionary, key, value);
}
///
@@ -193,22 +151,8 @@ public void AddToDictionary(object dictionary, object key, object value)
/// The key.
public void Remove(object dictionary, object key)
{
- if (dictionary == null) throw new ArgumentNullException(nameof(dictionary));
- var simpleDictionary = dictionary as IDictionary;
- if (simpleDictionary != null)
- {
- simpleDictionary.Remove(key);
- }
- else
- {
- // Only throw an exception if the addMethod is not accessible when adding to a dictionary
- if (removeMethod == null)
- {
- throw new InvalidOperationException("No Remove() method found on dictionary [{0}]".ToFormat(Type));
- }
- removeMethod.Invoke(dictionary, new[] { key });
- }
-
+ ArgumentNullException.ThrowIfNull(dictionary);
+ removeMethod.Invoke(dictionary, key);
}
///
@@ -218,17 +162,8 @@ public void Remove(object dictionary, object key)
/// The key.
public bool ContainsKey(object dictionary, object key)
{
- if (dictionary == null) throw new ArgumentNullException(nameof(dictionary));
- var simpleDictionary = dictionary as IDictionary;
- if (simpleDictionary != null)
- {
- return simpleDictionary.Contains(key);
- }
- if (containsKeyMethod == null)
- {
- throw new InvalidOperationException("No ContainsKey() method found on dictionary [{0}]".ToFormat(Type));
- }
- return (bool)containsKeyMethod.Invoke(dictionary, new[] { key });
+ ArgumentNullException.ThrowIfNull(dictionary);
+ return containsKeyMethod.Invoke(dictionary, key);
}
///
@@ -237,7 +172,8 @@ public bool ContainsKey(object dictionary, object key)
/// The dictionary
public ICollection GetKeys(object dictionary)
{
- return (ICollection)getKeysMethod.GetValue(dictionary);
+ ArgumentNullException.ThrowIfNull(dictionary);
+ return getKeysMethod.Invoke(dictionary);
}
///
@@ -246,7 +182,8 @@ public ICollection GetKeys(object dictionary)
/// The dictionary
public ICollection GetValues(object dictionary)
{
- return (ICollection)getValuesMethod.GetValue(dictionary);
+ ArgumentNullException.ThrowIfNull(dictionary);
+ return getValuesMethod(dictionary);
}
///
@@ -254,15 +191,10 @@ public ICollection GetValues(object dictionary)
///
/// The dictionary.
/// The key.
- public object GetValue(object dictionary, object key)
+ public object? GetValue(object dictionary, object key)
{
- var fastDictionary = dictionary as IDictionary;
- if (fastDictionary != null)
- {
- return fastDictionary[key];
- }
-
- return indexerProperty.GetValue(dictionary,new [] { key });
+ ArgumentNullException.ThrowIfNull(dictionary);
+ return getValueMethod.Invoke(dictionary, key);
}
///
@@ -272,12 +204,8 @@ public object GetValue(object dictionary, object key)
/// true if the specified type is dictionary; otherwise, false .
public static bool IsDictionary(Type type)
{
- if (type == null) throw new ArgumentNullException(nameof(type));
+ ArgumentNullException.ThrowIfNull(type);
var typeInfo = type.GetTypeInfo();
- if (typeof(IDictionary).GetTypeInfo().IsAssignableFrom(typeInfo))
- {
- return true;
- }
foreach (var iType in typeInfo.ImplementedInterfaces)
{
@@ -291,16 +219,15 @@ public static bool IsDictionary(Type type)
return false;
}
- public static IEnumerable> GetGenericEnumerable(IDictionary dictionary)
+ public static IEnumerable> GetGenericEnumerable(IDictionary dictionary)
{
- return dictionary.Select(keyValue => new KeyValuePair(keyValue.Key, keyValue.Value));
+ return dictionary.Select(keyValue => new KeyValuePair(keyValue.Key!, keyValue.Value));
}
protected override bool PrepareMember(MemberDescriptorBase member, MemberInfo metadataClassMemberInfo)
{
// Filter members
if (member is PropertyDescriptor && ListOfMembersToRemove.Contains(member.OriginalName))
- //if (member is PropertyDescriptor && (member.DeclaringType.Namespace ?? string.Empty).StartsWith(SystemCollectionsNamespace) && ListOfMembersToRemove.Contains(member.Name))
{
return false;
}
diff --git a/sources/core/Stride.Core.Reflection/TypeDescriptors/ITypeDescriptor.cs b/sources/core/Stride.Core.Reflection/TypeDescriptors/ITypeDescriptor.cs
index e24e282414..0d10f6f43a 100644
--- a/sources/core/Stride.Core.Reflection/TypeDescriptors/ITypeDescriptor.cs
+++ b/sources/core/Stride.Core.Reflection/TypeDescriptors/ITypeDescriptor.cs
@@ -60,7 +60,7 @@ public interface ITypeDescriptor
///
/// The name of the member.
/// The member if found, otherwise [null].
- IMemberDescriptor TryGetMember(string name);
+ IMemberDescriptor? TryGetMember(string name);
///
/// Gets a value indicating whether this instance is a compiler generated type.
diff --git a/sources/core/Stride.Core.Reflection/TypeDescriptors/ListDescriptor.cs b/sources/core/Stride.Core.Reflection/TypeDescriptors/ListDescriptor.cs
index 465ed9444e..4157469c39 100644
--- a/sources/core/Stride.Core.Reflection/TypeDescriptors/ListDescriptor.cs
+++ b/sources/core/Stride.Core.Reflection/TypeDescriptors/ListDescriptor.cs
@@ -14,18 +14,18 @@ namespace Stride.Core.Reflection
///
public class ListDescriptor : CollectionDescriptor
{
- private static readonly object[] EmptyObjects = new object[0];
- private static readonly List ListOfMembersToRemove = new List { "Capacity", "Count", "IsReadOnly", "IsFixedSize", "IsSynchronized", "SyncRoot", "Comparer" };
-
- private readonly Func IsReadOnlyFunction;
- private readonly Func GetListCountFunction;
- private readonly Func GetIndexedItem;
- private readonly Action SetIndexedItem;
- private readonly Action ListAddFunction;
- private readonly Action ListInsertFunction;
- private readonly Action ListRemoveAtFunction;
- private readonly Action ListRemoveFunction;
- private readonly Action ListClearFunction;
+ private static readonly object[] EmptyObjects = [];
+ private static readonly List ListOfMembersToRemove = ["Capacity", "Count", "IsReadOnly", "IsFixedSize", "IsSynchronized", "SyncRoot", "Comparer"];
+
+ private Func isReadOnlyMethod;
+ private Func getListCountMethod;
+ private Func getIndexedItemMethod;
+ private Action setIndexedItemMethod;
+ private Action addMethod;
+ private Action insertMethod;
+ private Action removeAtMethod;
+ private Action removeMethod;
+ private Action clearMethod;
///
/// Initializes a new instance of the class.
@@ -33,57 +33,45 @@ public class ListDescriptor : CollectionDescriptor
/// The factory.
/// The type.
/// Expecting a type inheriting from System.Collections.IList;type
+ #pragma warning disable CS8618
+ // This warning is disabled because the necessary initialization will occur
+ // in the CreateListDelegates() method, not in the constructor.
public ListDescriptor(ITypeDescriptorFactory factory, Type type, bool emitDefaultValues, IMemberNamingConvention namingConvention)
: base(factory, type, emitDefaultValues, namingConvention)
{
if (!IsList(type))
- throw new ArgumentException(@"Expecting a type inheriting from System.Collections.IList", nameof(type));
-
- // Gets the element type
- ElementType = type.GetInterface(typeof(IEnumerable<>))?.GetGenericArguments()[0] ?? typeof(object);
-
- // implements IList
- if (typeof(IList).IsAssignableFrom(type))
- {
- // implements IList
- ListAddFunction = (obj, value) => ((IList)obj).Add(value);
- ListClearFunction = obj => ((IList)obj).Clear();
- ListInsertFunction = (obj, index, value) => ((IList)obj).Insert(index, value);
- ListRemoveAtFunction = (obj, index) => ((IList)obj).RemoveAt(index);
- GetListCountFunction = o => ((IList)o).Count;
- GetIndexedItem = (obj, index) => ((IList)obj)[index];
- SetIndexedItem = (obj, index, value) => ((IList)obj)[index] = value;
- IsReadOnlyFunction = obj => ((IList)obj).IsReadOnly;
- }
- else // implements IList
- {
- var add = type.GetMethod(nameof(IList.Add), new[] { ElementType });
- ListAddFunction = (obj, value) => add.Invoke(obj, new[] { value });
- var remove = type.GetMethod(nameof(IList.Remove), new[] { ElementType });
- ListRemoveFunction = (obj, value) => remove.Invoke(obj, new[] { value });
- var clear = type.GetMethod(nameof(IList.Clear), Type.EmptyTypes);
- ListClearFunction = obj => clear.Invoke(obj, EmptyObjects);
- var countMethod = type.GetProperty(nameof(IList.Count)).GetGetMethod();
- GetListCountFunction = o => (int)countMethod.Invoke(o, null);
- var isReadOnly = type.GetInterface(typeof(ICollection<>)).GetProperty(nameof(IList.IsReadOnly)).GetGetMethod();
- IsReadOnlyFunction = obj => (bool)isReadOnly.Invoke(obj, null);
- var insert = type.GetMethod(nameof(IList.Insert), new[] { typeof(int), ElementType });
- ListInsertFunction = (obj, index, value) => insert.Invoke(obj, new[] { index, value });
- var removeAt = type.GetMethod(nameof(IList.RemoveAt), new[] { typeof(int) });
- ListRemoveAtFunction = (obj, index) => removeAt.Invoke(obj, new object[] { index });
- var getItem = type.GetMethod("get_Item", new[] { typeof(int) });
- GetIndexedItem = (obj, index) => getItem.Invoke(obj, new object[] { index });
- var setItem = type.GetMethod("set_Item", new[] { typeof(int), ElementType });
- SetIndexedItem = (obj, index, value) => setItem.Invoke(obj, new[] { index, value });
- }
+ throw new ArgumentException(@"Expecting a type inheriting from System.Collections.Generic.IList", nameof(type));
HasAdd = true;
HasRemove = true;
HasInsert = true;
HasRemoveAt = true;
HasIndexerAccessors = true;
- }
+ ElementType = type.GetInterface(typeof(IList<>))!.GetGenericArguments()[0]!;
+
+ // if the type has late bound generics, no delegates can be created as the type is invalid for calling collection operations
+ if (type.ContainsGenericParameters)
+ return;
+
+ var interfaceType = type.GetInterface(typeof(IList<>));
+ var valueType = interfaceType!.GetGenericArguments()[0];
+ var descriptorType = typeof(ListDescriptor).GetMethod(nameof(CreateListDelegates), BindingFlags.NonPublic | BindingFlags.Instance)!.MakeGenericMethod([valueType]);
+ descriptorType.Invoke(this, []);
+
+ }
+ void CreateListDelegates()
+ {
+ addMethod = (obj, value) => ((IList)obj).Add((T?)value);
+ removeMethod = (obj, value) => ((IList)obj).Remove((T?)value);
+ clearMethod = obj => ((IList)obj).Clear();
+ getListCountMethod = obj => ((IList