Repository: Chizaruu/com.tsk.ide.vscode Branch: default Commit: 729aa59b4632 Files: 253 Total size: 488.1 KB Directory structure: gitextract_to6mvn38/ ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ └── workflows/ │ └── ci.yml ├── .gitignore ├── Projects/ │ ├── 2021.3 LTS/ │ │ ├── Assets/ │ │ │ ├── Analyzer.meta │ │ │ ├── Custom Asmdef/ │ │ │ │ ├── InAssetFolder.asmdef │ │ │ │ ├── InAssetFolder.asmdef.meta │ │ │ │ ├── TimTam.cs │ │ │ │ └── TimTam.cs.meta │ │ │ ├── Custom Asmdef.meta │ │ │ ├── Editor/ │ │ │ │ ├── CSProjAssetTests.cs │ │ │ │ ├── CSProjAssetTests.cs.meta │ │ │ │ ├── RecompileScripts.cs │ │ │ │ └── RecompileScripts.cs.meta │ │ │ ├── Editor.meta │ │ │ ├── KoalaExtensionTest.koala │ │ │ ├── KoalaExtensionTest.koala.meta │ │ │ ├── Scenes/ │ │ │ │ ├── SampleScene.unity │ │ │ │ ├── SampleScene.unity.meta │ │ │ │ ├── SampleSceneSettings.lighting │ │ │ │ └── SampleSceneSettings.lighting.meta │ │ │ ├── Scenes.meta │ │ │ ├── Test.cs │ │ │ └── Test.cs.meta │ │ ├── Packages/ │ │ │ ├── manifest.json │ │ │ └── packages-lock.json │ │ ├── ProjectSettings/ │ │ │ ├── AudioManager.asset │ │ │ ├── ClusterInputManager.asset │ │ │ ├── DynamicsManager.asset │ │ │ ├── EditorBuildSettings.asset │ │ │ ├── EditorSettings.asset │ │ │ ├── GraphicsSettings.asset │ │ │ ├── InputManager.asset │ │ │ ├── MemorySettings.asset │ │ │ ├── NavMeshAreas.asset │ │ │ ├── PackageManagerSettings.asset │ │ │ ├── Physics2DSettings.asset │ │ │ ├── PresetManager.asset │ │ │ ├── ProjectSettings.asset │ │ │ ├── ProjectVersion.txt │ │ │ ├── QualitySettings.asset │ │ │ ├── TagManager.asset │ │ │ ├── TimeManager.asset │ │ │ ├── UnityConnectSettings.asset │ │ │ ├── VFXManager.asset │ │ │ ├── VersionControlSettings.asset │ │ │ ├── XRSettings.asset │ │ │ └── boot.config │ │ └── UserSettings/ │ │ ├── EditorUserSettings.asset │ │ └── Search.settings │ ├── 2022.2 Latest/ │ │ ├── Assets/ │ │ │ ├── Analyzer.meta │ │ │ ├── Custom Asmdef/ │ │ │ │ ├── InAssetFolder.asmdef │ │ │ │ ├── InAssetFolder.asmdef.meta │ │ │ │ ├── TimTam.cs │ │ │ │ └── TimTam.cs.meta │ │ │ ├── Custom Asmdef.meta │ │ │ ├── Editor/ │ │ │ │ ├── CSProjAssetTests.cs │ │ │ │ ├── CSProjAssetTests.cs.meta │ │ │ │ ├── RecompileScripts.cs │ │ │ │ └── RecompileScripts.cs.meta │ │ │ ├── Editor.meta │ │ │ ├── KoalaExtensionTest.koala │ │ │ ├── KoalaExtensionTest.koala.meta │ │ │ ├── Scenes/ │ │ │ │ ├── SampleScene.unity │ │ │ │ ├── SampleScene.unity.meta │ │ │ │ ├── SampleSceneSettings.lighting │ │ │ │ └── SampleSceneSettings.lighting.meta │ │ │ ├── Scenes.meta │ │ │ ├── Test.cs │ │ │ └── Test.cs.meta │ │ ├── Packages/ │ │ │ ├── manifest.json │ │ │ └── packages-lock.json │ │ ├── ProjectSettings/ │ │ │ ├── AudioManager.asset │ │ │ ├── ClusterInputManager.asset │ │ │ ├── DynamicsManager.asset │ │ │ ├── EditorBuildSettings.asset │ │ │ ├── EditorSettings.asset │ │ │ ├── GraphicsSettings.asset │ │ │ ├── InputManager.asset │ │ │ ├── MemorySettings.asset │ │ │ ├── NavMeshAreas.asset │ │ │ ├── PackageManagerSettings.asset │ │ │ ├── Physics2DSettings.asset │ │ │ ├── PresetManager.asset │ │ │ ├── ProjectSettings.asset │ │ │ ├── ProjectVersion.txt │ │ │ ├── QualitySettings.asset │ │ │ ├── TagManager.asset │ │ │ ├── TimeManager.asset │ │ │ ├── UnityConnectSettings.asset │ │ │ ├── VFXManager.asset │ │ │ ├── VersionControlSettings.asset │ │ │ └── XRSettings.asset │ │ └── UserSettings/ │ │ ├── EditorUserSettings.asset │ │ ├── Search.index │ │ └── Search.settings │ ├── 2022.3 LTS/ │ │ ├── Assets/ │ │ │ ├── Analyzer.meta │ │ │ ├── Custom Asmdef/ │ │ │ │ ├── InAssetFolder.asmdef │ │ │ │ ├── InAssetFolder.asmdef.meta │ │ │ │ ├── TimTam.cs │ │ │ │ └── TimTam.cs.meta │ │ │ ├── Custom Asmdef.meta │ │ │ ├── Editor/ │ │ │ │ ├── CSProjAssetTests.cs │ │ │ │ ├── CSProjAssetTests.cs.meta │ │ │ │ ├── RecompileScripts.cs │ │ │ │ └── RecompileScripts.cs.meta │ │ │ ├── Editor.meta │ │ │ ├── KoalaExtensionTest.koala │ │ │ ├── KoalaExtensionTest.koala.meta │ │ │ ├── Scenes/ │ │ │ │ ├── SampleScene.unity │ │ │ │ ├── SampleScene.unity.meta │ │ │ │ ├── SampleSceneSettings.lighting │ │ │ │ └── SampleSceneSettings.lighting.meta │ │ │ ├── Scenes.meta │ │ │ ├── Test.cs │ │ │ └── Test.cs.meta │ │ ├── Packages/ │ │ │ ├── manifest.json │ │ │ └── packages-lock.json │ │ ├── ProjectSettings/ │ │ │ ├── AudioManager.asset │ │ │ ├── ClusterInputManager.asset │ │ │ ├── DynamicsManager.asset │ │ │ ├── EditorBuildSettings.asset │ │ │ ├── EditorSettings.asset │ │ │ ├── GraphicsSettings.asset │ │ │ ├── InputManager.asset │ │ │ ├── MemorySettings.asset │ │ │ ├── NavMeshAreas.asset │ │ │ ├── PackageManagerSettings.asset │ │ │ ├── Physics2DSettings.asset │ │ │ ├── PresetManager.asset │ │ │ ├── ProjectSettings.asset │ │ │ ├── ProjectVersion.txt │ │ │ ├── QualitySettings.asset │ │ │ ├── TagManager.asset │ │ │ ├── TimeManager.asset │ │ │ ├── UnityConnectSettings.asset │ │ │ ├── VFXManager.asset │ │ │ ├── VersionControlSettings.asset │ │ │ └── XRSettings.asset │ │ └── UserSettings/ │ │ ├── EditorUserSettings.asset │ │ ├── Search.index │ │ └── Search.settings │ └── 2023.1 Latest/ │ ├── Assets/ │ │ ├── Analyzer.meta │ │ ├── Custom Asmdef/ │ │ │ ├── InAssetFolder.asmdef │ │ │ ├── InAssetFolder.asmdef.meta │ │ │ ├── TimTam.cs │ │ │ └── TimTam.cs.meta │ │ ├── Custom Asmdef.meta │ │ ├── Editor/ │ │ │ ├── CSProjAssetTests.cs │ │ │ ├── CSProjAssetTests.cs.meta │ │ │ ├── RecompileScripts.cs │ │ │ └── RecompileScripts.cs.meta │ │ ├── Editor.meta │ │ ├── KoalaExtensionTest.koala │ │ ├── KoalaExtensionTest.koala.meta │ │ ├── Scenes/ │ │ │ ├── SampleScene.unity │ │ │ ├── SampleScene.unity.meta │ │ │ ├── SampleSceneSettings.lighting │ │ │ └── SampleSceneSettings.lighting.meta │ │ ├── Scenes.meta │ │ ├── Test.cs │ │ └── Test.cs.meta │ ├── Packages/ │ │ ├── manifest.json │ │ └── packages-lock.json │ ├── ProjectSettings/ │ │ ├── AudioManager.asset │ │ ├── ClusterInputManager.asset │ │ ├── DynamicsManager.asset │ │ ├── EditorBuildSettings.asset │ │ ├── EditorSettings.asset │ │ ├── GraphicsSettings.asset │ │ ├── InputManager.asset │ │ ├── MemorySettings.asset │ │ ├── NavMeshAreas.asset │ │ ├── PackageManagerSettings.asset │ │ ├── Physics2DSettings.asset │ │ ├── PresetManager.asset │ │ ├── ProjectSettings.asset │ │ ├── ProjectVersion.txt │ │ ├── QualitySettings.asset │ │ ├── TagManager.asset │ │ ├── TimeManager.asset │ │ ├── UnityConnectSettings.asset │ │ ├── VFXManager.asset │ │ ├── VersionControlSettings.asset │ │ └── XRSettings.asset │ └── UserSettings/ │ ├── EditorUserSettings.asset │ ├── Search.index │ └── Search.settings ├── README.md ├── TestAnalyzer/ │ └── TestGenerator.cs ├── com.tsk.ide.vscode/ │ ├── .npmignore │ ├── CHANGELOG.md │ ├── CHANGELOG.md.meta │ ├── Editor/ │ │ ├── ConfigGeneration/ │ │ │ ├── ConfigGeneration.cs │ │ │ └── ConfigGeneration.cs.meta │ │ ├── ConfigGeneration.meta │ │ ├── ProjectGeneration/ │ │ │ ├── AssemblyNameProvider.cs │ │ │ ├── AssemblyNameProvider.cs.meta │ │ │ ├── GUIDGenerator.cs │ │ │ ├── GUIDGenerator.cs.meta │ │ │ ├── ProjectGeneration.cs │ │ │ └── ProjectGeneration.cs.meta │ │ ├── ProjectGeneration.meta │ │ ├── Utils/ │ │ │ ├── FileIO.cs │ │ │ ├── FileIO.cs.meta │ │ │ ├── FlagHandler.cs │ │ │ ├── FlagHandler.cs.meta │ │ │ ├── StringUtils.cs │ │ │ └── StringUtils.cs.meta │ │ ├── Utils.meta │ │ ├── VSCodeDiscovery.cs │ │ ├── VSCodeDiscovery.cs.meta │ │ ├── VSCodeScriptEditor.cs │ │ ├── VSCodeScriptEditor.cs.meta │ │ ├── com.tsk.vscode.Editor.asmdef │ │ └── com.tsk.vscode.Editor.asmdef.meta │ ├── Editor.meta │ ├── LICENSE.md │ ├── LICENSE.md.meta │ ├── README.md │ ├── README.md.meta │ ├── ValidationExceptions.json │ ├── ValidationExceptions.json.meta │ ├── package.json │ └── package.json.meta └── com.tsk.ide.vscodetests/ ├── .npmignore ├── Tests/ │ ├── Editor/ │ │ ├── CSProjectTests.cs │ │ ├── CSProjectTests.cs.meta │ │ ├── DetermineScriptEditor.cs │ │ ├── DetermineScriptEditor.cs.meta │ │ ├── Helper.cs │ │ ├── Helper.cs.meta │ │ ├── MockFileIO.cs │ │ ├── MockFileIO.cs.meta │ │ ├── SolutionGenerationTestBase.cs │ │ ├── SolutionGenerationTestBase.cs.meta │ │ ├── SolutionTests.cs │ │ ├── SolutionTests.cs.meta │ │ ├── SynchronizerBuilder.cs │ │ ├── SynchronizerBuilder.cs.meta │ │ ├── Unity.com.unity.ide.vscode.EditorTests.asmdef │ │ ├── Unity.com.unity.ide.vscode.EditorTests.asmdef.meta │ │ ├── VSCodeScriptEditorTests.cs │ │ ├── VSCodeScriptEditorTests.cs.meta │ │ ├── XMLUtilities.cs │ │ └── XMLUtilities.cs.meta │ └── Editor.meta ├── Tests.meta ├── package.json └── package.json.meta ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ * text eol=lf ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: [chizaruu] patreon: thesleepykoala # Replace with a single Patreon username ko_fi: thesleepykoala # Replace with a single Ko-fi username ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ name: 🐞 Bug description: File a bug/issue title: "" labels: [bug] body: - type: textarea attributes: label: Current Behavior description: A description of what you're experiencing. validations: required: false - type: textarea attributes: label: Reproduction / Steps To Reproduce description: Stackblitz/Link to a repository with steps to reproduce the behavior. placeholder: | As you can see in this code example/Stackblitz link/repostitory 1. Using this component... 2. With these properties... 3. Click '...' 4. See error... validations: required: false - type: markdown attributes: value: | Bug Reports with a repository with a full reproduction or a Stackblitz can be anwswered far quicker, so please consider including as much information as possible to let us help you quicker! - type: textarea attributes: label: Anything else? description: | Links? References? Anything that will give us more context about the issue you are encountering! Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. validations: required: false ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: true contact_links: - name: Get support on Discord url: https://discord.gg/tZmsjTFEBx about: Get help from the maintainers on Discord ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.yml ================================================ name: 🛠️ Request New Feature description: Let us know what we should add. labels: ['feature request'] body: - type: textarea id: description attributes: label: Describe what feature you'd like. Pseudo-code, mockups, or screenshots of similar solutions are encouraged! - type: dropdown id: category attributes: label: What type of pull request would this be? options: - 'New Feature' - 'Enhancement' - 'Guide' - 'Docs' - 'Other' - type: textarea id: references attributes: label: Any links to similar examples or other references we should review? ================================================ FILE: .github/workflows/ci.yml ================================================ name: CI on: push: branches: - default jobs: split-upm: name: split upm branch runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v3 # specify the version to v3 with: fetch-depth: 0 - name: split upm branch run: | git subtree split -P "$PKG_ROOT" -b upm git push -u origin upm env: PKG_ROOT: com.tsk.ide.vscode ================================================ FILE: .gitignore ================================================ .DS_Store .editorconfig /TestAnalyzer/bin/ /TestAnalyzer/obj/ /projects/**/.vscode/* /projects/**/Builds /projects/**/bin /projects/**/Library /projects/**/Logs /projects/**/obj /projects/**/Temp *.csproj *.sln *.code-workspace settings.json *.dwlt *.dll *.dll.meta ================================================ FILE: Projects/2021.3 LTS/Assets/Analyzer.meta ================================================ fileFormatVersion: 2 guid: 83a7d9ae72b00d244b11062f1befd3a3 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Custom Asmdef/InAssetFolder.asmdef ================================================ { "name": "InAssetFolder", "rootNamespace": "", "references": [], "includePlatforms": [], "excludePlatforms": [], "allowUnsafeCode": false, "overrideReferences": false, "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], "versionDefines": [], "noEngineReferences": false } ================================================ FILE: Projects/2021.3 LTS/Assets/Custom Asmdef/InAssetFolder.asmdef.meta ================================================ fileFormatVersion: 2 guid: 02a83d3e11a5a9745b46ca562b00be0e AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Custom Asmdef/TimTam.cs ================================================ using System.Collections; using System.Collections.Generic; using UnityEngine; public class TimTam : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } } ================================================ FILE: Projects/2021.3 LTS/Assets/Custom Asmdef/TimTam.cs.meta ================================================ fileFormatVersion: 2 guid: 8569e12c481432146a309f64fab7c80c MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Custom Asmdef.meta ================================================ fileFormatVersion: 2 guid: 051e38478c4283c4ea841b4cd457dae4 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Editor/CSProjAssetTests.cs ================================================ using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text.RegularExpressions; using System.Threading; using NUnit.Framework; using UnityEditor; using UnityEngine; using UnityEngine.TestTools; namespace VSCodeEditor.Runtime_spec.CSProject { [TestFixture] [Serializable] public abstract class CleanupTest { [SerializeField] protected IGenerator m_ProjectGeneration; [SerializeField] readonly List<string> m_GeneratedFiles = new(); [SerializeField] readonly List<string> m_DirectoriesToDelete = new(); [SerializeField] protected string m_CsProjPath; [SerializeField] protected DateTime m_LastWritten; protected const string k_EmptyCSharpScript = @" using UnityEngine; public class SimpleCSharpScript : MonoBehaviour { void Start() { } }"; [SetUp] public void SetUp() { var projectDirectory = Directory.GetParent(Application.dataPath).FullName; m_ProjectGeneration = new ProjectGeneration(projectDirectory); } [UnityTearDown] protected virtual IEnumerator TearDown() { foreach (var pathToDelete in m_GeneratedFiles) { if (File.Exists(pathToDelete)) { File.Delete(pathToDelete); } if (File.Exists(pathToDelete + ".meta")) { File.Delete(pathToDelete + ".meta"); } } foreach (var directoryToDelete in m_DirectoriesToDelete) { if (Directory.Exists(directoryToDelete)) { Directory.Delete(directoryToDelete, true); File.Delete(directoryToDelete + ".meta"); } } m_GeneratedFiles.Clear(); m_DirectoriesToDelete.Clear(); yield return new RecompileScripts(false); } protected void CopyScriptToAssetsFolder(string assetPath, string fileName, string content) { var targetFile = Path.Combine(assetPath, fileName); m_GeneratedFiles.Add(targetFile); File.WriteAllText(targetFile, content); } protected void CreateFolder(string path) { m_DirectoriesToDelete.Add(path); Directory.CreateDirectory(path); } } public class BuildTarget : CleanupTest { [SerializeField] UnityEditor.BuildTarget m_Original; protected override IEnumerator TearDown() { EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, m_Original ); return base.TearDown(); } [UnityPlatform(RuntimePlatform.WindowsEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_Windows() { m_Original = UnityEditor.BuildTarget.StandaloneWindows64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", () => { } ); } [UnityPlatform(RuntimePlatform.OSXEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_MacOSX() { m_Original = UnityEditor.BuildTarget.StandaloneOSX; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", () => { } ); } [UnityPlatform(RuntimePlatform.LinuxEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_Linux() { m_Original = UnityEditor.BuildTarget.StandaloneLinux64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", () => { } ); } [UnityPlatform(RuntimePlatform.WindowsEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Windows() { m_Original = UnityEditor.BuildTarget.StandaloneWindows64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } [UnityPlatform(RuntimePlatform.OSXEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_MacOSX() { m_Original = UnityEditor.BuildTarget.StandaloneOSX; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } [UnityPlatform(RuntimePlatform.LinuxEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Linux() { m_Original = UnityEditor.BuildTarget.StandaloneLinux64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } IEnumerator AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget platformTarget, string platformDefine, UnityEditor.BuildTarget changeTarget, string changeDefine, Action action ) { EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, platformTarget ); CopyScriptToAssetsFolder( Application.dataPath, "SimpleCSharpScript.cs", k_EmptyCSharpScript ); yield return new RecompileScripts(true); m_ProjectGeneration.Sync(); var dir = Directory.GetParent(Application.dataPath).FullName; m_CsProjPath = Path.Combine(dir, "Assembly-CSharp.csproj"); AssertProjectContainsDefine(m_CsProjPath, platformDefine); action(); m_LastWritten = DateTime.Now.AddSeconds(-1); File.SetLastWriteTime(m_CsProjPath, m_LastWritten); //switch target to another one than the standalone target for the current platform EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, changeTarget ); yield return new RecompileScripts(true); m_ProjectGeneration.Sync(); WaitForCondition(() => File.GetLastWriteTime(m_CsProjPath) > m_LastWritten); AssertProjectContainsDefine(m_CsProjPath, changeDefine); yield return null; } static void AssertProjectContainsDefine(string csProjPath, string expectedDefine) { var content = File.ReadAllText(csProjPath); Assert.IsTrue( Regex.IsMatch(content, $"<DefineConstants>.*;{expectedDefine}.*</DefineConstants>") ); } delegate bool Condition(); static void WaitForCondition(Condition condition) { var started = DateTime.Now; while (!condition()) { if (DateTime.Now - started > k_Timeout) throw new TimeoutException( $"Timeout while waiting for c# project to be rewritten for {k_Timeout.TotalSeconds} seconds" ); Thread.Sleep(10); } } static readonly TimeSpan k_Timeout = TimeSpan.FromSeconds(5); } } ================================================ FILE: Projects/2021.3 LTS/Assets/Editor/CSProjAssetTests.cs.meta ================================================ fileFormatVersion: 2 guid: 09b6f746cf9797a4a97e259d45a38ec1 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Editor/RecompileScripts.cs ================================================ using System; using System.Collections; using UnityEditor; using UnityEngine.TestTools; public class RecompileScripts : IEditModeTestYieldInstruction { public RecompileScripts() : this(true) { } public RecompileScripts(bool expectScriptCompilation) : this(expectScriptCompilation, true) { } public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess) { ExpectScriptCompilation = expectScriptCompilation; ExpectScriptCompilationSuccess = expectScriptCompilationSuccess; ExpectDomainReload = true; } public bool ExpectDomainReload { get; } public bool ExpectedPlaymodeState { get; } public bool ExpectScriptCompilation { get; } public bool ExpectScriptCompilationSuccess { get; } public static RecompileScripts Current { get; private set; } public IEnumerator Perform() { Current = this; AssetDatabase.Refresh(); if (ExpectScriptCompilation && !EditorApplication.isCompiling) { Current = null; throw new Exception("Editor does not need to recompile scripts"); } EditorApplication.UnlockReloadAssemblies(); while (EditorApplication.isCompiling) { yield return null; } Current = null; if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed) { EditorApplication.LockReloadAssemblies(); throw new Exception("Script compilation failed"); } } } ================================================ FILE: Projects/2021.3 LTS/Assets/Editor/RecompileScripts.cs.meta ================================================ fileFormatVersion: 2 guid: 35e5ed6756833644c83c24382f01236b MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Editor.meta ================================================ fileFormatVersion: 2 guid: 8a06cae000d3e064aa6a3530ef8bbabc folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/KoalaExtensionTest.koala ================================================ ================================================ FILE: Projects/2021.3 LTS/Assets/KoalaExtensionTest.koala.meta ================================================ fileFormatVersion: 2 guid: 9972cb3bb6a98ab469a9399f8bc337c6 DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Scenes/SampleScene.unity ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!29 &1 OcclusionCullingSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_OcclusionBakeSettings: smallestOccluder: 5 smallestHole: 0.25 backfaceThreshold: 100 m_SceneGUID: 00000000000000000000000000000000 m_OcclusionCullingData: {fileID: 0} --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 serializedVersion: 9 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 m_FogDensity: 0.01 m_LinearFogStart: 0 m_LinearFogEnd: 300 m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} m_AmbientIntensity: 1 m_AmbientMode: 0 m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} m_HaloStrength: 0.5 m_FlareStrength: 1 m_FlareFadeSpeed: 3 m_HaloTexture: {fileID: 0} m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} m_DefaultReflectionMode: 0 m_DefaultReflectionResolution: 128 m_ReflectionBounces: 1 m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 705507994} m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 serializedVersion: 11 m_GIWorkflowMode: 0 m_GISettings: serializedVersion: 2 m_BounceScale: 1 m_IndirectOutputScale: 1 m_AlbedoBoost: 1 m_TemporalCoherenceThreshold: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: serializedVersion: 10 m_Resolution: 2 m_BakeResolution: 40 m_AtlasSize: 1024 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 m_TextureCompression: 1 m_FinalGather: 0 m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 256 m_ReflectionCompression: 2 m_MixedBakeMode: 2 m_BakeBackend: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVRBounces: 2 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 m_PVRFilteringMode: 1 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 m_ShowResolutionOverlay: 1 m_LightingDataAsset: {fileID: 0} m_UseShadowmask: 1 --- !u!196 &4 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.4 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 accuratePlacement: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} --- !u!1 &705507993 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 705507995} - component: {fileID: 705507994} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!108 &705507994 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 705507993} m_Enabled: 1 serializedVersion: 8 m_Type: 1 m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} m_Intensity: 1 m_Range: 10 m_SpotAngle: 30 m_CookieSize: 10 m_Shadows: m_Type: 2 m_Resolution: -1 m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 m_NormalBias: 0.4 m_NearPlane: 0.2 m_Cookie: {fileID: 0} m_DrawHalo: 0 m_Flare: {fileID: 0} m_RenderMode: 0 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_Lightmapping: 1 m_LightShadowCasterMode: 0 m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 m_ColorTemperature: 6570 m_UseColorTemperature: 0 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &705507995 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 705507993} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &963194225 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 963194228} - component: {fileID: 963194227} - component: {fileID: 963194226} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!81 &963194226 AudioListener: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 --- !u!20 &963194227 Camera: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} m_projectionMatrixMode: 1 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} m_GateFitMode: 2 m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 near clip plane: 0.3 far clip plane: 1000 field of view: 60 orthographic: 0 orthographic size: 5 m_Depth: -1 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_RenderingPath: -1 m_TargetTexture: {fileID: 0} m_TargetDisplay: 0 m_TargetEye: 3 m_HDR: 1 m_AllowMSAA: 1 m_AllowDynamicResolution: 0 m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 --- !u!4 &963194228 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ================================================ FILE: Projects/2021.3 LTS/Assets/Scenes/SampleScene.unity.meta ================================================ fileFormatVersion: 2 guid: 9fc0d4010bbf28b4594072e72b8655ab DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Scenes/SampleSceneSettings.lighting ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!850595691 &4890085278179872738 LightingSettings: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: SampleSceneSettings serializedVersion: 2 m_GIWorkflowMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_RealtimeEnvironmentLighting: 1 m_BounceScale: 1 m_AlbedoBoost: 1 m_IndirectOutputScale: 1 m_UsingShadowmask: 1 m_BakeBackend: 1 m_LightmapMaxSize: 1024 m_BakeResolution: 40 m_Padding: 2 m_TextureCompression: 1 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 m_ExtractAO: 0 m_MixedBakeMode: 2 m_LightmapsBakeMode: 1 m_FilterMode: 1 m_LightmapParameters: {fileID: 0} m_ExportTrainingData: 0 m_TrainingDataDestination: TrainingData m_RealtimeResolution: 2 m_ForceWhiteAlbedo: 0 m_ForceUpdates: 0 m_FinalGather: 0 m_FinalGatherRayCount: 256 m_FinalGatherFiltering: 1 m_PVRCulling: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVREnvironmentSampleCount: 500 m_PVREnvironmentReferencePointCount: 2048 m_LightProbeSampleCountMultiplier: 4 m_PVRBounces: 2 m_PVRRussianRouletteStartBounce: 2 m_PVREnvironmentMIS: 0 m_PVRFilteringMode: 2 m_PVRDenoiserTypeDirect: 0 m_PVRDenoiserTypeIndirect: 0 m_PVRDenoiserTypeAO: 0 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 ================================================ FILE: Projects/2021.3 LTS/Assets/Scenes/SampleSceneSettings.lighting.meta ================================================ fileFormatVersion: 2 guid: a0eb4567ffade2f47b9fc6e006e4ce91 NativeFormatImporter: externalObjects: {} mainObjectFileID: 0 userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Scenes.meta ================================================ fileFormatVersion: 2 guid: 2c4ecd2c3fea48442bfed0ebc5181951 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Assets/Test.cs ================================================ using UnityEngine; public class Test : MonoBehaviour { void Start() { TestCode.TestClass.TestMethod(); } } ================================================ FILE: Projects/2021.3 LTS/Assets/Test.cs.meta ================================================ fileFormatVersion: 2 guid: 8dc025fb3786c0b41a0bb4360be46b9a MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2021.3 LTS/Packages/manifest.json ================================================ { "disableProjectUpdate": true, "dependencies": { "com.tsk.ide.vscode": "file:../../../com.tsk.ide.vscode", "com.tsk.ide.vscodetests": "file:../../../com.tsk.ide.vscodetests", "com.unity.test-framework": "1.3.3" } } ================================================ FILE: Projects/2021.3 LTS/Packages/packages-lock.json ================================================ { "dependencies": { "com.tsk.ide.vscode": { "version": "file:../../../com.tsk.ide.vscode", "depth": 0, "source": "local", "dependencies": {} }, "com.tsk.ide.vscodetests": { "version": "file:../../../com.tsk.ide.vscodetests", "depth": 0, "source": "local", "dependencies": { "nuget.moq": "1.0.0" } }, "com.unity.ext.nunit": { "version": "2.0.3", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.test-framework": { "version": "1.3.3", "depth": 0, "source": "registry", "dependencies": { "com.unity.ext.nunit": "2.0.3", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" }, "url": "https://packages.unity.com" }, "nuget.castle-core": { "version": "1.0.1", "depth": 2, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "nuget.moq": { "version": "1.0.0", "depth": 1, "source": "registry", "dependencies": { "nuget.castle-core": "1.0.1" }, "url": "https://packages.unity.com" }, "com.unity.modules.imgui": { "version": "1.0.0", "depth": 1, "source": "builtin", "dependencies": {} }, "com.unity.modules.jsonserialize": { "version": "1.0.0", "depth": 1, "source": "builtin", "dependencies": {} } } } ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/AudioManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!11 &1 AudioManager: m_ObjectHideFlags: 0 m_Volume: 1 Rolloff Scale: 1 Doppler Factor: 1 Default Speaker Mode: 2 m_SampleRate: 0 m_DSPBufferSize: 1024 m_VirtualVoiceCount: 512 m_RealVoiceCount: 32 m_SpatializerPlugin: m_AmbisonicDecoderPlugin: m_DisableAudio: 0 m_VirtualizeEffects: 1 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/ClusterInputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!236 &1 ClusterInputManager: m_ObjectHideFlags: 0 m_Inputs: [] ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/DynamicsManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!55 &1 PhysicsManager: m_ObjectHideFlags: 0 serializedVersion: 11 m_Gravity: {x: 0, y: -9.81, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 m_SleepThreshold: 0.005 m_DefaultContactOffset: 0.01 m_DefaultSolverIterations: 6 m_DefaultSolverVelocityIterations: 1 m_QueriesHitBackfaces: 0 m_QueriesHitTriggers: 1 m_EnableAdaptiveForce: 0 m_ClothInterCollisionDistance: 0 m_ClothInterCollisionStiffness: 0 m_ContactsGeneration: 1 m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_AutoSimulation: 1 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 0 m_ClothInterCollisionSettingsToggle: 0 m_ContactPairsMode: 0 m_BroadphaseType: 0 m_WorldBounds: m_Center: {x: 0, y: 0, z: 0} m_Extent: {x: 250, y: 250, z: 250} m_WorldSubdivisions: 8 m_FrictionType: 0 m_EnableEnhancedDeterminism: 0 m_EnableUnifiedHeightmaps: 1 m_DefaultMaxAngluarSpeed: 7 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/EditorBuildSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1045 &1 EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: [] m_configObjects: {} ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/EditorSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!159 &1 EditorSettings: m_ObjectHideFlags: 0 serializedVersion: 7 m_ExternalVersionControlSupport: Hidden Meta Files m_SerializationMode: 2 m_LineEndingsForNewScripts: 2 m_DefaultBehaviorMode: 0 m_PrefabRegularEnvironment: {fileID: 0} m_PrefabUIEnvironment: {fileID: 0} m_SpritePackerMode: 0 m_SpritePackerPaddingPower: 1 m_EtcTextureCompressorBehavior: 1 m_EtcTextureFastCompressor: 1 m_EtcTextureNormalCompressor: 2 m_EtcTextureBestCompressor: 4 m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp m_ProjectGenerationRootNamespace: m_CollabEditorSettings: inProgressEnabled: 1 m_EnableTextureStreamingInEditMode: 0 m_EnableTextureStreamingInPlayMode: 1 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/GraphicsSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!30 &1 GraphicsSettings: m_ObjectHideFlags: 0 serializedVersion: 12 m_Deferred: m_Mode: 1 m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} m_DeferredReflections: m_Mode: 1 m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} m_ScreenSpaceShadows: m_Mode: 1 m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} m_LegacyDeferred: m_Mode: 1 m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} m_DepthNormals: m_Mode: 1 m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} m_MotionVectors: m_Mode: 1 m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} m_LightHalo: m_Mode: 1 m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} m_LensFlare: m_Mode: 1 m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} m_AlwaysIncludedShaders: - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_CustomRenderPipeline: {fileID: 0} m_TransparencySortMode: 0 m_TransparencySortAxis: {x: 0, y: 0, z: 1} m_DefaultRenderingPath: 1 m_DefaultMobileRenderingPath: 1 m_TierSettings: [] m_LightmapStripping: 0 m_FogStripping: 0 m_InstancingStripping: 0 m_LightmapKeepPlain: 1 m_LightmapKeepDirCombined: 1 m_LightmapKeepDynamicPlain: 1 m_LightmapKeepDynamicDirCombined: 1 m_LightmapKeepShadowMask: 1 m_LightmapKeepSubtractive: 1 m_FogKeepLinear: 1 m_FogKeepExp: 1 m_FogKeepExp2: 1 m_AlbedoSwatchInfos: [] m_LightsUseLinearIntensity: 0 m_LightsUseColorTemperature: 0 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/InputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!13 &1 InputManager: m_ObjectHideFlags: 0 serializedVersion: 2 m_Axes: - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: left positiveButton: right altNegativeButton: a altPositiveButton: d gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: down positiveButton: up altNegativeButton: s altPositiveButton: w gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left ctrl altNegativeButton: altPositiveButton: mouse 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left alt altNegativeButton: altPositiveButton: mouse 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left shift altNegativeButton: altPositiveButton: mouse 2 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: space altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse X descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse Y descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Mouse ScrollWheel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 2 joyNum: 0 - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 0 type: 2 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 1 type: 2 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 0 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 1 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 2 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 3 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: return altNegativeButton: altPositiveButton: joystick button 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: enter altNegativeButton: altPositiveButton: space gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Cancel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: escape altNegativeButton: altPositiveButton: joystick button 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/MemorySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!387306366 &1 MemorySettings: m_ObjectHideFlags: 0 m_EditorMemorySettings: m_MainAllocatorBlockSize: -1 m_ThreadAllocatorBlockSize: -1 m_MainGfxBlockSize: -1 m_ThreadGfxBlockSize: -1 m_CacheBlockSize: -1 m_TypetreeBlockSize: -1 m_ProfilerBlockSize: -1 m_ProfilerEditorBlockSize: -1 m_BucketAllocatorGranularity: -1 m_BucketAllocatorBucketsCount: -1 m_BucketAllocatorBlockSize: -1 m_BucketAllocatorBlockCount: -1 m_ProfilerBucketAllocatorGranularity: -1 m_ProfilerBucketAllocatorBucketsCount: -1 m_ProfilerBucketAllocatorBlockSize: -1 m_ProfilerBucketAllocatorBlockCount: -1 m_TempAllocatorSizeMain: -1 m_JobTempAllocatorBlockSize: -1 m_BackgroundJobTempAllocatorBlockSize: -1 m_JobTempAllocatorReducedBlockSize: -1 m_TempAllocatorSizeGIBakingWorker: -1 m_TempAllocatorSizeNavMeshWorker: -1 m_TempAllocatorSizeAudioWorker: -1 m_TempAllocatorSizeCloudWorker: -1 m_TempAllocatorSizeGfx: -1 m_TempAllocatorSizeJobWorker: -1 m_TempAllocatorSizeBackgroundWorker: -1 m_TempAllocatorSizePreloadManager: -1 m_PlatformMemorySettings: {} ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/NavMeshAreas.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!126 &1 NavMeshProjectSettings: m_ObjectHideFlags: 0 serializedVersion: 2 areas: - name: Walkable cost: 1 - name: Not Walkable cost: 1 - name: Jump cost: 2 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 m_LastAgentTypeID: -887442657 m_Settings: - serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.75 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 accuratePlacement: 0 debug: m_Flags: 0 m_SettingNames: - Humanoid ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/PackageManagerSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &1 MonoBehaviour: m_ObjectHideFlags: 61 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} m_Name: m_EditorClassIdentifier: m_EnablePreReleasePackages: 0 m_EnablePackageDependencies: 0 m_AdvancedSettingsExpanded: 1 m_ScopedRegistriesSettingsExpanded: 1 m_SeeAllPackageVersions: 0 oneTimeWarningShown: 0 m_Registries: - m_Id: main m_Name: m_Url: https://packages.unity.com m_Scopes: [] m_IsDefault: 1 m_Capabilities: 7 m_ConfigSource: 0 m_UserSelectedRegistryName: m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: m_Modified: 0 m_ErrorMessage: m_UserModificationsInstanceId: -856 m_OriginalInstanceId: -858 m_LoadAssets: 0 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/Physics2DSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!19 &1 Physics2DSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_Gravity: {x: 0, y: -9.81} m_DefaultMaterial: {fileID: 0} m_VelocityIterations: 8 m_PositionIterations: 3 m_VelocityThreshold: 1 m_MaxLinearCorrection: 0.2 m_MaxAngularCorrection: 8 m_MaxTranslationSpeed: 100 m_MaxRotationSpeed: 360 m_BaumgarteScale: 0.2 m_BaumgarteTimeOfImpactScale: 0.75 m_TimeToSleep: 0.5 m_LinearSleepTolerance: 0.01 m_AngularSleepTolerance: 2 m_DefaultContactOffset: 0.01 m_JobOptions: serializedVersion: 2 useMultithreading: 0 useConsistencySorting: 0 m_InterpolationPosesPerJob: 100 m_NewContactsPerJob: 30 m_CollideContactsPerJob: 100 m_ClearFlagsPerJob: 200 m_ClearBodyForcesPerJob: 200 m_SyncDiscreteFixturesPerJob: 50 m_SyncContinuousFixturesPerJob: 50 m_FindNearestContactsPerJob: 100 m_UpdateTriggerContactsPerJob: 100 m_IslandSolverCostThreshold: 100 m_IslandSolverBodyCostScale: 1 m_IslandSolverContactCostScale: 10 m_IslandSolverJointCostScale: 10 m_IslandSolverBodiesPerJob: 50 m_IslandSolverContactsPerJob: 50 m_AutoSimulation: 1 m_QueriesHitTriggers: 1 m_QueriesStartInColliders: 1 m_CallbacksOnDisable: 1 m_ReuseCollisionCallbacks: 0 m_AutoSyncTransforms: 0 m_AlwaysShowColliders: 0 m_ShowColliderSleep: 1 m_ShowColliderContacts: 0 m_ShowColliderAABB: 0 m_ContactArrowScale: 0.2 m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/PresetManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1386491679 &1 PresetManager: m_ObjectHideFlags: 0 m_DefaultList: [] ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/ProjectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 serializedVersion: 23 productGUID: 3cf05ef9cf0e9f44882ce8aa0f0daebe AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 AndroidEnableSustainedPerformanceMode: 0 defaultScreenOrientation: 4 targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 companyName: DefaultCompany productName: TestVSCodePackage defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} m_ShowUnitySplashScreen: 1 m_ShowUnitySplashLogo: 1 m_SplashScreenOverlayOpacity: 1 m_SplashScreenAnimation: 1 m_SplashScreenLogoStyle: 1 m_SplashScreenDrawMode: 0 m_SplashScreenBackgroundAnimationZoom: 1 m_SplashScreenLogoAnimationZoom: 1 m_SplashScreenBackgroundLandscapeAspect: 1 m_SplashScreenBackgroundPortraitAspect: 1 m_SplashScreenBackgroundLandscapeUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenBackgroundPortraitUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenLogos: [] m_VirtualRealitySplashScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0} defaultScreenWidth: 1024 defaultScreenHeight: 768 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 m_ActiveColorSpace: 0 m_MTRendering: 1 mipStripping: 0 numberOfMipsStripped: 0 m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 iosUseCustomAppBackgroundBehavior: 0 iosAllowHTTPDownload: 1 allowedAutorotateToPortrait: 1 allowedAutorotateToPortraitUpsideDown: 1 allowedAutorotateToLandscapeRight: 1 allowedAutorotateToLandscapeLeft: 1 useOSAutorotation: 1 use32BitDisplayBuffer: 1 preserveFramebufferAlpha: 0 disableDepthAndStencilBuffers: 0 androidStartInFullscreen: 1 androidRenderOutsideSafeArea: 0 androidUseSwappy: 0 androidBlitType: 0 androidResizableWindow: 0 androidDefaultWindowWidth: 1920 androidDefaultWindowHeight: 1080 androidMinimumWindowWidth: 400 androidMinimumWindowHeight: 300 androidFullscreenMode: 1 defaultIsNativeResolution: 1 macRetinaSupport: 1 runInBackground: 1 captureSingleScreen: 0 muteOtherAudioSources: 0 Prepare IOS For Recording: 0 Force IOS Speakers When Recording: 0 deferSystemGesturesMode: 0 hideHomeButton: 0 submitAnalytics: 1 usePlayerLog: 1 bakeCollisionMeshes: 0 forceSingleInstance: 0 useFlipModelSwapchain: 1 resizableWindow: 0 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games gpuSkinning: 1 xboxPIXTextureCapture: 0 xboxEnableAvatar: 0 xboxEnableKinect: 0 xboxEnableKinectAutoTracking: 0 xboxEnableFitness: 0 visibleInBackground: 1 allowFullscreenSwitch: 1 fullscreenMode: 1 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 xboxEnableGuest: 0 xboxEnablePIXSampling: 0 metalFramebufferOnly: 0 xboxOneResolution: 0 xboxOneSResolution: 0 xboxOneXResolution: 3 xboxOneMonoLoggingLevel: 0 xboxOneLoggingLevel: 1 xboxOneDisableEsram: 0 xboxOneEnableTypeOptimization: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 switchQueueControlMemory: 0 switchQueueComputeMemory: 262144 switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 switchNVNMaxPublicTextureIDCount: 0 switchNVNMaxPublicSamplerIDCount: 0 stadiaPresentMode: 0 stadiaTargetFramerate: 0 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 vulkanEnablePreTransform: 0 vulkanEnableLateAcquireNextImage: 0 vulkanEnableCommandBufferRecycling: 1 m_SupportedAspectRatios: 4:3: 1 5:4: 1 16:10: 1 16:9: 1 Others: 1 bundleVersion: 0.1 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 0 xboxOneEnable7thCore: 0 vrSettings: enable360StereoCapture: 0 isWsaHolographicRemotingEnabled: 0 enableFrameTimingStats: 0 enableOpenGLProfilerGPURecorders: 1 useHDRDisplay: 0 D3DHDRBitDepth: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 resolutionScalingMode: 0 resetResolutionOnWindowResize: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: Standalone: com.DefaultCompany.TestVSCodePackage buildNumber: Standalone: 0 iPhone: 0 tvOS: 0 overrideDefaultApplicationIdentifier: 0 AndroidBundleVersionCode: 1 AndroidMinSdkVersion: 22 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: stripEngineCode: 1 iPhoneStrippingLevel: 0 iPhoneScriptCallOptimization: 0 ForceInternetPermission: 0 ForceSDCardPermission: 0 CreateWallpaper: 0 APKExpansionFiles: 0 keepLoadedShadersAlive: 0 StripUnusedMeshComponents: 1 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 iOSTargetOSVersionString: 11.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 tvOSTargetOSVersionString: 11.0 uIPrerenderedIcon: 0 uIRequiresPersistentWiFi: 0 uIRequiresFullScreen: 1 uIStatusBarHidden: 1 uIExitOnSuspend: 0 uIStatusBarStyle: 0 appleTVSplashScreen: {fileID: 0} appleTVSplashScreen2x: {fileID: 0} tvOSSmallIconLayers: [] tvOSSmallIconLayers2x: [] tvOSLargeIconLayers: [] tvOSLargeIconLayers2x: [] tvOSTopShelfImageLayers: [] tvOSTopShelfImageLayers2x: [] tvOSTopShelfImageWideLayers: [] tvOSTopShelfImageWideLayers2x: [] iOSLaunchScreenType: 0 iOSLaunchScreenPortrait: {fileID: 0} iOSLaunchScreenLandscape: {fileID: 0} iOSLaunchScreenBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreenFillPct: 100 iOSLaunchScreenSize: 100 iOSLaunchScreenCustomXibPath: iOSLaunchScreeniPadType: 0 iOSLaunchScreeniPadImage: {fileID: 0} iOSLaunchScreeniPadBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreeniPadFillPct: 100 iOSLaunchScreeniPadSize: 100 iOSLaunchScreeniPadCustomXibPath: iOSLaunchScreenCustomStoryboardPath: iOSLaunchScreeniPadCustomStoryboardPath: iOSDeviceRequirements: [] iOSURLSchemes: [] macOSURLSchemes: [] iOSBackgroundModes: 0 iOSMetalForceHardShadows: 0 metalEditorSupport: 1 metalAPIValidation: 1 iOSRenderExtraFrameOnPause: 0 iosCopyPluginsCodeInsteadOfSymlink: 0 appleDeveloperTeamID: iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: iOSManualSigningProvisioningProfileType: 0 tvOSManualSigningProvisioningProfileType: 0 appleEnableAutomaticSigning: 0 iOSRequireARKit: 0 iOSAutomaticallyDetectAndAddCapabilities: 1 appleEnableProMotion: 0 shaderPrecisionModel: 0 clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea templatePackageId: com.unity.template.3d@1.0.8 templateDefaultScene: Assets/Scenes/SampleScene.unity useCustomMainManifest: 0 useCustomLauncherManifest: 0 useCustomMainGradleTemplate: 0 useCustomLauncherGradleManifest: 0 useCustomBaseGradleTemplate: 0 useCustomGradlePropertiesTemplate: 0 useCustomProguardFile: 0 AndroidTargetArchitectures: 5 AndroidTargetDevices: 0 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: '{inproject}: ' AndroidKeyaliasName: AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 0 AndroidIsGame: 1 AndroidEnableTango: 0 androidEnableBanner: 1 androidUseLowAccuracyLocation: 0 androidUseCustomKeystore: 0 m_AndroidBanners: - width: 320 height: 180 banner: {fileID: 0} androidGamepadSupportLevel: 0 chromeosInputEmulation: 1 AndroidMinifyWithR8: 0 AndroidMinifyRelease: 0 AndroidMinifyDebug: 0 AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 100 m_BuildTargetIcons: [] m_BuildTargetPlatformIcons: - m_BuildTarget: Android m_Icons: - m_Textures: [] m_Width: 432 m_Height: 432 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 324 m_Height: 324 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 216 m_Height: 216 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 162 m_Height: 162 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 108 m_Height: 108 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 81 m_Height: 81 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 0 m_SubKind: m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: tvOS m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: Android m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: iPhone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: WebGL m_StaticBatching: 0 m_DynamicBatching: 0 m_BuildTargetShaderSettings: [] m_BuildTargetGraphicsJobs: - m_BuildTarget: WindowsStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: MacStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: LinuxStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: AndroidPlayer m_GraphicsJobs: 0 - m_BuildTarget: iOSSupport m_GraphicsJobs: 0 - m_BuildTarget: PS4Player m_GraphicsJobs: 0 - m_BuildTarget: PS5Player m_GraphicsJobs: 0 - m_BuildTarget: XboxOnePlayer m_GraphicsJobs: 0 - m_BuildTarget: GameCoreXboxOneSupport m_GraphicsJobs: 0 - m_BuildTarget: GameCoreScarlettSupport m_GraphicsJobs: 0 - m_BuildTarget: Switch m_GraphicsJobs: 0 - m_BuildTarget: WebGLSupport m_GraphicsJobs: 0 - m_BuildTarget: MetroSupport m_GraphicsJobs: 0 - m_BuildTarget: AppleTVSupport m_GraphicsJobs: 0 - m_BuildTarget: BJMSupport m_GraphicsJobs: 0 - m_BuildTarget: LuminSupport m_GraphicsJobs: 0 - m_BuildTarget: CloudRendering m_GraphicsJobs: 0 - m_BuildTarget: EmbeddedLinux m_GraphicsJobs: 0 m_BuildTargetGraphicsJobMode: - m_BuildTarget: PS4Player m_GraphicsJobMode: 0 - m_BuildTarget: XboxOnePlayer m_GraphicsJobMode: 0 m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer m_APIs: 0b00000008000000 m_Automatic: 0 - m_BuildTarget: iOSSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: AppleTVSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: WebGLSupport m_APIs: 0b000000 m_Automatic: 1 m_BuildTargetVRSettings: - m_BuildTarget: Standalone m_Enabled: 0 m_Devices: - Oculus - OpenVR m_DefaultShaderChunkSizeInMB: 16 m_DefaultShaderChunkCount: 0 openGLRequireES31: 0 openGLRequireES31AEP: 0 openGLRequireES32: 0 m_TemplateCustomTags: {} mobileMTRendering: Android: 1 iPhone: 1 tvOS: 1 m_BuildTargetGroupLightmapEncodingQuality: [] m_BuildTargetGroupLightmapSettings: [] m_BuildTargetNormalMapEncoding: [] m_BuildTargetDefaultTextureCompressionFormat: [] playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 enableInternalProfiler: 0 logObjCUncaughtExceptions: 1 enableCrashReportAPI: 0 cameraUsageDescription: locationUsageDescription: microphoneUsageDescription: bluetoothUsageDescription: switchNMETAOverride: switchNetLibKey: switchSocketMemoryPoolSize: 6144 switchSocketAllocatorPoolSize: 128 switchSocketConcurrencyLimit: 14 switchScreenResolutionBehavior: 2 switchUseCPUProfiler: 0 switchUseGOLDLinker: 0 switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: switchTitleNames_0: switchTitleNames_1: switchTitleNames_2: switchTitleNames_3: switchTitleNames_4: switchTitleNames_5: switchTitleNames_6: switchTitleNames_7: switchTitleNames_8: switchTitleNames_9: switchTitleNames_10: switchTitleNames_11: switchTitleNames_12: switchTitleNames_13: switchTitleNames_14: switchTitleNames_15: switchPublisherNames_0: switchPublisherNames_1: switchPublisherNames_2: switchPublisherNames_3: switchPublisherNames_4: switchPublisherNames_5: switchPublisherNames_6: switchPublisherNames_7: switchPublisherNames_8: switchPublisherNames_9: switchPublisherNames_10: switchPublisherNames_11: switchPublisherNames_12: switchPublisherNames_13: switchPublisherNames_14: switchPublisherNames_15: switchIcons_0: {fileID: 0} switchIcons_1: {fileID: 0} switchIcons_2: {fileID: 0} switchIcons_3: {fileID: 0} switchIcons_4: {fileID: 0} switchIcons_5: {fileID: 0} switchIcons_6: {fileID: 0} switchIcons_7: {fileID: 0} switchIcons_8: {fileID: 0} switchIcons_9: {fileID: 0} switchIcons_10: {fileID: 0} switchIcons_11: {fileID: 0} switchIcons_12: {fileID: 0} switchIcons_13: {fileID: 0} switchIcons_14: {fileID: 0} switchIcons_15: {fileID: 0} switchSmallIcons_0: {fileID: 0} switchSmallIcons_1: {fileID: 0} switchSmallIcons_2: {fileID: 0} switchSmallIcons_3: {fileID: 0} switchSmallIcons_4: {fileID: 0} switchSmallIcons_5: {fileID: 0} switchSmallIcons_6: {fileID: 0} switchSmallIcons_7: {fileID: 0} switchSmallIcons_8: {fileID: 0} switchSmallIcons_9: {fileID: 0} switchSmallIcons_10: {fileID: 0} switchSmallIcons_11: {fileID: 0} switchSmallIcons_12: {fileID: 0} switchSmallIcons_13: {fileID: 0} switchSmallIcons_14: {fileID: 0} switchSmallIcons_15: {fileID: 0} switchManualHTML: switchAccessibleURLs: switchLegalInformation: switchMainThreadStackSize: 1048576 switchPresenceGroupId: switchLogoHandling: 0 switchReleaseVersion: 0 switchDisplayVersion: 1.0.0 switchStartupUserAccount: 0 switchTouchScreenUsage: 0 switchSupportedLanguagesMask: 0 switchLogoType: 0 switchApplicationErrorCodeCategory: switchUserAccountSaveDataSize: 0 switchUserAccountSaveDataJournalSize: 0 switchApplicationAttribute: 0 switchCardSpecSize: -1 switchCardSpecClock: -1 switchRatingsMask: 0 switchRatingsInt_0: 0 switchRatingsInt_1: 0 switchRatingsInt_2: 0 switchRatingsInt_3: 0 switchRatingsInt_4: 0 switchRatingsInt_5: 0 switchRatingsInt_6: 0 switchRatingsInt_7: 0 switchRatingsInt_8: 0 switchRatingsInt_9: 0 switchRatingsInt_10: 0 switchRatingsInt_11: 0 switchRatingsInt_12: 0 switchLocalCommunicationIds_0: switchLocalCommunicationIds_1: switchLocalCommunicationIds_2: switchLocalCommunicationIds_3: switchLocalCommunicationIds_4: switchLocalCommunicationIds_5: switchLocalCommunicationIds_6: switchLocalCommunicationIds_7: switchParentalControl: 0 switchAllowsScreenshot: 1 switchAllowsVideoCapturing: 1 switchAllowsRuntimeAddOnContentInstall: 0 switchDataLossConfirmation: 0 switchUserAccountLockEnabled: 0 switchSystemResourceMemory: 16777216 switchSupportedNpadStyles: 3 switchNativeFsCacheSize: 32 switchIsHoldTypeHorizontal: 0 switchSupportedNpadCount: 8 switchSocketConfigEnabled: 0 switchTcpInitialSendBufferSize: 32 switchTcpInitialReceiveBufferSize: 64 switchTcpAutoSendBufferSizeMax: 256 switchTcpAutoReceiveBufferSizeMax: 256 switchUdpSendBufferSize: 9 switchUdpReceiveBufferSize: 42 switchSocketBufferEfficiency: 4 switchSocketInitializeEnabled: 1 switchNetworkInterfaceManagerInitializeEnabled: 1 switchPlayerConnectionEnabled: 1 switchUseNewStyleFilepaths: 0 switchUseMicroSleepForYield: 1 switchEnableRamDiskSupport: 0 switchMicroSleepForYieldTime: 25 switchRamDiskSpaceSize: 12 ps4NPAgeRating: 12 ps4NPTitleSecret: ps4NPTrophyPackPath: ps4ParentalLevel: 11 ps4ContentID: ED1633-NPXX51362_00-0000000000000000 ps4Category: 0 ps4MasterVersion: 01.00 ps4AppVersion: 01.00 ps4AppType: 0 ps4ParamSfxPath: ps4VideoOutPixelFormat: 0 ps4VideoOutInitialWidth: 1920 ps4VideoOutBaseModeInitialWidth: 1920 ps4VideoOutReprojectionRate: 60 ps4PronunciationXMLPath: ps4PronunciationSIGPath: ps4BackgroundImagePath: ps4StartupImagePath: ps4StartupImagesFolder: ps4IconImagesFolder: ps4SaveDataImagePath: ps4SdkOverride: ps4BGMPath: ps4ShareFilePath: ps4ShareOverlayImagePath: ps4PrivacyGuardImagePath: ps4ExtraSceSysFile: ps4NPtitleDatPath: ps4RemotePlayKeyAssignment: -1 ps4RemotePlayKeyMappingDir: ps4PlayTogetherPlayerCount: 0 ps4EnterButtonAssignment: 1 ps4ApplicationParam1: 0 ps4ApplicationParam2: 0 ps4ApplicationParam3: 0 ps4ApplicationParam4: 0 ps4DownloadDataSize: 0 ps4GarlicHeapSize: 2048 ps4ProGarlicHeapSize: 2560 playerPrefsMaxSize: 32768 ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ ps4pnSessions: 1 ps4pnPresence: 1 ps4pnFriends: 1 ps4pnGameCustomData: 1 playerPrefsSupport: 0 enableApplicationExit: 0 resetTempFolder: 1 restrictedAudioUsageRights: 0 ps4UseResolutionFallback: 0 ps4ReprojectionSupport: 0 ps4UseAudio3dBackend: 0 ps4UseLowGarlicFragmentationMode: 1 ps4SocialScreenEnabled: 0 ps4ScriptOptimizationLevel: 0 ps4Audio3dVirtualSpeakerCount: 14 ps4attribCpuUsage: 0 ps4PatchPkgPath: ps4PatchLatestPkgPath: ps4PatchChangeinfoPath: ps4PatchDayOne: 0 ps4attribUserManagement: 0 ps4attribMoveSupport: 0 ps4attrib3DSupport: 0 ps4attribShareSupport: 0 ps4attribExclusiveVR: 0 ps4disableAutoHideSplash: 0 ps4videoRecordingFeaturesUsed: 0 ps4contentSearchFeaturesUsed: 0 ps4CompatibilityPS5: 0 ps4AllowPS5Detection: 0 ps4GPU800MHz: 1 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] ps4attribVROutputEnabled: 0 monoEnv: splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0} blurSplashScreenBackground: 1 spritePackerPolicy: webGLMemorySize: 16 webGLExceptionSupport: 1 webGLNameFilesAsHashes: 0 webGLDataCaching: 1 webGLDebugSymbols: 0 webGLEmscriptenArgs: webGLModulesDirectory: webGLTemplate: APPLICATION:Default webGLAnalyzeBuildSize: 0 webGLUseEmbeddedResources: 0 webGLCompressionFormat: 1 webGLWasmArithmeticExceptions: 0 webGLLinkerTarget: 1 webGLThreadsSupport: 0 webGLDecompressionFallback: 0 webGLPowerPreference: 2 scriptingDefineSymbols: Standalone: THISDEFINEISEXTREMELYUNLIKELYTOEXISTBYDEFAULT;ALSOTHISONE;FINALLYTHISONE additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: Standalone: 0 il2cppCompilerConfiguration: {} managedStrippingLevel: {} incrementalIl2cppBuild: {} suppressCommonWarnings: 1 allowUnsafeCode: 0 useDeterministicCompilation: 1 enableRoslynAnalyzers: 1 selectedPlatform: 0 additionalIl2CppArgs: scriptingRuntimeVersion: 1 gcIncremental: 0 assemblyVersionValidation: 1 gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: Standalone: 6 m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: Template_3D metroPackageVersion: metroCertificatePath: metroCertificatePassword: metroCertificateSubject: metroCertificateIssuer: metroCertificateNotAfter: 0000000000000000 metroApplicationDescription: Template_3D wsaImages: {} metroTileShortName: metroTileShowName: 0 metroMediumTileShowName: 0 metroLargeTileShowName: 0 metroWideTileShowName: 0 metroSupportStreamingInstall: 0 metroLastRequiredScene: 0 metroDefaultTileSize: 1 metroTileForegroundText: 2 metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} metroSplashScreenUseBackgroundColor: 0 platformCapabilities: {} metroTargetDeviceFamilies: {} metroFTAName: metroFTAFileTypes: [] metroProtocolName: vcxProjDefaultLanguage: XboxOneProductId: XboxOneUpdateKey: XboxOneSandboxId: XboxOneContentId: XboxOneTitleId: XboxOneSCId: XboxOneGameOsOverridePath: XboxOnePackagingOverridePath: XboxOneAppManifestOverridePath: XboxOneVersion: 1.0.0.0 XboxOnePackageEncryption: 0 XboxOnePackageUpdateGranularity: 2 XboxOneDescription: XboxOneLanguage: - enus XboxOneCapability: [] XboxOneGameRating: {} XboxOneIsContentPackage: 0 XboxOneEnhancedXboxCompatibilityMode: 0 XboxOneEnableGPUVariability: 0 XboxOneSockets: {} XboxOneSplashScreen: {fileID: 0} XboxOneAllowedProductIds: [] XboxOnePersistentLocalStorageSize: 0 XboxOneXTitleMemory: 8 XboxOneOverrideIdentityName: XboxOneOverrideIdentityPublisher: vrEditorSettings: {} cloudServicesEnabled: UNet: 1 luminIcon: m_Name: m_ModelFolderPath: m_PortalFolderPath: luminCert: m_CertPath: m_SignPackage: 1 luminIsChannelApp: 0 luminVersion: m_VersionCode: 1 m_VersionName: apiCompatibilityLevel: 6 activeInputHandler: 0 windowsGamepadBackendHint: 0 cloudProjectId: framebufferDepthMemorylessMode: 0 qualitySettingsNames: [] projectName: organizationId: cloudEnabled: 0 legacyClampBlendShapeWeights: 1 playerDataPath: forceSRGBBlit: 1 virtualTexturingSupportEnabled: 0 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/ProjectVersion.txt ================================================ m_EditorVersion: 2021.3.35f1 m_EditorVersionWithRevision: 2021.3.35f1 (157b46ce122a) ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/QualitySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!47 &1 QualitySettings: m_ObjectHideFlags: 0 serializedVersion: 5 m_CurrentQuality: 5 m_QualitySettings: - serializedVersion: 2 name: Very Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 15 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 1 textureQuality: 1 anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 0 lodBias: 0.3 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 2 textureQuality: 0 anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 0 lodBias: 0.4 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 16 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Medium pixelLightCount: 1 shadows: 1 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 2 textureQuality: 0 anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 1 lodBias: 0.7 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 64 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: High pixelLightCount: 2 shadows: 2 shadowResolution: 1 shadowProjection: 1 shadowCascades: 2 shadowDistance: 40 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 2 textureQuality: 0 anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 1 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 256 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Very High pixelLightCount: 3 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 2 shadowDistance: 70 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 4 textureQuality: 0 anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 1.5 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 1024 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Ultra pixelLightCount: 4 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 4 shadowDistance: 150 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 4 textureQuality: 0 anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 2 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4096 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] m_PerPlatformDefaultQuality: Android: 2 Lumin: 5 Nintendo 3DS: 5 Nintendo Switch: 5 PS4: 5 PSP2: 2 Standalone: 5 WebGL: 3 Windows Store Apps: 5 XboxOne: 5 iPhone: 2 tvOS: 2 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/TagManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!78 &1 TagManager: serializedVersion: 2 tags: [] layers: - Default - TransparentFX - Ignore Raycast - - Water - UI - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - name: Default uniqueID: 0 locked: 0 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/TimeManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!5 &1 TimeManager: m_ObjectHideFlags: 0 Fixed Timestep: 0.02 Maximum Allowed Timestep: 0.33333334 m_TimeScale: 1 Maximum Particle Timestep: 0.03 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/UnityConnectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!310 &1 UnityConnectSettings: m_ObjectHideFlags: 0 serializedVersion: 1 m_Enabled: 0 m_TestMode: 0 m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events m_ConfigUrl: https://config.uca.cloud.unity3d.com m_DashboardUrl: https://dashboard.unity3d.com m_TestInitMode: 0 CrashReportingSettings: m_EventUrl: https://perf-events.cloud.unity3d.com m_Enabled: 0 m_LogBufferSize: 10 m_CaptureEditorExceptions: 1 UnityPurchasingSettings: m_Enabled: 0 m_TestMode: 0 UnityAnalyticsSettings: m_Enabled: 0 m_TestMode: 0 m_InitializeOnStartup: 1 m_PackageRequiringCoreStatsPresent: 0 UnityAdsSettings: m_Enabled: 0 m_InitializeOnStartup: 1 m_TestMode: 0 m_IosGameId: m_AndroidGameId: m_GameIds: {} m_GameId: PerformanceReportingSettings: m_Enabled: 0 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/VFXManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!937362698 &1 VFXManager: m_ObjectHideFlags: 0 m_IndirectShader: {fileID: 0} m_CopyBufferShader: {fileID: 0} m_SortShader: {fileID: 0} m_RenderPipeSettingsPath: m_FixedTimeStep: 0.016666668 m_MaxDeltaTime: 0.05 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/VersionControlSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!890905787 &1 VersionControlSettings: m_ObjectHideFlags: 0 m_Mode: Visible Meta Files m_CollabEditorSettings: inProgressEnabled: 1 ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/XRSettings.asset ================================================ { "m_SettingKeys": [ "VR Device Disabled", "VR Device User Alert" ], "m_SettingValues": [ "False", "False" ] } ================================================ FILE: Projects/2021.3 LTS/ProjectSettings/boot.config ================================================ ================================================ FILE: Projects/2021.3 LTS/UserSettings/EditorUserSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!162 &1 EditorUserSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_ConfigSettings: RecentlyUsedSceneGuid-0: value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a flags: 0 vcSharedLogLevel: value: 0d5e400f0650 flags: 0 m_VCAutomaticAdd: 1 m_VCDebugCom: 0 m_VCDebugCmd: 0 m_VCDebugOut: 0 m_SemanticMergeMode: 2 m_DesiredImportWorkerCount: 4 m_StandbyImportWorkerCount: 2 m_IdleImportWorkerShutdownDelay: 60000 m_VCShowFailedCheckout: 1 m_VCOverwriteFailedCheckoutAssets: 1 m_VCProjectOverlayIcons: 1 m_VCHierarchyOverlayIcons: 1 m_VCOtherOverlayIcons: 1 m_VCAllowAsyncUpdate: 1 m_ArtifactGarbageCollection: 1 ================================================ FILE: Projects/2021.3 LTS/UserSettings/Search.settings ================================================ {} ================================================ FILE: Projects/2022.2 Latest/Assets/Analyzer.meta ================================================ fileFormatVersion: 2 guid: 8d0bad0c5e95e1244838d55955beac94 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Custom Asmdef/InAssetFolder.asmdef ================================================ { "name": "InAssetFolder", "rootNamespace": "", "references": [], "includePlatforms": [], "excludePlatforms": [], "allowUnsafeCode": false, "overrideReferences": false, "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], "versionDefines": [], "noEngineReferences": false } ================================================ FILE: Projects/2022.2 Latest/Assets/Custom Asmdef/InAssetFolder.asmdef.meta ================================================ fileFormatVersion: 2 guid: 02a83d3e11a5a9745b46ca562b00be0e AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Custom Asmdef/TimTam.cs ================================================ using System.Collections; using System.Collections.Generic; using UnityEngine; public class TimTam : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } } ================================================ FILE: Projects/2022.2 Latest/Assets/Custom Asmdef/TimTam.cs.meta ================================================ fileFormatVersion: 2 guid: 8569e12c481432146a309f64fab7c80c MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Custom Asmdef.meta ================================================ fileFormatVersion: 2 guid: 051e38478c4283c4ea841b4cd457dae4 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Editor/CSProjAssetTests.cs ================================================ using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text.RegularExpressions; using System.Threading; using NUnit.Framework; using UnityEditor; using UnityEngine; using UnityEngine.TestTools; namespace VSCodeEditor.Runtime_spec.CSProject { [TestFixture] [Serializable] public abstract class CleanupTest { [SerializeField] protected IGenerator m_ProjectGeneration; [SerializeField] readonly List<string> m_GeneratedFiles = new(); [SerializeField] readonly List<string> m_DirectoriesToDelete = new(); [SerializeField] protected string m_CsProjPath; [SerializeField] protected DateTime m_LastWritten; protected const string k_EmptyCSharpScript = @" using UnityEngine; public class SimpleCSharpScript : MonoBehaviour { void Start() { } }"; [SetUp] public void SetUp() { var projectDirectory = Directory.GetParent(Application.dataPath).FullName; m_ProjectGeneration = new ProjectGeneration(projectDirectory); } [UnityTearDown] protected virtual IEnumerator TearDown() { foreach (var pathToDelete in m_GeneratedFiles) { if (File.Exists(pathToDelete)) { File.Delete(pathToDelete); } if (File.Exists(pathToDelete + ".meta")) { File.Delete(pathToDelete + ".meta"); } } foreach (var directoryToDelete in m_DirectoriesToDelete) { if (Directory.Exists(directoryToDelete)) { Directory.Delete(directoryToDelete, true); File.Delete(directoryToDelete + ".meta"); } } m_GeneratedFiles.Clear(); m_DirectoriesToDelete.Clear(); yield return new RecompileScripts(false); } protected void CopyScriptToAssetsFolder(string assetPath, string fileName, string content) { var targetFile = Path.Combine(assetPath, fileName); m_GeneratedFiles.Add(targetFile); File.WriteAllText(targetFile, content); } protected void CreateFolder(string path) { m_DirectoriesToDelete.Add(path); Directory.CreateDirectory(path); } } public class BuildTarget : CleanupTest { [SerializeField] UnityEditor.BuildTarget m_Original; protected override IEnumerator TearDown() { EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, m_Original ); return base.TearDown(); } [UnityPlatform(RuntimePlatform.WindowsEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_Windows() { m_Original = UnityEditor.BuildTarget.StandaloneWindows64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", () => { } ); } [UnityPlatform(RuntimePlatform.OSXEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_MacOSX() { m_Original = UnityEditor.BuildTarget.StandaloneOSX; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", () => { } ); } [UnityPlatform(RuntimePlatform.LinuxEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_Linux() { m_Original = UnityEditor.BuildTarget.StandaloneLinux64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", () => { } ); } [UnityPlatform(RuntimePlatform.WindowsEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Windows() { m_Original = UnityEditor.BuildTarget.StandaloneWindows64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } [UnityPlatform(RuntimePlatform.OSXEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_MacOSX() { m_Original = UnityEditor.BuildTarget.StandaloneOSX; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } [UnityPlatform(RuntimePlatform.LinuxEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Linux() { m_Original = UnityEditor.BuildTarget.StandaloneLinux64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } IEnumerator AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget platformTarget, string platformDefine, UnityEditor.BuildTarget changeTarget, string changeDefine, Action action ) { EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, platformTarget ); CopyScriptToAssetsFolder( Application.dataPath, "SimpleCSharpScript.cs", k_EmptyCSharpScript ); yield return new RecompileScripts(true); m_ProjectGeneration.Sync(); var dir = Directory.GetParent(Application.dataPath).FullName; m_CsProjPath = Path.Combine(dir, "Assembly-CSharp.csproj"); AssertProjectContainsDefine(m_CsProjPath, platformDefine); action(); m_LastWritten = DateTime.Now.AddSeconds(-1); File.SetLastWriteTime(m_CsProjPath, m_LastWritten); //switch target to another one than the standalone target for the current platform EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, changeTarget ); yield return new RecompileScripts(true); m_ProjectGeneration.Sync(); WaitForCondition(() => File.GetLastWriteTime(m_CsProjPath) > m_LastWritten); AssertProjectContainsDefine(m_CsProjPath, changeDefine); yield return null; } static void AssertProjectContainsDefine(string csProjPath, string expectedDefine) { var content = File.ReadAllText(csProjPath); Assert.IsTrue( Regex.IsMatch(content, $"<DefineConstants>.*;{expectedDefine}.*</DefineConstants>") ); } delegate bool Condition(); static void WaitForCondition(Condition condition) { var started = DateTime.Now; while (!condition()) { if (DateTime.Now - started > k_Timeout) throw new TimeoutException( $"Timeout while waiting for c# project to be rewritten for {k_Timeout.TotalSeconds} seconds" ); Thread.Sleep(10); } } static readonly TimeSpan k_Timeout = TimeSpan.FromSeconds(5); } } ================================================ FILE: Projects/2022.2 Latest/Assets/Editor/CSProjAssetTests.cs.meta ================================================ fileFormatVersion: 2 guid: 09b6f746cf9797a4a97e259d45a38ec1 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Editor/RecompileScripts.cs ================================================ using System; using System.Collections; using UnityEditor; using UnityEngine.TestTools; public class RecompileScripts : IEditModeTestYieldInstruction { public RecompileScripts() : this(true) { } public RecompileScripts(bool expectScriptCompilation) : this(expectScriptCompilation, true) { } public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess) { ExpectScriptCompilation = expectScriptCompilation; ExpectScriptCompilationSuccess = expectScriptCompilationSuccess; ExpectDomainReload = true; } public bool ExpectDomainReload { get; } public bool ExpectedPlaymodeState { get; } public bool ExpectScriptCompilation { get; } public bool ExpectScriptCompilationSuccess { get; } public static RecompileScripts Current { get; private set; } public IEnumerator Perform() { Current = this; AssetDatabase.Refresh(); if (ExpectScriptCompilation && !EditorApplication.isCompiling) { Current = null; throw new Exception("Editor does not need to recompile scripts"); } EditorApplication.UnlockReloadAssemblies(); while (EditorApplication.isCompiling) { yield return null; } Current = null; if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed) { EditorApplication.LockReloadAssemblies(); throw new Exception("Script compilation failed"); } } } ================================================ FILE: Projects/2022.2 Latest/Assets/Editor/RecompileScripts.cs.meta ================================================ fileFormatVersion: 2 guid: 35e5ed6756833644c83c24382f01236b MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Editor.meta ================================================ fileFormatVersion: 2 guid: 8a06cae000d3e064aa6a3530ef8bbabc folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/KoalaExtensionTest.koala ================================================ ================================================ FILE: Projects/2022.2 Latest/Assets/KoalaExtensionTest.koala.meta ================================================ fileFormatVersion: 2 guid: 9972cb3bb6a98ab469a9399f8bc337c6 DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Scenes/SampleScene.unity ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!29 &1 OcclusionCullingSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_OcclusionBakeSettings: smallestOccluder: 5 smallestHole: 0.25 backfaceThreshold: 100 m_SceneGUID: 00000000000000000000000000000000 m_OcclusionCullingData: {fileID: 0} --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 serializedVersion: 9 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 m_FogDensity: 0.01 m_LinearFogStart: 0 m_LinearFogEnd: 300 m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} m_AmbientIntensity: 1 m_AmbientMode: 0 m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} m_HaloStrength: 0.5 m_FlareStrength: 1 m_FlareFadeSpeed: 3 m_HaloTexture: {fileID: 0} m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} m_DefaultReflectionMode: 0 m_DefaultReflectionResolution: 128 m_ReflectionBounces: 1 m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 705507994} m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 serializedVersion: 11 m_GIWorkflowMode: 0 m_GISettings: serializedVersion: 2 m_BounceScale: 1 m_IndirectOutputScale: 1 m_AlbedoBoost: 1 m_TemporalCoherenceThreshold: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: serializedVersion: 10 m_Resolution: 2 m_BakeResolution: 40 m_AtlasSize: 1024 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 m_TextureCompression: 1 m_FinalGather: 0 m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 256 m_ReflectionCompression: 2 m_MixedBakeMode: 2 m_BakeBackend: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVRBounces: 2 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 m_PVRFilteringMode: 1 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 m_ShowResolutionOverlay: 1 m_LightingDataAsset: {fileID: 0} m_UseShadowmask: 1 --- !u!196 &4 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.4 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 accuratePlacement: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} --- !u!1 &705507993 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 705507995} - component: {fileID: 705507994} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!108 &705507994 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 705507993} m_Enabled: 1 serializedVersion: 8 m_Type: 1 m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} m_Intensity: 1 m_Range: 10 m_SpotAngle: 30 m_CookieSize: 10 m_Shadows: m_Type: 2 m_Resolution: -1 m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 m_NormalBias: 0.4 m_NearPlane: 0.2 m_Cookie: {fileID: 0} m_DrawHalo: 0 m_Flare: {fileID: 0} m_RenderMode: 0 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_Lightmapping: 1 m_LightShadowCasterMode: 0 m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 m_ColorTemperature: 6570 m_UseColorTemperature: 0 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &705507995 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 705507993} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &963194225 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 963194228} - component: {fileID: 963194227} - component: {fileID: 963194226} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!81 &963194226 AudioListener: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 --- !u!20 &963194227 Camera: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} m_projectionMatrixMode: 1 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} m_GateFitMode: 2 m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 near clip plane: 0.3 far clip plane: 1000 field of view: 60 orthographic: 0 orthographic size: 5 m_Depth: -1 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_RenderingPath: -1 m_TargetTexture: {fileID: 0} m_TargetDisplay: 0 m_TargetEye: 3 m_HDR: 1 m_AllowMSAA: 1 m_AllowDynamicResolution: 0 m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 --- !u!4 &963194228 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ================================================ FILE: Projects/2022.2 Latest/Assets/Scenes/SampleScene.unity.meta ================================================ fileFormatVersion: 2 guid: 9fc0d4010bbf28b4594072e72b8655ab DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Scenes/SampleSceneSettings.lighting ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!850595691 &4890085278179872738 LightingSettings: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: SampleSceneSettings serializedVersion: 2 m_GIWorkflowMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_RealtimeEnvironmentLighting: 1 m_BounceScale: 1 m_AlbedoBoost: 1 m_IndirectOutputScale: 1 m_UsingShadowmask: 1 m_BakeBackend: 1 m_LightmapMaxSize: 1024 m_BakeResolution: 40 m_Padding: 2 m_TextureCompression: 1 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 m_ExtractAO: 0 m_MixedBakeMode: 2 m_LightmapsBakeMode: 1 m_FilterMode: 1 m_LightmapParameters: {fileID: 0} m_ExportTrainingData: 0 m_TrainingDataDestination: TrainingData m_RealtimeResolution: 2 m_ForceWhiteAlbedo: 0 m_ForceUpdates: 0 m_FinalGather: 0 m_FinalGatherRayCount: 256 m_FinalGatherFiltering: 1 m_PVRCulling: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVREnvironmentSampleCount: 500 m_PVREnvironmentReferencePointCount: 2048 m_LightProbeSampleCountMultiplier: 4 m_PVRBounces: 2 m_PVRRussianRouletteStartBounce: 2 m_PVREnvironmentMIS: 0 m_PVRFilteringMode: 2 m_PVRDenoiserTypeDirect: 0 m_PVRDenoiserTypeIndirect: 0 m_PVRDenoiserTypeAO: 0 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 ================================================ FILE: Projects/2022.2 Latest/Assets/Scenes/SampleSceneSettings.lighting.meta ================================================ fileFormatVersion: 2 guid: a0eb4567ffade2f47b9fc6e006e4ce91 NativeFormatImporter: externalObjects: {} mainObjectFileID: 0 userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Scenes.meta ================================================ fileFormatVersion: 2 guid: 2c4ecd2c3fea48442bfed0ebc5181951 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Assets/Test.cs ================================================ using UnityEngine; public class Test : MonoBehaviour { void Start() { TestCode.TestClass.TestMethod(); } } ================================================ FILE: Projects/2022.2 Latest/Assets/Test.cs.meta ================================================ fileFormatVersion: 2 guid: 8dc025fb3786c0b41a0bb4360be46b9a MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.2 Latest/Packages/manifest.json ================================================ { "disableProjectUpdate": true, "dependencies": { "com.tsk.ide.vscode": "file:../../../com.tsk.ide.vscode", "com.tsk.ide.vscodetests": "file:../../../com.tsk.ide.vscodetests", "com.unity.test-framework": "1.3.3" } } ================================================ FILE: Projects/2022.2 Latest/Packages/packages-lock.json ================================================ { "dependencies": { "com.tsk.ide.vscode": { "version": "file:../../../com.tsk.ide.vscode", "depth": 0, "source": "local", "dependencies": {} }, "com.tsk.ide.vscodetests": { "version": "file:../../../com.tsk.ide.vscodetests", "depth": 0, "source": "local", "dependencies": { "nuget.moq": "1.0.0" } }, "com.unity.ext.nunit": { "version": "2.0.3", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.test-framework": { "version": "1.3.3", "depth": 0, "source": "registry", "dependencies": { "com.unity.ext.nunit": "2.0.3", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" }, "url": "https://packages.unity.com" }, "nuget.castle-core": { "version": "1.0.1", "depth": 2, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "nuget.moq": { "version": "1.0.0", "depth": 1, "source": "registry", "dependencies": { "nuget.castle-core": "1.0.1" }, "url": "https://packages.unity.com" }, "com.unity.modules.imgui": { "version": "1.0.0", "depth": 1, "source": "builtin", "dependencies": {} }, "com.unity.modules.jsonserialize": { "version": "1.0.0", "depth": 1, "source": "builtin", "dependencies": {} } } } ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/AudioManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!11 &1 AudioManager: m_ObjectHideFlags: 0 m_Volume: 1 Rolloff Scale: 1 Doppler Factor: 1 Default Speaker Mode: 2 m_SampleRate: 0 m_DSPBufferSize: 1024 m_VirtualVoiceCount: 512 m_RealVoiceCount: 32 m_SpatializerPlugin: m_AmbisonicDecoderPlugin: m_DisableAudio: 0 m_VirtualizeEffects: 1 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/ClusterInputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!236 &1 ClusterInputManager: m_ObjectHideFlags: 0 m_Inputs: [] ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/DynamicsManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!55 &1 PhysicsManager: m_ObjectHideFlags: 0 serializedVersion: 11 m_Gravity: {x: 0, y: -9.81, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 m_SleepThreshold: 0.005 m_DefaultContactOffset: 0.01 m_DefaultSolverIterations: 6 m_DefaultSolverVelocityIterations: 1 m_QueriesHitBackfaces: 0 m_QueriesHitTriggers: 1 m_EnableAdaptiveForce: 0 m_ClothInterCollisionDistance: 0 m_ClothInterCollisionStiffness: 0 m_ContactsGeneration: 1 m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_AutoSimulation: 1 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 0 m_ClothInterCollisionSettingsToggle: 0 m_ContactPairsMode: 0 m_BroadphaseType: 0 m_WorldBounds: m_Center: {x: 0, y: 0, z: 0} m_Extent: {x: 250, y: 250, z: 250} m_WorldSubdivisions: 8 m_FrictionType: 0 m_EnableEnhancedDeterminism: 0 m_EnableUnifiedHeightmaps: 1 m_DefaultMaxAngluarSpeed: 7 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/EditorBuildSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1045 &1 EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: [] m_configObjects: {} ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/EditorSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!159 &1 EditorSettings: m_ObjectHideFlags: 0 serializedVersion: 7 m_ExternalVersionControlSupport: Hidden Meta Files m_SerializationMode: 2 m_LineEndingsForNewScripts: 2 m_DefaultBehaviorMode: 0 m_PrefabRegularEnvironment: {fileID: 0} m_PrefabUIEnvironment: {fileID: 0} m_SpritePackerMode: 0 m_SpritePackerPaddingPower: 1 m_EtcTextureCompressorBehavior: 1 m_EtcTextureFastCompressor: 1 m_EtcTextureNormalCompressor: 2 m_EtcTextureBestCompressor: 4 m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp m_ProjectGenerationRootNamespace: m_CollabEditorSettings: inProgressEnabled: 1 m_EnableTextureStreamingInEditMode: 0 m_EnableTextureStreamingInPlayMode: 1 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/GraphicsSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!30 &1 GraphicsSettings: m_ObjectHideFlags: 0 serializedVersion: 12 m_Deferred: m_Mode: 1 m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} m_DeferredReflections: m_Mode: 1 m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} m_ScreenSpaceShadows: m_Mode: 1 m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} m_LegacyDeferred: m_Mode: 1 m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} m_DepthNormals: m_Mode: 1 m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} m_MotionVectors: m_Mode: 1 m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} m_LightHalo: m_Mode: 1 m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} m_LensFlare: m_Mode: 1 m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} m_AlwaysIncludedShaders: - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_CustomRenderPipeline: {fileID: 0} m_TransparencySortMode: 0 m_TransparencySortAxis: {x: 0, y: 0, z: 1} m_DefaultRenderingPath: 1 m_DefaultMobileRenderingPath: 1 m_TierSettings: [] m_LightmapStripping: 0 m_FogStripping: 0 m_InstancingStripping: 0 m_LightmapKeepPlain: 1 m_LightmapKeepDirCombined: 1 m_LightmapKeepDynamicPlain: 1 m_LightmapKeepDynamicDirCombined: 1 m_LightmapKeepShadowMask: 1 m_LightmapKeepSubtractive: 1 m_FogKeepLinear: 1 m_FogKeepExp: 1 m_FogKeepExp2: 1 m_AlbedoSwatchInfos: [] m_LightsUseLinearIntensity: 0 m_LightsUseColorTemperature: 0 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/InputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!13 &1 InputManager: m_ObjectHideFlags: 0 serializedVersion: 2 m_Axes: - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: left positiveButton: right altNegativeButton: a altPositiveButton: d gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: down positiveButton: up altNegativeButton: s altPositiveButton: w gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left ctrl altNegativeButton: altPositiveButton: mouse 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left alt altNegativeButton: altPositiveButton: mouse 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left shift altNegativeButton: altPositiveButton: mouse 2 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: space altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse X descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse Y descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Mouse ScrollWheel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 2 joyNum: 0 - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 0 type: 2 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 1 type: 2 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 0 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 1 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 2 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 3 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: return altNegativeButton: altPositiveButton: joystick button 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: enter altNegativeButton: altPositiveButton: space gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Cancel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: escape altNegativeButton: altPositiveButton: joystick button 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/MemorySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!387306366 &1 MemorySettings: m_ObjectHideFlags: 0 m_EditorMemorySettings: m_MainAllocatorBlockSize: -1 m_ThreadAllocatorBlockSize: -1 m_MainGfxBlockSize: -1 m_ThreadGfxBlockSize: -1 m_CacheBlockSize: -1 m_TypetreeBlockSize: -1 m_ProfilerBlockSize: -1 m_ProfilerEditorBlockSize: -1 m_BucketAllocatorGranularity: -1 m_BucketAllocatorBucketsCount: -1 m_BucketAllocatorBlockSize: -1 m_BucketAllocatorBlockCount: -1 m_ProfilerBucketAllocatorGranularity: -1 m_ProfilerBucketAllocatorBucketsCount: -1 m_ProfilerBucketAllocatorBlockSize: -1 m_ProfilerBucketAllocatorBlockCount: -1 m_TempAllocatorSizeMain: -1 m_JobTempAllocatorBlockSize: -1 m_BackgroundJobTempAllocatorBlockSize: -1 m_JobTempAllocatorReducedBlockSize: -1 m_TempAllocatorSizeGIBakingWorker: -1 m_TempAllocatorSizeNavMeshWorker: -1 m_TempAllocatorSizeAudioWorker: -1 m_TempAllocatorSizeCloudWorker: -1 m_TempAllocatorSizeGfx: -1 m_TempAllocatorSizeJobWorker: -1 m_TempAllocatorSizeBackgroundWorker: -1 m_TempAllocatorSizePreloadManager: -1 m_PlatformMemorySettings: {} ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/NavMeshAreas.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!126 &1 NavMeshProjectSettings: m_ObjectHideFlags: 0 serializedVersion: 2 areas: - name: Walkable cost: 1 - name: Not Walkable cost: 1 - name: Jump cost: 2 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 m_LastAgentTypeID: -887442657 m_Settings: - serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.75 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 accuratePlacement: 0 debug: m_Flags: 0 m_SettingNames: - Humanoid ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/PackageManagerSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &1 MonoBehaviour: m_ObjectHideFlags: 61 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} m_Name: m_EditorClassIdentifier: m_EnablePreReleasePackages: 0 m_EnablePackageDependencies: 0 m_AdvancedSettingsExpanded: 1 m_ScopedRegistriesSettingsExpanded: 1 m_SeeAllPackageVersions: 0 oneTimeWarningShown: 0 m_Registries: - m_Id: main m_Name: m_Url: https://packages.unity.com m_Scopes: [] m_IsDefault: 1 m_Capabilities: 7 m_ConfigSource: 0 m_UserSelectedRegistryName: m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: m_Modified: 0 m_ErrorMessage: m_UserModificationsInstanceId: -856 m_OriginalInstanceId: -858 m_LoadAssets: 0 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/Physics2DSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!19 &1 Physics2DSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_Gravity: {x: 0, y: -9.81} m_DefaultMaterial: {fileID: 0} m_VelocityIterations: 8 m_PositionIterations: 3 m_VelocityThreshold: 1 m_MaxLinearCorrection: 0.2 m_MaxAngularCorrection: 8 m_MaxTranslationSpeed: 100 m_MaxRotationSpeed: 360 m_BaumgarteScale: 0.2 m_BaumgarteTimeOfImpactScale: 0.75 m_TimeToSleep: 0.5 m_LinearSleepTolerance: 0.01 m_AngularSleepTolerance: 2 m_DefaultContactOffset: 0.01 m_JobOptions: serializedVersion: 2 useMultithreading: 0 useConsistencySorting: 0 m_InterpolationPosesPerJob: 100 m_NewContactsPerJob: 30 m_CollideContactsPerJob: 100 m_ClearFlagsPerJob: 200 m_ClearBodyForcesPerJob: 200 m_SyncDiscreteFixturesPerJob: 50 m_SyncContinuousFixturesPerJob: 50 m_FindNearestContactsPerJob: 100 m_UpdateTriggerContactsPerJob: 100 m_IslandSolverCostThreshold: 100 m_IslandSolverBodyCostScale: 1 m_IslandSolverContactCostScale: 10 m_IslandSolverJointCostScale: 10 m_IslandSolverBodiesPerJob: 50 m_IslandSolverContactsPerJob: 50 m_AutoSimulation: 1 m_QueriesHitTriggers: 1 m_QueriesStartInColliders: 1 m_CallbacksOnDisable: 1 m_ReuseCollisionCallbacks: 0 m_AutoSyncTransforms: 0 m_AlwaysShowColliders: 0 m_ShowColliderSleep: 1 m_ShowColliderContacts: 0 m_ShowColliderAABB: 0 m_ContactArrowScale: 0.2 m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/PresetManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1386491679 &1 PresetManager: m_ObjectHideFlags: 0 m_DefaultList: [] ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/ProjectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 serializedVersion: 26 productGUID: 3cf05ef9cf0e9f44882ce8aa0f0daebe AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 AndroidEnableSustainedPerformanceMode: 0 defaultScreenOrientation: 4 targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 companyName: DefaultCompany productName: TestVSCodePackage defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} m_ShowUnitySplashScreen: 1 m_ShowUnitySplashLogo: 1 m_SplashScreenOverlayOpacity: 1 m_SplashScreenAnimation: 1 m_SplashScreenLogoStyle: 1 m_SplashScreenDrawMode: 0 m_SplashScreenBackgroundAnimationZoom: 1 m_SplashScreenLogoAnimationZoom: 1 m_SplashScreenBackgroundLandscapeAspect: 1 m_SplashScreenBackgroundPortraitAspect: 1 m_SplashScreenBackgroundLandscapeUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenBackgroundPortraitUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenLogos: [] m_VirtualRealitySplashScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0} defaultScreenWidth: 1024 defaultScreenHeight: 768 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 m_ActiveColorSpace: 0 m_SpriteBatchVertexThreshold: 300 m_MTRendering: 1 mipStripping: 0 numberOfMipsStripped: 0 numberOfMipsStrippedPerMipmapLimitGroup: {} m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 iosUseCustomAppBackgroundBehavior: 0 allowedAutorotateToPortrait: 1 allowedAutorotateToPortraitUpsideDown: 1 allowedAutorotateToLandscapeRight: 1 allowedAutorotateToLandscapeLeft: 1 useOSAutorotation: 1 use32BitDisplayBuffer: 1 preserveFramebufferAlpha: 0 disableDepthAndStencilBuffers: 0 androidStartInFullscreen: 1 androidRenderOutsideSafeArea: 0 androidUseSwappy: 0 androidBlitType: 0 androidResizableWindow: 0 androidDefaultWindowWidth: 1920 androidDefaultWindowHeight: 1080 androidMinimumWindowWidth: 400 androidMinimumWindowHeight: 300 androidFullscreenMode: 1 defaultIsNativeResolution: 1 macRetinaSupport: 1 runInBackground: 1 captureSingleScreen: 0 muteOtherAudioSources: 0 Prepare IOS For Recording: 0 Force IOS Speakers When Recording: 0 deferSystemGesturesMode: 0 hideHomeButton: 0 submitAnalytics: 1 usePlayerLog: 1 bakeCollisionMeshes: 0 forceSingleInstance: 0 useFlipModelSwapchain: 1 resizableWindow: 0 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games gpuSkinning: 1 xboxPIXTextureCapture: 0 xboxEnableAvatar: 0 xboxEnableKinect: 0 xboxEnableKinectAutoTracking: 0 xboxEnableFitness: 0 visibleInBackground: 1 allowFullscreenSwitch: 1 fullscreenMode: 1 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 xboxEnableGuest: 0 xboxEnablePIXSampling: 0 metalFramebufferOnly: 0 xboxOneResolution: 0 xboxOneSResolution: 0 xboxOneXResolution: 3 xboxOneMonoLoggingLevel: 0 xboxOneLoggingLevel: 1 xboxOneDisableEsram: 0 xboxOneEnableTypeOptimization: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 switchQueueControlMemory: 0 switchQueueComputeMemory: 262144 switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 switchGpuScratchPoolGranularity: 2097152 switchAllowGpuScratchShrinking: 0 switchNVNMaxPublicTextureIDCount: 0 switchNVNMaxPublicSamplerIDCount: 0 switchNVNGraphicsFirmwareMemory: 32 stadiaPresentMode: 0 stadiaTargetFramerate: 0 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 vulkanEnablePreTransform: 0 vulkanEnableLateAcquireNextImage: 0 vulkanEnableCommandBufferRecycling: 1 loadStoreDebugModeEnabled: 0 bundleVersion: 0.1 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 0 xboxOneEnable7thCore: 0 vrSettings: enable360StereoCapture: 0 isWsaHolographicRemotingEnabled: 0 enableFrameTimingStats: 0 enableOpenGLProfilerGPURecorders: 1 useHDRDisplay: 0 D3DHDRBitDepth: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 resolutionScalingMode: 0 resetResolutionOnWindowResize: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: Standalone: com.DefaultCompany.TestVSCodePackage buildNumber: Standalone: 0 iPhone: 0 tvOS: 0 overrideDefaultApplicationIdentifier: 0 AndroidBundleVersionCode: 1 AndroidMinSdkVersion: 22 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: stripEngineCode: 1 iPhoneStrippingLevel: 0 iPhoneScriptCallOptimization: 0 ForceInternetPermission: 0 ForceSDCardPermission: 0 CreateWallpaper: 0 APKExpansionFiles: 0 keepLoadedShadersAlive: 0 StripUnusedMeshComponents: 1 strictShaderVariantMatching: 0 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 iOSTargetOSVersionString: 12.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 tvOSTargetOSVersionString: 12.0 uIPrerenderedIcon: 0 uIRequiresPersistentWiFi: 0 uIRequiresFullScreen: 1 uIStatusBarHidden: 1 uIExitOnSuspend: 0 uIStatusBarStyle: 0 appleTVSplashScreen: {fileID: 0} appleTVSplashScreen2x: {fileID: 0} tvOSSmallIconLayers: [] tvOSSmallIconLayers2x: [] tvOSLargeIconLayers: [] tvOSLargeIconLayers2x: [] tvOSTopShelfImageLayers: [] tvOSTopShelfImageLayers2x: [] tvOSTopShelfImageWideLayers: [] tvOSTopShelfImageWideLayers2x: [] iOSLaunchScreenType: 0 iOSLaunchScreenPortrait: {fileID: 0} iOSLaunchScreenLandscape: {fileID: 0} iOSLaunchScreenBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreenFillPct: 100 iOSLaunchScreenSize: 100 iOSLaunchScreenCustomXibPath: iOSLaunchScreeniPadType: 0 iOSLaunchScreeniPadImage: {fileID: 0} iOSLaunchScreeniPadBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreeniPadFillPct: 100 iOSLaunchScreeniPadSize: 100 iOSLaunchScreeniPadCustomXibPath: iOSLaunchScreenCustomStoryboardPath: iOSLaunchScreeniPadCustomStoryboardPath: iOSDeviceRequirements: [] iOSURLSchemes: [] macOSURLSchemes: [] iOSBackgroundModes: 0 iOSMetalForceHardShadows: 0 metalEditorSupport: 1 metalAPIValidation: 1 iOSRenderExtraFrameOnPause: 0 iosCopyPluginsCodeInsteadOfSymlink: 0 appleDeveloperTeamID: iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: iOSManualSigningProvisioningProfileType: 0 tvOSManualSigningProvisioningProfileType: 0 appleEnableAutomaticSigning: 0 iOSRequireARKit: 0 iOSAutomaticallyDetectAndAddCapabilities: 1 appleEnableProMotion: 0 shaderPrecisionModel: 0 clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea templatePackageId: com.unity.template.3d@1.0.8 templateDefaultScene: Assets/Scenes/SampleScene.unity useCustomMainManifest: 0 useCustomLauncherManifest: 0 useCustomMainGradleTemplate: 0 useCustomLauncherGradleManifest: 0 useCustomBaseGradleTemplate: 0 useCustomGradlePropertiesTemplate: 0 useCustomGradleSettingsTemplate: 0 useCustomProguardFile: 0 AndroidTargetArchitectures: 5 AndroidTargetDevices: 0 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: '{inproject}: ' AndroidKeyaliasName: AndroidEnableArmv9SecurityFeatures: 0 AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 0 AndroidIsGame: 1 AndroidEnableTango: 0 androidEnableBanner: 1 androidUseLowAccuracyLocation: 0 androidUseCustomKeystore: 0 m_AndroidBanners: - width: 320 height: 180 banner: {fileID: 0} androidGamepadSupportLevel: 0 chromeosInputEmulation: 1 AndroidMinifyRelease: 0 AndroidMinifyDebug: 0 AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 100 m_BuildTargetIcons: [] m_BuildTargetPlatformIcons: - m_BuildTarget: Android m_Icons: - m_Textures: [] m_Width: 432 m_Height: 432 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 324 m_Height: 324 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 216 m_Height: 216 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 162 m_Height: 162 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 108 m_Height: 108 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 81 m_Height: 81 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 0 m_SubKind: m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: tvOS m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: Android m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: iPhone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: WebGL m_StaticBatching: 0 m_DynamicBatching: 0 m_BuildTargetShaderSettings: [] m_BuildTargetGraphicsJobs: - m_BuildTarget: WindowsStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: MacStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: LinuxStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: AndroidPlayer m_GraphicsJobs: 0 - m_BuildTarget: iOSSupport m_GraphicsJobs: 0 - m_BuildTarget: PS4Player m_GraphicsJobs: 0 - m_BuildTarget: PS5Player m_GraphicsJobs: 0 - m_BuildTarget: XboxOnePlayer m_GraphicsJobs: 0 - m_BuildTarget: GameCoreXboxOneSupport m_GraphicsJobs: 0 - m_BuildTarget: GameCoreScarlettSupport m_GraphicsJobs: 0 - m_BuildTarget: Switch m_GraphicsJobs: 0 - m_BuildTarget: WebGLSupport m_GraphicsJobs: 0 - m_BuildTarget: MetroSupport m_GraphicsJobs: 0 - m_BuildTarget: AppleTVSupport m_GraphicsJobs: 0 - m_BuildTarget: BJMSupport m_GraphicsJobs: 0 - m_BuildTarget: LuminSupport m_GraphicsJobs: 0 - m_BuildTarget: CloudRendering m_GraphicsJobs: 0 - m_BuildTarget: EmbeddedLinux m_GraphicsJobs: 0 m_BuildTargetGraphicsJobMode: - m_BuildTarget: PS4Player m_GraphicsJobMode: 0 - m_BuildTarget: XboxOnePlayer m_GraphicsJobMode: 0 m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer m_APIs: 0b00000008000000 m_Automatic: 0 - m_BuildTarget: iOSSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: AppleTVSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: WebGLSupport m_APIs: 0b000000 m_Automatic: 1 m_BuildTargetVRSettings: - m_BuildTarget: Standalone m_Enabled: 0 m_Devices: - Oculus - OpenVR m_DefaultShaderChunkSizeInMB: 16 m_DefaultShaderChunkCount: 0 openGLRequireES31: 0 openGLRequireES31AEP: 0 openGLRequireES32: 0 m_TemplateCustomTags: {} mobileMTRendering: Android: 1 iPhone: 1 tvOS: 1 m_BuildTargetGroupLightmapEncodingQuality: [] m_BuildTargetGroupHDRCubemapEncodingQuality: [] m_BuildTargetGroupLightmapSettings: [] m_BuildTargetGroupLoadStoreDebugModeSettings: [] m_BuildTargetNormalMapEncoding: [] m_BuildTargetDefaultTextureCompressionFormat: [] playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 enableInternalProfiler: 0 logObjCUncaughtExceptions: 1 enableCrashReportAPI: 0 cameraUsageDescription: locationUsageDescription: microphoneUsageDescription: bluetoothUsageDescription: macOSTargetOSVersion: 10.13.0 switchNMETAOverride: switchNetLibKey: switchSocketMemoryPoolSize: 6144 switchSocketAllocatorPoolSize: 128 switchSocketConcurrencyLimit: 14 switchScreenResolutionBehavior: 2 switchUseCPUProfiler: 0 switchUseGOLDLinker: 0 switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: switchCompilerFlags: switchTitleNames_0: switchTitleNames_1: switchTitleNames_2: switchTitleNames_3: switchTitleNames_4: switchTitleNames_5: switchTitleNames_6: switchTitleNames_7: switchTitleNames_8: switchTitleNames_9: switchTitleNames_10: switchTitleNames_11: switchTitleNames_12: switchTitleNames_13: switchTitleNames_14: switchTitleNames_15: switchPublisherNames_0: switchPublisherNames_1: switchPublisherNames_2: switchPublisherNames_3: switchPublisherNames_4: switchPublisherNames_5: switchPublisherNames_6: switchPublisherNames_7: switchPublisherNames_8: switchPublisherNames_9: switchPublisherNames_10: switchPublisherNames_11: switchPublisherNames_12: switchPublisherNames_13: switchPublisherNames_14: switchPublisherNames_15: switchIcons_0: {fileID: 0} switchIcons_1: {fileID: 0} switchIcons_2: {fileID: 0} switchIcons_3: {fileID: 0} switchIcons_4: {fileID: 0} switchIcons_5: {fileID: 0} switchIcons_6: {fileID: 0} switchIcons_7: {fileID: 0} switchIcons_8: {fileID: 0} switchIcons_9: {fileID: 0} switchIcons_10: {fileID: 0} switchIcons_11: {fileID: 0} switchIcons_12: {fileID: 0} switchIcons_13: {fileID: 0} switchIcons_14: {fileID: 0} switchIcons_15: {fileID: 0} switchSmallIcons_0: {fileID: 0} switchSmallIcons_1: {fileID: 0} switchSmallIcons_2: {fileID: 0} switchSmallIcons_3: {fileID: 0} switchSmallIcons_4: {fileID: 0} switchSmallIcons_5: {fileID: 0} switchSmallIcons_6: {fileID: 0} switchSmallIcons_7: {fileID: 0} switchSmallIcons_8: {fileID: 0} switchSmallIcons_9: {fileID: 0} switchSmallIcons_10: {fileID: 0} switchSmallIcons_11: {fileID: 0} switchSmallIcons_12: {fileID: 0} switchSmallIcons_13: {fileID: 0} switchSmallIcons_14: {fileID: 0} switchSmallIcons_15: {fileID: 0} switchManualHTML: switchAccessibleURLs: switchLegalInformation: switchMainThreadStackSize: 1048576 switchPresenceGroupId: switchLogoHandling: 0 switchReleaseVersion: 0 switchDisplayVersion: 1.0.0 switchStartupUserAccount: 0 switchSupportedLanguagesMask: 0 switchLogoType: 0 switchApplicationErrorCodeCategory: switchUserAccountSaveDataSize: 0 switchUserAccountSaveDataJournalSize: 0 switchApplicationAttribute: 0 switchCardSpecSize: -1 switchCardSpecClock: -1 switchRatingsMask: 0 switchRatingsInt_0: 0 switchRatingsInt_1: 0 switchRatingsInt_2: 0 switchRatingsInt_3: 0 switchRatingsInt_4: 0 switchRatingsInt_5: 0 switchRatingsInt_6: 0 switchRatingsInt_7: 0 switchRatingsInt_8: 0 switchRatingsInt_9: 0 switchRatingsInt_10: 0 switchRatingsInt_11: 0 switchRatingsInt_12: 0 switchLocalCommunicationIds_0: switchLocalCommunicationIds_1: switchLocalCommunicationIds_2: switchLocalCommunicationIds_3: switchLocalCommunicationIds_4: switchLocalCommunicationIds_5: switchLocalCommunicationIds_6: switchLocalCommunicationIds_7: switchParentalControl: 0 switchAllowsScreenshot: 1 switchAllowsVideoCapturing: 1 switchAllowsRuntimeAddOnContentInstall: 0 switchDataLossConfirmation: 0 switchUserAccountLockEnabled: 0 switchSystemResourceMemory: 16777216 switchSupportedNpadStyles: 3 switchNativeFsCacheSize: 32 switchIsHoldTypeHorizontal: 0 switchSupportedNpadCount: 8 switchEnableTouchScreen: 1 switchSocketConfigEnabled: 0 switchTcpInitialSendBufferSize: 32 switchTcpInitialReceiveBufferSize: 64 switchTcpAutoSendBufferSizeMax: 256 switchTcpAutoReceiveBufferSizeMax: 256 switchUdpSendBufferSize: 9 switchUdpReceiveBufferSize: 42 switchSocketBufferEfficiency: 4 switchSocketInitializeEnabled: 1 switchNetworkInterfaceManagerInitializeEnabled: 1 switchPlayerConnectionEnabled: 1 switchUseNewStyleFilepaths: 0 switchUseLegacyFmodPriorities: 0 switchUseMicroSleepForYield: 1 switchEnableRamDiskSupport: 0 switchMicroSleepForYieldTime: 25 switchRamDiskSpaceSize: 12 ps4NPAgeRating: 12 ps4NPTitleSecret: ps4NPTrophyPackPath: ps4ParentalLevel: 11 ps4ContentID: ED1633-NPXX51362_00-0000000000000000 ps4Category: 0 ps4MasterVersion: 01.00 ps4AppVersion: 01.00 ps4AppType: 0 ps4ParamSfxPath: ps4VideoOutPixelFormat: 0 ps4VideoOutInitialWidth: 1920 ps4VideoOutBaseModeInitialWidth: 1920 ps4VideoOutReprojectionRate: 60 ps4PronunciationXMLPath: ps4PronunciationSIGPath: ps4BackgroundImagePath: ps4StartupImagePath: ps4StartupImagesFolder: ps4IconImagesFolder: ps4SaveDataImagePath: ps4SdkOverride: ps4BGMPath: ps4ShareFilePath: ps4ShareOverlayImagePath: ps4PrivacyGuardImagePath: ps4ExtraSceSysFile: ps4NPtitleDatPath: ps4RemotePlayKeyAssignment: -1 ps4RemotePlayKeyMappingDir: ps4PlayTogetherPlayerCount: 0 ps4EnterButtonAssignment: 1 ps4ApplicationParam1: 0 ps4ApplicationParam2: 0 ps4ApplicationParam3: 0 ps4ApplicationParam4: 0 ps4DownloadDataSize: 0 ps4GarlicHeapSize: 2048 ps4ProGarlicHeapSize: 2560 playerPrefsMaxSize: 32768 ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ ps4pnSessions: 1 ps4pnPresence: 1 ps4pnFriends: 1 ps4pnGameCustomData: 1 playerPrefsSupport: 0 enableApplicationExit: 0 resetTempFolder: 1 restrictedAudioUsageRights: 0 ps4UseResolutionFallback: 0 ps4ReprojectionSupport: 0 ps4UseAudio3dBackend: 0 ps4UseLowGarlicFragmentationMode: 1 ps4SocialScreenEnabled: 0 ps4ScriptOptimizationLevel: 0 ps4Audio3dVirtualSpeakerCount: 14 ps4attribCpuUsage: 0 ps4PatchPkgPath: ps4PatchLatestPkgPath: ps4PatchChangeinfoPath: ps4PatchDayOne: 0 ps4attribUserManagement: 0 ps4attribMoveSupport: 0 ps4attrib3DSupport: 0 ps4attribShareSupport: 0 ps4attribExclusiveVR: 0 ps4disableAutoHideSplash: 0 ps4videoRecordingFeaturesUsed: 0 ps4contentSearchFeaturesUsed: 0 ps4CompatibilityPS5: 0 ps4AllowPS5Detection: 0 ps4GPU800MHz: 1 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] ps4attribVROutputEnabled: 0 monoEnv: splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0} blurSplashScreenBackground: 1 spritePackerPolicy: webGLMemorySize: 16 webGLExceptionSupport: 1 webGLNameFilesAsHashes: 0 webGLShowDiagnostics: 0 webGLDataCaching: 1 webGLDebugSymbols: 0 webGLEmscriptenArgs: webGLModulesDirectory: webGLTemplate: APPLICATION:Default webGLAnalyzeBuildSize: 0 webGLUseEmbeddedResources: 0 webGLCompressionFormat: 1 webGLWasmArithmeticExceptions: 0 webGLLinkerTarget: 1 webGLThreadsSupport: 0 webGLDecompressionFallback: 0 webGLInitialMemorySize: 32 webGLMaximumMemorySize: 2048 webGLMemoryGrowthMode: 2 webGLMemoryLinearGrowthStep: 16 webGLMemoryGeometricGrowthStep: 0.2 webGLMemoryGeometricGrowthCap: 96 webGLPowerPreference: 2 scriptingDefineSymbols: Standalone: THISDEFINEISEXTREMELYUNLIKELYTOEXISTBYDEFAULT;ALSOTHISONE;FINALLYTHISONE additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: Standalone: 0 il2cppCompilerConfiguration: {} il2cppCodeGeneration: {} managedStrippingLevel: EmbeddedLinux: 1 GameCoreScarlett: 1 GameCoreXboxOne: 1 Nintendo Switch: 1 PS4: 1 PS5: 1 QNX: 1 Stadia: 1 WebGL: 1 Windows Store Apps: 1 XboxOne: 1 iPhone: 1 tvOS: 1 incrementalIl2cppBuild: {} suppressCommonWarnings: 1 allowUnsafeCode: 0 useDeterministicCompilation: 1 selectedPlatform: 0 additionalIl2CppArgs: scriptingRuntimeVersion: 1 gcIncremental: 0 gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: Standalone: 6 m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: Template_3D metroPackageVersion: metroCertificatePath: metroCertificatePassword: metroCertificateSubject: metroCertificateIssuer: metroCertificateNotAfter: 0000000000000000 metroApplicationDescription: Template_3D wsaImages: {} metroTileShortName: metroTileShowName: 0 metroMediumTileShowName: 0 metroLargeTileShowName: 0 metroWideTileShowName: 0 metroSupportStreamingInstall: 0 metroLastRequiredScene: 0 metroDefaultTileSize: 1 metroTileForegroundText: 2 metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} metroSplashScreenUseBackgroundColor: 0 platformCapabilities: {} metroTargetDeviceFamilies: {} metroFTAName: metroFTAFileTypes: [] metroProtocolName: vcxProjDefaultLanguage: XboxOneProductId: XboxOneUpdateKey: XboxOneSandboxId: XboxOneContentId: XboxOneTitleId: XboxOneSCId: XboxOneGameOsOverridePath: XboxOnePackagingOverridePath: XboxOneAppManifestOverridePath: XboxOneVersion: 1.0.0.0 XboxOnePackageEncryption: 0 XboxOnePackageUpdateGranularity: 2 XboxOneDescription: XboxOneLanguage: - enus XboxOneCapability: [] XboxOneGameRating: {} XboxOneIsContentPackage: 0 XboxOneEnhancedXboxCompatibilityMode: 0 XboxOneEnableGPUVariability: 0 XboxOneSockets: {} XboxOneSplashScreen: {fileID: 0} XboxOneAllowedProductIds: [] XboxOnePersistentLocalStorageSize: 0 XboxOneXTitleMemory: 8 XboxOneOverrideIdentityName: XboxOneOverrideIdentityPublisher: vrEditorSettings: {} cloudServicesEnabled: UNet: 1 luminIcon: m_Name: m_ModelFolderPath: m_PortalFolderPath: luminCert: m_CertPath: m_SignPackage: 1 luminIsChannelApp: 0 luminVersion: m_VersionCode: 1 m_VersionName: hmiPlayerDataPath: hmiForceSRGBBlit: 1 embeddedLinuxEnableGamepadInput: 1 hmiLogStartupTiming: 0 hmiCpuConfiguration: apiCompatibilityLevel: 6 activeInputHandler: 0 windowsGamepadBackendHint: 0 cloudProjectId: framebufferDepthMemorylessMode: 0 qualitySettingsNames: [] projectName: organizationId: cloudEnabled: 0 legacyClampBlendShapeWeights: 1 hmiLoadingImage: {fileID: 0} virtualTexturingSupportEnabled: 0 insecureHttpOption: 0 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/ProjectVersion.txt ================================================ m_EditorVersion: 2022.2.12f1 m_EditorVersionWithRevision: 2022.2.12f1 (022dac4955a3) ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/QualitySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!47 &1 QualitySettings: m_ObjectHideFlags: 0 serializedVersion: 5 m_CurrentQuality: 5 m_QualitySettings: - serializedVersion: 2 name: Very Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 15 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 1 textureQuality: 1 anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 0 lodBias: 0.3 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 2 textureQuality: 0 anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 0 lodBias: 0.4 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 16 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Medium pixelLightCount: 1 shadows: 1 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 2 textureQuality: 0 anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 1 lodBias: 0.7 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 64 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: High pixelLightCount: 2 shadows: 2 shadowResolution: 1 shadowProjection: 1 shadowCascades: 2 shadowDistance: 40 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 2 textureQuality: 0 anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 1 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 256 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Very High pixelLightCount: 3 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 2 shadowDistance: 70 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 4 textureQuality: 0 anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 1.5 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 1024 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Ultra pixelLightCount: 4 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 4 shadowDistance: 150 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 4 textureQuality: 0 anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 2 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4096 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] m_PerPlatformDefaultQuality: Android: 2 Lumin: 5 Nintendo 3DS: 5 Nintendo Switch: 5 PS4: 5 PSP2: 2 Standalone: 5 WebGL: 3 Windows Store Apps: 5 XboxOne: 5 iPhone: 2 tvOS: 2 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/TagManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!78 &1 TagManager: serializedVersion: 2 tags: [] layers: - Default - TransparentFX - Ignore Raycast - - Water - UI - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - name: Default uniqueID: 0 locked: 0 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/TimeManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!5 &1 TimeManager: m_ObjectHideFlags: 0 Fixed Timestep: 0.02 Maximum Allowed Timestep: 0.33333334 m_TimeScale: 1 Maximum Particle Timestep: 0.03 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/UnityConnectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!310 &1 UnityConnectSettings: m_ObjectHideFlags: 0 serializedVersion: 1 m_Enabled: 0 m_TestMode: 0 m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events m_ConfigUrl: https://config.uca.cloud.unity3d.com m_TestInitMode: 0 CrashReportingSettings: m_EventUrl: https://perf-events.cloud.unity3d.com m_Enabled: 0 m_LogBufferSize: 10 m_CaptureEditorExceptions: 1 UnityPurchasingSettings: m_Enabled: 0 m_TestMode: 0 UnityAnalyticsSettings: m_Enabled: 0 m_TestMode: 0 m_InitializeOnStartup: 1 UnityAdsSettings: m_Enabled: 0 m_InitializeOnStartup: 1 m_TestMode: 0 m_IosGameId: m_AndroidGameId: m_GameIds: {} m_GameId: PerformanceReportingSettings: m_Enabled: 0 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/VFXManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!937362698 &1 VFXManager: m_ObjectHideFlags: 0 m_IndirectShader: {fileID: 0} m_CopyBufferShader: {fileID: 0} m_SortShader: {fileID: 0} m_RenderPipeSettingsPath: m_FixedTimeStep: 0.016666668 m_MaxDeltaTime: 0.05 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/VersionControlSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!890905787 &1 VersionControlSettings: m_ObjectHideFlags: 0 m_Mode: Visible Meta Files m_CollabEditorSettings: inProgressEnabled: 1 ================================================ FILE: Projects/2022.2 Latest/ProjectSettings/XRSettings.asset ================================================ { "m_SettingKeys": [ "VR Device Disabled", "VR Device User Alert" ], "m_SettingValues": [ "False", "False" ] } ================================================ FILE: Projects/2022.2 Latest/UserSettings/EditorUserSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!162 &1 EditorUserSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_ConfigSettings: RecentlyUsedSceneGuid-0: value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a flags: 0 vcSharedLogLevel: value: 0d5e400f0650 flags: 0 m_VCAutomaticAdd: 1 m_VCDebugCom: 0 m_VCDebugCmd: 0 m_VCDebugOut: 0 m_SemanticMergeMode: 2 m_DesiredImportWorkerCount: 4 m_StandbyImportWorkerCount: 2 m_IdleImportWorkerShutdownDelay: 60000 m_VCShowFailedCheckout: 1 m_VCOverwriteFailedCheckoutAssets: 1 m_VCProjectOverlayIcons: 1 m_VCHierarchyOverlayIcons: 1 m_VCOtherOverlayIcons: 1 m_VCAllowAsyncUpdate: 1 m_ArtifactGarbageCollection: 1 ================================================ FILE: Projects/2022.2 Latest/UserSettings/Search.index ================================================ { "name": "Assets", "roots": ["Assets"], "includes": [], "excludes": [], "options": { "types": true, "properties": true, "extended": false, "dependencies": false }, "baseScore": 999 } ================================================ FILE: Projects/2022.2 Latest/UserSettings/Search.settings ================================================ trackSelection = true refreshSearchWindowsInPlayMode = false fetchPreview = true defaultFlags = 0 keepOpen = false queryFolder = "Assets" onBoardingDoNotAskAgain = true showPackageIndexes = false showStatusBar = false scopes = { } providers = { adb = { active = false priority = 2500 defaultAction = null } asset = { active = true priority = 25 defaultAction = null } store = { active = true priority = 100 defaultAction = null } find = { active = true priority = 25 defaultAction = null } log = { active = false priority = 210 defaultAction = null } packages = { active = true priority = 90 defaultAction = null } performance = { active = false priority = 100 defaultAction = null } scene = { active = true priority = 50 defaultAction = null } } objectSelectors = { } recentSearches = [ ] searchItemFavorites = [ ] savedSearchesSortOrder = 0 showSavedSearchPanel = false hideTabs = false expandedQueries = [ ] queryBuilder = false ignoredProperties = "id;name;classname;imagecontentshash" helperWidgetCurrentArea = "all" disabledIndexers = "" minIndexVariations = 2 findProviderIndexHelper = true ================================================ FILE: Projects/2022.3 LTS/Assets/Analyzer.meta ================================================ fileFormatVersion: 2 guid: 83a7d9ae72b00d244b11062f1befd3a3 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Custom Asmdef/InAssetFolder.asmdef ================================================ { "name": "InAssetFolder", "rootNamespace": "", "references": [], "includePlatforms": [], "excludePlatforms": [], "allowUnsafeCode": false, "overrideReferences": false, "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], "versionDefines": [], "noEngineReferences": false } ================================================ FILE: Projects/2022.3 LTS/Assets/Custom Asmdef/InAssetFolder.asmdef.meta ================================================ fileFormatVersion: 2 guid: 02a83d3e11a5a9745b46ca562b00be0e AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Custom Asmdef/TimTam.cs ================================================ using System.Collections; using System.Collections.Generic; using UnityEngine; public class TimTam : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } } ================================================ FILE: Projects/2022.3 LTS/Assets/Custom Asmdef/TimTam.cs.meta ================================================ fileFormatVersion: 2 guid: 8569e12c481432146a309f64fab7c80c MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Custom Asmdef.meta ================================================ fileFormatVersion: 2 guid: 051e38478c4283c4ea841b4cd457dae4 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Editor/CSProjAssetTests.cs ================================================ using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text.RegularExpressions; using System.Threading; using NUnit.Framework; using UnityEditor; using UnityEngine; using UnityEngine.TestTools; namespace VSCodeEditor.Runtime_spec.CSProject { [TestFixture] [Serializable] public abstract class CleanupTest { [SerializeField] protected IGenerator m_ProjectGeneration; [SerializeField] readonly List<string> m_GeneratedFiles = new(); [SerializeField] readonly List<string> m_DirectoriesToDelete = new(); [SerializeField] protected string m_CsProjPath; [SerializeField] protected DateTime m_LastWritten; protected const string k_EmptyCSharpScript = @" using UnityEngine; public class SimpleCSharpScript : MonoBehaviour { void Start() { } }"; [SetUp] public void SetUp() { var projectDirectory = Directory.GetParent(Application.dataPath).FullName; m_ProjectGeneration = new ProjectGeneration(projectDirectory); } [UnityTearDown] protected virtual IEnumerator TearDown() { foreach (var pathToDelete in m_GeneratedFiles) { if (File.Exists(pathToDelete)) { File.Delete(pathToDelete); } if (File.Exists(pathToDelete + ".meta")) { File.Delete(pathToDelete + ".meta"); } } foreach (var directoryToDelete in m_DirectoriesToDelete) { if (Directory.Exists(directoryToDelete)) { Directory.Delete(directoryToDelete, true); File.Delete(directoryToDelete + ".meta"); } } m_GeneratedFiles.Clear(); m_DirectoriesToDelete.Clear(); yield return new RecompileScripts(false); } protected void CopyScriptToAssetsFolder(string assetPath, string fileName, string content) { var targetFile = Path.Combine(assetPath, fileName); m_GeneratedFiles.Add(targetFile); File.WriteAllText(targetFile, content); } protected void CreateFolder(string path) { m_DirectoriesToDelete.Add(path); Directory.CreateDirectory(path); } } public class BuildTarget : CleanupTest { [SerializeField] UnityEditor.BuildTarget m_Original; protected override IEnumerator TearDown() { EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, m_Original ); return base.TearDown(); } [UnityPlatform(RuntimePlatform.WindowsEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_Windows() { m_Original = UnityEditor.BuildTarget.StandaloneWindows64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", () => { } ); } [UnityPlatform(RuntimePlatform.OSXEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_MacOSX() { m_Original = UnityEditor.BuildTarget.StandaloneOSX; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", () => { } ); } [UnityPlatform(RuntimePlatform.LinuxEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_Linux() { m_Original = UnityEditor.BuildTarget.StandaloneLinux64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", () => { } ); } [UnityPlatform(RuntimePlatform.WindowsEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Windows() { m_Original = UnityEditor.BuildTarget.StandaloneWindows64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } [UnityPlatform(RuntimePlatform.OSXEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_MacOSX() { m_Original = UnityEditor.BuildTarget.StandaloneOSX; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } [UnityPlatform(RuntimePlatform.LinuxEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Linux() { m_Original = UnityEditor.BuildTarget.StandaloneLinux64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } IEnumerator AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget platformTarget, string platformDefine, UnityEditor.BuildTarget changeTarget, string changeDefine, Action action ) { EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, platformTarget ); CopyScriptToAssetsFolder( Application.dataPath, "SimpleCSharpScript.cs", k_EmptyCSharpScript ); yield return new RecompileScripts(true); m_ProjectGeneration.Sync(); var dir = Directory.GetParent(Application.dataPath).FullName; m_CsProjPath = Path.Combine(dir, "Assembly-CSharp.csproj"); AssertProjectContainsDefine(m_CsProjPath, platformDefine); action(); m_LastWritten = DateTime.Now.AddSeconds(-1); File.SetLastWriteTime(m_CsProjPath, m_LastWritten); //switch target to another one than the standalone target for the current platform EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, changeTarget ); yield return new RecompileScripts(true); m_ProjectGeneration.Sync(); WaitForCondition(() => File.GetLastWriteTime(m_CsProjPath) > m_LastWritten); AssertProjectContainsDefine(m_CsProjPath, changeDefine); yield return null; } static void AssertProjectContainsDefine(string csProjPath, string expectedDefine) { var content = File.ReadAllText(csProjPath); Assert.IsTrue( Regex.IsMatch(content, $"<DefineConstants>.*;{expectedDefine}.*</DefineConstants>") ); } delegate bool Condition(); static void WaitForCondition(Condition condition) { var started = DateTime.Now; while (!condition()) { if (DateTime.Now - started > k_Timeout) throw new TimeoutException( $"Timeout while waiting for c# project to be rewritten for {k_Timeout.TotalSeconds} seconds" ); Thread.Sleep(10); } } static readonly TimeSpan k_Timeout = TimeSpan.FromSeconds(5); } } ================================================ FILE: Projects/2022.3 LTS/Assets/Editor/CSProjAssetTests.cs.meta ================================================ fileFormatVersion: 2 guid: 09b6f746cf9797a4a97e259d45a38ec1 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Editor/RecompileScripts.cs ================================================ using System; using System.Collections; using UnityEditor; using UnityEngine.TestTools; public class RecompileScripts : IEditModeTestYieldInstruction { public RecompileScripts() : this(true) { } public RecompileScripts(bool expectScriptCompilation) : this(expectScriptCompilation, true) { } public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess) { ExpectScriptCompilation = expectScriptCompilation; ExpectScriptCompilationSuccess = expectScriptCompilationSuccess; ExpectDomainReload = true; } public bool ExpectDomainReload { get; } public bool ExpectedPlaymodeState { get; } public bool ExpectScriptCompilation { get; } public bool ExpectScriptCompilationSuccess { get; } public static RecompileScripts Current { get; private set; } public IEnumerator Perform() { Current = this; AssetDatabase.Refresh(); if (ExpectScriptCompilation && !EditorApplication.isCompiling) { Current = null; throw new Exception("Editor does not need to recompile scripts"); } EditorApplication.UnlockReloadAssemblies(); while (EditorApplication.isCompiling) { yield return null; } Current = null; if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed) { EditorApplication.LockReloadAssemblies(); throw new Exception("Script compilation failed"); } } } ================================================ FILE: Projects/2022.3 LTS/Assets/Editor/RecompileScripts.cs.meta ================================================ fileFormatVersion: 2 guid: 35e5ed6756833644c83c24382f01236b MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Editor.meta ================================================ fileFormatVersion: 2 guid: 8a06cae000d3e064aa6a3530ef8bbabc folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/KoalaExtensionTest.koala ================================================ ================================================ FILE: Projects/2022.3 LTS/Assets/KoalaExtensionTest.koala.meta ================================================ fileFormatVersion: 2 guid: 9972cb3bb6a98ab469a9399f8bc337c6 DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Scenes/SampleScene.unity ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!29 &1 OcclusionCullingSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_OcclusionBakeSettings: smallestOccluder: 5 smallestHole: 0.25 backfaceThreshold: 100 m_SceneGUID: 00000000000000000000000000000000 m_OcclusionCullingData: {fileID: 0} --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 serializedVersion: 9 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 m_FogDensity: 0.01 m_LinearFogStart: 0 m_LinearFogEnd: 300 m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} m_AmbientIntensity: 1 m_AmbientMode: 0 m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} m_HaloStrength: 0.5 m_FlareStrength: 1 m_FlareFadeSpeed: 3 m_HaloTexture: {fileID: 0} m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} m_DefaultReflectionMode: 0 m_DefaultReflectionResolution: 128 m_ReflectionBounces: 1 m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 705507994} m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 serializedVersion: 11 m_GIWorkflowMode: 0 m_GISettings: serializedVersion: 2 m_BounceScale: 1 m_IndirectOutputScale: 1 m_AlbedoBoost: 1 m_TemporalCoherenceThreshold: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: serializedVersion: 10 m_Resolution: 2 m_BakeResolution: 40 m_AtlasSize: 1024 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 m_TextureCompression: 1 m_FinalGather: 0 m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 256 m_ReflectionCompression: 2 m_MixedBakeMode: 2 m_BakeBackend: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVRBounces: 2 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 m_PVRFilteringMode: 1 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 m_ShowResolutionOverlay: 1 m_LightingDataAsset: {fileID: 0} m_UseShadowmask: 1 --- !u!196 &4 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.4 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 accuratePlacement: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} --- !u!1 &705507993 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 705507995} - component: {fileID: 705507994} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!108 &705507994 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 705507993} m_Enabled: 1 serializedVersion: 8 m_Type: 1 m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} m_Intensity: 1 m_Range: 10 m_SpotAngle: 30 m_CookieSize: 10 m_Shadows: m_Type: 2 m_Resolution: -1 m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 m_NormalBias: 0.4 m_NearPlane: 0.2 m_Cookie: {fileID: 0} m_DrawHalo: 0 m_Flare: {fileID: 0} m_RenderMode: 0 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_Lightmapping: 1 m_LightShadowCasterMode: 0 m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 m_ColorTemperature: 6570 m_UseColorTemperature: 0 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &705507995 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 705507993} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &963194225 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 963194228} - component: {fileID: 963194227} - component: {fileID: 963194226} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!81 &963194226 AudioListener: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 --- !u!20 &963194227 Camera: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} m_projectionMatrixMode: 1 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} m_GateFitMode: 2 m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 near clip plane: 0.3 far clip plane: 1000 field of view: 60 orthographic: 0 orthographic size: 5 m_Depth: -1 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_RenderingPath: -1 m_TargetTexture: {fileID: 0} m_TargetDisplay: 0 m_TargetEye: 3 m_HDR: 1 m_AllowMSAA: 1 m_AllowDynamicResolution: 0 m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 --- !u!4 &963194228 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ================================================ FILE: Projects/2022.3 LTS/Assets/Scenes/SampleScene.unity.meta ================================================ fileFormatVersion: 2 guid: 9fc0d4010bbf28b4594072e72b8655ab DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Scenes/SampleSceneSettings.lighting ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!850595691 &4890085278179872738 LightingSettings: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: SampleSceneSettings serializedVersion: 2 m_GIWorkflowMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_RealtimeEnvironmentLighting: 1 m_BounceScale: 1 m_AlbedoBoost: 1 m_IndirectOutputScale: 1 m_UsingShadowmask: 1 m_BakeBackend: 1 m_LightmapMaxSize: 1024 m_BakeResolution: 40 m_Padding: 2 m_TextureCompression: 1 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 m_ExtractAO: 0 m_MixedBakeMode: 2 m_LightmapsBakeMode: 1 m_FilterMode: 1 m_LightmapParameters: {fileID: 0} m_ExportTrainingData: 0 m_TrainingDataDestination: TrainingData m_RealtimeResolution: 2 m_ForceWhiteAlbedo: 0 m_ForceUpdates: 0 m_FinalGather: 0 m_FinalGatherRayCount: 256 m_FinalGatherFiltering: 1 m_PVRCulling: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVREnvironmentSampleCount: 500 m_PVREnvironmentReferencePointCount: 2048 m_LightProbeSampleCountMultiplier: 4 m_PVRBounces: 2 m_PVRRussianRouletteStartBounce: 2 m_PVREnvironmentMIS: 0 m_PVRFilteringMode: 2 m_PVRDenoiserTypeDirect: 0 m_PVRDenoiserTypeIndirect: 0 m_PVRDenoiserTypeAO: 0 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 ================================================ FILE: Projects/2022.3 LTS/Assets/Scenes/SampleSceneSettings.lighting.meta ================================================ fileFormatVersion: 2 guid: a0eb4567ffade2f47b9fc6e006e4ce91 NativeFormatImporter: externalObjects: {} mainObjectFileID: 0 userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Scenes.meta ================================================ fileFormatVersion: 2 guid: 2c4ecd2c3fea48442bfed0ebc5181951 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Assets/Test.cs ================================================ using UnityEngine; public class Test : MonoBehaviour { void Start() { TestCode.TestClass.TestMethod(); } } ================================================ FILE: Projects/2022.3 LTS/Assets/Test.cs.meta ================================================ fileFormatVersion: 2 guid: 8dc025fb3786c0b41a0bb4360be46b9a MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2022.3 LTS/Packages/manifest.json ================================================ { "disableProjectUpdate": true, "dependencies": { "com.tsk.ide.vscode": "file:../../../com.tsk.ide.vscode", "com.tsk.ide.vscodetests": "file:../../../com.tsk.ide.vscodetests", "com.unity.test-framework": "1.3.3" } } ================================================ FILE: Projects/2022.3 LTS/Packages/packages-lock.json ================================================ { "dependencies": { "com.tsk.ide.vscode": { "version": "file:../../../com.tsk.ide.vscode", "depth": 0, "source": "local", "dependencies": {} }, "com.tsk.ide.vscodetests": { "version": "file:../../../com.tsk.ide.vscodetests", "depth": 0, "source": "local", "dependencies": { "nuget.moq": "1.0.0" } }, "com.unity.ext.nunit": { "version": "2.0.3", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.test-framework": { "version": "1.3.3", "depth": 0, "source": "registry", "dependencies": { "com.unity.ext.nunit": "2.0.3", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" }, "url": "https://packages.unity.com" }, "nuget.castle-core": { "version": "1.0.1", "depth": 2, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "nuget.moq": { "version": "1.0.0", "depth": 1, "source": "registry", "dependencies": { "nuget.castle-core": "1.0.1" }, "url": "https://packages.unity.com" }, "com.unity.modules.imgui": { "version": "1.0.0", "depth": 1, "source": "builtin", "dependencies": {} }, "com.unity.modules.jsonserialize": { "version": "1.0.0", "depth": 1, "source": "builtin", "dependencies": {} } } } ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/AudioManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!11 &1 AudioManager: m_ObjectHideFlags: 0 m_Volume: 1 Rolloff Scale: 1 Doppler Factor: 1 Default Speaker Mode: 2 m_SampleRate: 0 m_DSPBufferSize: 1024 m_VirtualVoiceCount: 512 m_RealVoiceCount: 32 m_SpatializerPlugin: m_AmbisonicDecoderPlugin: m_DisableAudio: 0 m_VirtualizeEffects: 1 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/ClusterInputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!236 &1 ClusterInputManager: m_ObjectHideFlags: 0 m_Inputs: [] ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/DynamicsManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!55 &1 PhysicsManager: m_ObjectHideFlags: 0 serializedVersion: 11 m_Gravity: {x: 0, y: -9.81, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 m_SleepThreshold: 0.005 m_DefaultContactOffset: 0.01 m_DefaultSolverIterations: 6 m_DefaultSolverVelocityIterations: 1 m_QueriesHitBackfaces: 0 m_QueriesHitTriggers: 1 m_EnableAdaptiveForce: 0 m_ClothInterCollisionDistance: 0 m_ClothInterCollisionStiffness: 0 m_ContactsGeneration: 1 m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_AutoSimulation: 1 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 0 m_ClothInterCollisionSettingsToggle: 0 m_ContactPairsMode: 0 m_BroadphaseType: 0 m_WorldBounds: m_Center: {x: 0, y: 0, z: 0} m_Extent: {x: 250, y: 250, z: 250} m_WorldSubdivisions: 8 m_FrictionType: 0 m_EnableEnhancedDeterminism: 0 m_EnableUnifiedHeightmaps: 1 m_DefaultMaxAngluarSpeed: 7 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/EditorBuildSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1045 &1 EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: [] m_configObjects: {} ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/EditorSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!159 &1 EditorSettings: m_ObjectHideFlags: 0 serializedVersion: 7 m_ExternalVersionControlSupport: Hidden Meta Files m_SerializationMode: 2 m_LineEndingsForNewScripts: 2 m_DefaultBehaviorMode: 0 m_PrefabRegularEnvironment: {fileID: 0} m_PrefabUIEnvironment: {fileID: 0} m_SpritePackerMode: 0 m_SpritePackerPaddingPower: 1 m_EtcTextureCompressorBehavior: 1 m_EtcTextureFastCompressor: 1 m_EtcTextureNormalCompressor: 2 m_EtcTextureBestCompressor: 4 m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp m_ProjectGenerationRootNamespace: m_CollabEditorSettings: inProgressEnabled: 1 m_EnableTextureStreamingInEditMode: 0 m_EnableTextureStreamingInPlayMode: 1 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/GraphicsSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!30 &1 GraphicsSettings: m_ObjectHideFlags: 0 serializedVersion: 12 m_Deferred: m_Mode: 1 m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} m_DeferredReflections: m_Mode: 1 m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} m_ScreenSpaceShadows: m_Mode: 1 m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} m_LegacyDeferred: m_Mode: 1 m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} m_DepthNormals: m_Mode: 1 m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} m_MotionVectors: m_Mode: 1 m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} m_LightHalo: m_Mode: 1 m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} m_LensFlare: m_Mode: 1 m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} m_AlwaysIncludedShaders: - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_CustomRenderPipeline: {fileID: 0} m_TransparencySortMode: 0 m_TransparencySortAxis: {x: 0, y: 0, z: 1} m_DefaultRenderingPath: 1 m_DefaultMobileRenderingPath: 1 m_TierSettings: [] m_LightmapStripping: 0 m_FogStripping: 0 m_InstancingStripping: 0 m_LightmapKeepPlain: 1 m_LightmapKeepDirCombined: 1 m_LightmapKeepDynamicPlain: 1 m_LightmapKeepDynamicDirCombined: 1 m_LightmapKeepShadowMask: 1 m_LightmapKeepSubtractive: 1 m_FogKeepLinear: 1 m_FogKeepExp: 1 m_FogKeepExp2: 1 m_AlbedoSwatchInfos: [] m_LightsUseLinearIntensity: 0 m_LightsUseColorTemperature: 0 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/InputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!13 &1 InputManager: m_ObjectHideFlags: 0 serializedVersion: 2 m_Axes: - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: left positiveButton: right altNegativeButton: a altPositiveButton: d gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: down positiveButton: up altNegativeButton: s altPositiveButton: w gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left ctrl altNegativeButton: altPositiveButton: mouse 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left alt altNegativeButton: altPositiveButton: mouse 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left shift altNegativeButton: altPositiveButton: mouse 2 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: space altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse X descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse Y descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Mouse ScrollWheel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 2 joyNum: 0 - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 0 type: 2 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 1 type: 2 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 0 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 1 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 2 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 3 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: return altNegativeButton: altPositiveButton: joystick button 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: enter altNegativeButton: altPositiveButton: space gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Cancel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: escape altNegativeButton: altPositiveButton: joystick button 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/MemorySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!387306366 &1 MemorySettings: m_ObjectHideFlags: 0 m_EditorMemorySettings: m_MainAllocatorBlockSize: -1 m_ThreadAllocatorBlockSize: -1 m_MainGfxBlockSize: -1 m_ThreadGfxBlockSize: -1 m_CacheBlockSize: -1 m_TypetreeBlockSize: -1 m_ProfilerBlockSize: -1 m_ProfilerEditorBlockSize: -1 m_BucketAllocatorGranularity: -1 m_BucketAllocatorBucketsCount: -1 m_BucketAllocatorBlockSize: -1 m_BucketAllocatorBlockCount: -1 m_ProfilerBucketAllocatorGranularity: -1 m_ProfilerBucketAllocatorBucketsCount: -1 m_ProfilerBucketAllocatorBlockSize: -1 m_ProfilerBucketAllocatorBlockCount: -1 m_TempAllocatorSizeMain: -1 m_JobTempAllocatorBlockSize: -1 m_BackgroundJobTempAllocatorBlockSize: -1 m_JobTempAllocatorReducedBlockSize: -1 m_TempAllocatorSizeGIBakingWorker: -1 m_TempAllocatorSizeNavMeshWorker: -1 m_TempAllocatorSizeAudioWorker: -1 m_TempAllocatorSizeCloudWorker: -1 m_TempAllocatorSizeGfx: -1 m_TempAllocatorSizeJobWorker: -1 m_TempAllocatorSizeBackgroundWorker: -1 m_TempAllocatorSizePreloadManager: -1 m_PlatformMemorySettings: {} ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/NavMeshAreas.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!126 &1 NavMeshProjectSettings: m_ObjectHideFlags: 0 serializedVersion: 2 areas: - name: Walkable cost: 1 - name: Not Walkable cost: 1 - name: Jump cost: 2 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 m_LastAgentTypeID: -887442657 m_Settings: - serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.75 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 accuratePlacement: 0 debug: m_Flags: 0 m_SettingNames: - Humanoid ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/PackageManagerSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &1 MonoBehaviour: m_ObjectHideFlags: 61 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} m_Name: m_EditorClassIdentifier: m_EnablePreReleasePackages: 0 m_EnablePackageDependencies: 0 m_AdvancedSettingsExpanded: 1 m_ScopedRegistriesSettingsExpanded: 1 m_SeeAllPackageVersions: 0 oneTimeWarningShown: 0 m_Registries: - m_Id: main m_Name: m_Url: https://packages.unity.com m_Scopes: [] m_IsDefault: 1 m_Capabilities: 7 m_ConfigSource: 0 m_UserSelectedRegistryName: m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: m_Modified: 0 m_ErrorMessage: m_UserModificationsInstanceId: -856 m_OriginalInstanceId: -858 m_LoadAssets: 0 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/Physics2DSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!19 &1 Physics2DSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_Gravity: {x: 0, y: -9.81} m_DefaultMaterial: {fileID: 0} m_VelocityIterations: 8 m_PositionIterations: 3 m_VelocityThreshold: 1 m_MaxLinearCorrection: 0.2 m_MaxAngularCorrection: 8 m_MaxTranslationSpeed: 100 m_MaxRotationSpeed: 360 m_BaumgarteScale: 0.2 m_BaumgarteTimeOfImpactScale: 0.75 m_TimeToSleep: 0.5 m_LinearSleepTolerance: 0.01 m_AngularSleepTolerance: 2 m_DefaultContactOffset: 0.01 m_JobOptions: serializedVersion: 2 useMultithreading: 0 useConsistencySorting: 0 m_InterpolationPosesPerJob: 100 m_NewContactsPerJob: 30 m_CollideContactsPerJob: 100 m_ClearFlagsPerJob: 200 m_ClearBodyForcesPerJob: 200 m_SyncDiscreteFixturesPerJob: 50 m_SyncContinuousFixturesPerJob: 50 m_FindNearestContactsPerJob: 100 m_UpdateTriggerContactsPerJob: 100 m_IslandSolverCostThreshold: 100 m_IslandSolverBodyCostScale: 1 m_IslandSolverContactCostScale: 10 m_IslandSolverJointCostScale: 10 m_IslandSolverBodiesPerJob: 50 m_IslandSolverContactsPerJob: 50 m_AutoSimulation: 1 m_QueriesHitTriggers: 1 m_QueriesStartInColliders: 1 m_CallbacksOnDisable: 1 m_ReuseCollisionCallbacks: 0 m_AutoSyncTransforms: 0 m_AlwaysShowColliders: 0 m_ShowColliderSleep: 1 m_ShowColliderContacts: 0 m_ShowColliderAABB: 0 m_ContactArrowScale: 0.2 m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/PresetManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1386491679 &1 PresetManager: m_ObjectHideFlags: 0 m_DefaultList: [] ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/ProjectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 serializedVersion: 23 productGUID: 3cf05ef9cf0e9f44882ce8aa0f0daebe AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 AndroidEnableSustainedPerformanceMode: 0 defaultScreenOrientation: 4 targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 companyName: DefaultCompany productName: TestVSCodePackage defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} m_ShowUnitySplashScreen: 1 m_ShowUnitySplashLogo: 1 m_SplashScreenOverlayOpacity: 1 m_SplashScreenAnimation: 1 m_SplashScreenLogoStyle: 1 m_SplashScreenDrawMode: 0 m_SplashScreenBackgroundAnimationZoom: 1 m_SplashScreenLogoAnimationZoom: 1 m_SplashScreenBackgroundLandscapeAspect: 1 m_SplashScreenBackgroundPortraitAspect: 1 m_SplashScreenBackgroundLandscapeUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenBackgroundPortraitUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenLogos: [] m_VirtualRealitySplashScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0} defaultScreenWidth: 1024 defaultScreenHeight: 768 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 m_ActiveColorSpace: 0 m_MTRendering: 1 mipStripping: 0 numberOfMipsStripped: 0 m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 iosUseCustomAppBackgroundBehavior: 0 iosAllowHTTPDownload: 1 allowedAutorotateToPortrait: 1 allowedAutorotateToPortraitUpsideDown: 1 allowedAutorotateToLandscapeRight: 1 allowedAutorotateToLandscapeLeft: 1 useOSAutorotation: 1 use32BitDisplayBuffer: 1 preserveFramebufferAlpha: 0 disableDepthAndStencilBuffers: 0 androidStartInFullscreen: 1 androidRenderOutsideSafeArea: 0 androidUseSwappy: 0 androidBlitType: 0 androidResizableWindow: 0 androidDefaultWindowWidth: 1920 androidDefaultWindowHeight: 1080 androidMinimumWindowWidth: 400 androidMinimumWindowHeight: 300 androidFullscreenMode: 1 defaultIsNativeResolution: 1 macRetinaSupport: 1 runInBackground: 1 captureSingleScreen: 0 muteOtherAudioSources: 0 Prepare IOS For Recording: 0 Force IOS Speakers When Recording: 0 deferSystemGesturesMode: 0 hideHomeButton: 0 submitAnalytics: 1 usePlayerLog: 1 bakeCollisionMeshes: 0 forceSingleInstance: 0 useFlipModelSwapchain: 1 resizableWindow: 0 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games gpuSkinning: 1 xboxPIXTextureCapture: 0 xboxEnableAvatar: 0 xboxEnableKinect: 0 xboxEnableKinectAutoTracking: 0 xboxEnableFitness: 0 visibleInBackground: 1 allowFullscreenSwitch: 1 fullscreenMode: 1 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 xboxEnableGuest: 0 xboxEnablePIXSampling: 0 metalFramebufferOnly: 0 xboxOneResolution: 0 xboxOneSResolution: 0 xboxOneXResolution: 3 xboxOneMonoLoggingLevel: 0 xboxOneLoggingLevel: 1 xboxOneDisableEsram: 0 xboxOneEnableTypeOptimization: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 switchQueueControlMemory: 0 switchQueueComputeMemory: 262144 switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 switchNVNMaxPublicTextureIDCount: 0 switchNVNMaxPublicSamplerIDCount: 0 stadiaPresentMode: 0 stadiaTargetFramerate: 0 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 vulkanEnablePreTransform: 0 vulkanEnableLateAcquireNextImage: 0 vulkanEnableCommandBufferRecycling: 1 m_SupportedAspectRatios: 4:3: 1 5:4: 1 16:10: 1 16:9: 1 Others: 1 bundleVersion: 0.1 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 0 xboxOneEnable7thCore: 0 vrSettings: enable360StereoCapture: 0 isWsaHolographicRemotingEnabled: 0 enableFrameTimingStats: 0 enableOpenGLProfilerGPURecorders: 1 useHDRDisplay: 0 D3DHDRBitDepth: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 resolutionScalingMode: 0 resetResolutionOnWindowResize: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: Standalone: com.DefaultCompany.TestVSCodePackage buildNumber: Standalone: 0 iPhone: 0 tvOS: 0 overrideDefaultApplicationIdentifier: 0 AndroidBundleVersionCode: 1 AndroidMinSdkVersion: 22 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: stripEngineCode: 1 iPhoneStrippingLevel: 0 iPhoneScriptCallOptimization: 0 ForceInternetPermission: 0 ForceSDCardPermission: 0 CreateWallpaper: 0 APKExpansionFiles: 0 keepLoadedShadersAlive: 0 StripUnusedMeshComponents: 1 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 iOSTargetOSVersionString: 11.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 tvOSTargetOSVersionString: 11.0 uIPrerenderedIcon: 0 uIRequiresPersistentWiFi: 0 uIRequiresFullScreen: 1 uIStatusBarHidden: 1 uIExitOnSuspend: 0 uIStatusBarStyle: 0 appleTVSplashScreen: {fileID: 0} appleTVSplashScreen2x: {fileID: 0} tvOSSmallIconLayers: [] tvOSSmallIconLayers2x: [] tvOSLargeIconLayers: [] tvOSLargeIconLayers2x: [] tvOSTopShelfImageLayers: [] tvOSTopShelfImageLayers2x: [] tvOSTopShelfImageWideLayers: [] tvOSTopShelfImageWideLayers2x: [] iOSLaunchScreenType: 0 iOSLaunchScreenPortrait: {fileID: 0} iOSLaunchScreenLandscape: {fileID: 0} iOSLaunchScreenBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreenFillPct: 100 iOSLaunchScreenSize: 100 iOSLaunchScreenCustomXibPath: iOSLaunchScreeniPadType: 0 iOSLaunchScreeniPadImage: {fileID: 0} iOSLaunchScreeniPadBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreeniPadFillPct: 100 iOSLaunchScreeniPadSize: 100 iOSLaunchScreeniPadCustomXibPath: iOSLaunchScreenCustomStoryboardPath: iOSLaunchScreeniPadCustomStoryboardPath: iOSDeviceRequirements: [] iOSURLSchemes: [] macOSURLSchemes: [] iOSBackgroundModes: 0 iOSMetalForceHardShadows: 0 metalEditorSupport: 1 metalAPIValidation: 1 iOSRenderExtraFrameOnPause: 0 iosCopyPluginsCodeInsteadOfSymlink: 0 appleDeveloperTeamID: iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: iOSManualSigningProvisioningProfileType: 0 tvOSManualSigningProvisioningProfileType: 0 appleEnableAutomaticSigning: 0 iOSRequireARKit: 0 iOSAutomaticallyDetectAndAddCapabilities: 1 appleEnableProMotion: 0 shaderPrecisionModel: 0 clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea templatePackageId: com.unity.template.3d@1.0.8 templateDefaultScene: Assets/Scenes/SampleScene.unity useCustomMainManifest: 0 useCustomLauncherManifest: 0 useCustomMainGradleTemplate: 0 useCustomLauncherGradleManifest: 0 useCustomBaseGradleTemplate: 0 useCustomGradlePropertiesTemplate: 0 useCustomProguardFile: 0 AndroidTargetArchitectures: 5 AndroidTargetDevices: 0 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: '{inproject}: ' AndroidKeyaliasName: AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 0 AndroidIsGame: 1 AndroidEnableTango: 0 androidEnableBanner: 1 androidUseLowAccuracyLocation: 0 androidUseCustomKeystore: 0 m_AndroidBanners: - width: 320 height: 180 banner: {fileID: 0} androidGamepadSupportLevel: 0 chromeosInputEmulation: 1 AndroidMinifyWithR8: 0 AndroidMinifyRelease: 0 AndroidMinifyDebug: 0 AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 100 m_BuildTargetIcons: [] m_BuildTargetPlatformIcons: - m_BuildTarget: Android m_Icons: - m_Textures: [] m_Width: 432 m_Height: 432 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 324 m_Height: 324 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 216 m_Height: 216 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 162 m_Height: 162 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 108 m_Height: 108 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 81 m_Height: 81 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 0 m_SubKind: m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: tvOS m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: Android m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: iPhone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: WebGL m_StaticBatching: 0 m_DynamicBatching: 0 m_BuildTargetShaderSettings: [] m_BuildTargetGraphicsJobs: - m_BuildTarget: WindowsStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: MacStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: LinuxStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: AndroidPlayer m_GraphicsJobs: 0 - m_BuildTarget: iOSSupport m_GraphicsJobs: 0 - m_BuildTarget: PS4Player m_GraphicsJobs: 0 - m_BuildTarget: PS5Player m_GraphicsJobs: 0 - m_BuildTarget: XboxOnePlayer m_GraphicsJobs: 0 - m_BuildTarget: GameCoreXboxOneSupport m_GraphicsJobs: 0 - m_BuildTarget: GameCoreScarlettSupport m_GraphicsJobs: 0 - m_BuildTarget: Switch m_GraphicsJobs: 0 - m_BuildTarget: WebGLSupport m_GraphicsJobs: 0 - m_BuildTarget: MetroSupport m_GraphicsJobs: 0 - m_BuildTarget: AppleTVSupport m_GraphicsJobs: 0 - m_BuildTarget: BJMSupport m_GraphicsJobs: 0 - m_BuildTarget: LuminSupport m_GraphicsJobs: 0 - m_BuildTarget: CloudRendering m_GraphicsJobs: 0 - m_BuildTarget: EmbeddedLinux m_GraphicsJobs: 0 m_BuildTargetGraphicsJobMode: - m_BuildTarget: PS4Player m_GraphicsJobMode: 0 - m_BuildTarget: XboxOnePlayer m_GraphicsJobMode: 0 m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer m_APIs: 0b00000008000000 m_Automatic: 0 - m_BuildTarget: iOSSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: AppleTVSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: WebGLSupport m_APIs: 0b000000 m_Automatic: 1 m_BuildTargetVRSettings: - m_BuildTarget: Standalone m_Enabled: 0 m_Devices: - Oculus - OpenVR m_DefaultShaderChunkSizeInMB: 16 m_DefaultShaderChunkCount: 0 openGLRequireES31: 0 openGLRequireES31AEP: 0 openGLRequireES32: 0 m_TemplateCustomTags: {} mobileMTRendering: Android: 1 iPhone: 1 tvOS: 1 m_BuildTargetGroupLightmapEncodingQuality: [] m_BuildTargetGroupLightmapSettings: [] m_BuildTargetNormalMapEncoding: [] m_BuildTargetDefaultTextureCompressionFormat: [] playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 enableInternalProfiler: 0 logObjCUncaughtExceptions: 1 enableCrashReportAPI: 0 cameraUsageDescription: locationUsageDescription: microphoneUsageDescription: bluetoothUsageDescription: switchNMETAOverride: switchNetLibKey: switchSocketMemoryPoolSize: 6144 switchSocketAllocatorPoolSize: 128 switchSocketConcurrencyLimit: 14 switchScreenResolutionBehavior: 2 switchUseCPUProfiler: 0 switchUseGOLDLinker: 0 switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: switchTitleNames_0: switchTitleNames_1: switchTitleNames_2: switchTitleNames_3: switchTitleNames_4: switchTitleNames_5: switchTitleNames_6: switchTitleNames_7: switchTitleNames_8: switchTitleNames_9: switchTitleNames_10: switchTitleNames_11: switchTitleNames_12: switchTitleNames_13: switchTitleNames_14: switchTitleNames_15: switchPublisherNames_0: switchPublisherNames_1: switchPublisherNames_2: switchPublisherNames_3: switchPublisherNames_4: switchPublisherNames_5: switchPublisherNames_6: switchPublisherNames_7: switchPublisherNames_8: switchPublisherNames_9: switchPublisherNames_10: switchPublisherNames_11: switchPublisherNames_12: switchPublisherNames_13: switchPublisherNames_14: switchPublisherNames_15: switchIcons_0: {fileID: 0} switchIcons_1: {fileID: 0} switchIcons_2: {fileID: 0} switchIcons_3: {fileID: 0} switchIcons_4: {fileID: 0} switchIcons_5: {fileID: 0} switchIcons_6: {fileID: 0} switchIcons_7: {fileID: 0} switchIcons_8: {fileID: 0} switchIcons_9: {fileID: 0} switchIcons_10: {fileID: 0} switchIcons_11: {fileID: 0} switchIcons_12: {fileID: 0} switchIcons_13: {fileID: 0} switchIcons_14: {fileID: 0} switchIcons_15: {fileID: 0} switchSmallIcons_0: {fileID: 0} switchSmallIcons_1: {fileID: 0} switchSmallIcons_2: {fileID: 0} switchSmallIcons_3: {fileID: 0} switchSmallIcons_4: {fileID: 0} switchSmallIcons_5: {fileID: 0} switchSmallIcons_6: {fileID: 0} switchSmallIcons_7: {fileID: 0} switchSmallIcons_8: {fileID: 0} switchSmallIcons_9: {fileID: 0} switchSmallIcons_10: {fileID: 0} switchSmallIcons_11: {fileID: 0} switchSmallIcons_12: {fileID: 0} switchSmallIcons_13: {fileID: 0} switchSmallIcons_14: {fileID: 0} switchSmallIcons_15: {fileID: 0} switchManualHTML: switchAccessibleURLs: switchLegalInformation: switchMainThreadStackSize: 1048576 switchPresenceGroupId: switchLogoHandling: 0 switchReleaseVersion: 0 switchDisplayVersion: 1.0.0 switchStartupUserAccount: 0 switchTouchScreenUsage: 0 switchSupportedLanguagesMask: 0 switchLogoType: 0 switchApplicationErrorCodeCategory: switchUserAccountSaveDataSize: 0 switchUserAccountSaveDataJournalSize: 0 switchApplicationAttribute: 0 switchCardSpecSize: -1 switchCardSpecClock: -1 switchRatingsMask: 0 switchRatingsInt_0: 0 switchRatingsInt_1: 0 switchRatingsInt_2: 0 switchRatingsInt_3: 0 switchRatingsInt_4: 0 switchRatingsInt_5: 0 switchRatingsInt_6: 0 switchRatingsInt_7: 0 switchRatingsInt_8: 0 switchRatingsInt_9: 0 switchRatingsInt_10: 0 switchRatingsInt_11: 0 switchRatingsInt_12: 0 switchLocalCommunicationIds_0: switchLocalCommunicationIds_1: switchLocalCommunicationIds_2: switchLocalCommunicationIds_3: switchLocalCommunicationIds_4: switchLocalCommunicationIds_5: switchLocalCommunicationIds_6: switchLocalCommunicationIds_7: switchParentalControl: 0 switchAllowsScreenshot: 1 switchAllowsVideoCapturing: 1 switchAllowsRuntimeAddOnContentInstall: 0 switchDataLossConfirmation: 0 switchUserAccountLockEnabled: 0 switchSystemResourceMemory: 16777216 switchSupportedNpadStyles: 3 switchNativeFsCacheSize: 32 switchIsHoldTypeHorizontal: 0 switchSupportedNpadCount: 8 switchSocketConfigEnabled: 0 switchTcpInitialSendBufferSize: 32 switchTcpInitialReceiveBufferSize: 64 switchTcpAutoSendBufferSizeMax: 256 switchTcpAutoReceiveBufferSizeMax: 256 switchUdpSendBufferSize: 9 switchUdpReceiveBufferSize: 42 switchSocketBufferEfficiency: 4 switchSocketInitializeEnabled: 1 switchNetworkInterfaceManagerInitializeEnabled: 1 switchPlayerConnectionEnabled: 1 switchUseNewStyleFilepaths: 0 switchUseMicroSleepForYield: 1 switchEnableRamDiskSupport: 0 switchMicroSleepForYieldTime: 25 switchRamDiskSpaceSize: 12 ps4NPAgeRating: 12 ps4NPTitleSecret: ps4NPTrophyPackPath: ps4ParentalLevel: 11 ps4ContentID: ED1633-NPXX51362_00-0000000000000000 ps4Category: 0 ps4MasterVersion: 01.00 ps4AppVersion: 01.00 ps4AppType: 0 ps4ParamSfxPath: ps4VideoOutPixelFormat: 0 ps4VideoOutInitialWidth: 1920 ps4VideoOutBaseModeInitialWidth: 1920 ps4VideoOutReprojectionRate: 60 ps4PronunciationXMLPath: ps4PronunciationSIGPath: ps4BackgroundImagePath: ps4StartupImagePath: ps4StartupImagesFolder: ps4IconImagesFolder: ps4SaveDataImagePath: ps4SdkOverride: ps4BGMPath: ps4ShareFilePath: ps4ShareOverlayImagePath: ps4PrivacyGuardImagePath: ps4ExtraSceSysFile: ps4NPtitleDatPath: ps4RemotePlayKeyAssignment: -1 ps4RemotePlayKeyMappingDir: ps4PlayTogetherPlayerCount: 0 ps4EnterButtonAssignment: 1 ps4ApplicationParam1: 0 ps4ApplicationParam2: 0 ps4ApplicationParam3: 0 ps4ApplicationParam4: 0 ps4DownloadDataSize: 0 ps4GarlicHeapSize: 2048 ps4ProGarlicHeapSize: 2560 playerPrefsMaxSize: 32768 ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ ps4pnSessions: 1 ps4pnPresence: 1 ps4pnFriends: 1 ps4pnGameCustomData: 1 playerPrefsSupport: 0 enableApplicationExit: 0 resetTempFolder: 1 restrictedAudioUsageRights: 0 ps4UseResolutionFallback: 0 ps4ReprojectionSupport: 0 ps4UseAudio3dBackend: 0 ps4UseLowGarlicFragmentationMode: 1 ps4SocialScreenEnabled: 0 ps4ScriptOptimizationLevel: 0 ps4Audio3dVirtualSpeakerCount: 14 ps4attribCpuUsage: 0 ps4PatchPkgPath: ps4PatchLatestPkgPath: ps4PatchChangeinfoPath: ps4PatchDayOne: 0 ps4attribUserManagement: 0 ps4attribMoveSupport: 0 ps4attrib3DSupport: 0 ps4attribShareSupport: 0 ps4attribExclusiveVR: 0 ps4disableAutoHideSplash: 0 ps4videoRecordingFeaturesUsed: 0 ps4contentSearchFeaturesUsed: 0 ps4CompatibilityPS5: 0 ps4AllowPS5Detection: 0 ps4GPU800MHz: 1 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] ps4attribVROutputEnabled: 0 monoEnv: splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0} blurSplashScreenBackground: 1 spritePackerPolicy: webGLMemorySize: 16 webGLExceptionSupport: 1 webGLNameFilesAsHashes: 0 webGLDataCaching: 1 webGLDebugSymbols: 0 webGLEmscriptenArgs: webGLModulesDirectory: webGLTemplate: APPLICATION:Default webGLAnalyzeBuildSize: 0 webGLUseEmbeddedResources: 0 webGLCompressionFormat: 1 webGLWasmArithmeticExceptions: 0 webGLLinkerTarget: 1 webGLThreadsSupport: 0 webGLDecompressionFallback: 0 webGLPowerPreference: 2 scriptingDefineSymbols: Standalone: THISDEFINEISEXTREMELYUNLIKELYTOEXISTBYDEFAULT;ALSOTHISONE;FINALLYTHISONE additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: Standalone: 0 il2cppCompilerConfiguration: {} managedStrippingLevel: {} incrementalIl2cppBuild: {} suppressCommonWarnings: 1 allowUnsafeCode: 0 useDeterministicCompilation: 1 enableRoslynAnalyzers: 1 selectedPlatform: 0 additionalIl2CppArgs: scriptingRuntimeVersion: 1 gcIncremental: 0 assemblyVersionValidation: 1 gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: Standalone: 6 m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: Template_3D metroPackageVersion: metroCertificatePath: metroCertificatePassword: metroCertificateSubject: metroCertificateIssuer: metroCertificateNotAfter: 0000000000000000 metroApplicationDescription: Template_3D wsaImages: {} metroTileShortName: metroTileShowName: 0 metroMediumTileShowName: 0 metroLargeTileShowName: 0 metroWideTileShowName: 0 metroSupportStreamingInstall: 0 metroLastRequiredScene: 0 metroDefaultTileSize: 1 metroTileForegroundText: 2 metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} metroSplashScreenUseBackgroundColor: 0 platformCapabilities: {} metroTargetDeviceFamilies: {} metroFTAName: metroFTAFileTypes: [] metroProtocolName: vcxProjDefaultLanguage: XboxOneProductId: XboxOneUpdateKey: XboxOneSandboxId: XboxOneContentId: XboxOneTitleId: XboxOneSCId: XboxOneGameOsOverridePath: XboxOnePackagingOverridePath: XboxOneAppManifestOverridePath: XboxOneVersion: 1.0.0.0 XboxOnePackageEncryption: 0 XboxOnePackageUpdateGranularity: 2 XboxOneDescription: XboxOneLanguage: - enus XboxOneCapability: [] XboxOneGameRating: {} XboxOneIsContentPackage: 0 XboxOneEnhancedXboxCompatibilityMode: 0 XboxOneEnableGPUVariability: 0 XboxOneSockets: {} XboxOneSplashScreen: {fileID: 0} XboxOneAllowedProductIds: [] XboxOnePersistentLocalStorageSize: 0 XboxOneXTitleMemory: 8 XboxOneOverrideIdentityName: XboxOneOverrideIdentityPublisher: vrEditorSettings: {} cloudServicesEnabled: UNet: 1 luminIcon: m_Name: m_ModelFolderPath: m_PortalFolderPath: luminCert: m_CertPath: m_SignPackage: 1 luminIsChannelApp: 0 luminVersion: m_VersionCode: 1 m_VersionName: apiCompatibilityLevel: 6 activeInputHandler: 0 windowsGamepadBackendHint: 0 cloudProjectId: framebufferDepthMemorylessMode: 0 qualitySettingsNames: [] projectName: organizationId: cloudEnabled: 0 legacyClampBlendShapeWeights: 1 playerDataPath: forceSRGBBlit: 1 virtualTexturingSupportEnabled: 0 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/ProjectVersion.txt ================================================ m_EditorVersion: 2022.3.20f1 m_EditorVersionWithRevision: 2022.3.20f1 (61c2feb0970d) ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/QualitySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!47 &1 QualitySettings: m_ObjectHideFlags: 0 serializedVersion: 5 m_CurrentQuality: 5 m_QualitySettings: - serializedVersion: 2 name: Very Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 15 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 1 textureQuality: 1 anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 0 lodBias: 0.3 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 2 textureQuality: 0 anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 0 lodBias: 0.4 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 16 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Medium pixelLightCount: 1 shadows: 1 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 2 textureQuality: 0 anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 1 lodBias: 0.7 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 64 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: High pixelLightCount: 2 shadows: 2 shadowResolution: 1 shadowProjection: 1 shadowCascades: 2 shadowDistance: 40 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 2 textureQuality: 0 anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 1 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 256 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Very High pixelLightCount: 3 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 2 shadowDistance: 70 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 4 textureQuality: 0 anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 1.5 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 1024 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Ultra pixelLightCount: 4 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 4 shadowDistance: 150 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 4 textureQuality: 0 anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 2 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4096 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] m_PerPlatformDefaultQuality: Android: 2 Lumin: 5 Nintendo 3DS: 5 Nintendo Switch: 5 PS4: 5 PSP2: 2 Standalone: 5 WebGL: 3 Windows Store Apps: 5 XboxOne: 5 iPhone: 2 tvOS: 2 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/TagManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!78 &1 TagManager: serializedVersion: 2 tags: [] layers: - Default - TransparentFX - Ignore Raycast - - Water - UI - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - name: Default uniqueID: 0 locked: 0 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/TimeManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!5 &1 TimeManager: m_ObjectHideFlags: 0 Fixed Timestep: 0.02 Maximum Allowed Timestep: 0.33333334 m_TimeScale: 1 Maximum Particle Timestep: 0.03 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/UnityConnectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!310 &1 UnityConnectSettings: m_ObjectHideFlags: 0 serializedVersion: 1 m_Enabled: 0 m_TestMode: 0 m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events m_ConfigUrl: https://config.uca.cloud.unity3d.com m_DashboardUrl: https://dashboard.unity3d.com m_TestInitMode: 0 CrashReportingSettings: m_EventUrl: https://perf-events.cloud.unity3d.com m_Enabled: 0 m_LogBufferSize: 10 m_CaptureEditorExceptions: 1 UnityPurchasingSettings: m_Enabled: 0 m_TestMode: 0 UnityAnalyticsSettings: m_Enabled: 0 m_TestMode: 0 m_InitializeOnStartup: 1 m_PackageRequiringCoreStatsPresent: 0 UnityAdsSettings: m_Enabled: 0 m_InitializeOnStartup: 1 m_TestMode: 0 m_IosGameId: m_AndroidGameId: m_GameIds: {} m_GameId: PerformanceReportingSettings: m_Enabled: 0 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/VFXManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!937362698 &1 VFXManager: m_ObjectHideFlags: 0 m_IndirectShader: {fileID: 0} m_CopyBufferShader: {fileID: 0} m_SortShader: {fileID: 0} m_RenderPipeSettingsPath: m_FixedTimeStep: 0.016666668 m_MaxDeltaTime: 0.05 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/VersionControlSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!890905787 &1 VersionControlSettings: m_ObjectHideFlags: 0 m_Mode: Visible Meta Files m_CollabEditorSettings: inProgressEnabled: 1 ================================================ FILE: Projects/2022.3 LTS/ProjectSettings/XRSettings.asset ================================================ { "m_SettingKeys": [ "VR Device Disabled", "VR Device User Alert" ], "m_SettingValues": [ "False", "False" ] } ================================================ FILE: Projects/2022.3 LTS/UserSettings/EditorUserSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!162 &1 EditorUserSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_ConfigSettings: RecentlyUsedSceneGuid-0: value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a flags: 0 vcSharedLogLevel: value: 0d5e400f0650 flags: 0 m_VCAutomaticAdd: 1 m_VCDebugCom: 0 m_VCDebugCmd: 0 m_VCDebugOut: 0 m_SemanticMergeMode: 2 m_DesiredImportWorkerCount: 4 m_StandbyImportWorkerCount: 2 m_IdleImportWorkerShutdownDelay: 60000 m_VCShowFailedCheckout: 1 m_VCOverwriteFailedCheckoutAssets: 1 m_VCProjectOverlayIcons: 1 m_VCHierarchyOverlayIcons: 1 m_VCOtherOverlayIcons: 1 m_VCAllowAsyncUpdate: 1 m_ArtifactGarbageCollection: 1 ================================================ FILE: Projects/2022.3 LTS/UserSettings/Search.index ================================================ { "name": "Assets", "roots": ["Assets"], "includes": [], "excludes": [], "options": { "types": true, "properties": true, "extended": false, "dependencies": false }, "baseScore": 999 } ================================================ FILE: Projects/2022.3 LTS/UserSettings/Search.settings ================================================ trackSelection = true refreshSearchWindowsInPlayMode = false fetchPreview = true defaultFlags = 0 keepOpen = false queryFolder = "Assets" onBoardingDoNotAskAgain = true showPackageIndexes = false showStatusBar = false scopes = { } providers = { packages = { active = true priority = 90 defaultAction = null } profilermarkers = { active = false priority = 100 defaultAction = null } store = { active = true priority = 100 defaultAction = null } log = { active = false priority = 210 defaultAction = null } scene = { active = true priority = 50 defaultAction = null } find = { active = true priority = 25 defaultAction = null } performance = { active = false priority = 100 defaultAction = null } adb = { active = false priority = 2500 defaultAction = null } asset = { active = true priority = 25 defaultAction = null } } objectSelectors = { } recentSearches = [ ] searchItemFavorites = [ ] savedSearchesSortOrder = 0 showSavedSearchPanel = false hideTabs = false expandedQueries = [ ] queryBuilder = false ignoredProperties = "id;name;classname;imagecontentshash" helperWidgetCurrentArea = "all" disabledIndexers = "" minIndexVariations = 2 findProviderIndexHelper = true ================================================ FILE: Projects/2023.1 Latest/Assets/Analyzer.meta ================================================ fileFormatVersion: 2 guid: 63c5480704ebff0429abf8879f31898b folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Custom Asmdef/InAssetFolder.asmdef ================================================ { "name": "InAssetFolder", "rootNamespace": "", "references": [], "includePlatforms": [], "excludePlatforms": [], "allowUnsafeCode": false, "overrideReferences": false, "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], "versionDefines": [], "noEngineReferences": false } ================================================ FILE: Projects/2023.1 Latest/Assets/Custom Asmdef/InAssetFolder.asmdef.meta ================================================ fileFormatVersion: 2 guid: 02a83d3e11a5a9745b46ca562b00be0e AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Custom Asmdef/TimTam.cs ================================================ using System.Collections; using System.Collections.Generic; using UnityEngine; public class TimTam : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } } ================================================ FILE: Projects/2023.1 Latest/Assets/Custom Asmdef/TimTam.cs.meta ================================================ fileFormatVersion: 2 guid: 8569e12c481432146a309f64fab7c80c MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Custom Asmdef.meta ================================================ fileFormatVersion: 2 guid: 051e38478c4283c4ea841b4cd457dae4 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Editor/CSProjAssetTests.cs ================================================ using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text.RegularExpressions; using System.Threading; using NUnit.Framework; using UnityEditor; using UnityEngine; using UnityEngine.TestTools; namespace VSCodeEditor.Runtime_spec.CSProject { [TestFixture] [Serializable] public abstract class CleanupTest { [SerializeField] protected IGenerator m_ProjectGeneration; [SerializeField] readonly List<string> m_GeneratedFiles = new(); [SerializeField] readonly List<string> m_DirectoriesToDelete = new(); [SerializeField] protected string m_CsProjPath; [SerializeField] protected DateTime m_LastWritten; protected const string k_EmptyCSharpScript = @" using UnityEngine; public class SimpleCSharpScript : MonoBehaviour { void Start() { } }"; [SetUp] public void SetUp() { var projectDirectory = Directory.GetParent(Application.dataPath).FullName; m_ProjectGeneration = new ProjectGeneration(projectDirectory); } [UnityTearDown] protected virtual IEnumerator TearDown() { foreach (var pathToDelete in m_GeneratedFiles) { if (File.Exists(pathToDelete)) { File.Delete(pathToDelete); } if (File.Exists(pathToDelete + ".meta")) { File.Delete(pathToDelete + ".meta"); } } foreach (var directoryToDelete in m_DirectoriesToDelete) { if (Directory.Exists(directoryToDelete)) { Directory.Delete(directoryToDelete, true); File.Delete(directoryToDelete + ".meta"); } } m_GeneratedFiles.Clear(); m_DirectoriesToDelete.Clear(); yield return new RecompileScripts(false); } protected void CopyScriptToAssetsFolder(string assetPath, string fileName, string content) { var targetFile = Path.Combine(assetPath, fileName); m_GeneratedFiles.Add(targetFile); File.WriteAllText(targetFile, content); } protected void CreateFolder(string path) { m_DirectoriesToDelete.Add(path); Directory.CreateDirectory(path); } } public class BuildTarget : CleanupTest { [SerializeField] UnityEditor.BuildTarget m_Original; protected override IEnumerator TearDown() { EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, m_Original ); return base.TearDown(); } [UnityPlatform(RuntimePlatform.WindowsEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_Windows() { m_Original = UnityEditor.BuildTarget.StandaloneWindows64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", () => { } ); } [UnityPlatform(RuntimePlatform.OSXEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_MacOSX() { m_Original = UnityEditor.BuildTarget.StandaloneOSX; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", () => { } ); } [UnityPlatform(RuntimePlatform.LinuxEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChanges_Linux() { m_Original = UnityEditor.BuildTarget.StandaloneLinux64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", () => { } ); } [UnityPlatform(RuntimePlatform.WindowsEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Windows() { m_Original = UnityEditor.BuildTarget.StandaloneWindows64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } [UnityPlatform(RuntimePlatform.OSXEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_MacOSX() { m_Original = UnityEditor.BuildTarget.StandaloneOSX; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", UnityEditor.BuildTarget.StandaloneWindows64, "PLATFORM_STANDALONE_WIN", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } [UnityPlatform(RuntimePlatform.LinuxEditor)] [UnityTest] public IEnumerator WhenActiveBuildTargetChangesAfterScriptReload_Linux() { m_Original = UnityEditor.BuildTarget.StandaloneLinux64; return AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget.StandaloneLinux64, "PLATFORM_STANDALONE_LINUX", UnityEditor.BuildTarget.StandaloneOSX, "PLATFORM_STANDALONE_OSX", () => { CopyScriptToAssetsFolder(Application.dataPath, "SimpleCSharpScript2.cs", " "); } ); } IEnumerator AssertSynchronizedWhenActiveBuildTargetChanges( UnityEditor.BuildTarget platformTarget, string platformDefine, UnityEditor.BuildTarget changeTarget, string changeDefine, Action action ) { EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, platformTarget ); CopyScriptToAssetsFolder( Application.dataPath, "SimpleCSharpScript.cs", k_EmptyCSharpScript ); yield return new RecompileScripts(true); m_ProjectGeneration.Sync(); var dir = Directory.GetParent(Application.dataPath).FullName; m_CsProjPath = Path.Combine(dir, "Assembly-CSharp.csproj"); AssertProjectContainsDefine(m_CsProjPath, platformDefine); action(); m_LastWritten = DateTime.Now.AddSeconds(-1); File.SetLastWriteTime(m_CsProjPath, m_LastWritten); //switch target to another one than the standalone target for the current platform EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTargetGroup.Standalone, changeTarget ); yield return new RecompileScripts(true); m_ProjectGeneration.Sync(); WaitForCondition(() => File.GetLastWriteTime(m_CsProjPath) > m_LastWritten); AssertProjectContainsDefine(m_CsProjPath, changeDefine); yield return null; } static void AssertProjectContainsDefine(string csProjPath, string expectedDefine) { var content = File.ReadAllText(csProjPath); Assert.IsTrue( Regex.IsMatch(content, $"<DefineConstants>.*;{expectedDefine}.*</DefineConstants>") ); } delegate bool Condition(); static void WaitForCondition(Condition condition) { var started = DateTime.Now; while (!condition()) { if (DateTime.Now - started > k_Timeout) throw new TimeoutException( $"Timeout while waiting for c# project to be rewritten for {k_Timeout.TotalSeconds} seconds" ); Thread.Sleep(10); } } static readonly TimeSpan k_Timeout = TimeSpan.FromSeconds(5); } } ================================================ FILE: Projects/2023.1 Latest/Assets/Editor/CSProjAssetTests.cs.meta ================================================ fileFormatVersion: 2 guid: 09b6f746cf9797a4a97e259d45a38ec1 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Editor/RecompileScripts.cs ================================================ using System; using System.Collections; using UnityEditor; using UnityEngine.TestTools; public class RecompileScripts : IEditModeTestYieldInstruction { public RecompileScripts() : this(true) { } public RecompileScripts(bool expectScriptCompilation) : this(expectScriptCompilation, true) { } public RecompileScripts(bool expectScriptCompilation, bool expectScriptCompilationSuccess) { ExpectScriptCompilation = expectScriptCompilation; ExpectScriptCompilationSuccess = expectScriptCompilationSuccess; ExpectDomainReload = true; } public bool ExpectDomainReload { get; } public bool ExpectedPlaymodeState { get; } public bool ExpectScriptCompilation { get; } public bool ExpectScriptCompilationSuccess { get; } public static RecompileScripts Current { get; private set; } public IEnumerator Perform() { Current = this; AssetDatabase.Refresh(); if (ExpectScriptCompilation && !EditorApplication.isCompiling) { Current = null; throw new Exception("Editor does not need to recompile scripts"); } EditorApplication.UnlockReloadAssemblies(); while (EditorApplication.isCompiling) { yield return null; } Current = null; if (ExpectScriptCompilationSuccess && EditorUtility.scriptCompilationFailed) { EditorApplication.LockReloadAssemblies(); throw new Exception("Script compilation failed"); } } } ================================================ FILE: Projects/2023.1 Latest/Assets/Editor/RecompileScripts.cs.meta ================================================ fileFormatVersion: 2 guid: 35e5ed6756833644c83c24382f01236b MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Editor.meta ================================================ fileFormatVersion: 2 guid: 8a06cae000d3e064aa6a3530ef8bbabc folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/KoalaExtensionTest.koala ================================================ ================================================ FILE: Projects/2023.1 Latest/Assets/KoalaExtensionTest.koala.meta ================================================ fileFormatVersion: 2 guid: 9972cb3bb6a98ab469a9399f8bc337c6 DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Scenes/SampleScene.unity ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!29 &1 OcclusionCullingSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_OcclusionBakeSettings: smallestOccluder: 5 smallestHole: 0.25 backfaceThreshold: 100 m_SceneGUID: 00000000000000000000000000000000 m_OcclusionCullingData: {fileID: 0} --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 serializedVersion: 9 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 m_FogDensity: 0.01 m_LinearFogStart: 0 m_LinearFogEnd: 300 m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} m_AmbientIntensity: 1 m_AmbientMode: 0 m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} m_HaloStrength: 0.5 m_FlareStrength: 1 m_FlareFadeSpeed: 3 m_HaloTexture: {fileID: 0} m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} m_DefaultReflectionMode: 0 m_DefaultReflectionResolution: 128 m_ReflectionBounces: 1 m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 705507994} m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 serializedVersion: 11 m_GIWorkflowMode: 0 m_GISettings: serializedVersion: 2 m_BounceScale: 1 m_IndirectOutputScale: 1 m_AlbedoBoost: 1 m_TemporalCoherenceThreshold: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: serializedVersion: 10 m_Resolution: 2 m_BakeResolution: 40 m_AtlasSize: 1024 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 m_TextureCompression: 1 m_FinalGather: 0 m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 256 m_ReflectionCompression: 2 m_MixedBakeMode: 2 m_BakeBackend: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVRBounces: 2 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 m_PVRFilteringMode: 1 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 m_ShowResolutionOverlay: 1 m_LightingDataAsset: {fileID: 0} m_UseShadowmask: 1 --- !u!196 &4 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.4 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 accuratePlacement: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} --- !u!1 &705507993 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 705507995} - component: {fileID: 705507994} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!108 &705507994 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 705507993} m_Enabled: 1 serializedVersion: 8 m_Type: 1 m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} m_Intensity: 1 m_Range: 10 m_SpotAngle: 30 m_CookieSize: 10 m_Shadows: m_Type: 2 m_Resolution: -1 m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 m_NormalBias: 0.4 m_NearPlane: 0.2 m_Cookie: {fileID: 0} m_DrawHalo: 0 m_Flare: {fileID: 0} m_RenderMode: 0 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_Lightmapping: 1 m_LightShadowCasterMode: 0 m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 m_ColorTemperature: 6570 m_UseColorTemperature: 0 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &705507995 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 705507993} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &963194225 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 963194228} - component: {fileID: 963194227} - component: {fileID: 963194226} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!81 &963194226 AudioListener: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 --- !u!20 &963194227 Camera: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} m_projectionMatrixMode: 1 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} m_GateFitMode: 2 m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 near clip plane: 0.3 far clip plane: 1000 field of view: 60 orthographic: 0 orthographic size: 5 m_Depth: -1 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_RenderingPath: -1 m_TargetTexture: {fileID: 0} m_TargetDisplay: 0 m_TargetEye: 3 m_HDR: 1 m_AllowMSAA: 1 m_AllowDynamicResolution: 0 m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 --- !u!4 &963194228 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 963194225} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ================================================ FILE: Projects/2023.1 Latest/Assets/Scenes/SampleScene.unity.meta ================================================ fileFormatVersion: 2 guid: 9fc0d4010bbf28b4594072e72b8655ab DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Scenes/SampleSceneSettings.lighting ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!850595691 &4890085278179872738 LightingSettings: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: SampleSceneSettings serializedVersion: 2 m_GIWorkflowMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_RealtimeEnvironmentLighting: 1 m_BounceScale: 1 m_AlbedoBoost: 1 m_IndirectOutputScale: 1 m_UsingShadowmask: 1 m_BakeBackend: 1 m_LightmapMaxSize: 1024 m_BakeResolution: 40 m_Padding: 2 m_TextureCompression: 1 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 m_ExtractAO: 0 m_MixedBakeMode: 2 m_LightmapsBakeMode: 1 m_FilterMode: 1 m_LightmapParameters: {fileID: 0} m_ExportTrainingData: 0 m_TrainingDataDestination: TrainingData m_RealtimeResolution: 2 m_ForceWhiteAlbedo: 0 m_ForceUpdates: 0 m_FinalGather: 0 m_FinalGatherRayCount: 256 m_FinalGatherFiltering: 1 m_PVRCulling: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVREnvironmentSampleCount: 500 m_PVREnvironmentReferencePointCount: 2048 m_LightProbeSampleCountMultiplier: 4 m_PVRBounces: 2 m_PVRRussianRouletteStartBounce: 2 m_PVREnvironmentMIS: 0 m_PVRFilteringMode: 2 m_PVRDenoiserTypeDirect: 0 m_PVRDenoiserTypeIndirect: 0 m_PVRDenoiserTypeAO: 0 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 ================================================ FILE: Projects/2023.1 Latest/Assets/Scenes/SampleSceneSettings.lighting.meta ================================================ fileFormatVersion: 2 guid: a0eb4567ffade2f47b9fc6e006e4ce91 NativeFormatImporter: externalObjects: {} mainObjectFileID: 0 userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Scenes.meta ================================================ fileFormatVersion: 2 guid: 2c4ecd2c3fea48442bfed0ebc5181951 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Assets/Test.cs ================================================ using UnityEngine; public class Test : MonoBehaviour { void Start() { TestCode.TestClass.TestMethod(); } } ================================================ FILE: Projects/2023.1 Latest/Assets/Test.cs.meta ================================================ fileFormatVersion: 2 guid: 8dc025fb3786c0b41a0bb4360be46b9a MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: Projects/2023.1 Latest/Packages/manifest.json ================================================ { "disableProjectUpdate": true, "dependencies": { "com.tsk.ide.vscode": "file:../../../com.tsk.ide.vscode", "com.tsk.ide.vscodetests": "file:../../../com.tsk.ide.vscodetests", "com.unity.test-framework": "1.3.4" } } ================================================ FILE: Projects/2023.1 Latest/Packages/packages-lock.json ================================================ { "dependencies": { "com.tsk.ide.vscode": { "version": "file:../../../com.tsk.ide.vscode", "depth": 0, "source": "local", "dependencies": {} }, "com.tsk.ide.vscodetests": { "version": "file:../../../com.tsk.ide.vscodetests", "depth": 0, "source": "local", "dependencies": { "nuget.moq": "1.0.0" } }, "com.unity.ext.nunit": { "version": "2.0.3", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.test-framework": { "version": "1.3.4", "depth": 0, "source": "registry", "dependencies": { "com.unity.ext.nunit": "2.0.3", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" }, "url": "https://packages.unity.com" }, "nuget.castle-core": { "version": "1.0.1", "depth": 2, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "nuget.moq": { "version": "1.0.0", "depth": 1, "source": "registry", "dependencies": { "nuget.castle-core": "1.0.1" }, "url": "https://packages.unity.com" }, "com.unity.modules.imgui": { "version": "1.0.0", "depth": 1, "source": "builtin", "dependencies": {} }, "com.unity.modules.jsonserialize": { "version": "1.0.0", "depth": 1, "source": "builtin", "dependencies": {} } } } ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/AudioManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!11 &1 AudioManager: m_ObjectHideFlags: 0 m_Volume: 1 Rolloff Scale: 1 Doppler Factor: 1 Default Speaker Mode: 2 m_SampleRate: 0 m_DSPBufferSize: 1024 m_VirtualVoiceCount: 512 m_RealVoiceCount: 32 m_SpatializerPlugin: m_AmbisonicDecoderPlugin: m_DisableAudio: 0 m_VirtualizeEffects: 1 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/ClusterInputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!236 &1 ClusterInputManager: m_ObjectHideFlags: 0 m_Inputs: [] ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/DynamicsManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!55 &1 PhysicsManager: m_ObjectHideFlags: 0 serializedVersion: 11 m_Gravity: {x: 0, y: -9.81, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 m_SleepThreshold: 0.005 m_DefaultContactOffset: 0.01 m_DefaultSolverIterations: 6 m_DefaultSolverVelocityIterations: 1 m_QueriesHitBackfaces: 0 m_QueriesHitTriggers: 1 m_EnableAdaptiveForce: 0 m_ClothInterCollisionDistance: 0 m_ClothInterCollisionStiffness: 0 m_ContactsGeneration: 1 m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_AutoSimulation: 1 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 0 m_ClothInterCollisionSettingsToggle: 0 m_ContactPairsMode: 0 m_BroadphaseType: 0 m_WorldBounds: m_Center: {x: 0, y: 0, z: 0} m_Extent: {x: 250, y: 250, z: 250} m_WorldSubdivisions: 8 m_FrictionType: 0 m_EnableEnhancedDeterminism: 0 m_EnableUnifiedHeightmaps: 1 m_DefaultMaxAngluarSpeed: 7 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/EditorBuildSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1045 &1 EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: [] m_configObjects: {} ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/EditorSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!159 &1 EditorSettings: m_ObjectHideFlags: 0 serializedVersion: 7 m_ExternalVersionControlSupport: Hidden Meta Files m_SerializationMode: 2 m_LineEndingsForNewScripts: 2 m_DefaultBehaviorMode: 0 m_PrefabRegularEnvironment: {fileID: 0} m_PrefabUIEnvironment: {fileID: 0} m_SpritePackerMode: 0 m_SpritePackerPaddingPower: 1 m_EtcTextureCompressorBehavior: 1 m_EtcTextureFastCompressor: 1 m_EtcTextureNormalCompressor: 2 m_EtcTextureBestCompressor: 4 m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp m_ProjectGenerationRootNamespace: m_CollabEditorSettings: inProgressEnabled: 1 m_EnableTextureStreamingInEditMode: 0 m_EnableTextureStreamingInPlayMode: 1 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/GraphicsSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!30 &1 GraphicsSettings: m_ObjectHideFlags: 0 serializedVersion: 12 m_Deferred: m_Mode: 1 m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} m_DeferredReflections: m_Mode: 1 m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} m_ScreenSpaceShadows: m_Mode: 1 m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} m_LegacyDeferred: m_Mode: 1 m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} m_DepthNormals: m_Mode: 1 m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} m_MotionVectors: m_Mode: 1 m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} m_LightHalo: m_Mode: 1 m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} m_LensFlare: m_Mode: 1 m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} m_AlwaysIncludedShaders: - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_CustomRenderPipeline: {fileID: 0} m_TransparencySortMode: 0 m_TransparencySortAxis: {x: 0, y: 0, z: 1} m_DefaultRenderingPath: 1 m_DefaultMobileRenderingPath: 1 m_TierSettings: [] m_LightmapStripping: 0 m_FogStripping: 0 m_InstancingStripping: 0 m_LightmapKeepPlain: 1 m_LightmapKeepDirCombined: 1 m_LightmapKeepDynamicPlain: 1 m_LightmapKeepDynamicDirCombined: 1 m_LightmapKeepShadowMask: 1 m_LightmapKeepSubtractive: 1 m_FogKeepLinear: 1 m_FogKeepExp: 1 m_FogKeepExp2: 1 m_AlbedoSwatchInfos: [] m_LightsUseLinearIntensity: 0 m_LightsUseColorTemperature: 0 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/InputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!13 &1 InputManager: m_ObjectHideFlags: 0 serializedVersion: 2 m_Axes: - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: left positiveButton: right altNegativeButton: a altPositiveButton: d gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: down positiveButton: up altNegativeButton: s altPositiveButton: w gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left ctrl altNegativeButton: altPositiveButton: mouse 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left alt altNegativeButton: altPositiveButton: mouse 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left shift altNegativeButton: altPositiveButton: mouse 2 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: space altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse X descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse Y descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Mouse ScrollWheel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 2 joyNum: 0 - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 0 type: 2 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 1 type: 2 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 0 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 1 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 2 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 3 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: return altNegativeButton: altPositiveButton: joystick button 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: enter altNegativeButton: altPositiveButton: space gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Cancel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: escape altNegativeButton: altPositiveButton: joystick button 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/MemorySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!387306366 &1 MemorySettings: m_ObjectHideFlags: 0 m_EditorMemorySettings: m_MainAllocatorBlockSize: -1 m_ThreadAllocatorBlockSize: -1 m_MainGfxBlockSize: -1 m_ThreadGfxBlockSize: -1 m_CacheBlockSize: -1 m_TypetreeBlockSize: -1 m_ProfilerBlockSize: -1 m_ProfilerEditorBlockSize: -1 m_BucketAllocatorGranularity: -1 m_BucketAllocatorBucketsCount: -1 m_BucketAllocatorBlockSize: -1 m_BucketAllocatorBlockCount: -1 m_ProfilerBucketAllocatorGranularity: -1 m_ProfilerBucketAllocatorBucketsCount: -1 m_ProfilerBucketAllocatorBlockSize: -1 m_ProfilerBucketAllocatorBlockCount: -1 m_TempAllocatorSizeMain: -1 m_JobTempAllocatorBlockSize: -1 m_BackgroundJobTempAllocatorBlockSize: -1 m_JobTempAllocatorReducedBlockSize: -1 m_TempAllocatorSizeGIBakingWorker: -1 m_TempAllocatorSizeNavMeshWorker: -1 m_TempAllocatorSizeAudioWorker: -1 m_TempAllocatorSizeCloudWorker: -1 m_TempAllocatorSizeGfx: -1 m_TempAllocatorSizeJobWorker: -1 m_TempAllocatorSizeBackgroundWorker: -1 m_TempAllocatorSizePreloadManager: -1 m_PlatformMemorySettings: {} ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/NavMeshAreas.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!126 &1 NavMeshProjectSettings: m_ObjectHideFlags: 0 serializedVersion: 2 areas: - name: Walkable cost: 1 - name: Not Walkable cost: 1 - name: Jump cost: 2 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 m_LastAgentTypeID: -887442657 m_Settings: - serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.75 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 accuratePlacement: 0 debug: m_Flags: 0 m_SettingNames: - Humanoid ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/PackageManagerSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &1 MonoBehaviour: m_ObjectHideFlags: 61 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} m_Name: m_EditorClassIdentifier: m_EnablePreReleasePackages: 0 m_EnablePackageDependencies: 0 m_AdvancedSettingsExpanded: 1 m_ScopedRegistriesSettingsExpanded: 1 m_SeeAllPackageVersions: 0 oneTimeWarningShown: 0 m_Registries: - m_Id: main m_Name: m_Url: https://packages.unity.com m_Scopes: [] m_IsDefault: 1 m_Capabilities: 7 m_ConfigSource: 0 m_UserSelectedRegistryName: m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: m_Modified: 0 m_ErrorMessage: m_UserModificationsInstanceId: -856 m_OriginalInstanceId: -858 m_LoadAssets: 0 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/Physics2DSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!19 &1 Physics2DSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_Gravity: {x: 0, y: -9.81} m_DefaultMaterial: {fileID: 0} m_VelocityIterations: 8 m_PositionIterations: 3 m_VelocityThreshold: 1 m_MaxLinearCorrection: 0.2 m_MaxAngularCorrection: 8 m_MaxTranslationSpeed: 100 m_MaxRotationSpeed: 360 m_BaumgarteScale: 0.2 m_BaumgarteTimeOfImpactScale: 0.75 m_TimeToSleep: 0.5 m_LinearSleepTolerance: 0.01 m_AngularSleepTolerance: 2 m_DefaultContactOffset: 0.01 m_JobOptions: serializedVersion: 2 useMultithreading: 0 useConsistencySorting: 0 m_InterpolationPosesPerJob: 100 m_NewContactsPerJob: 30 m_CollideContactsPerJob: 100 m_ClearFlagsPerJob: 200 m_ClearBodyForcesPerJob: 200 m_SyncDiscreteFixturesPerJob: 50 m_SyncContinuousFixturesPerJob: 50 m_FindNearestContactsPerJob: 100 m_UpdateTriggerContactsPerJob: 100 m_IslandSolverCostThreshold: 100 m_IslandSolverBodyCostScale: 1 m_IslandSolverContactCostScale: 10 m_IslandSolverJointCostScale: 10 m_IslandSolverBodiesPerJob: 50 m_IslandSolverContactsPerJob: 50 m_AutoSimulation: 1 m_QueriesHitTriggers: 1 m_QueriesStartInColliders: 1 m_CallbacksOnDisable: 1 m_ReuseCollisionCallbacks: 0 m_AutoSyncTransforms: 0 m_AlwaysShowColliders: 0 m_ShowColliderSleep: 1 m_ShowColliderContacts: 0 m_ShowColliderAABB: 0 m_ContactArrowScale: 0.2 m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/PresetManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1386491679 &1 PresetManager: m_ObjectHideFlags: 0 m_DefaultList: [] ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/ProjectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 serializedVersion: 27 productGUID: 3cf05ef9cf0e9f44882ce8aa0f0daebe AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 AndroidEnableSustainedPerformanceMode: 0 defaultScreenOrientation: 4 targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 companyName: DefaultCompany productName: TestVSCodePackage defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} m_ShowUnitySplashScreen: 1 m_ShowUnitySplashLogo: 1 m_SplashScreenOverlayOpacity: 1 m_SplashScreenAnimation: 1 m_SplashScreenLogoStyle: 1 m_SplashScreenDrawMode: 0 m_SplashScreenBackgroundAnimationZoom: 1 m_SplashScreenLogoAnimationZoom: 1 m_SplashScreenBackgroundLandscapeAspect: 1 m_SplashScreenBackgroundPortraitAspect: 1 m_SplashScreenBackgroundLandscapeUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenBackgroundPortraitUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenLogos: [] m_VirtualRealitySplashScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0} defaultScreenWidth: 1024 defaultScreenHeight: 768 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 m_ActiveColorSpace: 0 m_SpriteBatchVertexThreshold: 300 m_MTRendering: 1 mipStripping: 0 numberOfMipsStripped: 0 numberOfMipsStrippedPerMipmapLimitGroup: {} m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 iosUseCustomAppBackgroundBehavior: 0 allowedAutorotateToPortrait: 1 allowedAutorotateToPortraitUpsideDown: 1 allowedAutorotateToLandscapeRight: 1 allowedAutorotateToLandscapeLeft: 1 useOSAutorotation: 1 use32BitDisplayBuffer: 1 preserveFramebufferAlpha: 0 disableDepthAndStencilBuffers: 0 androidStartInFullscreen: 1 androidRenderOutsideSafeArea: 0 androidUseSwappy: 0 androidBlitType: 0 androidResizableWindow: 0 androidDefaultWindowWidth: 1920 androidDefaultWindowHeight: 1080 androidMinimumWindowWidth: 400 androidMinimumWindowHeight: 300 androidFullscreenMode: 1 androidApplicationEntry: 1 defaultIsNativeResolution: 1 macRetinaSupport: 1 runInBackground: 1 captureSingleScreen: 0 muteOtherAudioSources: 0 Prepare IOS For Recording: 0 Force IOS Speakers When Recording: 0 deferSystemGesturesMode: 0 hideHomeButton: 0 submitAnalytics: 1 usePlayerLog: 1 bakeCollisionMeshes: 0 forceSingleInstance: 0 useFlipModelSwapchain: 1 resizableWindow: 0 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games gpuSkinning: 1 meshDeformation: 0 xboxPIXTextureCapture: 0 xboxEnableAvatar: 0 xboxEnableKinect: 0 xboxEnableKinectAutoTracking: 0 xboxEnableFitness: 0 visibleInBackground: 1 allowFullscreenSwitch: 1 fullscreenMode: 1 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 xboxEnableGuest: 0 xboxEnablePIXSampling: 0 metalFramebufferOnly: 0 xboxOneResolution: 0 xboxOneSResolution: 0 xboxOneXResolution: 3 xboxOneMonoLoggingLevel: 0 xboxOneLoggingLevel: 1 xboxOneDisableEsram: 0 xboxOneEnableTypeOptimization: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 switchQueueControlMemory: 0 switchQueueComputeMemory: 262144 switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 switchGpuScratchPoolGranularity: 2097152 switchAllowGpuScratchShrinking: 0 switchNVNMaxPublicTextureIDCount: 0 switchNVNMaxPublicSamplerIDCount: 0 switchNVNGraphicsFirmwareMemory: 32 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 vulkanEnablePreTransform: 0 vulkanEnableLateAcquireNextImage: 0 vulkanEnableCommandBufferRecycling: 1 loadStoreDebugModeEnabled: 0 bundleVersion: 0.1 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 0 xboxOneEnable7thCore: 0 vrSettings: enable360StereoCapture: 0 isWsaHolographicRemotingEnabled: 0 enableFrameTimingStats: 0 enableOpenGLProfilerGPURecorders: 1 useHDRDisplay: 0 hdrBitDepth: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 resolutionScalingMode: 0 resetResolutionOnWindowResize: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: Standalone: com.DefaultCompany.TestVSCodePackage buildNumber: Standalone: 0 iPhone: 0 tvOS: 0 overrideDefaultApplicationIdentifier: 0 AndroidBundleVersionCode: 1 AndroidMinSdkVersion: 22 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: stripEngineCode: 1 iPhoneStrippingLevel: 0 iPhoneScriptCallOptimization: 0 ForceInternetPermission: 0 ForceSDCardPermission: 0 CreateWallpaper: 0 androidSplitApplicationBinary: 0 keepLoadedShadersAlive: 0 StripUnusedMeshComponents: 1 strictShaderVariantMatching: 0 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 iOSTargetOSVersionString: 13.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 tvOSTargetOSVersionString: 13.0 uIPrerenderedIcon: 0 uIRequiresPersistentWiFi: 0 uIRequiresFullScreen: 1 uIStatusBarHidden: 1 uIExitOnSuspend: 0 uIStatusBarStyle: 0 appleTVSplashScreen: {fileID: 0} appleTVSplashScreen2x: {fileID: 0} tvOSSmallIconLayers: [] tvOSSmallIconLayers2x: [] tvOSLargeIconLayers: [] tvOSLargeIconLayers2x: [] tvOSTopShelfImageLayers: [] tvOSTopShelfImageLayers2x: [] tvOSTopShelfImageWideLayers: [] tvOSTopShelfImageWideLayers2x: [] iOSLaunchScreenType: 0 iOSLaunchScreenPortrait: {fileID: 0} iOSLaunchScreenLandscape: {fileID: 0} iOSLaunchScreenBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreenFillPct: 100 iOSLaunchScreenSize: 100 iOSLaunchScreenCustomXibPath: iOSLaunchScreeniPadType: 0 iOSLaunchScreeniPadImage: {fileID: 0} iOSLaunchScreeniPadBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreeniPadFillPct: 100 iOSLaunchScreeniPadSize: 100 iOSLaunchScreeniPadCustomXibPath: iOSLaunchScreenCustomStoryboardPath: iOSLaunchScreeniPadCustomStoryboardPath: iOSDeviceRequirements: [] iOSURLSchemes: [] macOSURLSchemes: [] iOSBackgroundModes: 0 iOSMetalForceHardShadows: 0 metalEditorSupport: 1 metalAPIValidation: 1 iOSRenderExtraFrameOnPause: 0 iosCopyPluginsCodeInsteadOfSymlink: 0 appleDeveloperTeamID: iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: iOSManualSigningProvisioningProfileType: 0 tvOSManualSigningProvisioningProfileType: 0 appleEnableAutomaticSigning: 0 iOSRequireARKit: 0 iOSAutomaticallyDetectAndAddCapabilities: 1 appleEnableProMotion: 0 shaderPrecisionModel: 0 clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea templatePackageId: com.unity.template.3d@1.0.8 templateDefaultScene: Assets/Scenes/SampleScene.unity useCustomMainManifest: 0 useCustomLauncherManifest: 0 useCustomMainGradleTemplate: 0 useCustomLauncherGradleManifest: 0 useCustomBaseGradleTemplate: 0 useCustomGradlePropertiesTemplate: 0 useCustomGradleSettingsTemplate: 0 useCustomProguardFile: 0 AndroidTargetArchitectures: 5 AndroidTargetDevices: 0 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: '{inproject}: ' AndroidKeyaliasName: AndroidEnableArmv9SecurityFeatures: 0 AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 0 AndroidIsGame: 1 AndroidEnableTango: 0 androidEnableBanner: 1 androidUseLowAccuracyLocation: 0 androidUseCustomKeystore: 0 m_AndroidBanners: - width: 320 height: 180 banner: {fileID: 0} androidGamepadSupportLevel: 0 chromeosInputEmulation: 1 AndroidMinifyRelease: 0 AndroidMinifyDebug: 0 AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 100 AndroidReportGooglePlayAppDependencies: 1 m_BuildTargetIcons: [] m_BuildTargetPlatformIcons: - m_BuildTarget: Android m_Icons: - m_Textures: [] m_Width: 432 m_Height: 432 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 324 m_Height: 324 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 216 m_Height: 216 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 162 m_Height: 162 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 108 m_Height: 108 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 81 m_Height: 81 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 0 m_SubKind: m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: tvOS m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: Android m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: iPhone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: WebGL m_StaticBatching: 0 m_DynamicBatching: 0 m_BuildTargetShaderSettings: [] m_BuildTargetGraphicsJobs: - m_BuildTarget: WindowsStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: MacStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: LinuxStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: AndroidPlayer m_GraphicsJobs: 0 - m_BuildTarget: iOSSupport m_GraphicsJobs: 0 - m_BuildTarget: PS4Player m_GraphicsJobs: 0 - m_BuildTarget: PS5Player m_GraphicsJobs: 0 - m_BuildTarget: XboxOnePlayer m_GraphicsJobs: 0 - m_BuildTarget: GameCoreXboxOneSupport m_GraphicsJobs: 0 - m_BuildTarget: GameCoreScarlettSupport m_GraphicsJobs: 0 - m_BuildTarget: Switch m_GraphicsJobs: 0 - m_BuildTarget: WebGLSupport m_GraphicsJobs: 0 - m_BuildTarget: MetroSupport m_GraphicsJobs: 0 - m_BuildTarget: AppleTVSupport m_GraphicsJobs: 0 - m_BuildTarget: BJMSupport m_GraphicsJobs: 0 - m_BuildTarget: LuminSupport m_GraphicsJobs: 0 - m_BuildTarget: CloudRendering m_GraphicsJobs: 0 - m_BuildTarget: EmbeddedLinux m_GraphicsJobs: 0 m_BuildTargetGraphicsJobMode: - m_BuildTarget: PS4Player m_GraphicsJobMode: 0 - m_BuildTarget: XboxOnePlayer m_GraphicsJobMode: 0 m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer m_APIs: 0b000000 m_Automatic: 0 - m_BuildTarget: iOSSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: AppleTVSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: WebGLSupport m_APIs: 0b000000 m_Automatic: 1 m_BuildTargetVRSettings: - m_BuildTarget: Standalone m_Enabled: 0 m_Devices: - Oculus - OpenVR m_DefaultShaderChunkSizeInMB: 16 m_DefaultShaderChunkCount: 0 openGLRequireES31: 0 openGLRequireES31AEP: 0 openGLRequireES32: 0 m_TemplateCustomTags: {} mobileMTRendering: Android: 1 iPhone: 1 tvOS: 1 m_BuildTargetGroupLightmapEncodingQuality: [] m_BuildTargetGroupHDRCubemapEncodingQuality: [] m_BuildTargetGroupLightmapSettings: [] m_BuildTargetGroupLoadStoreDebugModeSettings: [] m_BuildTargetNormalMapEncoding: [] m_BuildTargetDefaultTextureCompressionFormat: [] playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 enableInternalProfiler: 0 logObjCUncaughtExceptions: 1 enableCrashReportAPI: 0 cameraUsageDescription: locationUsageDescription: microphoneUsageDescription: bluetoothUsageDescription: macOSTargetOSVersion: 10.13.0 switchNMETAOverride: switchNetLibKey: switchSocketMemoryPoolSize: 6144 switchSocketAllocatorPoolSize: 128 switchSocketConcurrencyLimit: 14 switchScreenResolutionBehavior: 2 switchUseCPUProfiler: 0 switchUseGOLDLinker: 0 switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: switchCompilerFlags: switchTitleNames_0: switchTitleNames_1: switchTitleNames_2: switchTitleNames_3: switchTitleNames_4: switchTitleNames_5: switchTitleNames_6: switchTitleNames_7: switchTitleNames_8: switchTitleNames_9: switchTitleNames_10: switchTitleNames_11: switchTitleNames_12: switchTitleNames_13: switchTitleNames_14: switchTitleNames_15: switchPublisherNames_0: switchPublisherNames_1: switchPublisherNames_2: switchPublisherNames_3: switchPublisherNames_4: switchPublisherNames_5: switchPublisherNames_6: switchPublisherNames_7: switchPublisherNames_8: switchPublisherNames_9: switchPublisherNames_10: switchPublisherNames_11: switchPublisherNames_12: switchPublisherNames_13: switchPublisherNames_14: switchPublisherNames_15: switchIcons_0: {fileID: 0} switchIcons_1: {fileID: 0} switchIcons_2: {fileID: 0} switchIcons_3: {fileID: 0} switchIcons_4: {fileID: 0} switchIcons_5: {fileID: 0} switchIcons_6: {fileID: 0} switchIcons_7: {fileID: 0} switchIcons_8: {fileID: 0} switchIcons_9: {fileID: 0} switchIcons_10: {fileID: 0} switchIcons_11: {fileID: 0} switchIcons_12: {fileID: 0} switchIcons_13: {fileID: 0} switchIcons_14: {fileID: 0} switchIcons_15: {fileID: 0} switchSmallIcons_0: {fileID: 0} switchSmallIcons_1: {fileID: 0} switchSmallIcons_2: {fileID: 0} switchSmallIcons_3: {fileID: 0} switchSmallIcons_4: {fileID: 0} switchSmallIcons_5: {fileID: 0} switchSmallIcons_6: {fileID: 0} switchSmallIcons_7: {fileID: 0} switchSmallIcons_8: {fileID: 0} switchSmallIcons_9: {fileID: 0} switchSmallIcons_10: {fileID: 0} switchSmallIcons_11: {fileID: 0} switchSmallIcons_12: {fileID: 0} switchSmallIcons_13: {fileID: 0} switchSmallIcons_14: {fileID: 0} switchSmallIcons_15: {fileID: 0} switchManualHTML: switchAccessibleURLs: switchLegalInformation: switchMainThreadStackSize: 1048576 switchPresenceGroupId: switchLogoHandling: 0 switchReleaseVersion: 0 switchDisplayVersion: 1.0.0 switchStartupUserAccount: 0 switchSupportedLanguagesMask: 0 switchLogoType: 0 switchApplicationErrorCodeCategory: switchUserAccountSaveDataSize: 0 switchUserAccountSaveDataJournalSize: 0 switchApplicationAttribute: 0 switchCardSpecSize: -1 switchCardSpecClock: -1 switchRatingsMask: 0 switchRatingsInt_0: 0 switchRatingsInt_1: 0 switchRatingsInt_2: 0 switchRatingsInt_3: 0 switchRatingsInt_4: 0 switchRatingsInt_5: 0 switchRatingsInt_6: 0 switchRatingsInt_7: 0 switchRatingsInt_8: 0 switchRatingsInt_9: 0 switchRatingsInt_10: 0 switchRatingsInt_11: 0 switchRatingsInt_12: 0 switchLocalCommunicationIds_0: switchLocalCommunicationIds_1: switchLocalCommunicationIds_2: switchLocalCommunicationIds_3: switchLocalCommunicationIds_4: switchLocalCommunicationIds_5: switchLocalCommunicationIds_6: switchLocalCommunicationIds_7: switchParentalControl: 0 switchAllowsScreenshot: 1 switchAllowsVideoCapturing: 1 switchAllowsRuntimeAddOnContentInstall: 0 switchDataLossConfirmation: 0 switchUserAccountLockEnabled: 0 switchSystemResourceMemory: 16777216 switchSupportedNpadStyles: 3 switchNativeFsCacheSize: 32 switchIsHoldTypeHorizontal: 0 switchSupportedNpadCount: 8 switchEnableTouchScreen: 1 switchSocketConfigEnabled: 0 switchTcpInitialSendBufferSize: 32 switchTcpInitialReceiveBufferSize: 64 switchTcpAutoSendBufferSizeMax: 256 switchTcpAutoReceiveBufferSizeMax: 256 switchUdpSendBufferSize: 9 switchUdpReceiveBufferSize: 42 switchSocketBufferEfficiency: 4 switchSocketInitializeEnabled: 1 switchNetworkInterfaceManagerInitializeEnabled: 1 switchPlayerConnectionEnabled: 1 switchUseNewStyleFilepaths: 0 switchUseLegacyFmodPriorities: 0 switchUseMicroSleepForYield: 1 switchEnableRamDiskSupport: 0 switchMicroSleepForYieldTime: 25 switchRamDiskSpaceSize: 12 ps4NPAgeRating: 12 ps4NPTitleSecret: ps4NPTrophyPackPath: ps4ParentalLevel: 11 ps4ContentID: ED1633-NPXX51362_00-0000000000000000 ps4Category: 0 ps4MasterVersion: 01.00 ps4AppVersion: 01.00 ps4AppType: 0 ps4ParamSfxPath: ps4VideoOutPixelFormat: 0 ps4VideoOutInitialWidth: 1920 ps4VideoOutBaseModeInitialWidth: 1920 ps4VideoOutReprojectionRate: 60 ps4PronunciationXMLPath: ps4PronunciationSIGPath: ps4BackgroundImagePath: ps4StartupImagePath: ps4StartupImagesFolder: ps4IconImagesFolder: ps4SaveDataImagePath: ps4SdkOverride: ps4BGMPath: ps4ShareFilePath: ps4ShareOverlayImagePath: ps4PrivacyGuardImagePath: ps4ExtraSceSysFile: ps4NPtitleDatPath: ps4RemotePlayKeyAssignment: -1 ps4RemotePlayKeyMappingDir: ps4PlayTogetherPlayerCount: 0 ps4EnterButtonAssignment: 1 ps4ApplicationParam1: 0 ps4ApplicationParam2: 0 ps4ApplicationParam3: 0 ps4ApplicationParam4: 0 ps4DownloadDataSize: 0 ps4GarlicHeapSize: 2048 ps4ProGarlicHeapSize: 2560 playerPrefsMaxSize: 32768 ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ ps4pnSessions: 1 ps4pnPresence: 1 ps4pnFriends: 1 ps4pnGameCustomData: 1 playerPrefsSupport: 0 enableApplicationExit: 0 resetTempFolder: 1 restrictedAudioUsageRights: 0 ps4UseResolutionFallback: 0 ps4ReprojectionSupport: 0 ps4UseAudio3dBackend: 0 ps4UseLowGarlicFragmentationMode: 1 ps4SocialScreenEnabled: 0 ps4ScriptOptimizationLevel: 0 ps4Audio3dVirtualSpeakerCount: 14 ps4attribCpuUsage: 0 ps4PatchPkgPath: ps4PatchLatestPkgPath: ps4PatchChangeinfoPath: ps4PatchDayOne: 0 ps4attribUserManagement: 0 ps4attribMoveSupport: 0 ps4attrib3DSupport: 0 ps4attribShareSupport: 0 ps4attribExclusiveVR: 0 ps4disableAutoHideSplash: 0 ps4videoRecordingFeaturesUsed: 0 ps4contentSearchFeaturesUsed: 0 ps4CompatibilityPS5: 0 ps4AllowPS5Detection: 0 ps4GPU800MHz: 1 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] ps4attribVROutputEnabled: 0 monoEnv: splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0} blurSplashScreenBackground: 1 spritePackerPolicy: webGLMemorySize: 16 webGLExceptionSupport: 1 webGLNameFilesAsHashes: 0 webGLShowDiagnostics: 0 webGLDataCaching: 1 webGLDebugSymbols: 0 webGLEmscriptenArgs: webGLModulesDirectory: webGLTemplate: APPLICATION:Default webGLAnalyzeBuildSize: 0 webGLUseEmbeddedResources: 0 webGLCompressionFormat: 1 webGLWasmArithmeticExceptions: 0 webGLLinkerTarget: 1 webGLThreadsSupport: 0 webGLDecompressionFallback: 0 webGLInitialMemorySize: 32 webGLMaximumMemorySize: 2048 webGLMemoryGrowthMode: 2 webGLMemoryLinearGrowthStep: 16 webGLMemoryGeometricGrowthStep: 0.2 webGLMemoryGeometricGrowthCap: 96 webGLPowerPreference: 2 scriptingDefineSymbols: Standalone: THISDEFINEISEXTREMELYUNLIKELYTOEXISTBYDEFAULT;ALSOTHISONE;FINALLYTHISONE additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: Standalone: 0 il2cppCompilerConfiguration: {} il2cppCodeGeneration: {} il2cppStacktraceInformation: {} managedStrippingLevel: EmbeddedLinux: 1 GameCoreScarlett: 1 GameCoreXboxOne: 1 Nintendo Switch: 1 PS4: 1 PS5: 1 QNX: 1 Stadia: 1 WebGL: 1 Windows Store Apps: 1 XboxOne: 1 iPhone: 1 tvOS: 1 incrementalIl2cppBuild: {} suppressCommonWarnings: 1 allowUnsafeCode: 0 useDeterministicCompilation: 1 selectedPlatform: 0 additionalIl2CppArgs: scriptingRuntimeVersion: 1 gcIncremental: 0 gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: Standalone: 6 editorAssembliesCompatibilityLevel: 3 m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: Template_3D metroPackageVersion: metroCertificatePath: metroCertificatePassword: metroCertificateSubject: metroCertificateIssuer: metroCertificateNotAfter: 0000000000000000 metroApplicationDescription: Template_3D wsaImages: {} metroTileShortName: metroTileShowName: 0 metroMediumTileShowName: 0 metroLargeTileShowName: 0 metroWideTileShowName: 0 metroSupportStreamingInstall: 0 metroLastRequiredScene: 0 metroDefaultTileSize: 1 metroTileForegroundText: 2 metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} metroSplashScreenUseBackgroundColor: 0 platformCapabilities: {} metroTargetDeviceFamilies: {} metroFTAName: metroFTAFileTypes: [] metroProtocolName: vcxProjDefaultLanguage: XboxOneProductId: XboxOneUpdateKey: XboxOneSandboxId: XboxOneContentId: XboxOneTitleId: XboxOneSCId: XboxOneGameOsOverridePath: XboxOnePackagingOverridePath: XboxOneAppManifestOverridePath: XboxOneVersion: 1.0.0.0 XboxOnePackageEncryption: 0 XboxOnePackageUpdateGranularity: 2 XboxOneDescription: XboxOneLanguage: - enus XboxOneCapability: [] XboxOneGameRating: {} XboxOneIsContentPackage: 0 XboxOneEnhancedXboxCompatibilityMode: 0 XboxOneEnableGPUVariability: 0 XboxOneSockets: {} XboxOneSplashScreen: {fileID: 0} XboxOneAllowedProductIds: [] XboxOnePersistentLocalStorageSize: 0 XboxOneXTitleMemory: 8 XboxOneOverrideIdentityName: XboxOneOverrideIdentityPublisher: vrEditorSettings: {} cloudServicesEnabled: UNet: 1 luminIcon: m_Name: m_ModelFolderPath: m_PortalFolderPath: luminCert: m_CertPath: m_SignPackage: 1 luminIsChannelApp: 0 luminVersion: m_VersionCode: 1 m_VersionName: hmiPlayerDataPath: hmiForceSRGBBlit: 1 embeddedLinuxEnableGamepadInput: 1 hmiLogStartupTiming: 0 hmiCpuConfiguration: apiCompatibilityLevel: 6 activeInputHandler: 0 windowsGamepadBackendHint: 0 cloudProjectId: framebufferDepthMemorylessMode: 0 qualitySettingsNames: [] projectName: organizationId: cloudEnabled: 0 legacyClampBlendShapeWeights: 1 hmiLoadingImage: {fileID: 0} virtualTexturingSupportEnabled: 0 insecureHttpOption: 0 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/ProjectVersion.txt ================================================ m_EditorVersion: 2023.1.0b7 m_EditorVersionWithRevision: 2023.1.0b7 (9a9d9bca6c0f) ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/QualitySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!47 &1 QualitySettings: m_ObjectHideFlags: 0 serializedVersion: 5 m_CurrentQuality: 5 m_QualitySettings: - serializedVersion: 2 name: Very Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 15 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 1 textureQuality: 1 anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 0 lodBias: 0.3 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 2 textureQuality: 0 anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 0 lodBias: 0.4 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 16 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Medium pixelLightCount: 1 shadows: 1 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 blendWeights: 2 textureQuality: 0 anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 vSyncCount: 1 lodBias: 0.7 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 64 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: High pixelLightCount: 2 shadows: 2 shadowResolution: 1 shadowProjection: 1 shadowCascades: 2 shadowDistance: 40 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 2 textureQuality: 0 anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 1 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 256 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Very High pixelLightCount: 3 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 2 shadowDistance: 70 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 4 textureQuality: 0 anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 1.5 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 1024 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] - serializedVersion: 2 name: Ultra pixelLightCount: 4 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 4 shadowDistance: 150 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 blendWeights: 4 textureQuality: 0 anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 vSyncCount: 1 lodBias: 2 maximumLODLevel: 0 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4096 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 excludedTargetPlatforms: [] m_PerPlatformDefaultQuality: Android: 2 Lumin: 5 Nintendo 3DS: 5 Nintendo Switch: 5 PS4: 5 PSP2: 2 Standalone: 5 WebGL: 3 Windows Store Apps: 5 XboxOne: 5 iPhone: 2 tvOS: 2 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/TagManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!78 &1 TagManager: serializedVersion: 2 tags: [] layers: - Default - TransparentFX - Ignore Raycast - - Water - UI - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - name: Default uniqueID: 0 locked: 0 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/TimeManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!5 &1 TimeManager: m_ObjectHideFlags: 0 Fixed Timestep: 0.02 Maximum Allowed Timestep: 0.33333334 m_TimeScale: 1 Maximum Particle Timestep: 0.03 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/UnityConnectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!310 &1 UnityConnectSettings: m_ObjectHideFlags: 0 serializedVersion: 1 m_Enabled: 0 m_TestMode: 0 m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events m_ConfigUrl: https://config.uca.cloud.unity3d.com m_TestInitMode: 0 CrashReportingSettings: m_EventUrl: https://perf-events.cloud.unity3d.com m_Enabled: 0 m_LogBufferSize: 10 m_CaptureEditorExceptions: 1 UnityPurchasingSettings: m_Enabled: 0 m_TestMode: 0 UnityAnalyticsSettings: m_Enabled: 0 m_TestMode: 0 m_InitializeOnStartup: 1 UnityAdsSettings: m_Enabled: 0 m_InitializeOnStartup: 1 m_TestMode: 0 m_IosGameId: m_AndroidGameId: m_GameIds: {} m_GameId: PerformanceReportingSettings: m_Enabled: 0 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/VFXManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!937362698 &1 VFXManager: m_ObjectHideFlags: 0 m_IndirectShader: {fileID: 0} m_CopyBufferShader: {fileID: 0} m_SortShader: {fileID: 0} m_RenderPipeSettingsPath: m_FixedTimeStep: 0.016666668 m_MaxDeltaTime: 0.05 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/VersionControlSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!890905787 &1 VersionControlSettings: m_ObjectHideFlags: 0 m_Mode: Visible Meta Files m_CollabEditorSettings: inProgressEnabled: 1 ================================================ FILE: Projects/2023.1 Latest/ProjectSettings/XRSettings.asset ================================================ { "m_SettingKeys": [ "VR Device Disabled", "VR Device User Alert" ], "m_SettingValues": [ "False", "False" ] } ================================================ FILE: Projects/2023.1 Latest/UserSettings/EditorUserSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!162 &1 EditorUserSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_ConfigSettings: vcSharedLogLevel: value: 0d5e400f0650 flags: 0 m_VCAutomaticAdd: 1 m_VCDebugCom: 0 m_VCDebugCmd: 0 m_VCDebugOut: 0 m_SemanticMergeMode: 2 m_DesiredImportWorkerCount: 4 m_StandbyImportWorkerCount: 2 m_IdleImportWorkerShutdownDelay: 60000 m_VCShowFailedCheckout: 1 m_VCOverwriteFailedCheckoutAssets: 1 m_VCProjectOverlayIcons: 1 m_VCHierarchyOverlayIcons: 1 m_VCOtherOverlayIcons: 1 m_VCAllowAsyncUpdate: 1 m_ArtifactGarbageCollection: 1 ================================================ FILE: Projects/2023.1 Latest/UserSettings/Search.index ================================================ { "name": "Assets", "roots": ["Assets"], "includes": [], "excludes": [], "options": { "types": true, "properties": true, "extended": false, "dependencies": false }, "baseScore": 999 } ================================================ FILE: Projects/2023.1 Latest/UserSettings/Search.settings ================================================ trackSelection = true refreshSearchWindowsInPlayMode = false fetchPreview = true defaultFlags = 0 keepOpen = false queryFolder = "Assets" onBoardingDoNotAskAgain = true showPackageIndexes = false showStatusBar = false scopes = { } providers = { adb = { active = false priority = 2500 defaultAction = null } asset = { active = true priority = 25 defaultAction = null } store = { active = true priority = 100 defaultAction = null } find = { active = true priority = 25 defaultAction = null } log = { active = false priority = 210 defaultAction = null } packages = { active = true priority = 90 defaultAction = null } performance = { active = false priority = 100 defaultAction = null } scene = { active = true priority = 50 defaultAction = null } } objectSelectors = { } recentSearches = [ ] searchItemFavorites = [ ] savedSearchesSortOrder = 0 showSavedSearchPanel = false hideTabs = false expandedQueries = [ ] queryBuilder = false ignoredProperties = "id;name;classname;imagecontentshash" helperWidgetCurrentArea = "all" disabledIndexers = "" minIndexVariations = 2 findProviderIndexHelper = true ================================================ FILE: README.md ================================================ # TSK VSCode Editor [![Discord](https://img.shields.io/discord/1106106269837819914?color=D1495B&logo=discord&logoColor=FFFFFF&style=flat)](https://discord.gg/VU8EhUY7bX) [![openupm](https://img.shields.io/badge/dynamic/json?color=brightgreen&label=downloads&query=%24.downloads&suffix=%2Fmonth&url=https%3A%2F%2Fpackage.openupm.com%2Fdownloads%2Fpoint%2Flast-month%2Fcom.tsk.ide.vscode)](https://openupm.com/packages/com.tsk.ide.vscode/) [![openupm](https://img.shields.io/npm/v/com.tsk.ide.vscode?label=openupm®istry_uri=https://package.openupm.com)](https://openupm.com/packages/com.tsk.ide.vscode/) Unity Code editor integration for VSCode. **(2021.3+)** Check out the [Changelog](https://github.com/Chizaruu/com.tsk.ide.vscode/wiki/CHANGELOG) and [FAQs](https://github.com/Chizaruu/com.tsk.ide.vscode/wiki/FAQs) pages for more information. **Note** - This package is [incompatible](https://github.com/Chizaruu/com.tsk.ide.vscode/issues/77) with **Unity Visual Studio** package. If you find my package useful, please consider giving it a Star 🌟 to show your support. Thank you! ## Features ### Project SDK Support This package offers comprehensive project SDK support based on .Net standards. By leveraging this support, you can utilize the latest C# features and language enhancements within your Unity projects, subject to Unity's compatibility. ### Organized .csproj Files To enhance project structure and maintain cleanliness, the `com.tsk.ide.vscode` package facilitates the automatic separation of `.csproj` files into individual folders. These folders are consolidated within a main directory named "CSProjFolders." This organization ensures a more streamlined and organized project structure, contributing to improved clarity and ease of navigation. ### Successful Dotnet Build The `com.tsk.ide.vscode` package ensures a seamless build process by guaranteeing successful execution of the `dotnet build` command. This means your project can be compiled and built without issues, ensuring a smooth development experience. ### Microsoft.Unity.Analyzers Integration [![NuGet](https://img.shields.io/nuget/v/Microsoft.Unity.Analyzers.svg)](https://nuget.org/packages/Microsoft.Unity.Analyzers) In addition to its core features, this package includes seamless integration with Microsoft.Unity.Analyzers library. This integration provides access to various code analysis and validation tools designed for Unity projects. With the support of these analyzers, you can enhance code quality, identify potential issues, and adhere to best practices, ultimately improving the overall robustness and maintainability of your Unity projects. ### Streamlined Configuration Setup and Customization The com.tsk.ide.vscode package presents a proficient solution designed for streamlined integration of Visual Studio Code with Unity. This package significantly simplifies the setup process by generating essential configuration files, namely `settings.json`, `.editorconfig`, `.code-workspace`, and `launch.json`. This conserves valuable time and boosts your efficiency by minimizing the potential for setup errors. To utilize this feature, navigate to `Preferences > External Tools > Generate config files for:` and select the appropriate options to create the configuration files. After this, merely click on the `Regenerate` button. Beyond simplifying setup, the `com.tsk.ide.vscode` package introduces a dedicated configuration section within External Tools. This component provides unprecedented control over the settings files generated, enabling manual customization in accordance with individual preferences and unique project requirements. This flexibility allows you to customize your development environment for the best possible productivity and outcome. ## Prerequisites 1. Install the [.Net 7 SDK](https://dotnet.microsoft.com/en-us/download). 2. Install the [C# Dev Kit extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit) from the VS Code Marketplace. 3. Install the [Unity extension](https://marketplace.visualstudio.com/items?itemName=visualstudiotoolsforunity.vstuc) from the VS Code Marketplace ## Install via Package Manager ### Unity - Open Window/Package Manager - Click + - Select Add package from git URL - Paste `https://github.com/Chizaruu/com.tsk.ide.vscode.git#upm` into URL - Click Add ### OpenUPM Please follow the instrustions: - Open Edit/Project Settings/Package Manager - Add a new Scoped Registry (or edit the existing OpenUPM entry) ```text Name: package.openupm.com URL: https://package.openupm.com Scope(s): com.tsk.ide.vscode ``` - Click Save (or Apply) - Open Window/Package Manager - Click + - Select Add package by name... or Add package from git URL... - Paste `com.tsk.ide.vscode` into name - Paste `1.5.0` into version - Click Add Alternatively, merge the snippet to Packages/manifest.json ```json { "scopedRegistries": [ { "name": "package.openupm.com", "url": "https://package.openupm.com", "scopes": ["com.tsk.ide.vscode"] } ], "dependencies": { "com.tsk.ide.vscode": "1.5.0" } } ``` ## Post Installation ### Regenerate .csprog files After installing the package, follow these steps to regenerate the .csproj files: 1. Open the Preferences window. 2. Go to the External Tools tab. 3. Click on the Regenerate .csproj Files option. The assembly project files will be auto-generated in {ProjectDirectory}/CSharpProjFolders. To ignore these auto-generated files, add the following line to your .gitignore: Example .gitignore lines: ``` # TSK VSCode /CSharpProjFolders/* ``` ### Extras - To enable grammar and highlighting for jslib files, install the [jslib-for-unity](https://github.com/TheSleepyKoala/jslib-for-unity) package. ## Contributing Thank you for considering contributing to the `com.tsk.ide.vscode` package! To contribute, please follow these guidelines: - Create a new branch for your changes. - Discuss your changes by creating a new issue in the repository before starting work. - Follow the existing coding conventions and style. - Provide a clear description of your changes in your pull request. - Submit your pull request to the default branch. We appreciate all contributions to com.tsk.ide.vscode! ================================================ FILE: TestAnalyzer/TestGenerator.cs ================================================ using System.Text; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Text; namespace Generators { [Generator] public class TestGenerator : ISourceGenerator { public static readonly DiagnosticDescriptor testDiagnostic = new DiagnosticDescriptor( "TEST001", "TestWarning", "This is a test warning from the analyzer", "Testing", DiagnosticSeverity.Warning, true); public void Initialize(GeneratorInitializationContext context) { } public void Execute(GeneratorExecutionContext context) { if (context.Compilation.AssemblyName == "Assembly-CSharp") { string sourceText = """ using UnityEngine; namespace TestCode { public class TestClass { public static void TestMethod() { Debug.Log("Hello from the generated class"); } } } """; context.AddSource("Test.generated.cs", SourceText.From(sourceText, Encoding.UTF8)); } context.ReportDiagnostic(Diagnostic.Create(testDiagnostic, Location.Create("Test.generated.cs", default, default))); } } } ================================================ FILE: com.tsk.ide.vscode/.npmignore ================================================ build.bat* *.tgz* *.DotSettings.user* upm-ci~/** .Editor/** .yamato/** *.zip* TestRunnerOptions.json ================================================ FILE: com.tsk.ide.vscode/CHANGELOG.md ================================================ # Code Editor Package for Visual Studio Code ## [1.5.0] - 2024-02-22 - Fixed DefaultExtensions not updating correctly - Added regions for peace of mind - Added Extension Test File (KoalaExtension.koala) - Better UI/UX for the user ## [1.4.8] - 2024-02-22 - Added Launch.json section to Externals Tools ## [1.4.7] - 2023-08-06 - Remove omnisharp config generation from package - Clean up code and remove unused directives - Update .gitignore to remove .omnisharp.json ignore ## [1.4.6] - 2023-08-06 - Added ignore IDE0051 to .editorconfig default configuration ## [1.4.5] - 2023-08-02 - Added custom and unity builtin analyzers to csproj #69 - Thanks @mifreundorfer ## [1.4.4] - 2023-08-02 - Fix the asmdef name to not conflict with the official package - Thanks @mifreundorfer - Remove TSKDoNotDelete Generation - No longer can one's configuration be taken from them on import of this package. - User must use `Preferences > External Tools > Generate config files for:` to generate their config files. ## [1.4.3] - 2023-07-29 - Fix possible deadlock caused by not reading stdout ## [1.4.2] - 2023-06-13 - Restrict Shell Compatibility for Project Generation's Dotnet Build (Mac/Linux) ## [1.4.1] - 2023-06-05 - Added .jslib to default extensions for VSCode. - Refactored configuration defaults and removed redundant options from omnisharp.json. - Thanks @ershn - Added support for renaming methods and classes using Omnisharp. - Updated settings.json to correctly utilize useModernNet, sdkIncludePrereleases, and organizeImportsOnFormat. ## [1.4.0] - 2023-06-04 - Refactored code to improve platform compatibility ## [1.3.9] - 2023-05-18 - .csproj files are separated into their own folders within a main folder called "CSProjFolders" - Thanks @frarees - The ProjectReference element now includes a direct path to the file. - Project element added - Name element added - Compile element now includes a direct path to the file. - GenerateAssemblyInfo property set to false - Start of `dotnet build` support ## [1.3.7] - 2023-05-16 - Added the option to disable adding Analyzers to all packages - This means that it will only be added to .csproj files originating from the Assets Folder. ## [1.3.6] - 2023-05-10 - [Added config section to Externals Tools](https://github.com/Chizaruu/com.tsk.ide.vscode/commit/8da03f5885c268eaecdfd904e6a324be9bf9b82a) - [Added Foldouts to remove visual clutter](https://github.com/Chizaruu/com.tsk.ide.vscode/commit/ba73359980ad49f8eca6d485eda6f54e76a2bbff) - A "TSKDoNotDelete" text file is generated when the package is first added. This was done to counter the constant auto-generation that occurred when you would delete the config files. - [Added Configurable Config Settings](https://github.com/Chizaruu/com.tsk.ide.vscode/commit/d7a33951346235a91606e258cb206cc68e65e723) ## [1.3.4] - 2023-04-07 - Minimum Unity version is now 2021.3 - Added support for 2021/2022 NetStandard Editor Assemblies Compatibility Level (Not really, it's just a workaround until users start using 2023) - Added toggle for preferred default arguments for opening VSCode (You can choose between user or workspace) - Restructured the repository to be more in line with Unity's architecture (See <https://github.com/Unity-Technologies/com.unity.cinemachine> for more info) ## [1.3.2] - 2023-04-05 - Removed koalafied Microsoft.Unity.Analyzers dll - Removed LocationPaths option from omnisharp.json - Added support for Nuget package Microsoft.Unity.Analyzers (See ProjectGeneration.cs for more info) ## [1.3.1] - 2023-04-01 - Moved .omnisharp, .editorconfig, and analyzer generation to ProjectGeneration.cs to be in line with the rest of the project - Simplified XElement creation in ProjectGeneration.cs to be more readable ## [1.3.0] - 2023-04-01 - Added complete SDK support, this allows you to use Omnisharp's useModernNet in your project (Special thanks to Andrew Spiering @wackoisgod) - Added more predefined variables for the omnisharp.json file - Going forward, 2021.3 and below will only be able to use .Net Framework API compatibility level - Added support for .Net 4.8 API compatibility level for 2022.1 and above - Fixed failure while loading the analyzer reference 'Unity.SourceGenerators' ## [1.2.7] - 2023-03-19 - Added Unity Roslyn analyzers support (See <https://code.visualstudio.com/docs/other/unity#_enabling-unity-warnings>) - Added Formatting support (See CreateOmniSharpConfig() in VSCodeScriptEditor.cs) - Removed Rider Package (Spits) - Updated Text-Framework to 1.3.3 - Start of Community Support ## [1.2.6] - 2023-03-10 - Added workspace file generation - End of Unity Support ## [1.2.5] - 2022-02-07 - Introduce OnGeneratedCSProjectFiles, OnGeneratedCSProject and OnGeneratedSlnSolution callbacks. - Always use forward slash in source paths - Analyzers use absolute paths - Ruleset files for roslyn analyzers - Extra snap search paths on Ubuntu - Specific c# language version for specific unity versions - No longer hide .gitignore in VSCode file explorer ## [1.2.3] - 2020-10-23 Remove workaround for VSCode omnisharp (as of <https://github.com/OmniSharp/omnisharp-vscode/issues/4113> we no longer need to disable the referenceoutputassemblies). ## [1.2.2] - 2020-09-04 VSC-14 - synchronize solution file when adding new assembly ## [1.2.1] - 2020-05-15 Source filtering adds support for asmref ## [1.2.0] - 2020-03-04 Do not reference projects that has not been generated (case 1211057) Only open files that exists (case 1188394) Add individual toggle buttons for generating csprojects for packages Add support for Roslyn analyzers in project generation through csc.rsp and compiled assembly references Remove Release build target from csproj and sln ## [1.1.4] - 2020-01-02 Delta project generation, only recompute the csproj files whose script modified. ## [1.1.3] - 2019-10-22 Exe version of vscode will use Normal ProcessWindowStyle while cmd will use Hidden ## [1.1.2] - 2019-08-30 Fixing OSX open command arguments ## [1.1.1] - 2019-08-19 Support for Player Project. Generates specific csproj files containing files, reference, defines, etc. that will show how the assembly will be compiled for a target platform. ## [1.1.0] - 2019-08-07 Adds support for choosing extensions to be opened with VSCode. This can be done through the GUI in Preferences. Avoids opening all extensions after the change in core unity. ## [1.0.7] - 2019-05-15 Fix various OSX specific issues. Generate project on load if they are not generated. Fix path recognition. ## [1.0.6] - 2019-04-30 Ensure asset database is refreshed when generating csproj and solution files. ## [1.0.5] - 2019-04-27 Add support for generating all csproj files. ## [1.0.4] - 2019-04-18 Fix relative package paths. Fix opening editor on mac. Add %LOCALAPPDATA%/Programs to the path of install paths. ## [1.0.3] - 2019-01-01 ### This is the first release of _Unity Package vscode_editor_ Using the newly created api to integrate Visual Studio Code with Unity. ================================================ FILE: com.tsk.ide.vscode/CHANGELOG.md.meta ================================================ fileFormatVersion: 2 guid: 5f63701bf35cb994187ea04dc0fa9528 TextScriptImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/ConfigGeneration/ConfigGeneration.cs ================================================ using System.IO; using UnityEditor; namespace VSCodeEditor { public interface IConfigGenerator { string VSCodeSettings { get; set; } string WorkspaceSettings { get; set; } string EditorConfigSettings { get; set; } string LaunchConfigSettings { get; set; } string ProjectDirectory { get; } IFlagHandler FlagHandler { get; } void Sync(); } public class ConfigGeneration : IConfigGenerator { const string k_DefaultSettingsJson = /*lang=json,strict*/ @"{ ""files.exclude"": { ""**/.DS_Store"":true, ""**/.git"":true, ""**/.gitmodules"":true, ""**/*.booproj"":true, ""**/*.pidb"":true, ""**/*.suo"":true, ""**/*.user"":true, ""**/*.userprefs"":true, ""**/*.unityproj"":true, ""**/*.dll"":true, ""**/*.exe"":true, ""**/*.pdf"":true, ""**/*.mid"":true, ""**/*.midi"":true, ""**/*.wav"":true, ""**/*.gif"":true, ""**/*.ico"":true, ""**/*.jpg"":true, ""**/*.jpeg"":true, ""**/*.png"":true, ""**/*.psd"":true, ""**/*.tga"":true, ""**/*.tif"":true, ""**/*.tiff"":true, ""**/*.3ds"":true, ""**/*.3DS"":true, ""**/*.fbx"":true, ""**/*.FBX"":true, ""**/*.lxo"":true, ""**/*.LXO"":true, ""**/*.ma"":true, ""**/*.MA"":true, ""**/*.obj"":true, ""**/*.OBJ"":true, ""**/*.asset"":true, ""**/*.cubemap"":true, ""**/*.flare"":true, ""**/*.mat"":true, ""**/*.meta"":true, ""**/*.prefab"":true, ""**/*.unity"":true, ""build/"":true, ""Build/"":true, ""Library/"":true, ""library/"":true, ""obj/"":true, ""Obj/"":true, ""ProjectSettings/"":true, ""temp/"":true, ""Temp/"":true } }"; const string k_DefaultWorkspaceJson = /*lang=json,strict*/ @"{ ""folders"": [ { ""path"": ""."" } ] }"; const string k_DefaultEditorConfig = @"# EditorConfig is awesome: http://EditorConfig.org # top-most EditorConfig file root = true # 4 space indentation [*.cs] indent_style = space indent_size = 4 trim_trailing_whitespace = true #Ignore IDE0051: Remove unused private members [*.cs] dotnet_diagnostic.IDE0051.severity = none "; const string k_DefaultLaunchConfig = @"{ ""version"": ""0.2.0"", ""configurations"": [ { ""name"": ""Attach to Unity"", ""type"": ""vstuc"", ""request"": ""attach"" } ] }"; public string ProjectDirectory { get; } readonly string m_ProjectName; IFlagHandler IConfigGenerator.FlagHandler => m_FlagHandler; string m_VSCodeSettings; string m_WorkspaceSettings; string m_EditorConfigSettings; string m_LaunchConfigSettings; public string VSCodeSettings { get => m_VSCodeSettings ??= EditorPrefs.GetString( "vscode_settings", k_DefaultSettingsJson ); set { if (value == "") value = k_DefaultSettingsJson; m_VSCodeSettings = value; EditorPrefs.SetString("vscode_settings", value); } } public string WorkspaceSettings { get => m_WorkspaceSettings ??= EditorPrefs.GetString( "vscode_workspaceSettings", k_DefaultWorkspaceJson ); set { if (value == "") value = k_DefaultWorkspaceJson; m_WorkspaceSettings = value; EditorPrefs.SetString("vscode_workspaceSettings", value); } } public string EditorConfigSettings { get => m_EditorConfigSettings ??= EditorPrefs.GetString( "vscode_editorConfigSettings", k_DefaultEditorConfig ); set { if (value == "") value = k_DefaultEditorConfig; m_EditorConfigSettings = value; EditorPrefs.SetString("vscode_editorConfigSettings", value); } } public string LaunchConfigSettings { get => m_LaunchConfigSettings ??= EditorPrefs.GetString( "vscode_launchConfigSettings", k_DefaultLaunchConfig ); set { if (value == "") value = k_DefaultLaunchConfig; m_LaunchConfigSettings = value; EditorPrefs.SetString("vscode_launchConfigSettings", value); } } readonly IFlagHandler m_FlagHandler; readonly IFileIO m_FileIOProvider; public ConfigGeneration(string tempDirectory) : this(tempDirectory, new FlagHandler(), new FileIOProvider()) { } public ConfigGeneration( string tempDirectory, IFlagHandler flagHandler, IFileIO fileIOProvider ) { ProjectDirectory = tempDirectory; m_ProjectName = Path.GetFileName(ProjectDirectory); m_FlagHandler = new FlagHandler(); m_FileIOProvider = new FileIOProvider(); } public void Sync() { WriteVSCodeSettingsFiles(); WriteWorkspaceFile(); WriteEditorConfigFile(); WriteLaunchConfigFile(); } void WriteVSCodeSettingsFiles() { if (m_FlagHandler.ConfigFlag.HasFlag(ConfigFlag.VSCode)) { var vsCodeDirectory = Path.Combine(ProjectDirectory, ".vscode"); if (!m_FileIOProvider.Exists(vsCodeDirectory)) m_FileIOProvider.CreateDirectory(vsCodeDirectory); var vsCodeSettingsJson = Path.Combine(vsCodeDirectory, "settings.json"); m_FileIOProvider.WriteAllText(vsCodeSettingsJson, VSCodeSettings); } } void WriteWorkspaceFile() { if (m_FlagHandler.ConfigFlag.HasFlag(ConfigFlag.Workspace)) { var workspaceFile = Path.Combine( ProjectDirectory, $"{m_ProjectName}.code-workspace" ); m_FileIOProvider.WriteAllText(workspaceFile, WorkspaceSettings); } } void WriteEditorConfigFile() { if (m_FlagHandler.ConfigFlag.HasFlag(ConfigFlag.EditorConfig)) { var editorConfig = Path.Combine(ProjectDirectory, ".editorconfig"); m_FileIOProvider.WriteAllText(editorConfig, EditorConfigSettings); } } void WriteLaunchConfigFile() { if (m_FlagHandler.ConfigFlag.HasFlag(ConfigFlag.LaunchConfig)) { var vsCodeDirectory = Path.Combine(ProjectDirectory, ".vscode"); if (!m_FileIOProvider.Exists(vsCodeDirectory)) m_FileIOProvider.CreateDirectory(vsCodeDirectory); var launchConfigJson = Path.Combine(vsCodeDirectory, "launch.json"); m_FileIOProvider.WriteAllText(launchConfigJson, LaunchConfigSettings); } } } } ================================================ FILE: com.tsk.ide.vscode/Editor/ConfigGeneration/ConfigGeneration.cs.meta ================================================ fileFormatVersion: 2 guid: 62a6a6defe5e71a479e0fcaba9e99256 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/ConfigGeneration.meta ================================================ fileFormatVersion: 2 guid: 63ea0ed645335ce4fa30a10520e0876f folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/ProjectGeneration/AssemblyNameProvider.cs ================================================ using System; using System.Collections.Generic; using System.Linq; using UnityEditor; using UnityEditor.Compilation; using UnityEditor.PackageManager; namespace VSCodeEditor { public interface IAssemblyNameProvider { string[] ProjectSupportedExtensions { get; } ProjectGenerationFlag ProjectGenerationFlag { get; } string GetAssemblyNameFromScriptPath(string path); IEnumerable<Assembly> GetAssemblies(Func<string, bool> shouldFileBePartOfSolution); IEnumerable<string> GetAllAssetPaths(); IEnumerable<string> GetRoslynAnalyzerPaths(); UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath); ResponseFileData ParseResponseFile( string responseFilePath, string projectDirectory, string[] systemReferenceDirectories ); bool IsInternalizedPackagePath(string path); } internal interface IPackageInfoCache { void ResetPackageInfoCache(); } internal class AssemblyNameProvider : IAssemblyNameProvider, IPackageInfoCache { private readonly Dictionary< string, UnityEditor.PackageManager.PackageInfo > m_PackageInfoCache = new(); public string[] ProjectSupportedExtensions => EditorSettings.projectGenerationUserExtensions; public ProjectGenerationFlag ProjectGenerationFlag { get => (ProjectGenerationFlag)EditorPrefs.GetInt("unity_project_generation_flag", 0); } public string GetAssemblyNameFromScriptPath(string path) { return CompilationPipeline.GetAssemblyNameFromScriptPath(path); } public IEnumerable<Assembly> GetAssemblies(Func<string, bool> shouldFileBePartOfSolution) { return CompilationPipeline .GetAssemblies() .Where( i => 0 < i.sourceFiles.Length && i.sourceFiles.Any(shouldFileBePartOfSolution) ); } public IEnumerable<string> GetAllAssetPaths() { return AssetDatabase.GetAllAssetPaths(); } private static string ResolvePotentialParentPackageAssetPath(string assetPath) { const string packagesPrefix = "packages/"; if (!assetPath.StartsWith(packagesPrefix, StringComparison.OrdinalIgnoreCase)) { return null; } var followupSeparator = assetPath.IndexOf('/', packagesPrefix.Length); if (followupSeparator == -1) { return assetPath.ToLowerInvariant(); } return assetPath[..followupSeparator].ToLowerInvariant(); } public void ResetPackageInfoCache() { m_PackageInfoCache.Clear(); } public UnityEditor.PackageManager.PackageInfo FindForAssetPath(string assetPath) { var parentPackageAssetPath = ResolvePotentialParentPackageAssetPath(assetPath); if (parentPackageAssetPath == null) { return null; } if (m_PackageInfoCache.TryGetValue(parentPackageAssetPath, out var cachedPackageInfo)) { return cachedPackageInfo; } var result = UnityEditor.PackageManager.PackageInfo.FindForAssetPath( parentPackageAssetPath ); m_PackageInfoCache[parentPackageAssetPath] = result; return result; } public ResponseFileData ParseResponseFile( string responseFilePath, string projectDirectory, string[] systemReferenceDirectories ) { return CompilationPipeline.ParseResponseFile( responseFilePath, projectDirectory, systemReferenceDirectories ); } public bool IsInternalizedPackagePath(string path) { if (string.IsNullOrWhiteSpace(path)) { return false; } var packageInfo = FindForAssetPath(path); if (packageInfo == null) { return false; } var packageSource = packageInfo.source; return packageSource switch { PackageSource.Embedded => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Embedded), PackageSource.Registry => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Registry), PackageSource.BuiltIn => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.BuiltIn), PackageSource.Unknown => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Unknown), PackageSource.Local => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Local), PackageSource.Git => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.Git), PackageSource.LocalTarball => !ProjectGenerationFlag.HasFlag(ProjectGenerationFlag.LocalTarBall), _ => false }; } public IEnumerable<string> GetRoslynAnalyzerPaths() { return PluginImporter .GetAllImporters() .Where( i => !i.isNativePlugin && AssetDatabase.GetLabels(i).SingleOrDefault(l => l == "RoslynAnalyzer") != null ) .Select(i => i.assetPath); } } } ================================================ FILE: com.tsk.ide.vscode/Editor/ProjectGeneration/AssemblyNameProvider.cs.meta ================================================ fileFormatVersion: 2 guid: 7f897371fff63744f9c875916e4aee1f MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/ProjectGeneration/GUIDGenerator.cs ================================================ namespace VSCodeEditor { public interface IGUIDGenerator { string ProjectGuid(string projectName, string assemblyName); string SolutionGuid(string projectName, string extension); } internal class GUIDProvider : IGUIDGenerator { public string ProjectGuid(string projectName, string assemblyName) { return SolutionGuidGenerator.GuidForProject(projectName + assemblyName); } public string SolutionGuid(string projectName, string extension) { return SolutionGuidGenerator.GuidForSolution(projectName, extension); // GetExtensionOfSourceFiles(assembly.sourceFiles) } } } ================================================ FILE: com.tsk.ide.vscode/Editor/ProjectGeneration/GUIDGenerator.cs.meta ================================================ fileFormatVersion: 2 guid: d4a8f2bf856d4ff45b09dd3fbdb4e0ac MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/ProjectGeneration/ProjectGeneration.cs ================================================ using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security; using System.Security.Cryptography; using System.Text; using System.Xml.Linq; using UnityEditor; using UnityEditor.Build; using UnityEditor.Compilation; using UnityEngine; using UnityEngine.Profiling; using SR = System.Reflection; namespace VSCodeEditor { public interface IGenerator { bool SyncIfNeeded(List<string> affectedFiles, string[] reimportedFiles); void Sync(); string SolutionFile(); string ProjectDirectory { get; } string CSharpProjFoldersDirectory { get; } IAssemblyNameProvider AssemblyNameProvider { get; } bool SolutionExists(); } public class ProjectGeneration : IGenerator { enum ScriptingLanguage { None = 0, CSharp = 1 } const string k_WindowsNewline = "\r\n"; /// <summary> /// Map source extensions to ScriptingLanguages /// </summary> static readonly Dictionary<string, ScriptingLanguage> k_BuiltinSupportedExtensions = new() { { "cginc", ScriptingLanguage.None }, { "compute", ScriptingLanguage.None }, { "cs", ScriptingLanguage.CSharp }, { "glslinc", ScriptingLanguage.None }, { "hlsl", ScriptingLanguage.None }, { "raytrace", ScriptingLanguage.None }, { "shader", ScriptingLanguage.None }, { "template", ScriptingLanguage.None }, { "uss", ScriptingLanguage.None }, { "uxml", ScriptingLanguage.None } }; readonly string m_SolutionProjectEntryTemplate = string.Join( "\r\n", @"Project(""{{{0}}}"") = ""{1}"", ""{2}"", ""{{{3}}}""", "EndProject" ) .Replace(" ", "\t"); readonly string m_SolutionProjectConfigurationTemplate = string.Join( "\r\n", " {{{0}}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU", " {{{0}}}.Debug|Any CPU.Build.0 = Debug|Any CPU" ) .Replace(" ", "\t"); static readonly string[] k_ReimportSyncExtensions = { ".dll", ".asmdef" }; string[] m_ProjectSupportedExtensions = Array.Empty<string>(); const string m_TargetCSharpProjFolders = "CSharpProjFolders"; public string ProjectDirectory { get; } public string CSharpProjFoldersDirectory => Path.Combine(ProjectDirectory, m_TargetCSharpProjFolders); IAssemblyNameProvider IGenerator.AssemblyNameProvider => m_AssemblyNameProvider; readonly string m_ProjectName; readonly IAssemblyNameProvider m_AssemblyNameProvider; readonly IFileIO m_FileIOProvider; readonly IGUIDGenerator m_GUIDProvider; const string k_TargetFrameworkVersion = "net48"; public ProjectGeneration(string tempDirectory) : this( tempDirectory, new AssemblyNameProvider(), new FileIOProvider(), new GUIDProvider() ) { } public ProjectGeneration( string tempDirectory, IAssemblyNameProvider assemblyNameProvider, IFileIO fileIO, IGUIDGenerator guidGenerator ) { ProjectDirectory = tempDirectory.NormalizePath(); m_ProjectName = Path.GetFileName(ProjectDirectory); m_AssemblyNameProvider = assemblyNameProvider; m_FileIOProvider = fileIO; m_GUIDProvider = guidGenerator; if (!m_FileIOProvider.DirectoryExists(CSharpProjFoldersDirectory)) { m_FileIOProvider.CreateDirectory(CSharpProjFoldersDirectory); } } /// <summary> /// Syncs the scripting solution if any affected files are relevant. /// </summary> /// <returns> /// Whether the solution was synced. /// </returns> /// <param name='affectedFiles'> /// A set of files whose status has changed /// </param> /// <param name="reimportedFiles"> /// A set of files that got reimported /// </param> public bool SyncIfNeeded(List<string> affectedFiles, string[] reimportedFiles) { Profiler.BeginSample("SolutionSynchronizerSync"); SetupProjectSupportedExtensions(); if (!HasFilesBeenModified(affectedFiles, reimportedFiles)) { Profiler.EndSample(); return false; } var assemblies = m_AssemblyNameProvider.GetAssemblies(ShouldFileBePartOfSolution); var allProjectAssemblies = RelevantAssembliesForMode(assemblies).ToList(); SyncSolution(allProjectAssemblies); var allAssetProjectParts = GenerateAllAssetProjectParts(); var affectedNames = affectedFiles .Select(asset => m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset)) .Where(name => !string.IsNullOrWhiteSpace(name)) .Select( name => name.Split(new[] { ".dll" }, StringSplitOptions.RemoveEmptyEntries)[0] ); var reimportedNames = reimportedFiles .Select(asset => m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset)) .Where(name => !string.IsNullOrWhiteSpace(name)) .Select( name => name.Split(new[] { ".dll" }, StringSplitOptions.RemoveEmptyEntries)[0] ); var affectedAndReimported = new HashSet<string>(affectedNames.Concat(reimportedNames)); foreach (var assembly in allProjectAssemblies) { if (!affectedAndReimported.Contains(assembly.name)) continue; SyncProject(assembly, allAssetProjectParts, ParseResponseFileData(assembly)); } Profiler.EndSample(); return true; } bool HasFilesBeenModified(List<string> affectedFiles, string[] reimportedFiles) { return affectedFiles.Any(ShouldFileBePartOfSolution) || reimportedFiles.Any(ShouldSyncOnReimportedAsset); } static bool ShouldSyncOnReimportedAsset(string asset) { return k_ReimportSyncExtensions.Contains(new FileInfo(asset).Extension); } private static IEnumerable<SR.MethodInfo> GetPostProcessorCallbacks(string name) { return TypeCache .GetTypesDerivedFrom<AssetPostprocessor>() .Select( t => t.GetMethod( name, SR.BindingFlags.Public | SR.BindingFlags.NonPublic | SR.BindingFlags.Static ) ) .Where(m => m != null); } static void OnGeneratedCSProjectFiles() { foreach (var method in GetPostProcessorCallbacks(nameof(OnGeneratedCSProjectFiles))) { _ = method.Invoke(null, Array.Empty<object>()); } } private static string InvokeAssetPostProcessorGenerationCallbacks( string name, string path, string content ) { foreach (var method in GetPostProcessorCallbacks(name)) { var args = new[] { path, content }; var returnValue = method.Invoke(null, args); if (method.ReturnType == typeof(string)) { // We want to chain content update between invocations content = (string)returnValue; } } return content; } private static string OnGeneratedCSProject(string path, string content) { return InvokeAssetPostProcessorGenerationCallbacks( nameof(OnGeneratedCSProject), path, content ); } private static string OnGeneratedSlnSolution(string path, string content) { return InvokeAssetPostProcessorGenerationCallbacks( nameof(OnGeneratedSlnSolution), path, content ); } public void Sync() { SetupProjectSupportedExtensions(); GenerateAndWriteSolutionAndProjects(); OnGeneratedCSProjectFiles(); } public bool SolutionExists() { return m_FileIOProvider.Exists(SolutionFile()); } void SetupProjectSupportedExtensions() { m_ProjectSupportedExtensions = m_AssemblyNameProvider.ProjectSupportedExtensions; } bool ShouldFileBePartOfSolution(string file) { // Exclude files coming from packages except if they are internalized. return !m_AssemblyNameProvider.IsInternalizedPackagePath(file) && HasValidExtension(file); } bool HasValidExtension(string file) { string extension = Path.GetExtension(file); // Dll's are not scripts but still need to be included.. if (extension == ".dll") return true; if (file.ToLower().EndsWith(".asmdef")) return true; return IsSupportedExtension(extension); } bool IsSupportedExtension(string extension) { extension = extension.TrimStart('.'); if (k_BuiltinSupportedExtensions.ContainsKey(extension)) return true; if (m_ProjectSupportedExtensions.Contains(extension)) return true; return false; } static ScriptingLanguage ScriptingLanguageFor(Assembly assembly) { return ScriptingLanguageFor(GetExtensionOfSourceFiles(assembly.sourceFiles)); } static string GetExtensionOfSourceFiles(string[] files) { return files.Length > 0 ? GetExtensionOfSourceFile(files[0]) : "NA"; } static string GetExtensionOfSourceFile(string file) { var ext = Path.GetExtension(file).ToLower(); ext = ext[1..]; //strip dot return ext; } static ScriptingLanguage ScriptingLanguageFor(string extension) { return k_BuiltinSupportedExtensions.TryGetValue( extension.TrimStart('.'), out var result ) ? result : ScriptingLanguage.None; } public void GenerateAndWriteSolutionAndProjects() { // Only synchronize assemblies that have associated source files and ones that we actually want in the project. // This also filters out DLLs coming from .asmdef files in packages. var assemblies = m_AssemblyNameProvider .GetAssemblies(ShouldFileBePartOfSolution) .ToArray(); var allAssetProjectParts = GenerateAllAssetProjectParts(); SyncSolution(assemblies); var allProjectAssemblies = RelevantAssembliesForMode(assemblies).ToList(); foreach (Assembly assembly in allProjectAssemblies) { var responseFileData = ParseResponseFileData(assembly); SyncProject(assembly, allAssetProjectParts, responseFileData); } GenerateNugetJsonSourceFiles(); } List<ResponseFileData> ParseResponseFileData(Assembly assembly) { var systemReferenceDirectories = CompilationPipeline.GetSystemAssemblyDirectories( assembly.compilerOptions.ApiCompatibilityLevel ); Dictionary<string, ResponseFileData> responseFilesData = assembly.compilerOptions.ResponseFiles.ToDictionary( x => x, x => m_AssemblyNameProvider.ParseResponseFile( x, ProjectDirectory, systemReferenceDirectories ) ); Dictionary<string, ResponseFileData> responseFilesWithErrors = responseFilesData .Where(x => x.Value.Errors.Any()) .ToDictionary(x => x.Key, x => x.Value); if (responseFilesWithErrors.Any()) { foreach (var error in responseFilesWithErrors) foreach (var valueError in error.Value.Errors) { Debug.LogError($"{error.Key} Parse Error : {valueError}"); } } return responseFilesData.Select(x => x.Value).ToList(); } Dictionary<string, List<XElement>> GenerateAllAssetProjectParts() { Dictionary<string, List<XElement>> stringBuilders = new(); foreach (string asset in m_AssemblyNameProvider.GetAllAssetPaths()) { // Exclude files coming from packages except if they are internalized. // TODO: We need assets from the assembly API if (m_AssemblyNameProvider.IsInternalizedPackagePath(asset)) { continue; } string extension = Path.GetExtension(asset); if ( IsSupportedExtension(extension) && ScriptingLanguage.None == ScriptingLanguageFor(extension) ) { // Find assembly the asset belongs to by adding script extension and using compilation pipeline. var assemblyName = m_AssemblyNameProvider.GetAssemblyNameFromScriptPath(asset); if (string.IsNullOrEmpty(assemblyName)) { continue; } assemblyName = Path.GetFileNameWithoutExtension(assemblyName); if (!stringBuilders.TryGetValue(assemblyName, out var projectBuilder)) { projectBuilder = new List<XElement>(); stringBuilders[assemblyName] = projectBuilder; } var noneElement = new XElement("None"); var fullFile = m_FileIOProvider.EscapedRelativePathFor(asset, ProjectDirectory); fullFile = Path.Combine(ProjectDirectory, fullFile); noneElement.SetAttributeValue("Include", fullFile); projectBuilder.Add(noneElement); } } var result = new Dictionary<string, List<XElement>>(); foreach (var entry in stringBuilders) { result[entry.Key] = entry.Value; } return result; } void SyncProject( Assembly assembly, Dictionary<string, List<XElement>> allAssetsProjectParts, List<ResponseFileData> responseFilesData ) { SyncProjectFileIfNotChanged( ProjectFile(assembly), ProjectText(assembly, allAssetsProjectParts, responseFilesData) ); } void SyncProjectFileIfNotChanged(string path, string newContents) { if (Path.GetExtension(path) == ".csproj") { newContents = OnGeneratedCSProject(path, newContents); } SyncFileIfNotChanged(path, newContents); } void SyncSolutionFileIfNotChanged(string path, string newContents) { newContents = OnGeneratedSlnSolution(path, newContents); SyncFileIfNotChanged(path, newContents); } void SyncFileIfNotChanged(string filename, string newContents) { try { if ( m_FileIOProvider.Exists(filename) && newContents == m_FileIOProvider.ReadAllText(filename) ) { return; } } catch (Exception exception) { Debug.LogException(exception); } m_FileIOProvider.WriteAllText(filename, newContents); } private const string SDKStyleCsProj = @" <Project Sdk=""Microsoft.NET.Sdk""> <PropertyGroup> <TargetFramework>netstandard2.1</TargetFramework> <DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> <PropertyGroup> <DefaultItemExcludes>$(DefaultItemExcludes);Library/;**/*.*</DefaultItemExcludes> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> </PropertyGroup> </Project> "; string ProjectText( Assembly assembly, Dictionary<string, List<XElement>> allAssetsProjectParts, List<ResponseFileData> responseFilesData ) { // We parse the sdk style project into an XML Document we can then add to :D var document = XDocument.Parse(SDKStyleCsProj); var project = document.Element("Project"); var targetFrameWork = project.Elements().First().Element("TargetFramework"); var targetGroup = BuildPipeline.GetBuildTargetGroup( EditorUserBuildSettings.activeBuildTarget ); var namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(targetGroup); var netSettings = PlayerSettings.GetApiCompatibilityLevel(namedBuildTarget); targetFrameWork.Value = GetTargetFrameworkVersion(netSettings); var otherArguments = GetOtherArgumentsFromResponseFilesData(responseFilesData); AddCommonProperties(assembly, responseFilesData, project, otherArguments); // we have source files if (assembly.sourceFiles.Length != 0) { var itemGroup = new XElement("ItemGroup"); foreach (var file in assembly.sourceFiles) { // It should have the entire path to the source file var fullFile = m_FileIOProvider.EscapedRelativePathFor(file, ProjectDirectory); fullFile = Path.Combine(ProjectDirectory, fullFile); itemGroup.Add( new XElement("Compile", new XAttribute("Include", $"{fullFile}")) ); } project.Add(itemGroup); } // Append additional non-script files that should be included in project generation. if ( allAssetsProjectParts.TryGetValue(assembly.name, out var additionalAssetsForProject) ) { var itemGroup = new XElement("ItemGroup"); itemGroup.Add(additionalAssetsForProject); project.Add(itemGroup); } var responseRefs = responseFilesData.SelectMany( x => x.FullPathReferences.Select(r => r) ); var internalAssemblyReferences = assembly.assemblyReferences .Where(i => !i.sourceFiles.Any(ShouldFileBePartOfSolution)) .Select(i => i.outputPath); var allReferences = assembly.compiledAssemblyReferences .Union(responseRefs) .Union(internalAssemblyReferences); if (allReferences.Any()) { var refItemGroup = new XElement("ItemGroup"); foreach (var reference in allReferences) { string fullReference = Path.IsPathRooted(reference) ? reference : Path.Combine(ProjectDirectory, reference); AppendReference(fullReference, refItemGroup, targetFrameWork.Value); } project.Add(refItemGroup); } if (assembly.assemblyReferences.Any()) { var assemblyRefItemGroup = new XElement("ItemGroup"); foreach ( Assembly reference in assembly.assemblyReferences.Where( i => i.sourceFiles.Any(ShouldFileBePartOfSolution) ) ) { var packRefElement = new XElement( "ProjectReference", new XAttribute( "Include", // It should have the entire path to the project file Path.Combine( CSharpProjFoldersDirectory, reference.name, reference.name + GetProjectExtension() ) ), new XElement("Project", $"{ProjectGuid(reference.name)}"), new XElement("Name", reference.name + GetProjectExtension()) ); assemblyRefItemGroup.Add(packRefElement); } project.Add(assemblyRefItemGroup); } { var analyzersRefItemGroup = new XElement("ItemGroup"); var analyzers = RetrieveRoslynAnalyzers(assembly, otherArguments); foreach (var item in analyzers) { analyzersRefItemGroup.Add(new XElement("Analyzer", new XAttribute("Include", item))); } project.Add(analyzersRefItemGroup); } if ( m_AssemblyNameProvider.ProjectGenerationFlag.HasFlag( ProjectGenerationFlag.Analyzers ) || CheckIfAnalyzerIsAllowedOnCSProj(assembly) ) { var analyzersRefItemGroup = new XElement("ItemGroup"); analyzersRefItemGroup.Add( AddNugetPackageReference("Microsoft.Unity.Analyzers", "*", true) ); project.Add(analyzersRefItemGroup); } return document.ToString(); } private bool CheckIfAnalyzerIsAllowedOnCSProj(Assembly assembly) { return assembly.sourceFiles.Any( x => x.StartsWith("Assets", StringComparison.InvariantCultureIgnoreCase) ); } private XElement AddNugetPackageReference(string nugetPackageId, string nugetPackageVersion) { return new( "PackageReference", new XAttribute("Include", nugetPackageId), new XAttribute("Version", nugetPackageVersion) ); } private XElement AddNugetPackageReference( string nugetPackageId, string nugetPackageVersion, bool isAnalyzer = false ) { return new( "PackageReference", new XAttribute("Include", nugetPackageId), new XAttribute("Version", nugetPackageVersion), new XElement("PrivateAssets", "all"), new XElement("IncludeAssets", "runtime; build; native; contentfiles; analyzers") ); } static void AppendReference( string fullReference, XElement projectBuilder, string targetFrameWork ) { var escapedFullPath = SecurityElement.Escape(fullReference); escapedFullPath = escapedFullPath.NormalizePath(); var reference = new XElement( "Reference", new XAttribute("Include", Path.GetFileNameWithoutExtension(escapedFullPath)) ); #if !UNITY_2023_1_OR_NEWER if (targetFrameWork.Contains("netstandard")) escapedFullPath = HandleEditorReference(escapedFullPath); #endif var hintPath = new XElement("HintPath") { Value = escapedFullPath }; reference.Add(hintPath); projectBuilder.Add(reference); } #if !UNITY_2023_1_OR_NEWER /* This is a hack to get around the fact that the editor references a bunch of facades that are not in the netstandard2.0 or 2.1 We need to replace the references with the ones that are in the netstandard2.0 or 2.1 compat folder */ static string HandleEditorReference(string referencePath) { var facadesPath = "UnityReferenceAssemblies\\unity-4.8-api\\Facades\\"; var referenceName = Path.GetFileNameWithoutExtension(referencePath); return referenceName switch { "Microsoft.Win32.Primitives" or "System.AppContext" or "System.Collections.Concurrent" or "System.Collections.NonGeneric" or "System.Collections.Specialized" or "System.ComponentModel" or "System.ComponentModel.EventBasedAsync" or "System.Diagnostics.Contracts" or "System.Diagnostics.Debug" or "System.Diagnostics.Tools" or "System.Diagnostics.Tracing" or "System.Globalization" or "System.Globalization.Calendars" or "System.IO" or "System.IO.Compression" or "System.IO.Compression.ZipFile" or "System.IO.FileSystem" or "System.IO.FileSystem.Primitives" or "System.Linq" or "System.Linq.Expressions" or "System.Net.Http" or "System.Net.Primitives" or "System.Net.Sockets" or "System.ObjectModel" or "System.Reflection" or "System.Reflection.Extensions" or "System.Reflection.Primitives" or "System.Resources.ResourceManager" or "System.Runtime" or "System.Runtime.Extensions" or "System.Runtime.Handles" or "System.Runtime.InteropServices" or "System.Runtime.InteropServices.RuntimeInformation" or "System.Runtime.Numerics" or "System.Security.Cryptography.Algorithms" or "System.Security.Cryptography.Encoding" or "System.Security.Cryptography.Primitives" or "System.Security.Cryptography.X509Certificates" or "System.Text.Encoding" or "System.Text.Encoding.Extensions" or "System.Text.RegularExpressions" or "System.Threading" or "System.Threading.Tasks" or "System.Threading.Tasks.Parallel" or "System.Threading.Thread" or "System.Threading.ThreadPool" or "System.Threading.Timer" or "System.ValueTuple" or "System.Xml.ReaderWriter" or "System.Xml.XDocument" or "System.Xml.XmlDocument" or "System.Xml.XmlSerializer" or "System.Xml.XPath" or "System.Xml.XPath.XDocument" => referencePath.Replace( facadesPath, $"NetStandard\\compat\\2.1.0\\shims\\netstandard\\" ), "System.Runtime.InteropServices.WindowsRuntime" => referencePath.Replace(facadesPath, $"NetStandard\\Extensions\\2.0.0\\"), "netstandard" => referencePath.Replace(facadesPath, $"NetStandard\\2.1.0\\"), _ => referencePath.Replace(facadesPath, $"NetStandard\\compat\\2.1.0\\shims\\"), }; } #endif private void AddCommonProperties( Assembly assembly, List<ResponseFileData> responseFilesData, XElement builder, ILookup<string, string> otherArguments ) { // Language version var langVersion = GenerateLangVersion(otherArguments["langversion"], assembly); var commonPropertyGroup = new XElement("PropertyGroup"); var langElement = new XElement("LangVersion") { Value = langVersion }; commonPropertyGroup.Add(langElement); // Allow unsafe code bool allowUnsafeCode = assembly.compilerOptions.AllowUnsafeCode | responseFilesData.Any(x => x.Unsafe); var unsafeElement = new XElement("AllowUnsafeBlocks") { Value = allowUnsafeCode.ToString() }; commonPropertyGroup.Add(unsafeElement); var warningLevel = new XElement("WarningLevel", "4"); commonPropertyGroup.Add(warningLevel); var noStdLib = new XElement("NoStdLib", "true"); commonPropertyGroup.Add(noStdLib); var assemblyNameElement = new XElement("AssemblyName", assembly.name); commonPropertyGroup.Add(assemblyNameElement); // we need to grab all the defines and add them to a property group var defines = string.Join( ";", new[] { "DEBUG", "TRACE" } .Concat(assembly.defines) .Concat(responseFilesData.SelectMany(x => x.Defines)) .Concat(EditorUserBuildSettings.activeScriptCompilationDefines) .Distinct() .ToArray() ); var definePropertyGroup = new XElement("PropertyGroup"); var definesElement = new XElement("DefineConstants") { Value = defines }; definePropertyGroup.Add(definesElement); builder.Add(definePropertyGroup); var ruleSets = GenerateRoslynAnalyzerRulesetPath(assembly, otherArguments); if (ruleSets.Length != 0) { foreach (var item in ruleSets) { var ruleElement = new XElement("CodeAnalysisRuleSet") { Value = item }; commonPropertyGroup.Add(ruleElement); } } builder.Add(commonPropertyGroup); } public string ProjectFile(Assembly assembly) { var fileBuilder = new StringBuilder(assembly.name); _ = fileBuilder.Append(".csproj"); string csharpProjectFolderPath = Path.Combine( CSharpProjFoldersDirectory, assembly.name ); if (!m_FileIOProvider.DirectoryExists(csharpProjectFolderPath)) { m_FileIOProvider.CreateDirectory(csharpProjectFolderPath); } return Path.Combine(csharpProjectFolderPath, fileBuilder.ToString()); } public string SolutionFile() { return Path.Combine(ProjectDirectory, $"{m_ProjectName}.sln"); } private static string GenerateLangVersion( IEnumerable<string> langVersionList, Assembly assembly ) { var langVersion = langVersionList.FirstOrDefault(); return !string.IsNullOrWhiteSpace(langVersion) ? langVersion : assembly.compilerOptions.LanguageVersion; } private static string[] GenerateRoslynAnalyzerRulesetPath( Assembly assembly, ILookup<string, string> otherResponseFilesData ) { return otherResponseFilesData["ruleset"] .Append(assembly.compilerOptions.RoslynAnalyzerRulesetPath) .Where(a => !string.IsNullOrEmpty(a)) .Distinct() .Select(x => MakeAbsolutePath(x).NormalizePath()) .ToArray(); } string[] RetrieveRoslynAnalyzers(Assembly assembly, ILookup<string, string> otherArguments) { return otherArguments["analyzer"].Concat(otherArguments["a"]) .SelectMany(x => x.Split(';')) .Concat(assembly.compilerOptions.RoslynAnalyzerDllPaths) .Select(MakeAbsolutePath) .Distinct() .ToArray(); } private static string MakeAbsolutePath(string path) { return Path.IsPathRooted(path) ? path : Path.GetFullPath(path); } private static ILookup<string, string> GetOtherArgumentsFromResponseFilesData( List<ResponseFileData> responseFilesData ) { var paths = responseFilesData .SelectMany(x => { return x.OtherArguments .Where(a => a.StartsWith("/") || a.StartsWith("-")) .Select(b => { var index = b.IndexOf(":", StringComparison.Ordinal); if (index > 0 && b.Length > index) { var key = b[1..index]; return new KeyValuePair<string, string>(key, b[(index + 1)..]); } const string warnAsError = "warnaserror"; return b[1..].StartsWith(warnAsError) ? new KeyValuePair<string, string>( warnAsError, b[(warnAsError.Length + 1)..] ) : default; }); }) .Distinct() .ToLookup(o => o.Key, pair => pair.Value); return paths; } static string GetSolutionText() { return string.Join( "\r\n", "", "Microsoft Visual Studio Solution File, Format Version {0}", "# Visual Studio {1}", "{2}", "Global", " GlobalSection(SolutionConfigurationPlatforms) = preSolution", " Debug|Any CPU = Debug|Any CPU", " EndGlobalSection", " GlobalSection(ProjectConfigurationPlatforms) = postSolution", "{3}", " EndGlobalSection", " GlobalSection(SolutionProperties) = preSolution", " HideSolutionNode = FALSE", " EndGlobalSection", "EndGlobal", "" ) .Replace(" ", "\t"); } private static string GetTargetFrameworkVersion(ApiCompatibilityLevel netSettings) { return netSettings switch { ApiCompatibilityLevel.NET_2_0 or ApiCompatibilityLevel.NET_2_0_Subset or ApiCompatibilityLevel.NET_Web or ApiCompatibilityLevel.NET_Micro => k_TargetFrameworkVersion, ApiCompatibilityLevel.NET_Standard => "netstandard2.1", ApiCompatibilityLevel.NET_Unity_4_8 => k_TargetFrameworkVersion, _ => throw new ArgumentOutOfRangeException() }; } void SyncSolution(IEnumerable<Assembly> assemblies) { SyncSolutionFileIfNotChanged(SolutionFile(), SolutionText(assemblies)); } string SolutionText(IEnumerable<Assembly> assemblies) { var fileVersion = "11.00"; var vsVersion = "2022"; var relevantAssemblies = RelevantAssembliesForMode(assemblies); string projectEntries = GetProjectEntries(relevantAssemblies); string projectConfigurations = string.Join( k_WindowsNewline, relevantAssemblies .Select(i => GetProjectActiveConfigurations(ProjectGuid(i.name))) .ToArray() ); return string.Format( GetSolutionText(), fileVersion, vsVersion, projectEntries, projectConfigurations ); } static IEnumerable<Assembly> RelevantAssembliesForMode(IEnumerable<Assembly> assemblies) { return assemblies.Where(i => ScriptingLanguage.CSharp == ScriptingLanguageFor(i)); } /// <summary> /// Get a Project("{guid}") = "MyProject", "{m_TargetCSharpProjFolders}/{projectFileName}/MyProject.csproj", "{projectGuid}" /// /// entry for each relevant language /// </summary> string GetProjectEntries(IEnumerable<Assembly> assemblies) { var projectEntries = assemblies.Select(i => { var projectName = Path.GetFileName(ProjectFile(i)); var projectFileName = projectName[..^GetProjectExtension().Length]; return string.Format( m_SolutionProjectEntryTemplate, SolutionGuid(i), i.name, $"{m_TargetCSharpProjFolders}/{projectFileName}/{projectName}", ProjectGuid(i.name) ); }); return string.Join(k_WindowsNewline, projectEntries.ToArray()); } /// <summary> /// Generate the active configuration string for a given project guid /// </summary> string GetProjectActiveConfigurations(string projectGuid) { return string.Format(m_SolutionProjectConfigurationTemplate, projectGuid); } string ProjectGuid(string assembly) { return m_GUIDProvider.ProjectGuid(m_ProjectName, assembly); } string SolutionGuid(Assembly assembly) { return m_GUIDProvider.SolutionGuid( m_ProjectName, GetExtensionOfSourceFiles(assembly.sourceFiles) ); } static string GetProjectExtension() { return ".csproj"; } void GenerateNugetJsonSourceFiles() { string dotnetCommand = GetDotnetCommand(); if (dotnetCommand == null) { Debug.Log( "Could not find a compatible dotnet command. Aborting Nuget Json generation." ); return; } string dotnetArguments = GetDotnetArguments(); if (dotnetArguments == null) { Debug.Log( "Could not find a compatible dotnet arguments. Aborting Nuget Json generation." ); return; } using var process = new System.Diagnostics.Process(); var processStartInfo = new System.Diagnostics.ProcessStartInfo { FileName = dotnetCommand, Arguments = dotnetArguments, UseShellExecute = false, CreateNoWindow = true }; process.StartInfo = processStartInfo; process.Start(); process.WaitForExit(); } string GetDotnetCommand() { #if UNITY_EDITOR_WIN return "dotnet"; #elif UNITY_EDITOR_LINUX return "/bin/bash"; #elif UNITY_EDITOR_OSX return "/bin/zsh"; #else return null; #endif } string GetDotnetArguments() { #if UNITY_EDITOR_WIN return "build"; #elif UNITY_EDITOR_LINUX || UNITY_EDITOR_OSX return "-c \"dotnet build\""; #else return null; #endif } } public static class SolutionGuidGenerator { static readonly MD5 mD5 = MD5CryptoServiceProvider.Create(); public static string GuidForProject(string projectName) { return ComputeGuidHashFor(projectName + "salt"); } public static string GuidForSolution(string projectName, string sourceFileExtension) { return "FAE04EC0-301F-11D3-BF4B-00C04F79EFBC"; } static string ComputeGuidHashFor(string input) { var hash = mD5.ComputeHash(Encoding.Default.GetBytes(input)); return new Guid(hash).ToString(); } } } ================================================ FILE: com.tsk.ide.vscode/Editor/ProjectGeneration/ProjectGeneration.cs.meta ================================================ fileFormatVersion: 2 guid: 5eed56b72d1122d4e950113f932d41ec MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/ProjectGeneration.meta ================================================ fileFormatVersion: 2 guid: 30a0fd482e4d87a46b906fbdf28e9505 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/Utils/FileIO.cs ================================================ using System; using System.IO; using System.Security; using System.Text; namespace VSCodeEditor { public interface IFileIO { bool Exists(string fileName); string ReadAllText(string fileName); void WriteAllText(string fileName, string content); void Copy(string sourceFileName, string destFileName, bool overwrite); void CreateDirectory(string pathName); bool DirectoryExists(string pathName); string EscapedRelativePathFor(string file, string projectDirectory); } internal class FileIOProvider : IFileIO { public bool Exists(string fileName) { return File.Exists(fileName); } public string ReadAllText(string fileName) { return File.ReadAllText(fileName); } public void WriteAllText(string fileName, string content) { File.WriteAllText(fileName, content, Encoding.UTF8); } public void Copy(string sourceFileName, string destFileName, bool overwrite) { File.Copy(sourceFileName, destFileName, overwrite); } public void CreateDirectory(string pathName) { _ = Directory.CreateDirectory(pathName); } public bool DirectoryExists(string pathName) { return Directory.Exists(pathName); } public string EscapedRelativePathFor(string file, string projectDirectory) { string projectDir = Path.GetFullPath(projectDirectory); // We have to normalize the path, because the PackageManagerRemapper assumes // dir seperators will be os specific. string absolutePath = Path.GetFullPath(file.NormalizePath()); string path = SkipPathPrefix(absolutePath, projectDir); return SecurityElement.Escape(path); } private static string SkipPathPrefix(string path, string prefix) { return path.StartsWith( $"{prefix}{Path.DirectorySeparatorChar}", StringComparison.Ordinal ) ? path[(prefix.Length + 1)..] : path; } } } ================================================ FILE: com.tsk.ide.vscode/Editor/Utils/FileIO.cs.meta ================================================ fileFormatVersion: 2 guid: 1e96497b50e5e174f8a532311e9eb9e6 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/Utils/FlagHandler.cs ================================================ using System; using UnityEditor; namespace VSCodeEditor { [Flags] public enum ArgumentFlag { None = 0, EditorArgument = 1, } [Flags] public enum ConfigFlag { None = 0, VSCode = 1, Workspace = 2, EditorConfig = 4, LaunchConfig = 8, } [Flags] public enum ProjectGenerationFlag { None = 0, Embedded = 1, Local = 2, Registry = 4, Git = 8, BuiltIn = 16, Unknown = 32, PlayerAssemblies = 64, LocalTarBall = 128, Analyzers = 256, } public interface IFlagHandler { ArgumentFlag ArgumentFlag { get; } ConfigFlag ConfigFlag { get; } ProjectGenerationFlag ProjectGenerationFlag { get; } void ToggleArgument(ArgumentFlag preference); void ToggleConfig(ConfigFlag preference); void ToggleProjectGeneration(ProjectGenerationFlag preference); } internal class FlagHandler : IFlagHandler { private ArgumentFlag m_ArgumentFlag = (ArgumentFlag) EditorPrefs.GetInt("unity_argument_flag", 0); private ConfigFlag m_ConfigFlag = (ConfigFlag)EditorPrefs.GetInt("unity_config_flag", 0); private ProjectGenerationFlag m_ProjectGenerationFlag = (ProjectGenerationFlag) EditorPrefs.GetInt("unity_project_generation_flag", 0); public ArgumentFlag ArgumentFlag { get => m_ArgumentFlag; private set { EditorPrefs.SetInt("unity_argument_flag", (int)value); m_ArgumentFlag = value; } } public ConfigFlag ConfigFlag { get => m_ConfigFlag; private set { EditorPrefs.SetInt("unity_config_flag", (int)value); m_ConfigFlag = value; } } public ProjectGenerationFlag ProjectGenerationFlag { get => m_ProjectGenerationFlag; private set { EditorPrefs.SetInt("unity_project_generation_flag", (int)value); m_ProjectGenerationFlag = value; } } public void ToggleArgument(ArgumentFlag preference) { if (ArgumentFlag.HasFlag(preference)) { ArgumentFlag ^= preference; } else { ArgumentFlag |= preference; } } public void ToggleConfig(ConfigFlag preference) { if (ConfigFlag.HasFlag(preference)) { ConfigFlag ^= preference; } else { ConfigFlag |= preference; } } public void ToggleProjectGeneration(ProjectGenerationFlag preference) { if (ProjectGenerationFlag.HasFlag(preference)) { ProjectGenerationFlag ^= preference; } else { ProjectGenerationFlag |= preference; } } } } ================================================ FILE: com.tsk.ide.vscode/Editor/Utils/FlagHandler.cs.meta ================================================ fileFormatVersion: 2 guid: 4932efa058563fd45ada5f39e72bfade MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/Utils/StringUtils.cs ================================================ using System.IO; using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("Unity.VSCode.EditorTests")] namespace VSCodeEditor { internal static class StringUtils { private const char WinSeparator = '\\'; private const char UnixSeparator = '/'; public static string NormalizePath(this string path) { if (string.IsNullOrEmpty(path)) return path; if (Path.DirectorySeparatorChar == WinSeparator) path = path.Replace(UnixSeparator, WinSeparator); if (Path.DirectorySeparatorChar == UnixSeparator) path = path.Replace(WinSeparator, UnixSeparator); return path.Replace(string.Concat(WinSeparator, WinSeparator), WinSeparator.ToString()); } } } ================================================ FILE: com.tsk.ide.vscode/Editor/Utils/StringUtils.cs.meta ================================================ fileFormatVersion: 2 guid: e3a861079cb0eee4e907fa962a5029d7 timeCreated: 1624968755 ================================================ FILE: com.tsk.ide.vscode/Editor/Utils.meta ================================================ fileFormatVersion: 2 guid: 8113e8886076ba24c8ff9319fc9a43ce folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/VSCodeDiscovery.cs ================================================ using System; using System.Collections.Generic; using System.IO; using System.Linq; using Unity.CodeEditor; namespace VSCodeEditor { public interface IDiscovery { CodeEditor.Installation[] PathCallback(); } public class VSCodeDiscovery : IDiscovery { List<CodeEditor.Installation> m_Installations; public CodeEditor.Installation[] PathCallback() { if (m_Installations == null) { m_Installations = new List<CodeEditor.Installation>(); FindInstallationPaths(); } return m_Installations.ToArray(); } void FindInstallationPaths() { string[] possiblePaths = #if UNITY_EDITOR_OSX { "/Applications/Visual Studio Code.app", "/Applications/Visual Studio Code - Insiders.app" }; #elif UNITY_EDITOR_WIN { GetProgramFiles() + "/Microsoft VS Code/bin/code.cmd", GetProgramFiles() + "/Microsoft VS Code/Code.exe", GetProgramFiles() + "/Microsoft VS Code Insiders/bin/code-insiders.cmd", GetProgramFiles() + "/Microsoft VS Code Insiders/Code.exe", GetLocalAppData() + "/Programs/Microsoft VS Code/bin/code.cmd", GetLocalAppData() + "/Programs/Microsoft VS Code/Code.exe", GetLocalAppData() + "/Programs/Microsoft VS Code Insiders/bin/code-insiders.cmd", GetLocalAppData() + "/Programs/Microsoft VS Code Insiders/Code.exe", }; #else { "/usr/bin/code", "/bin/code", "/usr/local/bin/code", "/var/lib/flatpak/exports/bin/com.visualstudio.code", "/snap/current/bin/code", "/snap/bin/code" }; #endif List<string> existingPaths = possiblePaths.Where(VSCodeExists).ToList(); if (!existingPaths.Any()) { return; } string lcp = GetLongestCommonPrefix(existingPaths); switch (existingPaths.Count) { case 1: string path = existingPaths[0]; m_Installations = new List<CodeEditor.Installation> { new CodeEditor.Installation { Path = path, Name = path.Contains("Insiders") ? "Visual Studio Code Insiders" : "Visual Studio Code" } }; break; case 2 when existingPaths.Any( path => !(path[lcp.Length..].Contains("/") || path[lcp.Length..].Contains("\\")) ): goto case 1; default: m_Installations = existingPaths.ConvertAll( path => new CodeEditor.Installation { Name = $"Visual Studio Code Insiders ({path[lcp.Length..]})", Path = path } ); break; } } #if UNITY_EDITOR_WIN static string GetProgramFiles() { return Environment.GetEnvironmentVariable("ProgramFiles")?.Replace("\\", "/"); } static string GetLocalAppData() { return Environment.GetEnvironmentVariable("LOCALAPPDATA")?.Replace("\\", "/"); } #endif static string GetLongestCommonPrefix(List<string> paths) { int baseLength = paths[0].Length; for (int pathIndex = 1; pathIndex < paths.Count; pathIndex++) { baseLength = Math.Min(baseLength, paths[pathIndex].Length); for (int i = 0; i < baseLength; i++) { if (paths[pathIndex][i] == paths[0][i]) { continue; } baseLength = i; break; } } return paths[0][..baseLength]; } static bool VSCodeExists(string path) { #if UNITY_EDITOR_OSX return System.IO.Directory.Exists(path); #else return new FileInfo(path).Exists; #endif } } } ================================================ FILE: com.tsk.ide.vscode/Editor/VSCodeDiscovery.cs.meta ================================================ fileFormatVersion: 2 guid: 38feec545dff76046aae249973820c62 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/VSCodeScriptEditor.cs ================================================ using System; using System.Diagnostics; using System.IO; using System.Linq; using System.Collections.Generic; using Unity.CodeEditor; using UnityEditor; using UnityEngine; namespace VSCodeEditor { [InitializeOnLoad] public class VSCodeScriptEditor : IExternalCodeEditor { const string vscode_argument = "vscode_arguments"; const string vscode_extension = "vscode_userExtensions"; string m_EditorArguments; bool m_ShowEditorSection = false; bool m_ShowExtensionsSection = false; bool m_ShowConfigSection = false; bool m_ShowProjectSection = true; bool m_ShowVSCodeSettingsSection = false; bool m_ShowWorkspaceSection = false; bool m_ShowEditorConfigSection = false; bool m_ShowLaunchConfigSection = false; bool m_ShowBuiltInExtensions = true; bool m_ShowUnityUserExtensions = true; bool m_ShowTSKCustomExtensions = true; Vector2 m_VSCodeScrollPosition; Vector2 m_WorkspaceScrollPosition; Vector2 m_EditorConfigScrollPosition; Vector2 m_LaunchConfigScrollPosition; readonly IDiscovery m_Discoverability; readonly IGenerator m_ProjectGeneration; readonly IConfigGenerator m_ConfigGeneration; static readonly string[] k_SupportedFileNames = { "code.exe", "visualstudiocode.app", "visualstudiocode-insiders.app", "vscode.app", "code.app", "code.cmd", "code-insiders.cmd", "code", "com.visualstudio.code" }; static bool IsOSX => Application.platform == RuntimePlatform.OSXEditor; static string DefaultApp => EditorPrefs.GetString("kScriptsDefaultApp"); static string ExternalEditorDefaultArgument { get; } = "\"$(ProjectPath)\" -g \"$(File)\":$(Line):$(Column)"; static string ExternalEditorWorkplaceDefaultArgument { get; } = "\"$(ProjectPath)/$(ProjectName).code-workspace\" -g \"$(File)\":$(Line):$(Column)"; string EditorArguments { get => m_EditorArguments ??= EditorPrefs.GetString( vscode_argument, ExternalEditorDefaultArgument ); set { m_EditorArguments = value; EditorPrefs.SetString(vscode_argument, value); } } static string[] UserAddedExtensions { get => EditorPrefs.GetString("vscode_userAddedExtensions", "").Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); set => EditorPrefs.SetString("vscode_userAddedExtensions", string.Join(";", value)); } #region EditorPrefs Bool Sections bool ShowEditorSection { get => m_ShowEditorSection || EditorPrefs.GetBool("vscode_showEditorSection", false); set { m_ShowEditorSection = value; EditorPrefs.SetBool("vscode_showEditorSection", value); } } bool ShowExtensionsSection { get => m_ShowExtensionsSection || EditorPrefs.GetBool("vscode_showExtensionsSection", false); set { m_ShowExtensionsSection = value; EditorPrefs.SetBool("vscode_showExtensionsSection", value); } } bool ShowConfigSection { get => m_ShowConfigSection || EditorPrefs.GetBool("vscode_showConfigSection", false); set { m_ShowConfigSection = value; EditorPrefs.SetBool("vscode_showConfigSection", value); } } bool ShowProjectSection { get => m_ShowProjectSection || EditorPrefs.GetBool("vscode_showProjectSection", false); set { m_ShowProjectSection = value; EditorPrefs.SetBool("vscode_showProjectSection", value); } } bool ShowBuiltInExtensions { get => m_ShowBuiltInExtensions || EditorPrefs.GetBool("vscode_showBuiltInExtensions", false); set { m_ShowBuiltInExtensions = value; EditorPrefs.SetBool("vscode_showBuiltInExtensions", value); } } bool ShowUnityUserExtensions { get => m_ShowUnityUserExtensions || EditorPrefs.GetBool("vscode_showUnityUserExtensions", false); set { m_ShowUnityUserExtensions = value; EditorPrefs.SetBool("vscode_showUnityUserExtensions", value); } } bool ShowTSKCustomExtensions { get => m_ShowTSKCustomExtensions || EditorPrefs.GetBool("vscode_showTSKCustomExtensions", false); set { m_ShowTSKCustomExtensions = value; EditorPrefs.SetBool("vscode_showTSKCustomExtensions", value); } } bool ShowUserCustomExtensions { get => EditorPrefs.GetBool("vscode_showUserCustomExtensions", false); set { EditorPrefs.SetBool("vscode_showUserCustomExtensions", value); } } #endregion #region Extensions Section static readonly string[] customExtensions = { "jslib", "json", "log" }; private static string[] cachedDefaultExtensions; private static HashSet<string> cachedHandledExtensions; public static string[] DefaultExtensions => cachedDefaultExtensions ??= GetDefaultExtensions(); private static string[] GetDefaultExtensions() => EditorSettings.projectGenerationBuiltinExtensions .Concat(EditorSettings.projectGenerationUserExtensions) .Concat(customExtensions) .Concat(UserAddedExtensions) .Distinct() .ToArray(); private static HashSet<string> HandledExtensions => cachedHandledExtensions ??= new(DefaultExtensions.Select(ext => ext.TrimStart('.', '*'))); private static bool SupportsExtension(string path) { var extension = Path.GetExtension(path)?.TrimStart('.'); return extension != null && HandledExtensions.Contains(extension); } private string extensionToAdd; private void AddUserExtension() { extensionToAdd = extensionToAdd.TrimStart('.'); var currentExtensions = UserAddedExtensions.ToList(); if (!currentExtensions.Contains(extensionToAdd)) { currentExtensions.Add(extensionToAdd); UserAddedExtensions = currentExtensions.ToArray(); } } #endregion #region UI public void OnGUI() { RenderEditorSection(); RenderExtensionsSection(); RenderConfigSection(); RenderProjectSection(); } void RenderEditorSection() { ShowEditorSection = EditorGUILayout.BeginFoldoutHeaderGroup( ShowEditorSection, "Configure Editor Script Editor Arguments:" ); EditorGUILayout.EndFoldoutHeaderGroup(); if (ShowEditorSection) { EditorGUI.indentLevel++; EditorArguments = EditorGUILayout.TextField( "External Script Editor Args", EditorArguments ); FlagButton( ArgumentFlag.EditorArgument, "Use Code-Workspace", "", (handler, flag) => handler.ArgumentFlag.HasFlag(flag), (handler, flag) => handler.ToggleArgument(flag) ); RegenerateButton( m_ConfigGeneration.FlagHandler.ArgumentFlag.HasFlag(ArgumentFlag.EditorArgument) ? "Reset to Workspace default" : "Reset to default", "Regenerate editor arguments" ); EditorGUI.indentLevel--; } } void RenderExtensionsSection() { ShowExtensionsSection = EditorGUILayout.BeginFoldoutHeaderGroup( ShowExtensionsSection, "Configure Extensions Handled by VSCode:" ); EditorGUILayout.EndFoldoutHeaderGroup(); if (ShowExtensionsSection) { EditorGUI.indentLevel++; // Built-in Extensions Foldout ShowBuiltInExtensions = EditorGUILayout.Foldout(ShowBuiltInExtensions, "Built-in Extensions", true); if (ShowBuiltInExtensions) { EditorGUI.BeginDisabledGroup(true); foreach (var ext in EditorSettings.projectGenerationBuiltinExtensions) { EditorGUILayout.TextField(ext); } EditorGUI.EndDisabledGroup(); } // Unity User Extensions Foldout ShowUnityUserExtensions = EditorGUILayout.Foldout(ShowUnityUserExtensions, "Unity User Extensions", true); if (ShowUnityUserExtensions) { EditorGUI.BeginDisabledGroup(true); foreach (var ext in EditorSettings.projectGenerationUserExtensions) { EditorGUILayout.TextField(ext); } EditorGUI.EndDisabledGroup(); } // TSK Custom Extensions Foldout ShowTSKCustomExtensions = EditorGUILayout.Foldout(ShowTSKCustomExtensions, "TSK Custom Extensions", true); if (ShowTSKCustomExtensions) { EditorGUI.BeginDisabledGroup(true); foreach (var ext in customExtensions) { EditorGUILayout.TextField(ext); } EditorGUI.EndDisabledGroup(); } // Custom User Extensions Foldout ShowUserCustomExtensions = EditorGUILayout.Foldout(ShowUserCustomExtensions, "Custom User Extensions", true); if (ShowUserCustomExtensions) { var userExtensions = UserAddedExtensions.ToList(); for (int i = userExtensions.Count - 1; i >= 0; i--) { EditorGUILayout.BeginHorizontal(); EditorGUI.BeginDisabledGroup(true); //Make read-only text field EditorGUILayout.TextField(userExtensions[i]); EditorGUI.EndDisabledGroup(); if (GUILayout.Button("Delete", GUILayout.Width(60))) { userExtensions.RemoveAt(i); UserAddedExtensions = userExtensions.ToArray(); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.Space(); // Add Custom User Extensions EditorGUILayout.LabelField("Add Custom User Extension:", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); var newExtension = EditorGUILayout.TextArea(""); if (EditorGUI.EndChangeCheck() && !string.IsNullOrWhiteSpace(newExtension)) { extensionToAdd = newExtension; } if (GUILayout.Button("Add", GUILayout.Width(60))) { AddUserExtension(); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.Space(); EditorGUI.indentLevel--; } } void RenderConfigSection() { ShowConfigSection = EditorGUILayout.BeginFoldoutHeaderGroup( ShowConfigSection, "Generate config files for:" ); EditorGUILayout.EndFoldoutHeaderGroup(); if (ShowConfigSection) { EditorGUI.indentLevel++; FlagButton( ConfigFlag.VSCode, "VSCode Settings", "", (handler, flag) => handler.ConfigFlag.HasFlag(flag), (handler, flag) => handler.ToggleConfig(flag) ); if (m_ConfigGeneration.FlagHandler.ConfigFlag.HasFlag(ConfigFlag.VSCode)) RenderSettingsSection( ref m_ShowVSCodeSettingsSection, m_ConfigGeneration.VSCodeSettings, "VSCode", ref m_VSCodeScrollPosition ); FlagButton( ConfigFlag.Workspace, "Workspace", "", (handler, flag) => handler.ConfigFlag.HasFlag(flag), (handler, flag) => handler.ToggleConfig(flag) ); if (m_ConfigGeneration.FlagHandler.ConfigFlag.HasFlag(ConfigFlag.Workspace)) RenderSettingsSection( ref m_ShowWorkspaceSection, m_ConfigGeneration.WorkspaceSettings, "Workspace", ref m_WorkspaceScrollPosition ); FlagButton( ConfigFlag.EditorConfig, "Editor Config", "", (handler, flag) => handler.ConfigFlag.HasFlag(flag), (handler, flag) => handler.ToggleConfig(flag) ); if (m_ConfigGeneration.FlagHandler.ConfigFlag.HasFlag(ConfigFlag.EditorConfig)) RenderSettingsSection( ref m_ShowEditorConfigSection, m_ConfigGeneration.EditorConfigSettings, "editorconfig", ref m_EditorConfigScrollPosition ); FlagButton( ConfigFlag.LaunchConfig, "Launch Config", "", (handler, flag) => handler.ConfigFlag.HasFlag(flag), (handler, flag) => handler.ToggleConfig(flag) ); if (m_ConfigGeneration.FlagHandler.ConfigFlag.HasFlag(ConfigFlag.LaunchConfig)) RenderSettingsSection( ref m_ShowLaunchConfigSection, m_ConfigGeneration.LaunchConfigSettings, "Launch", ref m_LaunchConfigScrollPosition ); RegenerateButton("Regenerate", "Regenerate config files"); EditorGUI.indentLevel--; } } void RenderSettingsSection( ref bool showSection, string settings, string sectionName, ref Vector2 scrollPosition ) { showSection = EditorGUILayout.BeginFoldoutHeaderGroup( showSection, $"Configure {sectionName} Settings:" ); EditorGUILayout.EndFoldoutHeaderGroup(); if (showSection) { scrollPosition = EditorGUILayout.BeginScrollView( scrollPosition, GUILayout.Height(EditorGUIUtility.singleLineHeight * 7) ); EditorGUI.BeginChangeCheck(); settings = EditorGUILayout.TextArea(settings, GUILayout.ExpandHeight(true)); EditorGUILayout.EndScrollView(); if (EditorGUI.EndChangeCheck()) { switch (sectionName) { case "VSCode": m_ConfigGeneration.VSCodeSettings = settings; break; case "Workspace": m_ConfigGeneration.WorkspaceSettings = settings; break; case "editorconfig": m_ConfigGeneration.EditorConfigSettings = settings; break; case "Launch": m_ConfigGeneration.LaunchConfigSettings = settings; break; } } RegenerateButton("Reset to default", $"Reset {sectionName} settings"); EditorGUILayout.Space(); } } void RenderProjectSection() { ShowProjectSection = EditorGUILayout.BeginFoldoutHeaderGroup( ShowProjectSection, "Generate .csproj files for:" ); EditorGUILayout.EndFoldoutHeaderGroup(); if (ShowProjectSection) { EditorGUI.indentLevel++; FlagButton( ProjectGenerationFlag.Embedded, "Embedded packages", "", (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag), (handler, flag) => handler.ToggleProjectGeneration(flag) ); FlagButton( ProjectGenerationFlag.Local, "Local packages", "", (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag), (handler, flag) => handler.ToggleProjectGeneration(flag) ); FlagButton( ProjectGenerationFlag.Registry, "Registry packages", "", (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag), (handler, flag) => handler.ToggleProjectGeneration(flag) ); FlagButton( ProjectGenerationFlag.Git, "Git packages", "", (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag), (handler, flag) => handler.ToggleProjectGeneration(flag) ); FlagButton( ProjectGenerationFlag.BuiltIn, "Built-in packages", "", (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag), (handler, flag) => handler.ToggleProjectGeneration(flag) ); FlagButton( ProjectGenerationFlag.LocalTarBall, "Local tarball", "", (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag), (handler, flag) => handler.ToggleProjectGeneration(flag) ); FlagButton( ProjectGenerationFlag.Unknown, "Packages from unknown sources", "", (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag), (handler, flag) => handler.ToggleProjectGeneration(flag) ); EditorGUILayout.Space(); FlagButton( ProjectGenerationFlag.Analyzers, "Add Analyzers to all .csproj files", "", (handler, flag) => handler.ProjectGenerationFlag.HasFlag(flag), (handler, flag) => handler.ToggleProjectGeneration(flag) ); RegenerateButton("Regenerate", "Regenerate project files"); EditorGUI.indentLevel--; } } void FlagButton<T>( T flag, string guiMessage, string toolTip, Func<IFlagHandler, T, bool> flagGetter, Action<IFlagHandler, T> flagToggler ) where T : Enum { var previousValue = flagGetter(m_ConfigGeneration.FlagHandler, flag); var currentValue = EditorGUILayout.Toggle( new GUIContent(guiMessage, toolTip), previousValue ); if (currentValue != previousValue) { flagToggler(m_ConfigGeneration.FlagHandler, flag); } } void RegenerateButton(string guiMessage, string command = "") { var rect = EditorGUI.IndentedRect( EditorGUILayout.GetControlRect(new GUILayoutOption[] { }) ); rect.width = 252; if (GUI.Button(rect, new GUIContent(guiMessage))) { switch (command) { case "Regenerate editor arguments": if ( m_ConfigGeneration.FlagHandler.ArgumentFlag.HasFlag( ArgumentFlag.EditorArgument ) ) { EditorArguments = ExternalEditorWorkplaceDefaultArgument; } else { EditorArguments = ExternalEditorDefaultArgument; } break; case "Regenerate config files": m_ConfigGeneration.Sync(); break; case "Regenerate project files": m_ProjectGeneration.Sync(); break; case "Reset VSCode settings": m_ConfigGeneration.VSCodeSettings = ""; break; case "Reset Workspace settings": m_ConfigGeneration.WorkspaceSettings = ""; break; case "Reset editorconfig settings": m_ConfigGeneration.EditorConfigSettings = ""; break; case "Reset Launch settings": m_ConfigGeneration.LaunchConfigSettings = ""; break; default: UnityEngine.Debug.LogError("Unknown button pressed"); break; } } } #endregion #region ProjectSync public void CreateIfDoesntExist() { if (!m_ProjectGeneration.SolutionExists()) { m_ProjectGeneration.Sync(); } } public void SyncIfNeeded( string[] addedFiles, string[] deletedFiles, string[] movedFiles, string[] movedFromFiles, string[] importedFiles ) { ( m_ProjectGeneration.AssemblyNameProvider as IPackageInfoCache )?.ResetPackageInfoCache(); m_ProjectGeneration.SyncIfNeeded( addedFiles.Union(deletedFiles).Union(movedFiles).Union(movedFromFiles).ToList(), importedFiles ); } public void SyncAll() { ( m_ProjectGeneration.AssemblyNameProvider as IPackageInfoCache )?.ResetPackageInfoCache(); AssetDatabase.Refresh(); m_ProjectGeneration.Sync(); } #endregion #region InstallationManagement public bool TryGetInstallationForPath( string editorPath, out CodeEditor.Installation installation ) { var lowerCasePath = editorPath.ToLower(); var filename = Path.GetFileName(lowerCasePath).Replace(" ", ""); var installations = Installations; if (!k_SupportedFileNames.Contains(filename)) { installation = default; return false; } if (!installations.Any()) { installation = new CodeEditor.Installation { Name = "Visual Studio Code", Path = editorPath }; } else { try { installation = installations.First(inst => inst.Path == editorPath); } catch (InvalidOperationException) { installation = new CodeEditor.Installation { Name = "Visual Studio Code", Path = editorPath }; } } return true; } public bool OpenProject(string path, int line, int column) { if (path != "" && (!SupportsExtension(path) || !File.Exists(path))) // Assets - Open C# Project passes empty path here { return false; } if (line == -1) line = 1; if (column == -1) column = 0; var workspacePath = $"{m_ProjectGeneration.ProjectDirectory}/{Path.GetFileName(m_ProjectGeneration.ProjectDirectory)}.code-workspace"; string arguments; if ( EditorArguments != ExternalEditorDefaultArgument && EditorArguments != ExternalEditorWorkplaceDefaultArgument ) { arguments = m_ProjectGeneration.ProjectDirectory != path ? CodeEditor.ParseArgument(EditorArguments, path, line, column) : workspacePath; } else { arguments = m_ConfigGeneration.FlagHandler.ArgumentFlag.HasFlag( ArgumentFlag.EditorArgument ) ? $@"""{workspacePath}""" : $@"""{m_ProjectGeneration.ProjectDirectory}"""; if (m_ProjectGeneration.ProjectDirectory != path && path.Length != 0) { arguments += $@" -g ""{path}"":{line}:{column}"; } } if (IsOSX) { return OpenOSX(arguments); } var app = DefaultApp; var process = new Process { StartInfo = new ProcessStartInfo { FileName = app, Arguments = arguments, WindowStyle = app.EndsWith(".cmd", StringComparison.OrdinalIgnoreCase) ? ProcessWindowStyle.Hidden : ProcessWindowStyle.Normal, CreateNoWindow = true, UseShellExecute = true, } }; process.Start(); return true; } static bool OpenOSX(string arguments) { var process = new Process { StartInfo = new ProcessStartInfo { FileName = "open", Arguments = $"-n \"{DefaultApp}\" --args {arguments}", UseShellExecute = true, } }; process.Start(); return true; } public CodeEditor.Installation[] Installations => m_Discoverability.PathCallback(); #endregion public VSCodeScriptEditor( IDiscovery discovery, IGenerator projectGeneration, IConfigGenerator configGeneration ) { m_Discoverability = discovery; m_ProjectGeneration = projectGeneration; m_ConfigGeneration = configGeneration; } static VSCodeScriptEditor() { string projectDirectory = Directory.GetParent(Application.dataPath).FullName; var editor = new VSCodeScriptEditor( new VSCodeDiscovery(), new ProjectGeneration(projectDirectory), new ConfigGeneration(projectDirectory) ); CodeEditor.Register(editor); if (IsVSCodeInstallation(CodeEditor.CurrentEditorInstallation)) { editor.CreateIfDoesntExist(); } } static bool IsVSCodeInstallation(string path) { if (string.IsNullOrEmpty(path)) { return false; } var lowerCasePath = path.ToLower(); var filename = Path.GetFileName( lowerCasePath .Replace('\\', Path.DirectorySeparatorChar) .Replace('/', Path.DirectorySeparatorChar) ) .Replace(" ", ""); return k_SupportedFileNames.Contains(filename); } public void Initialize(string editorInstallationPath) { } } } ================================================ FILE: com.tsk.ide.vscode/Editor/VSCodeScriptEditor.cs.meta ================================================ fileFormatVersion: 2 guid: 50dc650e7e1eecc41a307394c0fc88bb MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor/com.tsk.vscode.Editor.asmdef ================================================ { "name": "com.tsk.vscode.Editor", "rootNamespace": "", "references": [], "includePlatforms": [ "Editor" ], "excludePlatforms": [], "allowUnsafeCode": false, "overrideReferences": false, "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], "versionDefines": [], "noEngineReferences": false } ================================================ FILE: com.tsk.ide.vscode/Editor/com.tsk.vscode.Editor.asmdef.meta ================================================ fileFormatVersion: 2 guid: 68a66ba0bc3fb064697c9ecbc554416a AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/Editor.meta ================================================ fileFormatVersion: 2 guid: d2ed9e96dece42b4e8326165293ea352 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/LICENSE.md ================================================ MIT License Copyright (c) 2019 Unity Technologies 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. ================================================ FILE: com.tsk.ide.vscode/LICENSE.md.meta ================================================ fileFormatVersion: 2 guid: 71527348c81c34848bbcb2045433e4c8 TextScriptImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/README.md ================================================ # com.tsk.ide.vscode Unofficial code editor integration for VSCode. ================================================ FILE: com.tsk.ide.vscode/README.md.meta ================================================ fileFormatVersion: 2 guid: ff0da47f44c636048be818cd7d3fcaec TextScriptImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/ValidationExceptions.json ================================================ { "ErrorExceptions": [ { "ValidationTest": "API Validation", "ExceptionMessage": "Additions require a new minor or major version.", "PackageVersion": "1.2.6" } ], "WarningExceptions": [] } ================================================ FILE: com.tsk.ide.vscode/ValidationExceptions.json.meta ================================================ fileFormatVersion: 2 guid: 02c903b5e9ff8a040bd951bc6d8129ae TextScriptImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscode/package.json ================================================ { "name": "com.tsk.ide.vscode", "displayName": "TSK VSCode Editor", "description": "Unofficial code editor integration for supporting Visual Studio Code as code editor for Unity. Adds support for generating csproj files for intellisense purposes, auto discovery of installations, etc.", "version": "1.5.0", "unity": "2021.3", "dependencies": {}, "author": { "name": "Chizaruu", "email": "contact@humblegco.com", "url": "https://github.com/Chizaruu" }, "keywords": [ "visual studio code", "vscode", "code editor", "editor", "intellisense", "c#", "csharp", "csproj", "unity", "unity3d" ], "repository": "https://github.com/Chizaruu/com.tsk.ide.vscode" } ================================================ FILE: com.tsk.ide.vscode/package.json.meta ================================================ fileFormatVersion: 2 guid: a9b685b864215bf43aa9aca239f16300 PackageManifestImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/.npmignore ================================================ build.bat* *.tgz* *.DotSettings.user* ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/CSProjectTests.cs ================================================ using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; using System.Xml; using NUnit.Framework; using UnityEditor.Compilation; using UnityEditor; namespace VSCodeEditor.Tests { namespace CSProjectGeneration { class Formatting : ProjectGenerationTestBase { [Test] public void AbsoluteSourceFilePaths_WillBeMadeRelativeToProjectDirectory() { var absoluteFilePath = MakeAbsolutePathTestImplementation("dimmer.cs"); var synchronizer = m_Builder .WithAssemblyData(files: new[] { absoluteFilePath }) .Build(); synchronizer.Sync(); var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly); XmlDocument scriptProject = XMLUtilities.FromText(csprojContent); XMLUtilities.AssertCompileItemsMatchExactly(scriptProject, new[] { "dimmer.cs" }); } [Test] public void DefaultSettings_WhenSynced_CreateWorkspaceFile() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); var projectName = Path.GetFileName(synchronizer.ProjectDirectory); // This could be a public API var workspaceFile = Path.Combine( synchronizer.ProjectDirectory, $"{projectName}.code-workspace" ); var workspaceFileContent = m_Builder.ReadFile(workspaceFile); var content = @"{ ""folders"": [ { ""path"": ""."" } ] }"; Assert.That( workspaceFileContent, Is.EqualTo(content), "Workspace file content was not expected" ); } [Test] public void DefaultSyncSettings_WhenSynced_CreatesProjectFileFromDefaultTemplate() { var projectGuid = "ProjectGuid"; var synchronizer = m_Builder .WithProjectGuid(projectGuid, m_Builder.Assembly) .Build(); synchronizer.Sync(); var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly); var defines = string.Join( ";", new[] { "DEBUG", "TRACE" } .Concat(EditorUserBuildSettings.activeScriptCompilationDefines) .Concat(m_Builder.Assembly.defines) .Distinct() .ToArray() ); var content = new[] { "<?xml version=\"1.0\" encoding=\"utf-8\"?>", "<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">", " <PropertyGroup>", $" <LangVersion>{Helper.GetLangVersion()}</LangVersion>", " </PropertyGroup>", " <PropertyGroup>", " <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>", " <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>", " <ProductVersion>10.0.20506</ProductVersion>", " <SchemaVersion>2.0</SchemaVersion>", " <RootNamespace></RootNamespace>", $" <ProjectGuid>{{{projectGuid}}}</ProjectGuid>", " <OutputType>Library</OutputType>", " <AppDesignerFolder>Properties</AppDesignerFolder>", $" <AssemblyName>{m_Builder.Assembly.name}</AssemblyName>", " <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>", " <FileAlignment>512</FileAlignment>", " <BaseDirectory>.</BaseDirectory>", " </PropertyGroup>", " <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">", " <DebugSymbols>true</DebugSymbols>", " <DebugType>full</DebugType>", " <Optimize>false</Optimize>", " <OutputPath>Temp\\bin\\Debug\\</OutputPath>", $" <DefineConstants>{defines}</DefineConstants>", " <ErrorReport>prompt</ErrorReport>", " <WarningLevel>4</WarningLevel>", " <NoWarn>0169</NoWarn>", " <AllowUnsafeBlocks>False</AllowUnsafeBlocks>", " </PropertyGroup>", " <PropertyGroup>", " <NoConfig>true</NoConfig>", " <NoStdLib>true</NoStdLib>", " <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>", " <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>", " <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>", " </PropertyGroup>", " <ItemGroup>", " <Compile Include=\"test.cs\" />", " </ItemGroup>", " <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />", " <!-- To modify your build process, add your task inside one of the targets below and uncomment it.", " Other similar extension points exist, see Microsoft.Common.targets.", " <Target Name=\"BeforeBuild\">", " </Target>", " <Target Name=\"AfterBuild\">", " </Target>", " -->", "</Project>", "" }; StringAssert.AreEqualIgnoringCase(string.Join("\r\n", content), csprojContent); } } class GUID : ProjectGenerationTestBase { [Test] public void ProjectReference_MatchAssemblyGUID() { string[] files = { "test.cs" }; var assemblyB = new Assembly( "Test", "Temp/Test.dll", files, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ); var assemblyA = new Assembly( "Test2", "some/path/file.dll", files, new string[0], new[] { assemblyB }, new[] { "Library.ScriptAssemblies.Test.dll" }, AssemblyFlags.None ); var synchronizer = m_Builder.WithAssemblies(new[] { assemblyA, assemblyB }).Build(); synchronizer.Sync(); var assemblyACSproject = SynchronizerBuilder.ProjectFilePath(assemblyA); var assemblyBCSproject = SynchronizerBuilder.ProjectFilePath(assemblyB); Assert.True(m_Builder.FileExists(assemblyACSproject)); Assert.True(m_Builder.FileExists(assemblyBCSproject)); XmlDocument scriptProject = XMLUtilities.FromText( m_Builder.ReadFile(assemblyACSproject) ); XmlDocument scriptPluginProject = XMLUtilities.FromText( m_Builder.ReadFile(assemblyBCSproject) ); var a = XMLUtilities.GetInnerText( scriptPluginProject, "/msb:Project/msb:PropertyGroup/msb:ProjectGuid" ); var b = XMLUtilities.GetInnerText( scriptProject, "/msb:Project/msb:ItemGroup/msb:ProjectReference/msb:Project" ); Assert.AreEqual(a, b); } } class Synchronization : ProjectGenerationTestBase { [Test] public void WontSynchronize_WhenNoFilesChanged() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); Assert.AreEqual( 4, m_Builder.WriteTimes, "One write for solution, one write for csproj, one for workspace file, and one for vscode settings" ); synchronizer.Sync(); Assert.AreEqual(4, m_Builder.WriteTimes, "No more files should be written"); } [Test] public void WhenSynchronized_WillCreateCSProjectForAssembly() { var synchronizer = m_Builder.Build(); Assert.IsFalse( m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(m_Builder.Assembly)) ); synchronizer.Sync(); Assert.IsTrue( m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(m_Builder.Assembly)) ); } [Test] public void WhenSynchronized_WithTwoAssemblies_TwoProjectFilesAreGenerated() { var assemblyA = new Assembly( "assemblyA", "path/to/a.dll", new[] { "file.cs" }, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ); var assemblyB = new Assembly( "assemblyB", "path/to/b.dll", new[] { "file.cs" }, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ); var synchronizer = m_Builder.WithAssemblies(new[] { assemblyA, assemblyB }).Build(); synchronizer.Sync(); Assert.IsTrue(m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(assemblyA))); Assert.IsTrue(m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(assemblyB))); } [Test] public void NotInInternalizedPackage_WillResync() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); var packageAsset = "packageAsset.cs"; m_Builder.WithPackageAsset(packageAsset, false); Assert.IsTrue( synchronizer.SyncIfNeeded(new List<string>() { packageAsset }, new string[0]) ); } } class SourceFiles : ProjectGenerationTestBase { [Test] public void NoCSFile_CreatesNoProjectFile() { var synchronizer = m_Builder.WithAssemblyData(files: new string[0]).Build(); synchronizer.Sync(); Assert.False( m_Builder.FileExists(SynchronizerBuilder.ProjectFilePath(m_Builder.Assembly)), "Should not create csproj file for assembly with no cs file" ); } [Test] public void NotContributedAnAssembly_WillNotGetAdded() { var synchronizer = m_Builder.WithAssetFiles(new[] { "Assembly.hlsl" }).Build(); synchronizer.Sync(); var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.DoesNotContain("Assembly.hlsl", csprojContent); } [Test] public void MultipleSourceFiles_WillAllBeAdded() { var files = new[] { "fileA.cs", "fileB.cs", "fileC.cs" }; var synchronizer = m_Builder.WithAssemblyData(files: files).Build(); synchronizer.Sync(); var csprojectContent = m_Builder.ReadProjectFile(m_Builder.Assembly); var xmlDocument = XMLUtilities.FromText(csprojectContent); XMLUtilities.AssertCompileItemsMatchExactly(xmlDocument, files); } [Test] public void FullPathAsset_WillBeConvertedToRelativeFromProjectDirectory() { var assetPath = Path.Combine("Assets", "Asset.cs"); var synchronizer = m_Builder .WithAssemblyData( files: new[] { MakeAbsolutePathTestImplementation(assetPath) } ) .Build(); synchronizer.Sync(); var csprojectContent = m_Builder.ReadProjectFile(m_Builder.Assembly); var xmlDocument = XMLUtilities.FromText(csprojectContent); XMLUtilities.AssertCompileItemsMatchExactly(xmlDocument, new[] { assetPath }); } [Test] public void InRelativePackages_GetsPathResolvedCorrectly() { var assetPath = "/FullPath/ExamplePackage/Packages/Asset.cs"; var assembly = new Assembly( "ExamplePackage", "/FullPath/Example/ExamplePackage/ExamplePackage.dll", new[] { assetPath }, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ); var synchronizer = m_Builder .WithAssemblies(new[] { assembly }) .WithPackageInfo(assetPath) .Build(); synchronizer.Sync(); StringAssert.Contains( assetPath.NormalizePath(), m_Builder.ReadProjectFile(assembly) ); } [Test] public void InInternalizedPackage_WillBeAddedToCompileInclude() { var synchronizer = m_Builder .WithPackageAsset(m_Builder.Assembly.sourceFiles[0], true) .Build(); synchronizer.Sync(); StringAssert.Contains( m_Builder.Assembly.sourceFiles[0], m_Builder.ReadProjectFile(m_Builder.Assembly) ); } [Test] public void NotInInternalizedPackage_WillBeAddedToCompileInclude() { var synchronizer = m_Builder .WithPackageAsset(m_Builder.Assembly.sourceFiles[0], false) .Build(); synchronizer.Sync(); StringAssert.Contains( m_Builder.Assembly.sourceFiles[0], m_Builder.ReadProjectFile(m_Builder.Assembly) ); } [Test] public void CSharpFiles_WillBeIncluded() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); var assembly = m_Builder.Assembly; StringAssert.Contains( assembly.sourceFiles[0].NormalizePath(), m_Builder.ReadProjectFile(assembly) ); } [Test] public void NonCSharpFiles_AddedToNonCompileItems() { var nonCompileItems = new[] { "UnityShader.uss", "ComputerGraphic.cginc", "Test.shader", }; var synchronizer = m_Builder .WithAssetFiles(nonCompileItems) .AssignFilesToAssembly(nonCompileItems, m_Builder.Assembly) .Build(); synchronizer.Sync(); var csprojectContent = m_Builder.ReadProjectFile(m_Builder.Assembly); var xmlDocument = XMLUtilities.FromText(csprojectContent); XMLUtilities.AssertCompileItemsMatchExactly( xmlDocument, m_Builder.Assembly.sourceFiles ); XMLUtilities.AssertNonCompileItemsMatchExactly(xmlDocument, nonCompileItems); } [Test] public void UnsupportedExtensions_WillNotBeAdded() { var unsupported = new[] { "file.unsupported" }; var synchronizer = m_Builder .WithAssetFiles(unsupported) .AssignFilesToAssembly(unsupported, m_Builder.Assembly) .Build(); synchronizer.Sync(); var csprojectContent = m_Builder.ReadProjectFile(m_Builder.Assembly); var xmlDocument = XMLUtilities.FromText(csprojectContent); XMLUtilities.AssertCompileItemsMatchExactly( xmlDocument, m_Builder.Assembly.sourceFiles ); XMLUtilities.AssertNonCompileItemsMatchExactly(xmlDocument, new string[0]); } [Test] public void UnsupportedExtension_IsOverWrittenBy_UserSupportedExtensions() { var unsupported = new[] { "file.unsupported" }; var synchronizer = m_Builder .WithAssetFiles(unsupported) .AssignFilesToAssembly(unsupported, m_Builder.Assembly) .WithUserSupportedExtensions(new[] { "unsupported" }) .Build(); synchronizer.Sync(); var xmlDocument = XMLUtilities.FromText( m_Builder.ReadProjectFile(m_Builder.Assembly) ); XMLUtilities.AssertNonCompileItemsMatchExactly(xmlDocument, unsupported); } [TestCase(@"path/com.unity.cs")] [TestCase(@"../path/file.cs")] public void IsValidFileName(string filePath) { var synchronizer = m_Builder.WithAssemblyData(files: new[] { filePath }).Build(); synchronizer.Sync(); var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.Contains(filePath.NormalizePath(), csprojContent); } [Test] public void AddedAfterSync_WillBeSynced() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); const string newFile = "Newfile.cs"; var newFileArray = new List<string> { newFile }; m_Builder.WithAssemblyData( files: m_Builder.Assembly.sourceFiles.Concat(newFileArray).ToArray() ); Assert.True( synchronizer.SyncIfNeeded(newFileArray, new string[0]), "Should sync when file in assembly changes" ); var csprojContentAfter = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.Contains(newFile, csprojContentAfter); } [Test] public void Moved_WillBeResynced() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); var filesBefore = m_Builder.Assembly.sourceFiles; const string newFile = "Newfile.cs"; var newFiles = new List<string> { newFile }; m_Builder.WithAssemblyData(files: newFiles.ToArray()); Assert.True( synchronizer.SyncIfNeeded(newFiles, new string[0]), "Should sync when file in assembly changes" ); var csprojContentAfter = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.Contains(newFile, csprojContentAfter); foreach (var file in filesBefore) { StringAssert.DoesNotContain(file, csprojContentAfter); } } [Test] public void Deleted_WillBeRemoved() { var filesBefore = new[] { "WillBeDeletedScript.cs", "Script.cs", }; var synchronizer = m_Builder.WithAssemblyData(files: filesBefore).Build(); synchronizer.Sync(); var csprojContentBefore = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.Contains(filesBefore[0], csprojContentBefore); StringAssert.Contains(filesBefore[1], csprojContentBefore); var filesAfter = filesBefore.Skip(1).ToArray(); m_Builder.WithAssemblyData(files: filesAfter); Assert.True( synchronizer.SyncIfNeeded(filesAfter.ToList(), new string[0]), "Should sync when file in assembly changes" ); var csprojContentAfter = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.Contains(filesAfter[0], csprojContentAfter); StringAssert.DoesNotContain(filesBefore[0], csprojContentAfter); } [Test, TestCaseSource(nameof(s_BuiltinSupportedExtensionsForSourceFiles))] public void BuiltinSupportedExtensions_InsideAssemblySourceFiles_WillBeAddedToCompileItems( string fileExtension ) { var compileItem = new[] { "file.cs", $"anotherFile.{fileExtension}" }; var synchronizer = m_Builder.WithAssemblyData(files: compileItem).Build(); synchronizer.Sync(); var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly); XmlDocument scriptProject = XMLUtilities.FromText(csprojContent); XMLUtilities.AssertCompileItemsMatchExactly(scriptProject, compileItem); } static readonly string[] s_BuiltinSupportedExtensionsForSourceFiles = { "asmdef", "cs", "uxml", "uss", "shader", "compute", "cginc", "hlsl", "glslinc", "template", "raytrace" }; [Test, TestCaseSource(nameof(s_BuiltinSupportedExtensionsForAssets))] public void BuiltinSupportedExtensions_InsideAssetFolder_WillBeAddedToNonCompileItems( string fileExtension ) { var nonCompileItem = new[] { $"anotherFile.{fileExtension}" }; var synchronizer = m_Builder .WithAssetFiles(files: nonCompileItem) .AssignFilesToAssembly(nonCompileItem, m_Builder.Assembly) .Build(); synchronizer.Sync(); var csprojContent = m_Builder.ReadProjectFile(m_Builder.Assembly); XmlDocument scriptProject = XMLUtilities.FromText(csprojContent); XMLUtilities.AssertCompileItemsMatchExactly( scriptProject, m_Builder.Assembly.sourceFiles ); XMLUtilities.AssertNonCompileItemsMatchExactly(scriptProject, nonCompileItem); } static readonly string[] s_BuiltinSupportedExtensionsForAssets = { "uxml", "uss", "shader", "compute", "cginc", "hlsl", "glslinc", "template", "raytrace" }; } class CompilerOptions : ProjectGenerationTestBase { [Test] public void AllowUnsafeFromResponseFile_AddBlockToCsproj() { const string responseFile = "csc.rsp"; var synchronizer = m_Builder .WithResponseFileData(m_Builder.Assembly, responseFile, _unsafe: true) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.Contains( "<AllowUnsafeBlocks>True</AllowUnsafeBlocks>", csprojFileContents ); } [TestCase(new object[] { "C:/Analyzer.dll" })] [TestCase(new object[] { "C:/Analyzer.dll", "C:/Analyzer2.dll" })] [TestCase(new object[] { "../Analyzer.dll" })] [TestCase(new object[] { "../Analyzer.dll", "C:/Analyzer2.dll" })] public void AddAnalyzers(params string[] paths) { var combined = string.Join(";", paths); const string additionalFileTemplate = @" <Analyzer Include=""{0}"" />"; var expectedOutput = paths .Select( x => string.Format( additionalFileTemplate, MakeAbsolutePath(x).NormalizePath() ) ) .ToArray(); CheckOtherArgument(new[] { $"-a:{combined}" }, expectedOutput); CheckOtherArgument(new[] { $"-analyzer:{combined}" }, expectedOutput); CheckOtherArgument(new[] { $"/a:{combined}" }, expectedOutput); CheckOtherArgument(new[] { $"/analyzer:{combined}" }, expectedOutput); } [Test] public void CheckDefaultWarningLevel() { CheckOtherArgument(Array.Empty<string>(), "<WarningLevel>4</WarningLevel>"); } [Test] public void CheckLangVersion() { CheckOtherArgument(new[] { "-langversion:7.2" }, "<LangVersion>7.2</LangVersion>"); } [Test] public void CheckDefaultLangVersion() { CheckOtherArgument( Array.Empty<string>(), $"<LangVersion>{Helper.GetLangVersion()}</LangVersion>" ); } public void CheckOtherArgument( string[] argumentString, params string[] expectedContents ) { const string responseFile = "csc.rsp"; var synchronizer = m_Builder .WithResponseFileData( m_Builder.Assembly, responseFile, otherArguments: argumentString ) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); foreach (string expectedContent in expectedContents) { StringAssert.Contains( expectedContent, csprojFileContents, $"Arguments: {string.Join(";", argumentString)} {Environment.NewLine}" + Environment.NewLine + $"Expected: {expectedContent.Replace("\r", "\\r").Replace("\n", "\\n")}" + Environment.NewLine + $"Actual: {csprojFileContents.Replace("\r", "\\r").Replace("\n", "\\n")}" ); } } [Test] public void AllowUnsafeFromAssemblySettings_AddBlockToCsproj() { var synchronizer = m_Builder.WithAssemblyData(unsafeSettings: true).Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.Contains( "<AllowUnsafeBlocks>True</AllowUnsafeBlocks>", csprojFileContents ); } } class References : ProjectGenerationTestBase { [Test] public void RoslynAnalyzerDlls_WillBeIncluded() { var roslynAnalyzerDllPath = "Assets/RoslynAnalyzer.dll"; var synchronizer = m_Builder .WithRoslynAnalyzers(new[] { roslynAnalyzerDllPath }) .Build(); synchronizer.Sync(); string projectFile = m_Builder.ReadProjectFile(m_Builder.Assembly); XmlDocument projectFileXml = XMLUtilities.FromText(projectFile); XMLUtilities.AssertAnalyzerItemsMatchExactly( projectFileXml, new[] { MakeAbsolutePath(roslynAnalyzerDllPath).NormalizePath() } ); } [Test] public void RoslynAnalyzerRulesetFiles_WillBeIncluded() { var roslynAnalyzerRuleSetPath = "Assets/RoslynRuleSet.ruleset"; m_Builder .WithAssemblyData(files: new[] { "file.cs" }) .WithRoslynAnalyzerRulesetPath(roslynAnalyzerRuleSetPath) .Build() .Sync(); var csProjectFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); XmlDocument csProjectXmlFile = XMLUtilities.FromText(csProjectFileContents); XMLUtilities.AssertAnalyzerRuleSetsMatchExactly( csProjectXmlFile, MakeAbsolutePath(roslynAnalyzerRuleSetPath).NormalizePath() ); } [Test] public void Containing_PathWithSpaces_IsParsedCorrectly() { const string responseFile = "csc.rsp"; var synchronizer = m_Builder .WithResponseFileData( m_Builder.Assembly, responseFile, fullPathReferences: new[] { "Folder/Path With Space/Goodbye.dll" } ) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); Assert.That( csprojFileContents, Does.Match( $"<Reference Include=\"Goodbye\">\\W*<HintPath>{Regex.Escape(MakeAbsolutePathTestImplementation("Folder/Path With Space/Goodbye.dll").NormalizePath())}\\W*</HintPath>\\W*</Reference>" ) ); } [Test] public void Containing_PathWithDotCS_IsParsedCorrectly() { var assembly = new Assembly( "name", "/path/with.cs/assembly.dll", new[] { "file.cs" }, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ); var synchronizer = m_Builder .WithAssemblyData(assemblyReferences: new[] { assembly }) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); Assert.That( csprojFileContents, Does.Match( $@"<ProjectReference Include=""{assembly.name}\.csproj"">[\S\s]*?</ProjectReference>" ) ); } [Test] public void Multiple_AreAdded() { const string responseFile = "csc.rsp"; var synchronizer = m_Builder .WithResponseFileData( m_Builder.Assembly, responseFile, fullPathReferences: new[] { "MyPlugin.dll", "Hello.dll" } ) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); Assert.That( csprojFileContents, Does.Match( $@"<Reference Include=""Hello"">\W*<HintPath>{Regex.Escape(MakeAbsolutePathTestImplementation("Hello.dll").NormalizePath())}</HintPath>\W*</Reference>" ) ); Assert.That( csprojFileContents, Does.Match( $@"<Reference Include=""MyPlugin"">\W*<HintPath>{Regex.Escape(MakeAbsolutePathTestImplementation("MyPlugin.dll").NormalizePath())}</HintPath>\W*</Reference>" ) ); } [Test] public void AssemblyReference_IsAdded() { string[] files = { "test.cs" }; var assemblyReferences = new[] { new Assembly( "MyPlugin", "/some/path/MyPlugin.dll", files, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ), new Assembly( "Hello", "/some/path/Hello.dll", files, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ), }; var synchronizer = m_Builder .WithAssemblyData(assemblyReferences: assemblyReferences) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); Assert.That( csprojFileContents, Does.Match( $@"<ProjectReference Include=""{assemblyReferences[0].name}\.csproj"">[\S\s]*?</ProjectReference>" ) ); Assert.That( csprojFileContents, Does.Match( $@"<ProjectReference Include=""{assemblyReferences[1].name}\.csproj"">[\S\s]*?</ProjectReference>" ) ); } [Test] public void AssemblyReferenceFromInternalizedPackage_IsAddedAsReference() { string[] files = { "test.cs" }; var assemblyReferences = new[] { new Assembly( "MyPlugin", "/some/path/MyPlugin.dll".NormalizePath(), files, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ), new Assembly( "Hello", "/some/path/Hello.dll".NormalizePath(), files, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ), }; var synchronizer = m_Builder .WithPackageAsset(files[0], true) .WithAssemblyData(assemblyReferences: assemblyReferences) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); Assert.That( csprojFileContents, Does.Not.Match( $@"<ProjectReference Include=""{assemblyReferences[0].name}\.csproj"">[\S\s]*?</ProjectReference>" ) ); Assert.That( csprojFileContents, Does.Not.Match( $@"<ProjectReference Include=""{assemblyReferences[1].name}\.csproj"">[\S\s]*?</ProjectReference>" ) ); Assert.That( csprojFileContents, Does.Match( $"<Reference Include=\"{assemblyReferences[0].name}\">\\W*<HintPath>{Regex.Escape(assemblyReferences[0].outputPath)}</HintPath>\\W*</Reference>" ) ); Assert.That( csprojFileContents, Does.Match( $"<Reference Include=\"{assemblyReferences[1].name}\">\\W*<HintPath>{Regex.Escape(assemblyReferences[1].outputPath)}</HintPath>\\W*</Reference>" ) ); } [Test] public void CompiledAssemblyReference_IsAdded() { var compiledAssemblyReferences = new[] { "/some/path/MyPlugin.dll".NormalizePath(), "/some/other/path/Hello.dll".NormalizePath(), }; var synchronizer = m_Builder .WithAssemblyData(compiledAssemblyReferences: compiledAssemblyReferences) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); Assert.That( csprojFileContents, Does.Match( $"<Reference Include=\"Hello\">\\W*<HintPath>{Regex.Escape(compiledAssemblyReferences[1])}</HintPath>\\W*</Reference>" ) ); Assert.That( csprojFileContents, Does.Match( $"<Reference Include=\"MyPlugin\">\\W*<HintPath>{Regex.Escape(compiledAssemblyReferences[0])}</HintPath>\\W*</Reference>" ) ); } [Test] public void ProjectReference_FromLibraryReferences_IsAdded() { var projectAssembly = new Assembly( "ProjectAssembly", "/path/to/project.dll", new[] { "test.cs" }, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ); var synchronizer = m_Builder .WithAssemblyData(assemblyReferences: new[] { projectAssembly }) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); Assert.That( csprojFileContents, Does.Not.Match( $"<Reference Include=\"{projectAssembly.name}\">\\W*<HintPath>{projectAssembly.outputPath}</HintPath>\\W*</Reference>" ) ); } [Test] public void NotInAssembly_WontBeAdded() { var fileOutsideAssembly = "some.dll"; var fileArray = new[] { fileOutsideAssembly }; var synchronizer = m_Builder.WithAssetFiles(fileArray).Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.DoesNotContain("some.dll", csprojFileContents); } } class Defines : ProjectGenerationTestBase { [Test] public void ResponseFiles_CanAddDefines() { const string responseFile = "csc.rsp"; var synchronizer = m_Builder .WithResponseFileData( m_Builder.Assembly, responseFile, defines: new[] { "DEF1", "DEF2" } ) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); Assert.That( csprojFileContents, Does.Match("<DefineConstants>.*;DEF1.*</DefineConstants>") ); Assert.That( csprojFileContents, Does.Match("<DefineConstants>.*;DEF2.*</DefineConstants>") ); } [Test] public void Assembly_CanAddDefines() { var synchronizer = m_Builder .WithAssemblyData(defines: new[] { "DEF1", "DEF2" }) .Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); Assert.That( csprojFileContents, Does.Match("<DefineConstants>.*;DEF1.*</DefineConstants>") ); Assert.That( csprojFileContents, Does.Match("<DefineConstants>.*;DEF2.*</DefineConstants>") ); } [Test] public void ResponseFileDefines_OverrideRootResponseFile() { string[] files = { "test.cs" }; var assemblyA = new Assembly( "A", "some/root/file.dll", files, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ); var assemblyB = new Assembly( "B", "some/root/child/anotherfile.dll", files, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ); var synchronizer = m_Builder .WithAssemblies(new[] { assemblyA, assemblyB }) .WithResponseFileData(assemblyA, "A.rsp", defines: new[] { "RootedDefine" }) .WithResponseFileData(assemblyB, "B.rsp", defines: new[] { "CHILD_DEFINE" }) .Build(); synchronizer.Sync(); var aCsprojContent = m_Builder.ReadProjectFile(assemblyA); var bCsprojContent = m_Builder.ReadProjectFile(assemblyB); Assert.That( bCsprojContent, Does.Match("<DefineConstants>.*;CHILD_DEFINE.*</DefineConstants>") ); Assert.That( bCsprojContent, Does.Not.Match("<DefineConstants>.*;RootedDefine.*</DefineConstants>") ); Assert.That( aCsprojContent, Does.Not.Match("<DefineConstants>.*;CHILD_DEFINE.*</DefineConstants>") ); Assert.That( aCsprojContent, Does.Match("<DefineConstants>.*;RootedDefine.*</DefineConstants>") ); } } class OnGenerationProject : ProjectGenerationTestBase { static bool m_HasCalledOnGeneratedCSProject = false; static bool m_isRunningThisTest = false; public class OnGenerationCallbacks : AssetPostprocessor { public static string OnGeneratedCSProject(string path, string content) { if (!m_isRunningThisTest) return content; m_HasCalledOnGeneratedCSProject = true; return content.Replace("fileA", "fileD"); } } [Test] public void OnGenerationProject_Called() { m_isRunningThisTest = true; var synchronizer = m_Builder.Build(); synchronizer.Sync(); Assert.True(m_HasCalledOnGeneratedCSProject); m_isRunningThisTest = false; } [Test] public void OnGenerationProject_Modifed() { m_isRunningThisTest = true; var files = new[] { "fileA.cs", "fileB.cs", "fileC.cs" }; var synchronizer = m_Builder.WithAssemblyData(files: files).Build(); synchronizer.Sync(); var csprojFileContents = m_Builder.ReadProjectFile(m_Builder.Assembly); StringAssert.DoesNotContain("fileA.cs", csprojFileContents); StringAssert.Contains("fileD.cs", csprojFileContents); Assert.True(m_HasCalledOnGeneratedCSProject); m_isRunningThisTest = false; } } } } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/CSProjectTests.cs.meta ================================================ fileFormatVersion: 2 guid: e758ab1362dab204aa5aaac5590165b0 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/DetermineScriptEditor.cs ================================================ using NUnit.Framework; using Moq; using UnityEngine; using UnityEngine.TestTools; using Unity.CodeEditor; namespace VSCodeEditor.Tests { [TestFixture] class DetermineScriptEditor { [TestCase("/Applications/Visual Studio Code.app")] [TestCase("/Applications/Visual Studio Code - Insiders.app")] [TestCase("/Applications/VS Code.app")] [TestCase("/Applications/Code.app")] [TestCase("/home/thatguy/vscode/code")] [UnityPlatform(RuntimePlatform.OSXEditor)] public void OSXPathDiscovery(string path) { Discover(path); } [TestCase(@"C:\Program Files\Microsoft VS Code\bin\code.cmd")] [TestCase(@"C:\Program Files\Microsoft VS Code\Code.exe")] [TestCase(@"C:\Program Files\Microsoft VS Code Insiders\bin\code-insiders.cmd")] [TestCase(@"C:\Program Files\Microsoft VS Code Insiders\Code.exe")] [TestCase(@"C:\Users\Username\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd")] [TestCase(@"C:\Users\Username\AppData\Local\Programs\Microsoft VS Code\Code.exe")] [TestCase( @"C:\Users\Username\AppData\Local\Programs\Microsoft VS Code Insiders\bin\code-insiders.cmd" )] [TestCase(@"C:\Users\Username\AppData\Local\Programs\Microsoft VS Code Insiders\Code.exe")] [UnityPlatform(RuntimePlatform.WindowsEditor)] public void WindowsPathDiscovery(string path) { Discover(path); } [TestCase("/usr/bin/code")] [TestCase("/bin/code")] [TestCase("/usr/local/bin/code")] [TestCase("/var/lib/flatpak/exports/bin/com.visualstudio.code")] [TestCase("/snap/current/bin/code")] [UnityPlatform(RuntimePlatform.LinuxEditor)] public void LinuxPathDiscovery(string path) { Discover(path); } static void Discover(string path) { var discovery = new Mock<IDiscovery>(); var generator = new Mock<IGenerator>(); discovery .Setup(x => x.PathCallback()) .Returns( new[] { new CodeEditor.Installation { Path = path, Name = path.Contains("Insiders") ? "Visual Studio Code Insiders" : "Visual Studio Code" } } ); var editor = new VSCodeScriptEditor(discovery.Object, generator.Object); editor.TryGetInstallationForPath(path, out var installation); Assert.AreEqual(path, installation.Path); } } } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/DetermineScriptEditor.cs.meta ================================================ fileFormatVersion: 2 guid: 1088a88b936509a4f8554d4b38f3d0f8 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/Helper.cs ================================================ using UnityEditor.Compilation; namespace VSCodeEditor.Tests { public static class Helper { public static string GetLangVersion() { var languageVersion = new ScriptCompilerOptions().LanguageVersion; return languageVersion; } } } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/Helper.cs.meta ================================================ fileFormatVersion: 2 guid: 44504e25e86f4e2eab3f97a61d5c3e37 timeCreated: 1643815839 ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/MockFileIO.cs ================================================ using System; using System.Collections.Generic; using System.IO; using System.Text; using NUnit.Framework; namespace VSCodeEditor.Tests { class MockFileIO : IFileIO { readonly Dictionary<string, string> fileToContent = new(); public int WriteTimes { get; private set; } public int ReadTimes { get; private set; } public int ExistTimes { get; private set; } public bool Exists(string fileName) { ++ExistTimes; return fileToContent.ContainsKey(fileName); } public string ReadAllText(string fileName) { ++ReadTimes; return fileToContent[fileName]; } public void WriteAllText(string fileName, string content) { ++WriteTimes; var utf8 = Encoding.UTF8; byte[] utfBytes = utf8.GetBytes(content); fileToContent[fileName] = utf8.GetString(utfBytes, 0, utfBytes.Length); } public string EscapedRelativePathFor(string file, string projectDirectory) { return file.NormalizePath() .StartsWith( $"{projectDirectory}{Path.DirectorySeparatorChar}", StringComparison.Ordinal ) ? file[(projectDirectory.Length + 1)..] : file.NormalizePath(); } public void DeleteFile(string fileName) { if (!fileToContent.ContainsKey(fileName)) { throw new Exception($"{fileName}: has not been created."); } fileToContent.Remove(fileName); } public void CreateDirectory(string pathName) { if (fileToContent.ContainsKey(pathName)) { throw new Exception($"{pathName}: already exists."); } fileToContent[pathName] = ""; } public void Copy(string sourceFileName, string destFileName, bool overwrite) { if (!fileToContent.ContainsKey(sourceFileName)) { throw new Exception($"{sourceFileName}: has not been created."); } if (fileToContent.ContainsKey(destFileName) && !overwrite) { throw new Exception($"{destFileName}: already exists."); } fileToContent[destFileName] = fileToContent[sourceFileName]; } } public class MockFileIOTests { MockFileIO m_FileIo; [SetUp] public void SetUp() { m_FileIo = new MockFileIO(); } [Test] public void WhenWrite_Exists() { var fileName = "fileName"; m_FileIo.WriteAllText(fileName, ""); Assert.True(m_FileIo.Exists(fileName)); } [Test] public void BeforeWrite_DoesNotExist() { var fileName = "fileName"; Assert.False(m_FileIo.Exists(fileName)); } [Test] public void WhenWrite_CanRead() { var fileName = "fileName"; var content = "content"; m_FileIo.WriteAllText(fileName, content); Assert.AreEqual(content, m_FileIo.ReadAllText(fileName)); } [Test] public void WriteTwice_WillOverwriteContent() { var fileName = "fileName"; var content = "content"; var content2 = "content2"; m_FileIo.WriteAllText(fileName, content); m_FileIo.WriteAllText(fileName, content2); Assert.AreEqual(content2, m_FileIo.ReadAllText(fileName)); } [Test] public void WhenWrite_ThenDelete_FillDoesNotExist() { var fileName = "fileName"; var content = "content"; m_FileIo.WriteAllText(fileName, content); m_FileIo.DeleteFile(fileName); Assert.IsFalse(m_FileIo.Exists(fileName), "File Should not exist are deleting it"); } [Test] public void BeforeWrite_IfDelete_ExceptionOccurs() { var fileName = "fileName"; var exception = Assert.Throws<Exception>(() => m_FileIo.DeleteFile(fileName)); StringAssert.AreEqualIgnoringCase( $"{fileName}: has not been created.", exception.Message ); } [Test] public void BeforeWrite_Read_CausesFailure() { var fileName = "fileName"; Assert.Throws<KeyNotFoundException>(() => m_FileIo.ReadAllText(fileName)); } [Test] public void CallingExist_IncreaseCounter() { m_FileIo.Exists("fileName"); Assert.AreEqual(1, m_FileIo.ExistTimes); m_FileIo.Exists("fileName2"); Assert.AreEqual(2, m_FileIo.ExistTimes); } [Test] public void CallingWrite_IncreaseCounter() { var fileName = "fileName"; m_FileIo.WriteAllText(fileName, ""); Assert.AreEqual(1, m_FileIo.WriteTimes); m_FileIo.WriteAllText(fileName, ""); Assert.AreEqual(2, m_FileIo.WriteTimes); } [Test] public void CallingRead_IncreaseCounter() { var fileName = "fileName"; m_FileIo.WriteAllText(fileName, ""); m_FileIo.ReadAllText(fileName); Assert.AreEqual(1, m_FileIo.ReadTimes); m_FileIo.ReadAllText(fileName); Assert.AreEqual(2, m_FileIo.ReadTimes); } } } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/MockFileIO.cs.meta ================================================ fileFormatVersion: 2 guid: 190eb9b1e04f04a4c8406abe88ae4424 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/SolutionGenerationTestBase.cs ================================================ using System.IO; using NUnit.Framework; using Unity.CodeEditor; namespace VSCodeEditor.Tests { class ProjectGenerationTestBase { string m_EditorPath; protected SynchronizerBuilder m_Builder; [OneTimeSetUp] public void OneTimeSetUp() { m_EditorPath = CodeEditor.CurrentEditorInstallation; CodeEditor.SetExternalScriptEditor("NotSet"); } [OneTimeTearDown] public void OneTimeTearDown() { CodeEditor.SetExternalScriptEditor(m_EditorPath); } [SetUp] public void SetUp() { m_Builder = new SynchronizerBuilder(); } protected static string MakeAbsolutePathTestImplementation(string path) { return Path.IsPathRooted(path) ? path : Path.Combine(SynchronizerBuilder.projectDirectory, path); } protected static string MakeAbsolutePath(string path) { return Path.IsPathRooted(path) ? path : Path.GetFullPath(path); } } } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/SolutionGenerationTestBase.cs.meta ================================================ fileFormatVersion: 2 guid: 709bf2641c061d34685b039b179ac9c7 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/SolutionTests.cs ================================================ using System; using System.Collections.Generic; using NUnit.Framework; using UnityEditor.Compilation; using UnityEditor; namespace VSCodeEditor.Tests { namespace SolutionGeneration { class Synchronization : ProjectGenerationTestBase { [Test] public void EmptyProject_WhenSynced_ShouldNotGenerateSolutionFile() { var synchronizer = m_Builder.WithAssemblies(new Assembly[0]).Build(); synchronizer.Sync(); Assert.False( m_Builder .ReadFile(synchronizer.SolutionFile()) .Contains("Project(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\")"), "Should not create project entry with no assemblies." ); } [Test] public void NoSolution_WhenSynced_CreatesSolutionFile() { var synchronizer = m_Builder.Build(); Assert.False( synchronizer.SolutionExists(), "Should not create solution file before we call sync." ); synchronizer.Sync(); Assert.True(synchronizer.SolutionExists(), "Should create solution file."); } [Test] public void WhenSynced_ThenDeleted_SolutionFileDoesNotExist() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); m_Builder.DeleteFile(synchronizer.SolutionFile()); Assert.False( synchronizer.SolutionExists(), "Synchronizer should sync state with file system, after file has been deleted." ); } [Test] public void ContentWithoutChanges_WhenSynced_DoesNotReSync() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); Assert.AreEqual( 4, m_Builder.WriteTimes, "Once for csproj, once for solution, once for workspace, and once for vscode settings" ); synchronizer.Sync(); Assert.AreEqual( 4, m_Builder.WriteTimes, "When content doesn't change we shouldn't re-sync" ); } [Test] public void AssemblyChanged_AfterSync_PerformsReSync() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); Assert.AreEqual( 4, m_Builder.WriteTimes, "Once for csproj, once for solution, once for workspace file, and once vscode settings" ); m_Builder.WithAssemblies( new[] { new Assembly( "Another", "path/to/Assembly.dll", new[] { "file.cs" }, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ) } ); synchronizer.Sync(); Assert.AreEqual( 6, m_Builder.WriteTimes, "Should re-sync the solution file and the csproj" ); } [Test] public void EmptySolutionFile_WhenSynced_OverwritesTheFile() { var synchronizer = m_Builder.Build(); // Pre-seed solution file with empty property section var solutionText = "Microsoft Visual Studio Solution File, Format Version 11.00\n# Visual Studio 2010\nGlobal\nEndGlobal"; m_Builder.WithSolutionText(solutionText); synchronizer.Sync(); Assert.AreNotEqual( solutionText, m_Builder.ReadFile(synchronizer.SolutionFile()), "Should rewrite solution text" ); } [TestCase("dll")] [TestCase("asmdef")] public void AfterSync_WillResync_WhenReimportWithSpecialFileExtensions( string reimportedFile ) { var synchronizer = m_Builder.Build(); Assert.That( synchronizer.SyncIfNeeded( new List<string>(), new[] { $"reimport.{reimportedFile}" } ) ); } [Test] public void AfterSync_WontResync_WhenReimportWithoutSpecialFileExtensions() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); Assert.IsFalse( synchronizer.SyncIfNeeded(new List<string>(), new[] { "ShouldNotSync.txt" }) ); } [Test] public void AfterSync_WontReimport_WithoutSpecificAffectedFileExtension() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); Assert.IsFalse( synchronizer.SyncIfNeeded( new List<string> { " reimport.random" }, new string[0] ) ); } [Test] public void AfterSync_WillReimportSolutionFile_WhenNewAssemblyIsBeingAdded() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); var newAssembly = new Assembly( "MyAssembly", "myOutput/path", new[] { "MyFile.cs" }, new string[0], new Assembly[0], new string[0], AssemblyFlags.None ); var newAssemblies = new[] { m_Builder.Assembly, newAssembly }; m_Builder.WithAssemblies(newAssemblies); m_Builder.AssignFilesToAssembly(new[] { "MyFile.cs" }, newAssembly); synchronizer.SyncIfNeeded(new List<string> { "MyFile.cs" }, new string[0]); var solutionFileContent = m_Builder.ReadFile(synchronizer.SolutionFile()); StringAssert.Contains( "Project(\"{}\") = \"MyAssembly\", \"MyAssembly.csproj\"", solutionFileContent, "After synchronizing a new file from a new Assembly. The new assembly should be added to solution file." ); } [Test] public void AssetNotBelongingToAssembly_WillSync_ButWontWriteFiles() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); // Generate solution and csproj Assert.AreEqual( 4, m_Builder.WriteTimes, "Should have written csproj, sln, workspace, and vscode setting files" ); m_Builder.WithAssetFiles(new[] { "X.cs" }); var res = synchronizer.SyncIfNeeded(new List<string> { "X.cs" }, new string[0]); Assert.IsTrue(res, "Should support file extension"); Assert.AreEqual( 4, m_Builder.WriteTimes, "Should not have rewritten neither csproj, sln, workspace, nor vscode setting files" ); } [Test] public void AssetBelongingToAssemblyWithNoName_WillSync_ButWontWriteFiles() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); // Generate solution and csproj Assert.AreEqual( 4, m_Builder.WriteTimes, "Should have written csproj, sln, workspace, and vscode setting files" ); string[] files = { "X.cs" }; m_Builder .WithAssetFiles(files) .AssignFilesToAssembly( files, new Assembly( "", "", files, new string[0], new Assembly[0], new string[0], AssemblyFlags.EditorAssembly ) ); var res = synchronizer.SyncIfNeeded(new List<string> { "X.cs" }, new string[0]); Assert.IsTrue(res, "Should support file extension"); Assert.AreEqual(4, m_Builder.WriteTimes, "Should only rewrite sln file"); } [Test, TestCaseSource(nameof(s_ExtensionsRequireReSync))] public void WillResync_WhenAffectedFileTypes(string fileExtension) { var synchronizer = m_Builder.Build(); Assert.That( synchronizer.SyncIfNeeded( new List<string> { $"reimport.{fileExtension}" }, new string[0] ) ); } static readonly string[] s_ExtensionsRequireReSync = { "dll", "asmdef", "cs", "uxml", "uss", "shader", "compute", "cginc", "hlsl", "glslinc", "template", "raytrace" }; } class Format : ProjectGenerationTestBase { [Test] public void SyncSettings_WhenSynced_HeaderMatchesVSVersion() { var synchronizer = m_Builder.Build(); synchronizer.Sync(); string[] syncedSolutionText = m_Builder .ReadFile(synchronizer.SolutionFile()) .Split(new[] { "\r\n" }, StringSplitOptions.None); Assert.That(syncedSolutionText.Length, Is.GreaterThanOrEqualTo(4)); Assert.AreEqual("", syncedSolutionText[0]); Assert.AreEqual( "Microsoft Visual Studio Solution File, Format Version 11.00", syncedSolutionText[1] ); Assert.AreEqual("# Visual Studio 2010", syncedSolutionText[2]); } [Test] public void DefaultSyncSettings_WhenSynced_CreatesSolutionFileFromDefaultTemplate() { var solutionGUID = "SolutionGUID"; var projectGUID = "ProjectGUID"; var synchronizer = m_Builder .WithSolutionGuid(solutionGUID) .WithProjectGuid(projectGUID, m_Builder.Assembly) .Build(); // solutionguid, solutionname, projectguid var solutionExpected = string.Join( "\r\n", new[] { @"", @"Microsoft Visual Studio Solution File, Format Version 11.00", @"# Visual Studio 2010", @"Project(""{{{0}}}"") = ""{2}"", ""{2}.csproj"", ""{{{1}}}""", @"EndProject", @"Global", @" GlobalSection(SolutionConfigurationPlatforms) = preSolution", @" Debug|Any CPU = Debug|Any CPU", @" EndGlobalSection", @" GlobalSection(ProjectConfigurationPlatforms) = postSolution", @" {{{1}}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU", @" {{{1}}}.Debug|Any CPU.Build.0 = Debug|Any CPU", @" EndGlobalSection", @" GlobalSection(SolutionProperties) = preSolution", @" HideSolutionNode = FALSE", @" EndGlobalSection", @"EndGlobal", @"" } ) .Replace(" ", "\t"); var solutionTemplate = string.Format( solutionExpected, solutionGUID, projectGUID, m_Builder.Assembly.name ); synchronizer.Sync(); Assert.AreEqual(solutionTemplate, m_Builder.ReadFile(synchronizer.SolutionFile())); } } class OnGenerationSolution : ProjectGenerationTestBase { static bool m_HasCalledOnGeneratedSlnSolution = false; const string solutionGUID = "SolutionGUID"; const string newSolutionGUID = "1234567"; // This is here because the fact this OnGenerationCallbacks is around // will cause it to get executed. static bool m_isRunningThisTest = false; public class OnGenerationCallbacks : AssetPostprocessor { public static string OnGeneratedSlnSolution(string path, string content) { if (!m_isRunningThisTest) return content; m_HasCalledOnGeneratedSlnSolution = true; return content.Replace(solutionGUID, newSolutionGUID); } } [Test] public void OnGenerationSolution_Called() { m_isRunningThisTest = true; var synchronizer = m_Builder.Build(); synchronizer.Sync(); Assert.True(m_HasCalledOnGeneratedSlnSolution); m_isRunningThisTest = false; } [Test] public void OnGenerationSolution_Modifed() { m_isRunningThisTest = true; var synchronizer = m_Builder.WithSolutionGuid(solutionGUID).Build(); synchronizer.Sync(); var slnFileContents = m_Builder.ReadFile(synchronizer.SolutionFile()); StringAssert.DoesNotContain(solutionGUID, slnFileContents); StringAssert.Contains(newSolutionGUID, slnFileContents); Assert.True(m_HasCalledOnGeneratedSlnSolution); m_isRunningThisTest = false; } } } } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/SolutionTests.cs.meta ================================================ fileFormatVersion: 2 guid: cf232692c0e8dc14580208c8dc307cd5 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/SynchronizerBuilder.cs ================================================ using System; using System.IO; using System.Linq; using Moq; using UnityEditor.Compilation; namespace VSCodeEditor.Tests { class SynchronizerBuilder { class BuilderError : Exception { public BuilderError(string message) : base(message) { } } IGenerator m_Generator; readonly Mock<IAssemblyNameProvider> m_AssemblyProvider = new(); public static readonly string projectDirectory = "/FullPath/Example".NormalizePath(); readonly MockFileIO m_FileIoMock = new(); readonly Mock<IGUIDGenerator> m_GUIDGenerator = new(); public string ReadFile(string fileName) => m_FileIoMock.ReadAllText(fileName); public static string ProjectFilePath(Assembly assembly) => Path.Combine(projectDirectory, $"{assembly.name}.csproj"); public string ReadProjectFile(Assembly assembly) => ReadFile(ProjectFilePath(assembly)); public bool FileExists(string fileName) => m_FileIoMock.Exists(fileName); public void DeleteFile(string fileName) => m_FileIoMock.DeleteFile(fileName); public int WriteTimes => m_FileIoMock.WriteTimes; public int ReadTimes => m_FileIoMock.ReadTimes; public Assembly Assembly { get { if (m_Assemblies.Length > 0) { return m_Assemblies[0]; } throw new BuilderError( "An empty list of assemblies has been populated, and then the first assembly was requested." ); } } Assembly[] m_Assemblies; public SynchronizerBuilder() { WithAssemblyData(); } public IGenerator Build() { return m_Generator = new ProjectGeneration( projectDirectory, m_AssemblyProvider.Object, m_FileIoMock, m_GUIDGenerator.Object ); } public SynchronizerBuilder WithSolutionText(string solutionText) { if (m_Generator == null) { throw new BuilderError("You need to call Build() before calling this method."); } m_FileIoMock.WriteAllText(m_Generator.SolutionFile(), solutionText); return this; } public SynchronizerBuilder WithSolutionGuid(string solutionGuid) { m_GUIDGenerator .Setup(x => x.SolutionGuid(Path.GetFileName(projectDirectory), "cs")) .Returns(solutionGuid); return this; } public SynchronizerBuilder WithProjectGuid(string projectGuid, Assembly assembly) { m_GUIDGenerator .Setup(x => x.ProjectGuid(Path.GetFileName(projectDirectory), assembly.name)) .Returns(projectGuid); return this; } public SynchronizerBuilder WithAssemblies(Assembly[] assemblies) { m_Assemblies = assemblies; m_AssemblyProvider .Setup(x => x.GetAssemblies(It.IsAny<Func<string, bool>>())) .Returns(m_Assemblies); return this; } public SynchronizerBuilder WithAssemblyData( string[] files = null, string[] defines = null, Assembly[] assemblyReferences = null, string[] compiledAssemblyReferences = null, bool unsafeSettings = false ) { var assembly = new Assembly( "Test", "some/path/file.dll", files ?? new[] { "test.cs" }, defines ?? new string[0], assemblyReferences ?? new Assembly[0], compiledAssemblyReferences ?? new string[0], AssemblyFlags.None ); assembly.compilerOptions.AllowUnsafeCode = unsafeSettings; return WithAssembly(assembly); } public SynchronizerBuilder WithAssembly(Assembly assembly) { AssignFilesToAssembly(assembly.sourceFiles, assembly); return WithAssemblies(new[] { assembly }); } public SynchronizerBuilder WithAssetFiles(string[] files) { m_AssemblyProvider.Setup(x => x.GetAllAssetPaths()).Returns(files); return this; } public SynchronizerBuilder AssignFilesToAssembly(string[] files, Assembly assembly) { m_AssemblyProvider .Setup( x => x.GetAssemblyNameFromScriptPath(It.Is<string>(file => files.Contains(file))) ) .Returns(assembly.name); return this; } public SynchronizerBuilder WithResponseFileData( Assembly assembly, string responseFile, string[] defines = null, string[] errors = null, string[] fullPathReferences = null, string[] otherArguments = null, bool _unsafe = false ) { assembly.compilerOptions.ResponseFiles = new[] { responseFile }; m_AssemblyProvider .Setup( x => x.ParseResponseFile(responseFile, projectDirectory, It.IsAny<string[]>()) ) .Returns( new ResponseFileData { Defines = defines ?? new string[0], Errors = errors ?? new string[0], FullPathReferences = fullPathReferences ?? new string[0], OtherArguments = otherArguments ?? new string[0], Unsafe = _unsafe, } ); return this; } public SynchronizerBuilder WithPackageInfo(string assetPath) { m_AssemblyProvider .Setup(x => x.FindForAssetPath(assetPath)) .Returns(default(UnityEditor.PackageManager.PackageInfo)); return this; } public SynchronizerBuilder WithPackageAsset(string assetPath, bool isInternalPackageAsset) { m_AssemblyProvider .Setup(x => x.IsInternalizedPackagePath(assetPath)) .Returns(isInternalPackageAsset); return this; } public SynchronizerBuilder WithUserSupportedExtensions(string[] extensions) { m_AssemblyProvider.Setup(x => x.ProjectSupportedExtensions).Returns(extensions); return this; } public SynchronizerBuilder WithRoslynAnalyzerRulesetPath(string roslynAnalyzerRuleSetPath) { foreach (var assembly in m_Assemblies) { assembly.compilerOptions.RoslynAnalyzerRulesetPath = roslynAnalyzerRuleSetPath; } return this; } public SynchronizerBuilder WithRoslynAnalyzers(string[] roslynAnalyzerDllPaths) { #if !ROSLYN_ANALYZER_FIX m_AssemblyProvider .Setup(x => x.GetRoslynAnalyzerPaths()) .Returns(roslynAnalyzerDllPaths); #else foreach (var assembly in m_Assemblies) { assembly.compilerOptions.RoslynAnalyzerDllPaths = roslynAnalyzerDllPaths; } #endif return this; } } } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/SynchronizerBuilder.cs.meta ================================================ fileFormatVersion: 2 guid: c8fb16024c3395546a61eafae2e5fbab MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/Unity.com.unity.ide.vscode.EditorTests.asmdef ================================================ { "name": "Unity.VSCode.EditorTests", "references": [ "Unity.VSCode.Editor" ], "optionalUnityReferences": [ "TestAssemblies" ], "includePlatforms": [ "Editor" ], "excludePlatforms": [], "allowUnsafeCode": false, "overrideReferences": true, "precompiledReferences": [ "Moq.dll" ], "autoReferenced": false, "defineConstraints": [], "versionDefines": [ { "name": "Unity", "expression": "2021.2.0a9", "define": "ROSLYN_ANALYZER_FIX" }, { "name": "Unity", "expression": "[2021.1.2f1,2021.2.0a1]", "define": "ROSLYN_ANALYZER_FIX" }, { "name": "Unity", "expression": "[2020.3.6f1,2021.0]", "define": "ROSLYN_ANALYZER_FIX" } ] } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/Unity.com.unity.ide.vscode.EditorTests.asmdef.meta ================================================ fileFormatVersion: 2 guid: 3d83564bebbdd1842a81853fd1f798ef AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/VSCodeScriptEditorTests.cs ================================================ using Moq; using NUnit.Framework; using Unity.CodeEditor; namespace VSCodeEditor.Tests { [TestFixture] public class VSCodeScriptEditorTests { IExternalCodeEditor editor; [SetUp] public void OneTimeSetUp() { var discovery = new Mock<IDiscovery>(); var generator = new Mock<IGenerator>(); editor = new VSCodeScriptEditor(discovery.Object, generator.Object); } [TearDown] public void Dispose() { CodeEditor.Unregister(editor); } [Test] public void WillNotOpenUnknownExtensions() { Assert.False(editor.OpenProject("/file/with/unknown.extension", 1, 1)); } } } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/VSCodeScriptEditorTests.cs.meta ================================================ fileFormatVersion: 2 guid: 278731beeb85dae4182b762d3247b978 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/XMLUtilities.cs ================================================ using NUnit.Framework; using System.Collections.Generic; using System.Linq; using System.Xml; namespace VSCodeEditor.Tests { public static class XMLUtilities { public static void AssertCompileItemsMatchExactly( XmlDocument projectXml, IEnumerable<string> expectedCompileItems ) { var compileItems = projectXml .SelectAttributeValues( "/msb:Project/msb:ItemGroup/msb:Compile/@Include", GetModifiedXmlNamespaceManager(projectXml) ) .ToArray(); CollectionAssert.AreEquivalent( RelativeAssetPathsFor(expectedCompileItems), compileItems ); } public static void AssertAnalyzerItemsMatchExactly( XmlDocument projectXml, IEnumerable<string> expectedAnalyzers ) { CollectionAssert.AreEquivalent( expected: RelativeAssetPathsFor(expectedAnalyzers), actual: projectXml .SelectAttributeValues( "/msb:Project/msb:ItemGroup/msb:Analyzer/@Include", GetModifiedXmlNamespaceManager(projectXml) ) .ToArray() ); } public static void AssertAnalyzerRuleSetsMatchExactly( XmlDocument projectXml, string expectedRuleSetFile ) { CollectionAssert.Contains( projectXml .SelectInnerText( "/msb:Project/msb:PropertyGroup/msb:CodeAnalysisRuleSet", GetModifiedXmlNamespaceManager(projectXml) ) .ToArray(), expectedRuleSetFile ); } public static void AssertNonCompileItemsMatchExactly( XmlDocument projectXml, IEnumerable<string> expectedNoncompileItems ) { var nonCompileItems = projectXml .SelectAttributeValues( "/msb:Project/msb:ItemGroup/msb:None/@Include", GetModifiedXmlNamespaceManager(projectXml) ) .ToArray(); CollectionAssert.AreEquivalent( RelativeAssetPathsFor(expectedNoncompileItems), nonCompileItems ); } static XmlNamespaceManager GetModifiedXmlNamespaceManager(XmlDocument projectXml) { var xmlNamespaces = new XmlNamespaceManager(projectXml.NameTable); xmlNamespaces.AddNamespace( "msb", "http://schemas.microsoft.com/developer/msbuild/2003" ); return xmlNamespaces; } static IEnumerable<string> RelativeAssetPathsFor(IEnumerable<string> fileNames) { return fileNames.Select(fileName => fileName.NormalizePath()).ToArray(); } static IEnumerable<string> SelectAttributeValues( this XmlDocument xmlDocument, string xpathQuery, XmlNamespaceManager xmlNamespaceManager ) { var result = xmlDocument.SelectNodes(xpathQuery, xmlNamespaceManager); foreach (XmlAttribute attribute in result) yield return attribute.Value; } static IEnumerable<string> SelectInnerText( this XmlDocument xmlDocument, string xpathQuery, XmlNamespaceManager xmlNamespaceManager ) { var result = xmlDocument.SelectNodes(xpathQuery, xmlNamespaceManager); foreach (XmlElement node in result) { yield return node.InnerText; } } public static XmlDocument FromText(string textContent) { var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(textContent); return xmlDocument; } public static string GetInnerText(XmlDocument xmlDocument, string xpathQuery) { return xmlDocument .SelectSingleNode(xpathQuery, GetModifiedXmlNamespaceManager(xmlDocument)) .InnerText; } } } ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor/XMLUtilities.cs.meta ================================================ fileFormatVersion: 2 guid: 621289c67ca2afc46a7234db2b3a162e MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests/Editor.meta ================================================ fileFormatVersion: 2 guid: 64b1a000b20b1d548b250cce938b38d4 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/Tests.meta ================================================ fileFormatVersion: 2 guid: bd0942cdd7be63d4e82bf3896f603e90 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.tsk.ide.vscodetests/package.json ================================================ { "name": "com.tsk.ide.vscodetests", "displayName": "TSK VSCode Editor Tests", "description": "Unofficial code editor integration for supporting Visual Studio Code as code editor for Unity. Adds support for generating csproj files for intellisense purposes, auto discovery of installations, etc.", "version": "1.3.6", "unity": "2021.3", "dependencies": { "nuget.moq": "1.0.0" }, "author": { "name": "Chizaruu", "email": "contact@humblegco.com", "url": "https://github.com/Chizaruu" }, "keywords": [ "visual studio code", "vscode", "code editor", "editor", "intellisense", "c#", "csharp", "csproj", "unity", "unity3d" ], "repository": "https://github.com/Chizaruu/com.tsk.ide.vscode" } ================================================ FILE: com.tsk.ide.vscodetests/package.json.meta ================================================ fileFormatVersion: 2 guid: 9abf73ef1ccdaa840bd122dca21155fd PackageManifestImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: