├── .gitignore ├── .vsconfig ├── Assets ├── Scenes.meta └── Scenes │ ├── Empty.unity │ └── Empty.unity.meta ├── LICENSE ├── Packages ├── UnityGitPackageUpdater │ ├── Editor.meta │ ├── Editor │ │ ├── EditorWindows.meta │ │ ├── EditorWindows │ │ │ ├── GitPackageUpdaterEditorWindow.cs │ │ │ └── GitPackageUpdaterEditorWindow.cs.meta │ │ ├── SimpleJSON.meta │ │ ├── SimpleJSON │ │ │ ├── SimpleJSON.cs │ │ │ ├── SimpleJSON.cs.meta │ │ │ ├── SimpleJSONBinary.cs │ │ │ ├── SimpleJSONBinary.cs.meta │ │ │ ├── SimpleJSONUnity.cs │ │ │ └── SimpleJSONUnity.cs.meta │ │ ├── UnityGitPackageUpdater.Editor.asmdef │ │ ├── UnityGitPackageUpdater.Editor.asmdef.meta │ │ ├── UnityRefresher.meta │ │ └── UnityRefresher │ │ │ ├── UnityRefresher.cs │ │ │ └── UnityRefresher.cs.meta │ ├── package.json │ └── package.json.meta ├── 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 ├── SceneTemplateSettings.json ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset ├── XRSettings.asset └── boot.config ├── README.md └── UserSettings ├── EditorUserSettings.asset ├── Layouts └── default-2021.dwlt └── Search.settings /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Mm]emoryCaptures/ 12 | 13 | # Asset meta data should only be ignored when the corresponding asset is also ignored 14 | !/[Aa]ssets/**/*.meta 15 | 16 | # Uncomment this line if you wish to ignore the asset store tools plugin 17 | # /[Aa]ssets/AssetStoreTools* 18 | 19 | # Autogenerated Jetbrains Rider plugin 20 | [Aa]ssets/Plugins/Editor/JetBrains* 21 | 22 | # Visual Studio cache directory 23 | .vs/ 24 | 25 | # Gradle cache directory 26 | .gradle/ 27 | 28 | # Autogenerated VS/MD/Consulo solution and project files 29 | ExportedObj/ 30 | .consulo/ 31 | *.csproj 32 | *.unityproj 33 | *.sln 34 | *.suo 35 | *.tmp 36 | *.user 37 | *.userprefs 38 | *.pidb 39 | *.booproj 40 | *.svd 41 | *.pdb 42 | *.mdb 43 | *.opendb 44 | *.VC.db 45 | 46 | # Unity3D generated meta files 47 | *.pidb.meta 48 | *.pdb.meta 49 | *.mdb.meta 50 | 51 | # Unity3D generated file on crash reports 52 | sysinfo.txt 53 | 54 | # Builds 55 | *.apk 56 | *.unitypackage 57 | 58 | # Crashlytics generated file 59 | crashlytics-build.properties 60 | 61 | .DS_Store 62 | UserSettings/ 63 | -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Workload.ManagedGame" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a799773faf5073441bc1f79497fe0393 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/Empty.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.3731193, g: 0.38073996, b: 0.35872698, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | -------------------------------------------------------------------------------- /Assets/Scenes/Empty.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 74e5b69a730c04108ab55146dda125be 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 QuantumCalzone 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a83728b2d0d70724abb192cb66da76db 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/EditorWindows.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4f6a047360181da4facc52b04b4a37d2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/EditorWindows/GitPackageUpdaterEditorWindow.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.IO; 3 | using UnityEngine; 4 | using UnityEditor; 5 | using GitPackageUpdater.SimpleJSON; 6 | 7 | namespace GitPackageUpdater 8 | { 9 | public class GitPackageUpdaterEditorWindow : EditorWindow 10 | { 11 | private static List packages = new List(); 12 | private Vector2 scrollPosition = Vector2.zero; 13 | private static bool verbose = false; 14 | 15 | private static string ManifestPath { 16 | get { 17 | var projectPath = Directory.GetParent(Application.dataPath).FullName; 18 | var manifestPath = Path.Combine(projectPath, "Packages", "manifest.json"); 19 | return manifestPath; 20 | } 21 | } 22 | 23 | private static JSONNode Manifest 24 | { 25 | get 26 | { 27 | var manifestSource = File.ReadAllText(ManifestPath); 28 | var manifest = JSON.Parse(manifestSource); 29 | return manifest; 30 | } 31 | } 32 | 33 | private static string PackagesLockPath { 34 | get { 35 | var projectPath = Directory.GetParent(Application.dataPath).FullName; 36 | var packagesLockPath = Path.Combine(projectPath, "Packages", "packages-lock.json"); 37 | return packagesLockPath; 38 | } 39 | } 40 | 41 | private static JSONNode PackagesLock 42 | { 43 | get 44 | { 45 | var packagesLockSource = File.ReadAllText(PackagesLockPath); 46 | var packagesLock = JSON.Parse(packagesLockSource); 47 | return packagesLock; 48 | } 49 | } 50 | 51 | private void OnGUI() 52 | { 53 | EditorGUILayout.BeginVertical(); 54 | 55 | if (GUILayout.Button("Refresh")) 56 | { 57 | RefreshPackages(); 58 | } 59 | 60 | if (packages.Count > 0) 61 | { 62 | if (GUILayout.Button("Update All")) 63 | { 64 | ReinstallAllGitPackages(); 65 | UnityRefresher.RefreshExceptPackages(); 66 | } 67 | 68 | if (GUILayout.Button("Update All (Including Non-Git)")) 69 | { 70 | File.Delete(PackagesLockPath); 71 | UnityRefresher.RefreshExceptPackages(); 72 | } 73 | 74 | EditorGUILayout.HelpBox("Or select a package below to update", MessageType.Info); 75 | } 76 | 77 | scrollPosition = GUILayout.BeginScrollView( 78 | scrollPosition: scrollPosition, 79 | alwaysShowHorizontal: false, 80 | alwaysShowVertical: false, 81 | horizontalScrollbar: GUIStyle.none, 82 | verticalScrollbar: GUI.skin.verticalScrollbar, 83 | background: "Box" 84 | ); 85 | 86 | scrollPosition.x = 0; 87 | 88 | for (var i = 0; i < packages.Count; i++) 89 | { 90 | if (GUILayout.Button(packages[i])) 91 | { 92 | ReinstallPackage(packages[i]); 93 | UnityRefresher.RefreshExceptPackages(); 94 | } 95 | } 96 | 97 | GUILayout.EndScrollView(); 98 | 99 | EditorGUILayout.EndVertical(); 100 | } 101 | 102 | [MenuItem("Window/Git Package Updater")] 103 | private static void OpenWindow() 104 | { 105 | var gitPackageReinstallerWindow = (GitPackageUpdaterEditorWindow)GetWindow( 106 | t: typeof(GitPackageUpdaterEditorWindow), 107 | utility: false, 108 | title: "Git Package Updater" 109 | ); 110 | gitPackageReinstallerWindow.Show(); 111 | gitPackageReinstallerWindow.RefreshPackages(); 112 | } 113 | 114 | public void RefreshPackages() 115 | { 116 | if (verbose) Debug.Log("RefreshPackages"); 117 | 118 | packages.Clear(); 119 | 120 | var manifest = Manifest; 121 | var dependencies = manifest["dependencies"]; 122 | foreach (var dependency in dependencies) 123 | { 124 | if (dependency.Value.Value.Contains(".git")) 125 | { 126 | packages.Add(dependency.Key); 127 | } 128 | } 129 | } 130 | 131 | private void ReinstallAllGitPackages() 132 | { 133 | if (verbose) Debug.Log("ReinstallAllGitPackages"); 134 | 135 | for (var i = 0; i < packages.Count; i++) 136 | { 137 | var package = packages[i]; 138 | ReinstallPackage(package); 139 | } 140 | } 141 | 142 | private void ReinstallPackage(string package) 143 | { 144 | if (verbose) Debug.Log(string.Format("ReinstallPackage ( package: {0} )", package)); 145 | 146 | var packagesLock = PackagesLock; 147 | var dependencies = packagesLock["dependencies"]; 148 | dependencies[package]["hash"] = string.Empty; 149 | 150 | using (var streamWriter = new StreamWriter(PackagesLockPath)) 151 | { 152 | streamWriter.Write(dependencies.ToString(1)); 153 | } 154 | } 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/EditorWindows/GitPackageUpdaterEditorWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ebc1eacd095939740ae4c45251497302 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/SimpleJSON.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5da2e309fe14846259e5c709d46cff5f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/SimpleJSON/SimpleJSON.cs: -------------------------------------------------------------------------------- 1 | namespace GitPackageUpdater 2 | { 3 | /* * * * * 4 | * A simple JSON Parser / builder 5 | * ------------------------------ 6 | * 7 | * It mainly has been written as a simple JSON parser. It can build a JSON string 8 | * from the node-tree, or generate a node tree from any valid JSON string. 9 | * 10 | * If you want to use compression when saving to file / stream / B64 you have to include 11 | * SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) in your project and 12 | * define "USE_SharpZipLib" at the top of the file 13 | * 14 | * Written by Bunny83 15 | * 2012-06-09 16 | * 17 | * [2012-06-09 First Version] 18 | * - provides strongly typed node classes and lists / dictionaries 19 | * - provides easy access to class members / array items / data values 20 | * - the parser now properly identifies types. So generating JSON with this framework should work. 21 | * - only double quotes (") are used for quoting strings. 22 | * - provides "casting" properties to easily convert to / from those types: 23 | * int / float / double / bool 24 | * - provides a common interface for each node so no explicit casting is required. 25 | * - the parser tries to avoid errors, but if malformed JSON is parsed the result is more or less undefined 26 | * - It can serialize/deserialize a node tree into/from an experimental compact binary format. It might 27 | * be handy if you want to store things in a file and don't want it to be easily modifiable 28 | * 29 | * 30 | * [2012-12-17 Update] 31 | * - Added internal JSONLazyCreator class which simplifies the construction of a JSON tree 32 | * Now you can simple reference any item that doesn't exist yet and it will return a JSONLazyCreator 33 | * The class determines the required type by it's further use, creates the type and removes itself. 34 | * - Added binary serialization / deserialization. 35 | * - Added support for BZip2 zipped binary format. Requires the SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) 36 | * The usage of the SharpZipLib library can be disabled by removing or commenting out the USE_SharpZipLib define at the top 37 | * - The serializer uses different types when it comes to store the values. Since my data values 38 | * are all of type string, the serializer will "try" which format fits best. The order is: int, float, double, bool, string. 39 | * It's not the most efficient way but for a moderate amount of data it should work on all platforms. 40 | * 41 | * [2017-03-08 Update] 42 | * - Optimised parsing by using a StringBuilder for token. This prevents performance issues when large 43 | * string data fields are contained in the json data. 44 | * - Finally refactored the badly named JSONClass into JSONObject. 45 | * - Replaced the old JSONData class by distict typed classes ( JSONString, JSONNumber, JSONBool, JSONNull ) this 46 | * allows to propertly convert the node tree back to json without type information loss. The actual value 47 | * parsing now happens at parsing time and not when you actually access one of the casting properties. 48 | * 49 | * [2017-04-11 Update] 50 | * - Fixed parsing bug where empty string values have been ignored. 51 | * - Optimised "ToString" by using a StringBuilder internally. This should heavily improve performance for large files 52 | * - Changed the overload of "ToString(string aIndent)" to "ToString(int aIndent)" 53 | * 54 | * [2017-11-29 Update] 55 | * - Removed the IEnumerator implementations on JSONArray & JSONObject and replaced it with a common 56 | * struct Enumerator in JSONNode that should avoid garbage generation. The enumerator always works 57 | * on KeyValuePair, even for JSONArray. 58 | * - Added two wrapper Enumerators that allows for easy key or value enumeration. A JSONNode now has 59 | * a "Keys" and a "Values" enumerable property. Those are also struct enumerators / enumerables 60 | * - A KeyValuePair can now be implicitly converted into a JSONNode. This allows 61 | * a foreach loop over a JSONNode to directly access the values only. Since KeyValuePair as well as 62 | * all the Enumerators are structs, no garbage is allocated. 63 | * - To add Linq support another "LinqEnumerator" is available through the "Linq" property. This 64 | * enumerator does implement the generic IEnumerable interface so most Linq extensions can be used 65 | * on this enumerable object. This one does allocate memory as it's a wrapper class. 66 | * - The Escape method now escapes all control characters (# < 32) in strings as uncode characters 67 | * (\uXXXX) and if the static bool JSONNode.forceASCII is set to true it will also escape all 68 | * characters # > 127. This might be useful if you require an ASCII output. Though keep in mind 69 | * when your strings contain many non-ascii characters the strings become much longer (x6) and are 70 | * no longer human readable. 71 | * - The node types JSONObject and JSONArray now have an "Inline" boolean switch which will default to 72 | * false. It can be used to serialize this element inline even you serialize with an indented format 73 | * This is useful for arrays containing numbers so it doesn't place every number on a new line 74 | * - Extracted the binary serialization code into a seperate extension file. All classes are now declared 75 | * as "partial" so an extension file can even add a new virtual or abstract method / interface to 76 | * JSONNode and override it in the concrete type classes. It's of course a hacky approach which is 77 | * generally not recommended, but i wanted to keep everything tightly packed. 78 | * - Added a static CreateOrGet method to the JSONNull class. Since this class is immutable it could 79 | * be reused without major problems. If you have a lot null fields in your data it will help reduce 80 | * the memory / garbage overhead. I also added a static setting (reuseSameInstance) to JSONNull 81 | * (default is true) which will change the behaviour of "CreateOrGet". If you set this to false 82 | * CreateOrGet will not reuse the cached instance but instead create a new JSONNull instance each time. 83 | * I made the JSONNull constructor private so if you need to create an instance manually use 84 | * JSONNull.CreateOrGet() 85 | * 86 | * 87 | * The MIT License (MIT) 88 | * 89 | * Copyright (c) 2012-2017 Markus Göbel (Bunny83) 90 | * 91 | * Permission is hereby granted, free of charge, to any person obtaining a copy 92 | * of this software and associated documentation files (the "Software"), to deal 93 | * in the Software without restriction, including without limitation the rights 94 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 95 | * copies of the Software, and to permit persons to whom the Software is 96 | * furnished to do so, subject to the following conditions: 97 | * 98 | * The above copyright notice and this permission notice shall be included in all 99 | * copies or substantial portions of the Software. 100 | * 101 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 102 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 103 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 104 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 105 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 106 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 107 | * SOFTWARE. 108 | * 109 | * * * * */ 110 | using System; 111 | using System.Collections; 112 | using System.Collections.Generic; 113 | using System.Linq; 114 | using System.Text; 115 | 116 | namespace SimpleJSON 117 | { 118 | public enum JSONNodeType 119 | { 120 | Array = 1, 121 | Object = 2, 122 | String = 3, 123 | Number = 4, 124 | NullValue = 5, 125 | Boolean = 6, 126 | None = 7, 127 | Custom = 0xFF, 128 | } 129 | public enum JSONTextMode 130 | { 131 | Compact, 132 | Indent 133 | } 134 | 135 | public abstract partial class JSONNode 136 | { 137 | #region Enumerators 138 | public struct Enumerator 139 | { 140 | private enum Type { None, Array, Object } 141 | private Type type; 142 | private Dictionary.Enumerator m_Object; 143 | private List.Enumerator m_Array; 144 | public bool IsValid { get { return type != Type.None; } } 145 | public Enumerator(List.Enumerator aArrayEnum) 146 | { 147 | type = Type.Array; 148 | m_Object = default(Dictionary.Enumerator); 149 | m_Array = aArrayEnum; 150 | } 151 | public Enumerator(Dictionary.Enumerator aDictEnum) 152 | { 153 | type = Type.Object; 154 | m_Object = aDictEnum; 155 | m_Array = default(List.Enumerator); 156 | } 157 | public KeyValuePair Current 158 | { 159 | get 160 | { 161 | if (type == Type.Array) 162 | return new KeyValuePair(string.Empty, m_Array.Current); 163 | else if (type == Type.Object) 164 | return m_Object.Current; 165 | return new KeyValuePair(string.Empty, null); 166 | } 167 | } 168 | public bool MoveNext() 169 | { 170 | if (type == Type.Array) 171 | return m_Array.MoveNext(); 172 | else if (type == Type.Object) 173 | return m_Object.MoveNext(); 174 | return false; 175 | } 176 | } 177 | public struct ValueEnumerator 178 | { 179 | private Enumerator m_Enumerator; 180 | public ValueEnumerator(List.Enumerator aArrayEnum) : this(new Enumerator(aArrayEnum)) { } 181 | public ValueEnumerator(Dictionary.Enumerator aDictEnum) : this(new Enumerator(aDictEnum)) { } 182 | public ValueEnumerator(Enumerator aEnumerator) { m_Enumerator = aEnumerator; } 183 | public JSONNode Current { get { return m_Enumerator.Current.Value; } } 184 | public bool MoveNext() { return m_Enumerator.MoveNext(); } 185 | public ValueEnumerator GetEnumerator() { return this; } 186 | } 187 | public struct KeyEnumerator 188 | { 189 | private Enumerator m_Enumerator; 190 | public KeyEnumerator(List.Enumerator aArrayEnum) : this(new Enumerator(aArrayEnum)) { } 191 | public KeyEnumerator(Dictionary.Enumerator aDictEnum) : this(new Enumerator(aDictEnum)) { } 192 | public KeyEnumerator(Enumerator aEnumerator) { m_Enumerator = aEnumerator; } 193 | public JSONNode Current { get { return m_Enumerator.Current.Key; } } 194 | public bool MoveNext() { return m_Enumerator.MoveNext(); } 195 | public KeyEnumerator GetEnumerator() { return this; } 196 | } 197 | 198 | public class LinqEnumerator : IEnumerator>, IEnumerable> 199 | { 200 | private JSONNode m_Node; 201 | private Enumerator m_Enumerator; 202 | internal LinqEnumerator(JSONNode aNode) 203 | { 204 | m_Node = aNode; 205 | if (m_Node != null) 206 | m_Enumerator = m_Node.GetEnumerator(); 207 | } 208 | public KeyValuePair Current { get { return m_Enumerator.Current; } } 209 | object IEnumerator.Current { get { return m_Enumerator.Current; } } 210 | public bool MoveNext() { return m_Enumerator.MoveNext(); } 211 | 212 | public void Dispose() 213 | { 214 | m_Node = null; 215 | m_Enumerator = new Enumerator(); 216 | } 217 | 218 | public IEnumerator> GetEnumerator() 219 | { 220 | return new LinqEnumerator(m_Node); 221 | } 222 | 223 | public void Reset() 224 | { 225 | if (m_Node != null) 226 | m_Enumerator = m_Node.GetEnumerator(); 227 | } 228 | 229 | IEnumerator IEnumerable.GetEnumerator() 230 | { 231 | return new LinqEnumerator(m_Node); 232 | } 233 | } 234 | 235 | #endregion Enumerators 236 | 237 | #region common interface 238 | 239 | public static bool forceASCII = false; // Use Unicode by default 240 | 241 | public abstract JSONNodeType Tag { get; } 242 | 243 | public virtual JSONNode this[int aIndex] { get { return null; } set { } } 244 | 245 | public virtual JSONNode this[string aKey] { get { return null; } set { } } 246 | 247 | public virtual string Value { get { return ""; } set { } } 248 | 249 | public virtual int Count { get { return 0; } } 250 | 251 | public virtual bool IsNumber { get { return false; } } 252 | public virtual bool IsString { get { return false; } } 253 | public virtual bool IsBoolean { get { return false; } } 254 | public virtual bool IsNull { get { return false; } } 255 | public virtual bool IsArray { get { return false; } } 256 | public virtual bool IsObject { get { return false; } } 257 | 258 | public virtual bool Inline { get { return false; } set { } } 259 | 260 | public virtual void Add(string aKey, JSONNode aItem) 261 | { 262 | } 263 | public virtual void Add(JSONNode aItem) 264 | { 265 | Add("", aItem); 266 | } 267 | 268 | public virtual JSONNode Remove(string aKey) 269 | { 270 | return null; 271 | } 272 | 273 | public virtual JSONNode Remove(int aIndex) 274 | { 275 | return null; 276 | } 277 | 278 | public virtual JSONNode Remove(JSONNode aNode) 279 | { 280 | return aNode; 281 | } 282 | 283 | public virtual IEnumerable Children 284 | { 285 | get 286 | { 287 | yield break; 288 | } 289 | } 290 | 291 | public IEnumerable DeepChildren 292 | { 293 | get 294 | { 295 | foreach (var C in Children) 296 | foreach (var D in C.DeepChildren) 297 | yield return D; 298 | } 299 | } 300 | 301 | public override string ToString() 302 | { 303 | StringBuilder sb = new StringBuilder(); 304 | WriteToStringBuilder(sb, 0, 0, JSONTextMode.Compact); 305 | return sb.ToString(); 306 | } 307 | 308 | public virtual string ToString(int aIndent) 309 | { 310 | StringBuilder sb = new StringBuilder(); 311 | WriteToStringBuilder(sb, 0, aIndent, JSONTextMode.Indent); 312 | return sb.ToString(); 313 | } 314 | internal abstract void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode); 315 | 316 | public abstract Enumerator GetEnumerator(); 317 | public IEnumerable> Linq { get { return new LinqEnumerator(this); } } 318 | public KeyEnumerator Keys { get { return new KeyEnumerator(GetEnumerator()); } } 319 | public ValueEnumerator Values { get { return new ValueEnumerator(GetEnumerator()); } } 320 | 321 | #endregion common interface 322 | 323 | #region typecasting properties 324 | 325 | 326 | public virtual double AsDouble 327 | { 328 | get 329 | { 330 | double v = 0.0; 331 | if (double.TryParse(Value, out v)) 332 | return v; 333 | return 0.0; 334 | } 335 | set 336 | { 337 | Value = value.ToString(); 338 | } 339 | } 340 | 341 | public virtual int AsInt 342 | { 343 | get { return (int)AsDouble; } 344 | set { AsDouble = value; } 345 | } 346 | 347 | public virtual float AsFloat 348 | { 349 | get { return (float)AsDouble; } 350 | set { AsDouble = value; } 351 | } 352 | 353 | public virtual bool AsBool 354 | { 355 | get 356 | { 357 | bool v = false; 358 | if (bool.TryParse(Value, out v)) 359 | return v; 360 | return !string.IsNullOrEmpty(Value); 361 | } 362 | set 363 | { 364 | Value = (value) ? "true" : "false"; 365 | } 366 | } 367 | 368 | public virtual JSONArray AsArray 369 | { 370 | get 371 | { 372 | return this as JSONArray; 373 | } 374 | } 375 | 376 | public virtual JSONObject AsObject 377 | { 378 | get 379 | { 380 | return this as JSONObject; 381 | } 382 | } 383 | 384 | 385 | #endregion typecasting properties 386 | 387 | #region operators 388 | 389 | public static implicit operator JSONNode(string s) 390 | { 391 | return new JSONString(s); 392 | } 393 | public static implicit operator string(JSONNode d) 394 | { 395 | return (d == null) ? null : d.Value; 396 | } 397 | 398 | public static implicit operator JSONNode(double n) 399 | { 400 | return new JSONNumber(n); 401 | } 402 | public static implicit operator double(JSONNode d) 403 | { 404 | return (d == null) ? 0 : d.AsDouble; 405 | } 406 | 407 | public static implicit operator JSONNode(float n) 408 | { 409 | return new JSONNumber(n); 410 | } 411 | public static implicit operator float(JSONNode d) 412 | { 413 | return (d == null) ? 0 : d.AsFloat; 414 | } 415 | 416 | public static implicit operator JSONNode(int n) 417 | { 418 | return new JSONNumber(n); 419 | } 420 | public static implicit operator int(JSONNode d) 421 | { 422 | return (d == null) ? 0 : d.AsInt; 423 | } 424 | 425 | public static implicit operator JSONNode(bool b) 426 | { 427 | return new JSONBool(b); 428 | } 429 | public static implicit operator bool(JSONNode d) 430 | { 431 | return (d == null) ? false : d.AsBool; 432 | } 433 | 434 | public static implicit operator JSONNode(KeyValuePair aKeyValue) 435 | { 436 | return aKeyValue.Value; 437 | } 438 | 439 | public static bool operator ==(JSONNode a, object b) 440 | { 441 | if (ReferenceEquals(a, b)) 442 | return true; 443 | bool aIsNull = a is JSONNull || ReferenceEquals(a, null) || a is JSONLazyCreator; 444 | bool bIsNull = b is JSONNull || ReferenceEquals(b, null) || b is JSONLazyCreator; 445 | if (aIsNull && bIsNull) 446 | return true; 447 | return !aIsNull && a.Equals(b); 448 | } 449 | 450 | public static bool operator !=(JSONNode a, object b) 451 | { 452 | return !(a == b); 453 | } 454 | 455 | public override bool Equals(object obj) 456 | { 457 | return ReferenceEquals(this, obj); 458 | } 459 | 460 | public override int GetHashCode() 461 | { 462 | return base.GetHashCode(); 463 | } 464 | 465 | #endregion operators 466 | 467 | [ThreadStatic] 468 | private static StringBuilder m_EscapeBuilder; 469 | internal static StringBuilder EscapeBuilder 470 | { 471 | get 472 | { 473 | if (m_EscapeBuilder == null) 474 | m_EscapeBuilder = new StringBuilder(); 475 | return m_EscapeBuilder; 476 | } 477 | } 478 | internal static string Escape(string aText) 479 | { 480 | var sb = EscapeBuilder; 481 | sb.Length = 0; 482 | if (sb.Capacity < aText.Length + aText.Length / 10) 483 | sb.Capacity = aText.Length + aText.Length / 10; 484 | foreach (char c in aText) 485 | { 486 | switch (c) 487 | { 488 | case '\\': 489 | sb.Append("\\\\"); 490 | break; 491 | case '\"': 492 | sb.Append("\\\""); 493 | break; 494 | case '\n': 495 | sb.Append("\\n"); 496 | break; 497 | case '\r': 498 | sb.Append("\\r"); 499 | break; 500 | case '\t': 501 | sb.Append("\\t"); 502 | break; 503 | case '\b': 504 | sb.Append("\\b"); 505 | break; 506 | case '\f': 507 | sb.Append("\\f"); 508 | break; 509 | default: 510 | if (c < ' ' || (forceASCII && c > 127)) 511 | { 512 | ushort val = c; 513 | sb.Append("\\u").Append(val.ToString("X4")); 514 | } 515 | else 516 | sb.Append(c); 517 | break; 518 | } 519 | } 520 | string result = sb.ToString(); 521 | sb.Length = 0; 522 | return result; 523 | } 524 | 525 | static void ParseElement(JSONNode ctx, string token, string tokenName, bool quoted) 526 | { 527 | if (quoted) 528 | { 529 | ctx.Add(tokenName, token); 530 | return; 531 | } 532 | string tmp = token.ToLower(); 533 | if (tmp == "false" || tmp == "true") 534 | ctx.Add(tokenName, tmp == "true"); 535 | else if (tmp == "null") 536 | ctx.Add(tokenName, null); 537 | else 538 | { 539 | double val; 540 | if (double.TryParse(token, out val)) 541 | ctx.Add(tokenName, val); 542 | else 543 | ctx.Add(tokenName, token); 544 | } 545 | } 546 | 547 | public static JSONNode Parse(string aJSON) 548 | { 549 | Stack stack = new Stack(); 550 | JSONNode ctx = null; 551 | int i = 0; 552 | StringBuilder Token = new StringBuilder(); 553 | string TokenName = ""; 554 | bool QuoteMode = false; 555 | bool TokenIsQuoted = false; 556 | while (i < aJSON.Length) 557 | { 558 | switch (aJSON[i]) 559 | { 560 | case '{': 561 | if (QuoteMode) 562 | { 563 | Token.Append(aJSON[i]); 564 | break; 565 | } 566 | stack.Push(new JSONObject()); 567 | if (ctx != null) 568 | { 569 | ctx.Add(TokenName, stack.Peek()); 570 | } 571 | TokenName = ""; 572 | Token.Length = 0; 573 | ctx = stack.Peek(); 574 | break; 575 | 576 | case '[': 577 | if (QuoteMode) 578 | { 579 | Token.Append(aJSON[i]); 580 | break; 581 | } 582 | 583 | stack.Push(new JSONArray()); 584 | if (ctx != null) 585 | { 586 | ctx.Add(TokenName, stack.Peek()); 587 | } 588 | TokenName = ""; 589 | Token.Length = 0; 590 | ctx = stack.Peek(); 591 | break; 592 | 593 | case '}': 594 | case ']': 595 | if (QuoteMode) 596 | { 597 | 598 | Token.Append(aJSON[i]); 599 | break; 600 | } 601 | if (stack.Count == 0) 602 | throw new Exception("JSON Parse: Too many closing brackets"); 603 | 604 | stack.Pop(); 605 | if (Token.Length > 0 || TokenIsQuoted) 606 | { 607 | ParseElement(ctx, Token.ToString(), TokenName, TokenIsQuoted); 608 | TokenIsQuoted = false; 609 | } 610 | TokenName = ""; 611 | Token.Length = 0; 612 | if (stack.Count > 0) 613 | ctx = stack.Peek(); 614 | break; 615 | 616 | case ':': 617 | if (QuoteMode) 618 | { 619 | Token.Append(aJSON[i]); 620 | break; 621 | } 622 | TokenName = Token.ToString(); 623 | Token.Length = 0; 624 | TokenIsQuoted = false; 625 | break; 626 | 627 | case '"': 628 | QuoteMode ^= true; 629 | TokenIsQuoted |= QuoteMode; 630 | break; 631 | 632 | case ',': 633 | if (QuoteMode) 634 | { 635 | Token.Append(aJSON[i]); 636 | break; 637 | } 638 | if (Token.Length > 0 || TokenIsQuoted) 639 | { 640 | ParseElement(ctx, Token.ToString(), TokenName, TokenIsQuoted); 641 | TokenIsQuoted = false; 642 | } 643 | TokenName = ""; 644 | Token.Length = 0; 645 | TokenIsQuoted = false; 646 | break; 647 | 648 | case '\r': 649 | case '\n': 650 | break; 651 | 652 | case ' ': 653 | case '\t': 654 | if (QuoteMode) 655 | Token.Append(aJSON[i]); 656 | break; 657 | 658 | case '\\': 659 | ++i; 660 | if (QuoteMode) 661 | { 662 | char C = aJSON[i]; 663 | switch (C) 664 | { 665 | case 't': 666 | Token.Append('\t'); 667 | break; 668 | case 'r': 669 | Token.Append('\r'); 670 | break; 671 | case 'n': 672 | Token.Append('\n'); 673 | break; 674 | case 'b': 675 | Token.Append('\b'); 676 | break; 677 | case 'f': 678 | Token.Append('\f'); 679 | break; 680 | case 'u': 681 | { 682 | string s = aJSON.Substring(i + 1, 4); 683 | Token.Append((char)int.Parse( 684 | s, 685 | System.Globalization.NumberStyles.AllowHexSpecifier)); 686 | i += 4; 687 | break; 688 | } 689 | default: 690 | Token.Append(C); 691 | break; 692 | } 693 | } 694 | break; 695 | 696 | default: 697 | Token.Append(aJSON[i]); 698 | break; 699 | } 700 | ++i; 701 | } 702 | if (QuoteMode) 703 | { 704 | throw new Exception("JSON Parse: Quotation marks seems to be messed up."); 705 | } 706 | return ctx; 707 | } 708 | 709 | } 710 | // End of JSONNode 711 | 712 | public partial class JSONArray : JSONNode 713 | { 714 | private List m_List = new List(); 715 | private bool inline = false; 716 | public override bool Inline 717 | { 718 | get { return inline; } 719 | set { inline = value; } 720 | } 721 | 722 | public override JSONNodeType Tag { get { return JSONNodeType.Array; } } 723 | public override bool IsArray { get { return true; } } 724 | public override Enumerator GetEnumerator() { return new Enumerator(m_List.GetEnumerator()); } 725 | 726 | public override JSONNode this[int aIndex] 727 | { 728 | get 729 | { 730 | if (aIndex < 0 || aIndex >= m_List.Count) 731 | return new JSONLazyCreator(this); 732 | return m_List[aIndex]; 733 | } 734 | set 735 | { 736 | if (value == null) 737 | value = JSONNull.CreateOrGet(); 738 | if (aIndex < 0 || aIndex >= m_List.Count) 739 | m_List.Add(value); 740 | else 741 | m_List[aIndex] = value; 742 | } 743 | } 744 | 745 | public override JSONNode this[string aKey] 746 | { 747 | get { return new JSONLazyCreator(this); } 748 | set 749 | { 750 | if (value == null) 751 | value = JSONNull.CreateOrGet(); 752 | m_List.Add(value); 753 | } 754 | } 755 | 756 | public override int Count 757 | { 758 | get { return m_List.Count; } 759 | } 760 | 761 | public override void Add(string aKey, JSONNode aItem) 762 | { 763 | if (aItem == null) 764 | aItem = JSONNull.CreateOrGet(); 765 | m_List.Add(aItem); 766 | } 767 | 768 | public override JSONNode Remove(int aIndex) 769 | { 770 | if (aIndex < 0 || aIndex >= m_List.Count) 771 | return null; 772 | JSONNode tmp = m_List[aIndex]; 773 | m_List.RemoveAt(aIndex); 774 | return tmp; 775 | } 776 | 777 | public override JSONNode Remove(JSONNode aNode) 778 | { 779 | m_List.Remove(aNode); 780 | return aNode; 781 | } 782 | 783 | public override IEnumerable Children 784 | { 785 | get 786 | { 787 | foreach (JSONNode N in m_List) 788 | yield return N; 789 | } 790 | } 791 | 792 | 793 | internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) 794 | { 795 | aSB.Append('['); 796 | int count = m_List.Count; 797 | if (inline) 798 | aMode = JSONTextMode.Compact; 799 | for (int i = 0; i < count; i++) 800 | { 801 | if (i > 0) 802 | aSB.Append(','); 803 | if (aMode == JSONTextMode.Indent) 804 | aSB.AppendLine(); 805 | 806 | if (aMode == JSONTextMode.Indent) 807 | aSB.Append(' ', aIndent + aIndentInc); 808 | m_List[i].WriteToStringBuilder(aSB, aIndent + aIndentInc, aIndentInc, aMode); 809 | } 810 | if (aMode == JSONTextMode.Indent) 811 | aSB.AppendLine().Append(' ', aIndent); 812 | aSB.Append(']'); 813 | } 814 | } 815 | // End of JSONArray 816 | 817 | public partial class JSONObject : JSONNode 818 | { 819 | private Dictionary m_Dict = new Dictionary(); 820 | 821 | private bool inline = false; 822 | public override bool Inline 823 | { 824 | get { return inline; } 825 | set { inline = value; } 826 | } 827 | 828 | public override JSONNodeType Tag { get { return JSONNodeType.Object; } } 829 | public override bool IsObject { get { return true; } } 830 | 831 | public override Enumerator GetEnumerator() { return new Enumerator(m_Dict.GetEnumerator()); } 832 | 833 | 834 | public override JSONNode this[string aKey] 835 | { 836 | get 837 | { 838 | if (m_Dict.ContainsKey(aKey)) 839 | return m_Dict[aKey]; 840 | else 841 | return new JSONLazyCreator(this, aKey); 842 | } 843 | set 844 | { 845 | if (value == null) 846 | value = JSONNull.CreateOrGet(); 847 | if (m_Dict.ContainsKey(aKey)) 848 | m_Dict[aKey] = value; 849 | else 850 | m_Dict.Add(aKey, value); 851 | } 852 | } 853 | 854 | public override JSONNode this[int aIndex] 855 | { 856 | get 857 | { 858 | if (aIndex < 0 || aIndex >= m_Dict.Count) 859 | return null; 860 | return m_Dict.ElementAt(aIndex).Value; 861 | } 862 | set 863 | { 864 | if (value == null) 865 | value = JSONNull.CreateOrGet(); 866 | if (aIndex < 0 || aIndex >= m_Dict.Count) 867 | return; 868 | string key = m_Dict.ElementAt(aIndex).Key; 869 | m_Dict[key] = value; 870 | } 871 | } 872 | 873 | public override int Count 874 | { 875 | get { return m_Dict.Count; } 876 | } 877 | 878 | public override void Add(string aKey, JSONNode aItem) 879 | { 880 | if (aItem == null) 881 | aItem = JSONNull.CreateOrGet(); 882 | 883 | if (!string.IsNullOrEmpty(aKey)) 884 | { 885 | if (m_Dict.ContainsKey(aKey)) 886 | m_Dict[aKey] = aItem; 887 | else 888 | m_Dict.Add(aKey, aItem); 889 | } 890 | else 891 | m_Dict.Add(Guid.NewGuid().ToString(), aItem); 892 | } 893 | 894 | public override JSONNode Remove(string aKey) 895 | { 896 | if (!m_Dict.ContainsKey(aKey)) 897 | return null; 898 | JSONNode tmp = m_Dict[aKey]; 899 | m_Dict.Remove(aKey); 900 | return tmp; 901 | } 902 | 903 | public override JSONNode Remove(int aIndex) 904 | { 905 | if (aIndex < 0 || aIndex >= m_Dict.Count) 906 | return null; 907 | var item = m_Dict.ElementAt(aIndex); 908 | m_Dict.Remove(item.Key); 909 | return item.Value; 910 | } 911 | 912 | public override JSONNode Remove(JSONNode aNode) 913 | { 914 | try 915 | { 916 | var item = m_Dict.Where(k => k.Value == aNode).First(); 917 | m_Dict.Remove(item.Key); 918 | return aNode; 919 | } 920 | catch 921 | { 922 | return null; 923 | } 924 | } 925 | 926 | public override IEnumerable Children 927 | { 928 | get 929 | { 930 | foreach (KeyValuePair N in m_Dict) 931 | yield return N.Value; 932 | } 933 | } 934 | 935 | internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) 936 | { 937 | aSB.Append('{'); 938 | bool first = true; 939 | if (inline) 940 | aMode = JSONTextMode.Compact; 941 | foreach (var k in m_Dict) 942 | { 943 | if (!first) 944 | aSB.Append(','); 945 | first = false; 946 | if (aMode == JSONTextMode.Indent) 947 | aSB.AppendLine(); 948 | if (aMode == JSONTextMode.Indent) 949 | aSB.Append(' ', aIndent + aIndentInc); 950 | aSB.Append('\"').Append(Escape(k.Key)).Append('\"'); 951 | if (aMode == JSONTextMode.Compact) 952 | aSB.Append(':'); 953 | else 954 | aSB.Append(" : "); 955 | k.Value.WriteToStringBuilder(aSB, aIndent + aIndentInc, aIndentInc, aMode); 956 | } 957 | if (aMode == JSONTextMode.Indent) 958 | aSB.AppendLine().Append(' ', aIndent); 959 | aSB.Append('}'); 960 | } 961 | 962 | } 963 | // End of JSONObject 964 | 965 | public partial class JSONString : JSONNode 966 | { 967 | private string m_Data; 968 | 969 | public override JSONNodeType Tag { get { return JSONNodeType.String; } } 970 | public override bool IsString { get { return true; } } 971 | 972 | public override Enumerator GetEnumerator() { return new Enumerator(); } 973 | 974 | 975 | public override string Value 976 | { 977 | get { return m_Data; } 978 | set 979 | { 980 | m_Data = value; 981 | } 982 | } 983 | 984 | public JSONString(string aData) 985 | { 986 | m_Data = aData; 987 | } 988 | 989 | internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) 990 | { 991 | aSB.Append('\"').Append(Escape(m_Data)).Append('\"'); 992 | } 993 | public override bool Equals(object obj) 994 | { 995 | if (base.Equals(obj)) 996 | return true; 997 | string s = obj as string; 998 | if (s != null) 999 | return m_Data == s; 1000 | JSONString s2 = obj as JSONString; 1001 | if (s2 != null) 1002 | return m_Data == s2.m_Data; 1003 | return false; 1004 | } 1005 | public override int GetHashCode() 1006 | { 1007 | return m_Data.GetHashCode(); 1008 | } 1009 | } 1010 | // End of JSONString 1011 | 1012 | public partial class JSONNumber : JSONNode 1013 | { 1014 | private double m_Data; 1015 | 1016 | public override JSONNodeType Tag { get { return JSONNodeType.Number; } } 1017 | public override bool IsNumber { get { return true; } } 1018 | public override Enumerator GetEnumerator() { return new Enumerator(); } 1019 | 1020 | public override string Value 1021 | { 1022 | get { return m_Data.ToString(); } 1023 | set 1024 | { 1025 | double v; 1026 | if (double.TryParse(value, out v)) 1027 | m_Data = v; 1028 | } 1029 | } 1030 | 1031 | public override double AsDouble 1032 | { 1033 | get { return m_Data; } 1034 | set { m_Data = value; } 1035 | } 1036 | 1037 | public JSONNumber(double aData) 1038 | { 1039 | m_Data = aData; 1040 | } 1041 | 1042 | public JSONNumber(string aData) 1043 | { 1044 | Value = aData; 1045 | } 1046 | 1047 | internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) 1048 | { 1049 | aSB.Append(m_Data); 1050 | } 1051 | private static bool IsNumeric(object value) 1052 | { 1053 | return value is int || value is uint 1054 | || value is float || value is double 1055 | || value is decimal 1056 | || value is long || value is ulong 1057 | || value is short || value is ushort 1058 | || value is sbyte || value is byte; 1059 | } 1060 | public override bool Equals(object obj) 1061 | { 1062 | if (obj == null) 1063 | return false; 1064 | if (base.Equals(obj)) 1065 | return true; 1066 | JSONNumber s2 = obj as JSONNumber; 1067 | if (s2 != null) 1068 | return m_Data == s2.m_Data; 1069 | if (IsNumeric(obj)) 1070 | return Convert.ToDouble(obj) == m_Data; 1071 | return false; 1072 | } 1073 | public override int GetHashCode() 1074 | { 1075 | return m_Data.GetHashCode(); 1076 | } 1077 | } 1078 | // End of JSONNumber 1079 | 1080 | public partial class JSONBool : JSONNode 1081 | { 1082 | private bool m_Data; 1083 | 1084 | public override JSONNodeType Tag { get { return JSONNodeType.Boolean; } } 1085 | public override bool IsBoolean { get { return true; } } 1086 | public override Enumerator GetEnumerator() { return new Enumerator(); } 1087 | 1088 | public override string Value 1089 | { 1090 | get { return m_Data.ToString(); } 1091 | set 1092 | { 1093 | bool v; 1094 | if (bool.TryParse(value, out v)) 1095 | m_Data = v; 1096 | } 1097 | } 1098 | public override bool AsBool 1099 | { 1100 | get { return m_Data; } 1101 | set { m_Data = value; } 1102 | } 1103 | 1104 | public JSONBool(bool aData) 1105 | { 1106 | m_Data = aData; 1107 | } 1108 | 1109 | public JSONBool(string aData) 1110 | { 1111 | Value = aData; 1112 | } 1113 | 1114 | internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) 1115 | { 1116 | aSB.Append((m_Data) ? "true" : "false"); 1117 | } 1118 | public override bool Equals(object obj) 1119 | { 1120 | if (obj == null) 1121 | return false; 1122 | if (obj is bool) 1123 | return m_Data == (bool)obj; 1124 | return false; 1125 | } 1126 | public override int GetHashCode() 1127 | { 1128 | return m_Data.GetHashCode(); 1129 | } 1130 | } 1131 | // End of JSONBool 1132 | 1133 | public partial class JSONNull : JSONNode 1134 | { 1135 | static JSONNull m_StaticInstance = new JSONNull(); 1136 | public static bool reuseSameInstance = true; 1137 | public static JSONNull CreateOrGet() 1138 | { 1139 | if (reuseSameInstance) 1140 | return m_StaticInstance; 1141 | return new JSONNull(); 1142 | } 1143 | private JSONNull() { } 1144 | 1145 | public override JSONNodeType Tag { get { return JSONNodeType.NullValue; } } 1146 | public override bool IsNull { get { return true; } } 1147 | public override Enumerator GetEnumerator() { return new Enumerator(); } 1148 | 1149 | public override string Value 1150 | { 1151 | get { return "null"; } 1152 | set { } 1153 | } 1154 | public override bool AsBool 1155 | { 1156 | get { return false; } 1157 | set { } 1158 | } 1159 | 1160 | public override bool Equals(object obj) 1161 | { 1162 | if (object.ReferenceEquals(this, obj)) 1163 | return true; 1164 | return (obj is JSONNull); 1165 | } 1166 | public override int GetHashCode() 1167 | { 1168 | return 0; 1169 | } 1170 | 1171 | internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) 1172 | { 1173 | aSB.Append("null"); 1174 | } 1175 | } 1176 | // End of JSONNull 1177 | 1178 | internal partial class JSONLazyCreator : JSONNode 1179 | { 1180 | private JSONNode m_Node = null; 1181 | private string m_Key = null; 1182 | public override JSONNodeType Tag { get { return JSONNodeType.None; } } 1183 | public override Enumerator GetEnumerator() { return new Enumerator(); } 1184 | 1185 | public JSONLazyCreator(JSONNode aNode) 1186 | { 1187 | m_Node = aNode; 1188 | m_Key = null; 1189 | } 1190 | 1191 | public JSONLazyCreator(JSONNode aNode, string aKey) 1192 | { 1193 | m_Node = aNode; 1194 | m_Key = aKey; 1195 | } 1196 | 1197 | private void Set(JSONNode aVal) 1198 | { 1199 | if (m_Key == null) 1200 | { 1201 | m_Node.Add(aVal); 1202 | } 1203 | else 1204 | { 1205 | m_Node.Add(m_Key, aVal); 1206 | } 1207 | m_Node = null; // Be GC friendly. 1208 | } 1209 | 1210 | public override JSONNode this[int aIndex] 1211 | { 1212 | get 1213 | { 1214 | return new JSONLazyCreator(this); 1215 | } 1216 | set 1217 | { 1218 | var tmp = new JSONArray(); 1219 | tmp.Add(value); 1220 | Set(tmp); 1221 | } 1222 | } 1223 | 1224 | public override JSONNode this[string aKey] 1225 | { 1226 | get 1227 | { 1228 | return new JSONLazyCreator(this, aKey); 1229 | } 1230 | set 1231 | { 1232 | var tmp = new JSONObject(); 1233 | tmp.Add(aKey, value); 1234 | Set(tmp); 1235 | } 1236 | } 1237 | 1238 | public override void Add(JSONNode aItem) 1239 | { 1240 | var tmp = new JSONArray(); 1241 | tmp.Add(aItem); 1242 | Set(tmp); 1243 | } 1244 | 1245 | public override void Add(string aKey, JSONNode aItem) 1246 | { 1247 | var tmp = new JSONObject(); 1248 | tmp.Add(aKey, aItem); 1249 | Set(tmp); 1250 | } 1251 | 1252 | public static bool operator ==(JSONLazyCreator a, object b) 1253 | { 1254 | if (b == null) 1255 | return true; 1256 | return System.Object.ReferenceEquals(a, b); 1257 | } 1258 | 1259 | public static bool operator !=(JSONLazyCreator a, object b) 1260 | { 1261 | return !(a == b); 1262 | } 1263 | 1264 | public override bool Equals(object obj) 1265 | { 1266 | if (obj == null) 1267 | return true; 1268 | return System.Object.ReferenceEquals(this, obj); 1269 | } 1270 | 1271 | public override int GetHashCode() 1272 | { 1273 | return 0; 1274 | } 1275 | 1276 | public override int AsInt 1277 | { 1278 | get 1279 | { 1280 | JSONNumber tmp = new JSONNumber(0); 1281 | Set(tmp); 1282 | return 0; 1283 | } 1284 | set 1285 | { 1286 | JSONNumber tmp = new JSONNumber(value); 1287 | Set(tmp); 1288 | } 1289 | } 1290 | 1291 | public override float AsFloat 1292 | { 1293 | get 1294 | { 1295 | JSONNumber tmp = new JSONNumber(0.0f); 1296 | Set(tmp); 1297 | return 0.0f; 1298 | } 1299 | set 1300 | { 1301 | JSONNumber tmp = new JSONNumber(value); 1302 | Set(tmp); 1303 | } 1304 | } 1305 | 1306 | public override double AsDouble 1307 | { 1308 | get 1309 | { 1310 | JSONNumber tmp = new JSONNumber(0.0); 1311 | Set(tmp); 1312 | return 0.0; 1313 | } 1314 | set 1315 | { 1316 | JSONNumber tmp = new JSONNumber(value); 1317 | Set(tmp); 1318 | } 1319 | } 1320 | 1321 | public override bool AsBool 1322 | { 1323 | get 1324 | { 1325 | JSONBool tmp = new JSONBool(false); 1326 | Set(tmp); 1327 | return false; 1328 | } 1329 | set 1330 | { 1331 | JSONBool tmp = new JSONBool(value); 1332 | Set(tmp); 1333 | } 1334 | } 1335 | 1336 | public override JSONArray AsArray 1337 | { 1338 | get 1339 | { 1340 | JSONArray tmp = new JSONArray(); 1341 | Set(tmp); 1342 | return tmp; 1343 | } 1344 | } 1345 | 1346 | public override JSONObject AsObject 1347 | { 1348 | get 1349 | { 1350 | JSONObject tmp = new JSONObject(); 1351 | Set(tmp); 1352 | return tmp; 1353 | } 1354 | } 1355 | internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode) 1356 | { 1357 | aSB.Append("null"); 1358 | } 1359 | } 1360 | // End of JSONLazyCreator 1361 | 1362 | public static class JSON 1363 | { 1364 | public static JSONNode Parse(string aJSON) 1365 | { 1366 | return JSONNode.Parse(aJSON); 1367 | } 1368 | } 1369 | } 1370 | } -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/SimpleJSON/SimpleJSON.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 40c2a75a6c682400da3b167ad3191971 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/SimpleJSON/SimpleJSONBinary.cs: -------------------------------------------------------------------------------- 1 | namespace GitPackageUpdater 2 | { 3 | //#define USE_SharpZipLib 4 | /* * * * * 5 | * This is an extension of the SimpleJSON framework to provide methods to 6 | * serialize a JSON object tree into a compact binary format. Optionally the 7 | * binary stream can be compressed with the SharpZipLib when using the define 8 | * "USE_SharpZipLib" 9 | * 10 | * Those methods where originally part of the framework but since it's rarely 11 | * used I've extracted this part into this seperate module file. 12 | * 13 | * You can use the define "SimpleJSON_ExcludeBinary" to selectively disable 14 | * this extension without the need to remove the file from the project. 15 | * 16 | * 17 | * The MIT License (MIT) 18 | * 19 | * Copyright (c) 2012-2017 Markus Göbel (Bunny83) 20 | * 21 | * Permission is hereby granted, free of charge, to any person obtaining a copy 22 | * of this software and associated documentation files (the "Software"), to deal 23 | * in the Software without restriction, including without limitation the rights 24 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 25 | * copies of the Software, and to permit persons to whom the Software is 26 | * furnished to do so, subject to the following conditions: 27 | * 28 | * The above copyright notice and this permission notice shall be included in all 29 | * copies or substantial portions of the Software. 30 | * 31 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 32 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 33 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 34 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 35 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 36 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 37 | * SOFTWARE. 38 | * 39 | * * * * */ 40 | using System; 41 | 42 | namespace SimpleJSON 43 | { 44 | #if !SimpleJSON_ExcludeBinary 45 | public abstract partial class JSONNode 46 | { 47 | public abstract void SerializeBinary(System.IO.BinaryWriter aWriter); 48 | 49 | public void SaveToBinaryStream(System.IO.Stream aData) 50 | { 51 | var W = new System.IO.BinaryWriter(aData); 52 | SerializeBinary(W); 53 | } 54 | 55 | #if USE_SharpZipLib 56 | public void SaveToCompressedStream(System.IO.Stream aData) 57 | { 58 | using (var gzipOut = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(aData)) 59 | { 60 | gzipOut.IsStreamOwner = false; 61 | SaveToBinaryStream(gzipOut); 62 | gzipOut.Close(); 63 | } 64 | } 65 | 66 | public void SaveToCompressedFile(string aFileName) 67 | { 68 | 69 | System.IO.Directory.CreateDirectory((new System.IO.FileInfo(aFileName)).Directory.FullName); 70 | using(var F = System.IO.File.OpenWrite(aFileName)) 71 | { 72 | SaveToCompressedStream(F); 73 | } 74 | } 75 | public string SaveToCompressedBase64() 76 | { 77 | using (var stream = new System.IO.MemoryStream()) 78 | { 79 | SaveToCompressedStream(stream); 80 | stream.Position = 0; 81 | return System.Convert.ToBase64String(stream.ToArray()); 82 | } 83 | } 84 | 85 | #else 86 | public void SaveToCompressedStream(System.IO.Stream aData) 87 | { 88 | throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); 89 | } 90 | 91 | public void SaveToCompressedFile(string aFileName) 92 | { 93 | throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); 94 | } 95 | 96 | public string SaveToCompressedBase64() 97 | { 98 | throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); 99 | } 100 | #endif 101 | 102 | public void SaveToBinaryFile(string aFileName) 103 | { 104 | System.IO.Directory.CreateDirectory((new System.IO.FileInfo(aFileName)).Directory.FullName); 105 | using (var F = System.IO.File.OpenWrite(aFileName)) 106 | { 107 | SaveToBinaryStream(F); 108 | } 109 | } 110 | 111 | public string SaveToBinaryBase64() 112 | { 113 | using (var stream = new System.IO.MemoryStream()) 114 | { 115 | SaveToBinaryStream(stream); 116 | stream.Position = 0; 117 | return System.Convert.ToBase64String(stream.ToArray()); 118 | } 119 | } 120 | 121 | public static JSONNode DeserializeBinary(System.IO.BinaryReader aReader) 122 | { 123 | JSONNodeType type = (JSONNodeType)aReader.ReadByte(); 124 | switch (type) 125 | { 126 | case JSONNodeType.Array: 127 | { 128 | int count = aReader.ReadInt32(); 129 | JSONArray tmp = new JSONArray(); 130 | for (int i = 0; i < count; i++) 131 | tmp.Add(DeserializeBinary(aReader)); 132 | return tmp; 133 | } 134 | case JSONNodeType.Object: 135 | { 136 | int count = aReader.ReadInt32(); 137 | JSONObject tmp = new JSONObject(); 138 | for (int i = 0; i < count; i++) 139 | { 140 | string key = aReader.ReadString(); 141 | var val = DeserializeBinary(aReader); 142 | tmp.Add(key, val); 143 | } 144 | return tmp; 145 | } 146 | case JSONNodeType.String: 147 | { 148 | return new JSONString(aReader.ReadString()); 149 | } 150 | case JSONNodeType.Number: 151 | { 152 | return new JSONNumber(aReader.ReadDouble()); 153 | } 154 | case JSONNodeType.Boolean: 155 | { 156 | return new JSONBool(aReader.ReadBoolean()); 157 | } 158 | case JSONNodeType.NullValue: 159 | { 160 | return JSONNull.CreateOrGet(); 161 | } 162 | default: 163 | { 164 | throw new Exception("Error deserializing JSON. Unknown tag: " + type); 165 | } 166 | } 167 | } 168 | 169 | #if USE_SharpZipLib 170 | public static JSONNode LoadFromCompressedStream(System.IO.Stream aData) 171 | { 172 | var zin = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(aData); 173 | return LoadFromStream(zin); 174 | } 175 | public static JSONNode LoadFromCompressedFile(string aFileName) 176 | { 177 | using(var F = System.IO.File.OpenRead(aFileName)) 178 | { 179 | return LoadFromCompressedStream(F); 180 | } 181 | } 182 | public static JSONNode LoadFromCompressedBase64(string aBase64) 183 | { 184 | var tmp = System.Convert.FromBase64String(aBase64); 185 | var stream = new System.IO.MemoryStream(tmp); 186 | stream.Position = 0; 187 | return LoadFromCompressedStream(stream); 188 | } 189 | #else 190 | public static JSONNode LoadFromCompressedFile(string aFileName) 191 | { 192 | throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); 193 | } 194 | 195 | public static JSONNode LoadFromCompressedStream(System.IO.Stream aData) 196 | { 197 | throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); 198 | } 199 | 200 | public static JSONNode LoadFromCompressedBase64(string aBase64) 201 | { 202 | throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); 203 | } 204 | #endif 205 | 206 | public static JSONNode LoadFromBinaryStream(System.IO.Stream aData) 207 | { 208 | using (var R = new System.IO.BinaryReader(aData)) 209 | { 210 | return DeserializeBinary(R); 211 | } 212 | } 213 | 214 | public static JSONNode LoadFromBinaryFile(string aFileName) 215 | { 216 | using (var F = System.IO.File.OpenRead(aFileName)) 217 | { 218 | return LoadFromBinaryStream(F); 219 | } 220 | } 221 | 222 | public static JSONNode LoadFromBinaryBase64(string aBase64) 223 | { 224 | var tmp = System.Convert.FromBase64String(aBase64); 225 | var stream = new System.IO.MemoryStream(tmp); 226 | stream.Position = 0; 227 | return LoadFromBinaryStream(stream); 228 | } 229 | } 230 | 231 | public partial class JSONArray : JSONNode 232 | { 233 | public override void SerializeBinary(System.IO.BinaryWriter aWriter) 234 | { 235 | aWriter.Write((byte)JSONNodeType.Array); 236 | aWriter.Write(m_List.Count); 237 | for (int i = 0; i < m_List.Count; i++) 238 | { 239 | m_List[i].SerializeBinary(aWriter); 240 | } 241 | } 242 | } 243 | 244 | public partial class JSONObject : JSONNode 245 | { 246 | public override void SerializeBinary(System.IO.BinaryWriter aWriter) 247 | { 248 | aWriter.Write((byte)JSONNodeType.Object); 249 | aWriter.Write(m_Dict.Count); 250 | foreach (string K in m_Dict.Keys) 251 | { 252 | aWriter.Write(K); 253 | m_Dict[K].SerializeBinary(aWriter); 254 | } 255 | } 256 | } 257 | 258 | public partial class JSONString : JSONNode 259 | { 260 | public override void SerializeBinary(System.IO.BinaryWriter aWriter) 261 | { 262 | aWriter.Write((byte)JSONNodeType.String); 263 | aWriter.Write(m_Data); 264 | } 265 | } 266 | 267 | public partial class JSONNumber : JSONNode 268 | { 269 | public override void SerializeBinary(System.IO.BinaryWriter aWriter) 270 | { 271 | aWriter.Write((byte)JSONNodeType.Number); 272 | aWriter.Write(m_Data); 273 | } 274 | } 275 | 276 | public partial class JSONBool : JSONNode 277 | { 278 | public override void SerializeBinary(System.IO.BinaryWriter aWriter) 279 | { 280 | aWriter.Write((byte)JSONNodeType.Boolean); 281 | aWriter.Write(m_Data); 282 | } 283 | } 284 | public partial class JSONNull : JSONNode 285 | { 286 | public override void SerializeBinary(System.IO.BinaryWriter aWriter) 287 | { 288 | aWriter.Write((byte)JSONNodeType.NullValue); 289 | } 290 | } 291 | internal partial class JSONLazyCreator : JSONNode 292 | { 293 | public override void SerializeBinary(System.IO.BinaryWriter aWriter) 294 | { 295 | 296 | } 297 | } 298 | #endif 299 | } 300 | } -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/SimpleJSON/SimpleJSONBinary.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c0fd26be1da3a4df5b714c314b66b5aa 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/SimpleJSON/SimpleJSONUnity.cs: -------------------------------------------------------------------------------- 1 | namespace GitPackageUpdater 2 | { 3 | #region License and information 4 | /* * * * * 5 | * 6 | * Unity extension for the SimpleJSON framework. It does only work together with 7 | * the SimpleJSON.cs 8 | * It provides several helpers and conversion operators to serialize/deserialize 9 | * common Unity types such as Vector2/3/4, Rect, RectOffset, Quaternion and 10 | * Matrix4x4 as JSONObject or JSONArray. 11 | * This extension will add 3 static settings to the JSONNode class: 12 | * ( VectorContainerType, QuaternionContainerType, RectContainerType ) which 13 | * control what node type should be used for serializing the given type. So a 14 | * Vector3 as array would look like [12,32,24] and {"x":12, "y":32, "z":24} as 15 | * object. 16 | * 17 | * 18 | * The MIT License (MIT) 19 | * 20 | * Copyright (c) 2012-2017 Markus Göbel (Bunny83) 21 | * 22 | * Permission is hereby granted, free of charge, to any person obtaining a copy 23 | * of this software and associated documentation files (the "Software"), to deal 24 | * in the Software without restriction, including without limitation the rights 25 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 26 | * copies of the Software, and to permit persons to whom the Software is 27 | * furnished to do so, subject to the following conditions: 28 | * 29 | * The above copyright notice and this permission notice shall be included in all 30 | * copies or substantial portions of the Software. 31 | * 32 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 33 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 34 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 35 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 36 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 37 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 38 | * SOFTWARE. 39 | * 40 | * * * * */ 41 | 42 | #endregion License and information 43 | 44 | using UnityEngine; 45 | 46 | namespace SimpleJSON 47 | { 48 | public enum JSONContainerType { Array, Object } 49 | public partial class JSONNode 50 | { 51 | public static JSONContainerType VectorContainerType = JSONContainerType.Array; 52 | public static JSONContainerType QuaternionContainerType = JSONContainerType.Array; 53 | public static JSONContainerType RectContainerType = JSONContainerType.Array; 54 | private static JSONNode GetContainer(JSONContainerType aType) 55 | { 56 | if (aType == JSONContainerType.Array) 57 | return new JSONArray(); 58 | return new JSONObject(); 59 | } 60 | 61 | #region implicit conversion operators 62 | public static implicit operator JSONNode(Vector2 aVec) 63 | { 64 | JSONNode n = GetContainer(VectorContainerType); 65 | n.WriteVector2(aVec); 66 | return n; 67 | } 68 | public static implicit operator JSONNode(Vector3 aVec) 69 | { 70 | JSONNode n = GetContainer(VectorContainerType); 71 | n.WriteVector3(aVec); 72 | return n; 73 | } 74 | public static implicit operator JSONNode(Vector4 aVec) 75 | { 76 | JSONNode n = GetContainer(VectorContainerType); 77 | n.WriteVector4(aVec); 78 | return n; 79 | } 80 | public static implicit operator JSONNode(Quaternion aRot) 81 | { 82 | JSONNode n = GetContainer(QuaternionContainerType); 83 | n.WriteQuaternion(aRot); 84 | return n; 85 | } 86 | public static implicit operator JSONNode(Rect aRect) 87 | { 88 | JSONNode n = GetContainer(RectContainerType); 89 | n.WriteRect(aRect); 90 | return n; 91 | } 92 | public static implicit operator JSONNode(RectOffset aRect) 93 | { 94 | JSONNode n = GetContainer(RectContainerType); 95 | n.WriteRectOffset(aRect); 96 | return n; 97 | } 98 | 99 | public static implicit operator Vector2(JSONNode aNode) 100 | { 101 | return aNode.ReadVector2(); 102 | } 103 | public static implicit operator Vector3(JSONNode aNode) 104 | { 105 | return aNode.ReadVector3(); 106 | } 107 | public static implicit operator Vector4(JSONNode aNode) 108 | { 109 | return aNode.ReadVector4(); 110 | } 111 | public static implicit operator Quaternion(JSONNode aNode) 112 | { 113 | return aNode.ReadQuaternion(); 114 | } 115 | public static implicit operator Rect(JSONNode aNode) 116 | { 117 | return aNode.ReadRect(); 118 | } 119 | public static implicit operator RectOffset(JSONNode aNode) 120 | { 121 | return aNode.ReadRectOffset(); 122 | } 123 | #endregion implicit conversion operators 124 | 125 | #region Vector2 126 | public Vector2 ReadVector2(Vector2 aDefault) 127 | { 128 | if (IsObject) 129 | return new Vector2(this["x"].AsFloat, this["y"].AsFloat); 130 | if (IsArray) 131 | return new Vector2(this[0].AsFloat, this[1].AsFloat); 132 | return aDefault; 133 | } 134 | public Vector2 ReadVector2(string aXName, string aYName) 135 | { 136 | if (IsObject) 137 | { 138 | return new Vector2(this[aXName].AsFloat, this[aYName].AsFloat); 139 | } 140 | return Vector2.zero; 141 | } 142 | 143 | public Vector2 ReadVector2() 144 | { 145 | return ReadVector2(Vector2.zero); 146 | } 147 | public JSONNode WriteVector2(Vector2 aVec, string aXName = "x", string aYName = "y") 148 | { 149 | if (IsObject) 150 | { 151 | Inline = true; 152 | this[aXName].AsFloat = aVec.x; 153 | this[aYName].AsFloat = aVec.y; 154 | } 155 | else if (IsArray) 156 | { 157 | Inline = true; 158 | this[0].AsFloat = aVec.x; 159 | this[1].AsFloat = aVec.y; 160 | } 161 | return this; 162 | } 163 | #endregion Vector2 164 | 165 | #region Vector3 166 | public Vector3 ReadVector3(Vector3 aDefault) 167 | { 168 | if (IsObject) 169 | return new Vector3(this["x"].AsFloat, this["y"].AsFloat, this["z"].AsFloat); 170 | if (IsArray) 171 | return new Vector3(this[0].AsFloat, this[1].AsFloat, this[2].AsFloat); 172 | return aDefault; 173 | } 174 | public Vector3 ReadVector3(string aXName, string aYName, string aZName) 175 | { 176 | if (IsObject) 177 | return new Vector3(this[aXName].AsFloat, this[aYName].AsFloat, this[aZName].AsFloat); 178 | return Vector3.zero; 179 | } 180 | public Vector3 ReadVector3() 181 | { 182 | return ReadVector3(Vector3.zero); 183 | } 184 | public JSONNode WriteVector3(Vector3 aVec, string aXName = "x", string aYName = "y", string aZName = "z") 185 | { 186 | if (IsObject) 187 | { 188 | Inline = true; 189 | this[aXName].AsFloat = aVec.x; 190 | this[aYName].AsFloat = aVec.y; 191 | this[aZName].AsFloat = aVec.z; 192 | } 193 | else if (IsArray) 194 | { 195 | Inline = true; 196 | this[0].AsFloat = aVec.x; 197 | this[1].AsFloat = aVec.y; 198 | this[2].AsFloat = aVec.z; 199 | } 200 | return this; 201 | } 202 | #endregion Vector3 203 | 204 | #region Vector4 205 | public Vector4 ReadVector4(Vector4 aDefault) 206 | { 207 | if (IsObject) 208 | return new Vector4(this["x"].AsFloat, this["y"].AsFloat, this["z"].AsFloat, this["w"].AsFloat); 209 | if (IsArray) 210 | return new Vector4(this[0].AsFloat, this[1].AsFloat, this[2].AsFloat, this[3].AsFloat); 211 | return aDefault; 212 | } 213 | public Vector4 ReadVector4() 214 | { 215 | return ReadVector4(Vector4.zero); 216 | } 217 | public JSONNode WriteVector4(Vector4 aVec) 218 | { 219 | if (IsObject) 220 | { 221 | Inline = true; 222 | this["x"].AsFloat = aVec.x; 223 | this["y"].AsFloat = aVec.y; 224 | this["z"].AsFloat = aVec.z; 225 | this["w"].AsFloat = aVec.w; 226 | } 227 | else if (IsArray) 228 | { 229 | Inline = true; 230 | this[0].AsFloat = aVec.x; 231 | this[1].AsFloat = aVec.y; 232 | this[2].AsFloat = aVec.z; 233 | this[3].AsFloat = aVec.w; 234 | } 235 | return this; 236 | } 237 | #endregion Vector4 238 | 239 | #region Quaternion 240 | public Quaternion ReadQuaternion(Quaternion aDefault) 241 | { 242 | if (IsObject) 243 | return new Quaternion(this["x"].AsFloat, this["y"].AsFloat, this["z"].AsFloat, this["w"].AsFloat); 244 | if (IsArray) 245 | return new Quaternion(this[0].AsFloat, this[1].AsFloat, this[2].AsFloat, this[3].AsFloat); 246 | return aDefault; 247 | } 248 | public Quaternion ReadQuaternion() 249 | { 250 | return ReadQuaternion(Quaternion.identity); 251 | } 252 | public JSONNode WriteQuaternion(Quaternion aRot) 253 | { 254 | if (IsObject) 255 | { 256 | Inline = true; 257 | this["x"].AsFloat = aRot.x; 258 | this["y"].AsFloat = aRot.y; 259 | this["z"].AsFloat = aRot.z; 260 | this["w"].AsFloat = aRot.w; 261 | } 262 | else if (IsArray) 263 | { 264 | Inline = true; 265 | this[0].AsFloat = aRot.x; 266 | this[1].AsFloat = aRot.y; 267 | this[2].AsFloat = aRot.z; 268 | this[3].AsFloat = aRot.w; 269 | } 270 | return this; 271 | } 272 | #endregion Quaternion 273 | 274 | #region Rect 275 | public Rect ReadRect(Rect aDefault) 276 | { 277 | if (IsObject) 278 | return new Rect(this["x"].AsFloat, this["y"].AsFloat, this["width"].AsFloat, this["height"].AsFloat); 279 | if (IsArray) 280 | return new Rect(this[0].AsFloat, this[1].AsFloat, this[2].AsFloat, this[3].AsFloat); 281 | return aDefault; 282 | } 283 | public Rect ReadRect() 284 | { 285 | return ReadRect(new Rect()); 286 | } 287 | public JSONNode WriteRect(Rect aRect) 288 | { 289 | if (IsObject) 290 | { 291 | Inline = true; 292 | this["x"].AsFloat = aRect.x; 293 | this["y"].AsFloat = aRect.y; 294 | this["width"].AsFloat = aRect.width; 295 | this["height"].AsFloat = aRect.height; 296 | } 297 | else if (IsArray) 298 | { 299 | Inline = true; 300 | this[0].AsFloat = aRect.x; 301 | this[1].AsFloat = aRect.y; 302 | this[2].AsFloat = aRect.width; 303 | this[3].AsFloat = aRect.height; 304 | } 305 | return this; 306 | } 307 | #endregion Rect 308 | 309 | #region RectOffset 310 | public RectOffset ReadRectOffset(RectOffset aDefault) 311 | { 312 | if (this is JSONObject) 313 | return new RectOffset(this["left"].AsInt, this["right"].AsInt, this["top"].AsInt, this["bottom"].AsInt); 314 | if (this is JSONArray) 315 | return new RectOffset(this[0].AsInt, this[1].AsInt, this[2].AsInt, this[3].AsInt); 316 | return aDefault; 317 | } 318 | public RectOffset ReadRectOffset() 319 | { 320 | return ReadRectOffset(new RectOffset()); 321 | } 322 | public JSONNode WriteRectOffset(RectOffset aRect) 323 | { 324 | if (IsObject) 325 | { 326 | Inline = true; 327 | this["left"].AsInt = aRect.left; 328 | this["right"].AsInt = aRect.right; 329 | this["top"].AsInt = aRect.top; 330 | this["bottom"].AsInt = aRect.bottom; 331 | } 332 | else if (IsArray) 333 | { 334 | Inline = true; 335 | this[0].AsInt = aRect.left; 336 | this[1].AsInt = aRect.right; 337 | this[2].AsInt = aRect.top; 338 | this[3].AsInt = aRect.bottom; 339 | } 340 | return this; 341 | } 342 | #endregion RectOffset 343 | 344 | #region Matrix4x4 345 | public Matrix4x4 ReadMatrix() 346 | { 347 | Matrix4x4 result = Matrix4x4.identity; 348 | if (IsArray) 349 | { 350 | for (int i = 0; i < 16; i++) 351 | { 352 | result[i] = this[i].AsFloat; 353 | } 354 | } 355 | return result; 356 | } 357 | public JSONNode WriteMatrix(Matrix4x4 aMatrix) 358 | { 359 | if (IsArray) 360 | { 361 | Inline = true; 362 | for (int i = 0; i < 16; i++) 363 | { 364 | this[i].AsFloat = aMatrix[i]; 365 | } 366 | } 367 | return this; 368 | } 369 | #endregion Matrix4x4 370 | } 371 | } 372 | } -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/SimpleJSON/SimpleJSONUnity.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 95e6f3b23d4f141ebb206a5bb01aa38a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/UnityGitPackageUpdater.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "UnityGitPackageUpdater.Editor", 3 | "references": [], 4 | "includePlatforms": [ 5 | "Editor" 6 | ], 7 | "excludePlatforms": [], 8 | "allowUnsafeCode": false, 9 | "overrideReferences": false, 10 | "precompiledReferences": [], 11 | "autoReferenced": true, 12 | "defineConstraints": [], 13 | "versionDefines": [], 14 | "noEngineReferences": false 15 | } -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/UnityGitPackageUpdater.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a57f99fdf1faf724ca9516997abc6861 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/UnityRefresher.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a9ebe7028b56b4173a1221c417924f0f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/UnityRefresher/UnityRefresher.cs: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Guney Ozsan 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | using System; 16 | using UnityEditor; 17 | 18 | public static class UnityRefresher 19 | { 20 | /// 21 | /// Imitates 'Ctrl/Cmd+R' by forcing a refresh-and-recompile by updating 22 | /// `Player Settings/Other Settings/Scripting Define Symbols` with a dummy define. However, 23 | /// unlike 'Ctrl/Cmd+R' it does not force Package Manager to resolve packages. See discussion on 24 | /// http://answers.unity.com/answers/1210416/view.html. 25 | /// 26 | public static void RefreshExceptPackages() 27 | { 28 | BuildTargetGroup selectedBuildTargetGroup = 29 | EditorUserBuildSettings.selectedBuildTargetGroup; 30 | string updatedDefines = GetUpdatedDefines(selectedBuildTargetGroup); 31 | PlayerSettings.SetScriptingDefineSymbolsForGroup(selectedBuildTargetGroup, 32 | updatedDefines); 33 | 34 | string GetUpdatedDefines(BuildTargetGroup buildTargetGroup) 35 | { 36 | const string refreshDefine = "TEMP_UNITY_REFRESH_ENFORCER"; 37 | string defines = 38 | PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); 39 | return defines.Contains(refreshDefine) 40 | ? GetDefinesWithRefreshDefineRemoved() 41 | : GetDefinesWithRefreshDefineAppended(); 42 | 43 | string GetDefinesWithRefreshDefineRemoved() 44 | { 45 | int refreshDefineIndex = 46 | defines.IndexOf(refreshDefine, StringComparison.Ordinal); 47 | int carriageIndex = refreshDefineIndex; 48 | bool endsWithSemicolon = false; 49 | 50 | while (true) 51 | { 52 | carriageIndex++; 53 | 54 | if (carriageIndex == defines.Length) 55 | { 56 | break; 57 | } 58 | 59 | if (defines[carriageIndex] == ';') 60 | { 61 | endsWithSemicolon = true; 62 | break; 63 | } 64 | } 65 | 66 | int refreshDefineLength = carriageIndex - refreshDefineIndex + 67 | (endsWithSemicolon ? 1 : 0); 68 | return defines.Remove(refreshDefineIndex, refreshDefineLength); 69 | } 70 | 71 | string GetDefinesWithRefreshDefineAppended() 72 | { 73 | return defines.Length == 0 74 | ? refreshDefine 75 | : defines + ";" + refreshDefine; 76 | } 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/Editor/UnityRefresher/UnityRefresher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5c97f390805af2946be2532b747ed088 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.quantumcalzone.unitygitpackageupdater", 3 | "displayName": "UnityGitPackageUpdater", 4 | "description": "Easily update Unity packages hosted via git", 5 | "version": "1.0.1", 6 | "unity": "2018.1", 7 | "license": "MIT", 8 | "repository": { 9 | "type": "git", 10 | "url": "git+https://github.com/QuantumCalzone/UnityGitPackageUpdater.git" 11 | }, 12 | "author": { 13 | "name": "QuantumCalzone", 14 | "email": "QuantumCalzone@gmail.com", 15 | "url": "https://github.com/QuantumCalzone" 16 | }, 17 | "type": "tool", 18 | "keywords": [ 19 | "unity", 20 | "layout", 21 | "elementExtended", 22 | "extended", 23 | "quantum", 24 | "calzone" 25 | ], 26 | "category": "QuantumCalzone" 27 | } -------------------------------------------------------------------------------- /Packages/UnityGitPackageUpdater/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d76848b9357b3514f9fe8acee6d64607 3 | PackageManifestImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.quantumcalzone.unityutilitiesandextensions": "https://github.com/QuantumCalzone/UnityUtilitiesAndExtensions.git#upm", 4 | "com.unity.ide.visualstudio": "2.0.14", 5 | "com.unity.ide.vscode": "1.2.5", 6 | "com.unity.toolchain.macos-x86_64-linux-x86_64": "0.1.22-preview", 7 | "com.unity.modules.ai": "1.0.0", 8 | "com.unity.modules.androidjni": "1.0.0", 9 | "com.unity.modules.animation": "1.0.0", 10 | "com.unity.modules.assetbundle": "1.0.0", 11 | "com.unity.modules.audio": "1.0.0", 12 | "com.unity.modules.cloth": "1.0.0", 13 | "com.unity.modules.director": "1.0.0", 14 | "com.unity.modules.imageconversion": "1.0.0", 15 | "com.unity.modules.imgui": "1.0.0", 16 | "com.unity.modules.jsonserialize": "1.0.0", 17 | "com.unity.modules.particlesystem": "1.0.0", 18 | "com.unity.modules.physics": "1.0.0", 19 | "com.unity.modules.physics2d": "1.0.0", 20 | "com.unity.modules.screencapture": "1.0.0", 21 | "com.unity.modules.terrain": "1.0.0", 22 | "com.unity.modules.terrainphysics": "1.0.0", 23 | "com.unity.modules.tilemap": "1.0.0", 24 | "com.unity.modules.ui": "1.0.0", 25 | "com.unity.modules.uielements": "1.0.0", 26 | "com.unity.modules.umbra": "1.0.0", 27 | "com.unity.modules.unityanalytics": "1.0.0", 28 | "com.unity.modules.unitywebrequest": "1.0.0", 29 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 30 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 31 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 32 | "com.unity.modules.unitywebrequestwww": "1.0.0", 33 | "com.unity.modules.vehicles": "1.0.0", 34 | "com.unity.modules.video": "1.0.0", 35 | "com.unity.modules.vr": "1.0.0", 36 | "com.unity.modules.wind": "1.0.0", 37 | "com.unity.modules.xr": "1.0.0" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.quantumcalzone.unitygitpackageupdater": { 4 | "version": "file:UnityGitPackageUpdater", 5 | "depth": 0, 6 | "source": "embedded", 7 | "dependencies": {} 8 | }, 9 | "com.quantumcalzone.unityutilitiesandextensions": { 10 | "version": "https://github.com/QuantumCalzone/UnityUtilitiesAndExtensions.git#upm", 11 | "depth": 0, 12 | "source": "git", 13 | "dependencies": {}, 14 | "hash": "b56180571ed6554c409e60948224b603214000aa" 15 | }, 16 | "com.unity.ext.nunit": { 17 | "version": "1.0.6", 18 | "depth": 2, 19 | "source": "registry", 20 | "dependencies": {}, 21 | "url": "https://packages.unity.com" 22 | }, 23 | "com.unity.ide.visualstudio": { 24 | "version": "2.0.14", 25 | "depth": 0, 26 | "source": "registry", 27 | "dependencies": { 28 | "com.unity.test-framework": "1.1.9" 29 | }, 30 | "url": "https://packages.unity.com" 31 | }, 32 | "com.unity.ide.vscode": { 33 | "version": "1.2.5", 34 | "depth": 0, 35 | "source": "registry", 36 | "dependencies": {}, 37 | "url": "https://packages.unity.com" 38 | }, 39 | "com.unity.sysroot": { 40 | "version": "0.1.19-preview", 41 | "depth": 1, 42 | "source": "registry", 43 | "dependencies": {}, 44 | "url": "https://packages.unity.com" 45 | }, 46 | "com.unity.sysroot.linux-x86_64": { 47 | "version": "0.1.14-preview", 48 | "depth": 1, 49 | "source": "registry", 50 | "dependencies": { 51 | "com.unity.sysroot": "0.1.18-preview" 52 | }, 53 | "url": "https://packages.unity.com" 54 | }, 55 | "com.unity.test-framework": { 56 | "version": "1.1.31", 57 | "depth": 1, 58 | "source": "registry", 59 | "dependencies": { 60 | "com.unity.ext.nunit": "1.0.6", 61 | "com.unity.modules.imgui": "1.0.0", 62 | "com.unity.modules.jsonserialize": "1.0.0" 63 | }, 64 | "url": "https://packages.unity.com" 65 | }, 66 | "com.unity.toolchain.macos-x86_64-linux-x86_64": { 67 | "version": "0.1.22-preview", 68 | "depth": 0, 69 | "source": "registry", 70 | "dependencies": { 71 | "com.unity.sysroot": "0.1.19-preview", 72 | "com.unity.sysroot.linux-x86_64": "0.1.14-preview" 73 | }, 74 | "url": "https://packages.unity.com" 75 | }, 76 | "com.unity.modules.ai": { 77 | "version": "1.0.0", 78 | "depth": 0, 79 | "source": "builtin", 80 | "dependencies": {} 81 | }, 82 | "com.unity.modules.androidjni": { 83 | "version": "1.0.0", 84 | "depth": 0, 85 | "source": "builtin", 86 | "dependencies": {} 87 | }, 88 | "com.unity.modules.animation": { 89 | "version": "1.0.0", 90 | "depth": 0, 91 | "source": "builtin", 92 | "dependencies": {} 93 | }, 94 | "com.unity.modules.assetbundle": { 95 | "version": "1.0.0", 96 | "depth": 0, 97 | "source": "builtin", 98 | "dependencies": {} 99 | }, 100 | "com.unity.modules.audio": { 101 | "version": "1.0.0", 102 | "depth": 0, 103 | "source": "builtin", 104 | "dependencies": {} 105 | }, 106 | "com.unity.modules.cloth": { 107 | "version": "1.0.0", 108 | "depth": 0, 109 | "source": "builtin", 110 | "dependencies": { 111 | "com.unity.modules.physics": "1.0.0" 112 | } 113 | }, 114 | "com.unity.modules.director": { 115 | "version": "1.0.0", 116 | "depth": 0, 117 | "source": "builtin", 118 | "dependencies": { 119 | "com.unity.modules.audio": "1.0.0", 120 | "com.unity.modules.animation": "1.0.0" 121 | } 122 | }, 123 | "com.unity.modules.imageconversion": { 124 | "version": "1.0.0", 125 | "depth": 0, 126 | "source": "builtin", 127 | "dependencies": {} 128 | }, 129 | "com.unity.modules.imgui": { 130 | "version": "1.0.0", 131 | "depth": 0, 132 | "source": "builtin", 133 | "dependencies": {} 134 | }, 135 | "com.unity.modules.jsonserialize": { 136 | "version": "1.0.0", 137 | "depth": 0, 138 | "source": "builtin", 139 | "dependencies": {} 140 | }, 141 | "com.unity.modules.particlesystem": { 142 | "version": "1.0.0", 143 | "depth": 0, 144 | "source": "builtin", 145 | "dependencies": {} 146 | }, 147 | "com.unity.modules.physics": { 148 | "version": "1.0.0", 149 | "depth": 0, 150 | "source": "builtin", 151 | "dependencies": {} 152 | }, 153 | "com.unity.modules.physics2d": { 154 | "version": "1.0.0", 155 | "depth": 0, 156 | "source": "builtin", 157 | "dependencies": {} 158 | }, 159 | "com.unity.modules.screencapture": { 160 | "version": "1.0.0", 161 | "depth": 0, 162 | "source": "builtin", 163 | "dependencies": { 164 | "com.unity.modules.imageconversion": "1.0.0" 165 | } 166 | }, 167 | "com.unity.modules.subsystems": { 168 | "version": "1.0.0", 169 | "depth": 1, 170 | "source": "builtin", 171 | "dependencies": { 172 | "com.unity.modules.jsonserialize": "1.0.0" 173 | } 174 | }, 175 | "com.unity.modules.terrain": { 176 | "version": "1.0.0", 177 | "depth": 0, 178 | "source": "builtin", 179 | "dependencies": {} 180 | }, 181 | "com.unity.modules.terrainphysics": { 182 | "version": "1.0.0", 183 | "depth": 0, 184 | "source": "builtin", 185 | "dependencies": { 186 | "com.unity.modules.physics": "1.0.0", 187 | "com.unity.modules.terrain": "1.0.0" 188 | } 189 | }, 190 | "com.unity.modules.tilemap": { 191 | "version": "1.0.0", 192 | "depth": 0, 193 | "source": "builtin", 194 | "dependencies": { 195 | "com.unity.modules.physics2d": "1.0.0" 196 | } 197 | }, 198 | "com.unity.modules.ui": { 199 | "version": "1.0.0", 200 | "depth": 0, 201 | "source": "builtin", 202 | "dependencies": {} 203 | }, 204 | "com.unity.modules.uielements": { 205 | "version": "1.0.0", 206 | "depth": 0, 207 | "source": "builtin", 208 | "dependencies": { 209 | "com.unity.modules.ui": "1.0.0", 210 | "com.unity.modules.imgui": "1.0.0", 211 | "com.unity.modules.jsonserialize": "1.0.0", 212 | "com.unity.modules.uielementsnative": "1.0.0" 213 | } 214 | }, 215 | "com.unity.modules.uielementsnative": { 216 | "version": "1.0.0", 217 | "depth": 1, 218 | "source": "builtin", 219 | "dependencies": { 220 | "com.unity.modules.ui": "1.0.0", 221 | "com.unity.modules.imgui": "1.0.0", 222 | "com.unity.modules.jsonserialize": "1.0.0" 223 | } 224 | }, 225 | "com.unity.modules.umbra": { 226 | "version": "1.0.0", 227 | "depth": 0, 228 | "source": "builtin", 229 | "dependencies": {} 230 | }, 231 | "com.unity.modules.unityanalytics": { 232 | "version": "1.0.0", 233 | "depth": 0, 234 | "source": "builtin", 235 | "dependencies": { 236 | "com.unity.modules.unitywebrequest": "1.0.0", 237 | "com.unity.modules.jsonserialize": "1.0.0" 238 | } 239 | }, 240 | "com.unity.modules.unitywebrequest": { 241 | "version": "1.0.0", 242 | "depth": 0, 243 | "source": "builtin", 244 | "dependencies": {} 245 | }, 246 | "com.unity.modules.unitywebrequestassetbundle": { 247 | "version": "1.0.0", 248 | "depth": 0, 249 | "source": "builtin", 250 | "dependencies": { 251 | "com.unity.modules.assetbundle": "1.0.0", 252 | "com.unity.modules.unitywebrequest": "1.0.0" 253 | } 254 | }, 255 | "com.unity.modules.unitywebrequestaudio": { 256 | "version": "1.0.0", 257 | "depth": 0, 258 | "source": "builtin", 259 | "dependencies": { 260 | "com.unity.modules.unitywebrequest": "1.0.0", 261 | "com.unity.modules.audio": "1.0.0" 262 | } 263 | }, 264 | "com.unity.modules.unitywebrequesttexture": { 265 | "version": "1.0.0", 266 | "depth": 0, 267 | "source": "builtin", 268 | "dependencies": { 269 | "com.unity.modules.unitywebrequest": "1.0.0", 270 | "com.unity.modules.imageconversion": "1.0.0" 271 | } 272 | }, 273 | "com.unity.modules.unitywebrequestwww": { 274 | "version": "1.0.0", 275 | "depth": 0, 276 | "source": "builtin", 277 | "dependencies": { 278 | "com.unity.modules.unitywebrequest": "1.0.0", 279 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 280 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 281 | "com.unity.modules.audio": "1.0.0", 282 | "com.unity.modules.assetbundle": "1.0.0", 283 | "com.unity.modules.imageconversion": "1.0.0" 284 | } 285 | }, 286 | "com.unity.modules.vehicles": { 287 | "version": "1.0.0", 288 | "depth": 0, 289 | "source": "builtin", 290 | "dependencies": { 291 | "com.unity.modules.physics": "1.0.0" 292 | } 293 | }, 294 | "com.unity.modules.video": { 295 | "version": "1.0.0", 296 | "depth": 0, 297 | "source": "builtin", 298 | "dependencies": { 299 | "com.unity.modules.audio": "1.0.0", 300 | "com.unity.modules.ui": "1.0.0", 301 | "com.unity.modules.unitywebrequest": "1.0.0" 302 | } 303 | }, 304 | "com.unity.modules.vr": { 305 | "version": "1.0.0", 306 | "depth": 0, 307 | "source": "builtin", 308 | "dependencies": { 309 | "com.unity.modules.jsonserialize": "1.0.0", 310 | "com.unity.modules.physics": "1.0.0", 311 | "com.unity.modules.xr": "1.0.0" 312 | } 313 | }, 314 | "com.unity.modules.wind": { 315 | "version": "1.0.0", 316 | "depth": 0, 317 | "source": "builtin", 318 | "dependencies": {} 319 | }, 320 | "com.unity.modules.xr": { 321 | "version": "1.0.0", 322 | "depth": 0, 323 | "source": "builtin", 324 | "dependencies": { 325 | "com.unity.modules.physics": "1.0.0", 326 | "com.unity.modules.jsonserialize": "1.0.0", 327 | "com.unity.modules.subsystems": "1.0.0" 328 | } 329 | } 330 | } 331 | } 332 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/Empty.unity 10 | guid: 74e5b69a730c04108ab55146dda125be 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_SerializeInlineMappingsOnOneLine: 1 -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | m_LogWhenShaderIsCompiled: 0 63 | m_AllowEnlightenSupportForUpgradedProject: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreviewPackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | oneTimeWarningShown: 0 20 | m_Registries: 21 | - m_Id: main 22 | m_Name: 23 | m_Url: https://packages.unity.com 24 | m_Scopes: [] 25 | m_IsDefault: 1 26 | m_Capabilities: 7 27 | m_UserSelectedRegistryName: 28 | m_UserAddingNewScopedRegistry: 0 29 | m_RegistryInfoDraft: 30 | m_ErrorMessage: 31 | m_Original: 32 | m_Id: 33 | m_Name: 34 | m_Url: 35 | m_Scopes: [] 36 | m_IsDefault: 0 37 | m_Capabilities: 0 38 | m_Modified: 0 39 | m_Name: 40 | m_Url: 41 | m_Scopes: 42 | - 43 | m_SelectedScopeIndex: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 23 7 | productGUID: ee36cb5052dbb084a94dc4a3f8fc792d 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: QuantumCalzone 16 | productName: UnityGitPackageUpdater 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | mipStripping: 0 53 | numberOfMipsStripped: 0 54 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 55 | iosShowActivityIndicatorOnLoading: -1 56 | androidShowActivityIndicatorOnLoading: -1 57 | iosUseCustomAppBackgroundBehavior: 0 58 | iosAllowHTTPDownload: 1 59 | allowedAutorotateToPortrait: 1 60 | allowedAutorotateToPortraitUpsideDown: 1 61 | allowedAutorotateToLandscapeRight: 1 62 | allowedAutorotateToLandscapeLeft: 1 63 | useOSAutorotation: 1 64 | use32BitDisplayBuffer: 1 65 | preserveFramebufferAlpha: 0 66 | disableDepthAndStencilBuffers: 0 67 | androidStartInFullscreen: 1 68 | androidRenderOutsideSafeArea: 1 69 | androidUseSwappy: 1 70 | androidBlitType: 0 71 | androidResizableWindow: 0 72 | androidDefaultWindowWidth: 1920 73 | androidDefaultWindowHeight: 1080 74 | androidMinimumWindowWidth: 400 75 | androidMinimumWindowHeight: 300 76 | androidFullscreenMode: 1 77 | defaultIsNativeResolution: 1 78 | macRetinaSupport: 1 79 | runInBackground: 1 80 | captureSingleScreen: 0 81 | muteOtherAudioSources: 0 82 | Prepare IOS For Recording: 0 83 | Force IOS Speakers When Recording: 0 84 | deferSystemGesturesMode: 0 85 | hideHomeButton: 0 86 | submitAnalytics: 1 87 | usePlayerLog: 1 88 | bakeCollisionMeshes: 0 89 | forceSingleInstance: 0 90 | useFlipModelSwapchain: 1 91 | resizableWindow: 0 92 | useMacAppStoreValidation: 0 93 | macAppStoreCategory: public.app-category.games 94 | gpuSkinning: 1 95 | xboxPIXTextureCapture: 0 96 | xboxEnableAvatar: 0 97 | xboxEnableKinect: 0 98 | xboxEnableKinectAutoTracking: 0 99 | xboxEnableFitness: 0 100 | visibleInBackground: 1 101 | allowFullscreenSwitch: 1 102 | fullscreenMode: 1 103 | xboxSpeechDB: 0 104 | xboxEnableHeadOrientation: 0 105 | xboxEnableGuest: 0 106 | xboxEnablePIXSampling: 0 107 | metalFramebufferOnly: 0 108 | xboxOneResolution: 0 109 | xboxOneSResolution: 0 110 | xboxOneXResolution: 3 111 | xboxOneMonoLoggingLevel: 0 112 | xboxOneLoggingLevel: 1 113 | xboxOneDisableEsram: 0 114 | xboxOneEnableTypeOptimization: 0 115 | xboxOnePresentImmediateThreshold: 0 116 | switchQueueCommandMemory: 0 117 | switchQueueControlMemory: 16384 118 | switchQueueComputeMemory: 262144 119 | switchNVNShaderPoolsGranularity: 33554432 120 | switchNVNDefaultPoolsGranularity: 16777216 121 | switchNVNOtherPoolsGranularity: 16777216 122 | switchNVNMaxPublicTextureIDCount: 0 123 | switchNVNMaxPublicSamplerIDCount: 0 124 | stadiaPresentMode: 0 125 | stadiaTargetFramerate: 0 126 | vulkanNumSwapchainBuffers: 3 127 | vulkanEnableSetSRGBWrite: 0 128 | vulkanEnablePreTransform: 0 129 | vulkanEnableLateAcquireNextImage: 0 130 | vulkanEnableCommandBufferRecycling: 1 131 | m_SupportedAspectRatios: 132 | 4:3: 1 133 | 5:4: 1 134 | 16:10: 1 135 | 16:9: 1 136 | Others: 1 137 | bundleVersion: 0.1 138 | preloadedAssets: [] 139 | metroInputSource: 0 140 | wsaTransparentSwapchain: 0 141 | m_HolographicPauseOnTrackingLoss: 1 142 | xboxOneDisableKinectGpuReservation: 1 143 | xboxOneEnable7thCore: 1 144 | vrSettings: 145 | enable360StereoCapture: 0 146 | isWsaHolographicRemotingEnabled: 0 147 | enableFrameTimingStats: 0 148 | useHDRDisplay: 0 149 | D3DHDRBitDepth: 0 150 | m_ColorGamuts: 00000000 151 | targetPixelDensity: 30 152 | resolutionScalingMode: 0 153 | androidSupportedAspectRatio: 1 154 | androidMaxAspectRatio: 2.1 155 | applicationIdentifier: {} 156 | buildNumber: 157 | Standalone: 0 158 | iPhone: 0 159 | tvOS: 0 160 | overrideDefaultApplicationIdentifier: 0 161 | AndroidBundleVersionCode: 1 162 | AndroidMinSdkVersion: 22 163 | AndroidTargetSdkVersion: 0 164 | AndroidPreferredInstallLocation: 1 165 | aotOptions: 166 | stripEngineCode: 1 167 | iPhoneStrippingLevel: 0 168 | iPhoneScriptCallOptimization: 0 169 | ForceInternetPermission: 0 170 | ForceSDCardPermission: 0 171 | CreateWallpaper: 0 172 | APKExpansionFiles: 0 173 | keepLoadedShadersAlive: 0 174 | StripUnusedMeshComponents: 1 175 | VertexChannelCompressionMask: 4054 176 | iPhoneSdkVersion: 988 177 | iOSTargetOSVersionString: 11.0 178 | tvOSSdkVersion: 0 179 | tvOSRequireExtendedGameController: 0 180 | tvOSTargetOSVersionString: 11.0 181 | uIPrerenderedIcon: 0 182 | uIRequiresPersistentWiFi: 0 183 | uIRequiresFullScreen: 1 184 | uIStatusBarHidden: 1 185 | uIExitOnSuspend: 0 186 | uIStatusBarStyle: 0 187 | appleTVSplashScreen: {fileID: 0} 188 | appleTVSplashScreen2x: {fileID: 0} 189 | tvOSSmallIconLayers: [] 190 | tvOSSmallIconLayers2x: [] 191 | tvOSLargeIconLayers: [] 192 | tvOSLargeIconLayers2x: [] 193 | tvOSTopShelfImageLayers: [] 194 | tvOSTopShelfImageLayers2x: [] 195 | tvOSTopShelfImageWideLayers: [] 196 | tvOSTopShelfImageWideLayers2x: [] 197 | iOSLaunchScreenType: 0 198 | iOSLaunchScreenPortrait: {fileID: 0} 199 | iOSLaunchScreenLandscape: {fileID: 0} 200 | iOSLaunchScreenBackgroundColor: 201 | serializedVersion: 2 202 | rgba: 0 203 | iOSLaunchScreenFillPct: 100 204 | iOSLaunchScreenSize: 100 205 | iOSLaunchScreenCustomXibPath: 206 | iOSLaunchScreeniPadType: 0 207 | iOSLaunchScreeniPadImage: {fileID: 0} 208 | iOSLaunchScreeniPadBackgroundColor: 209 | serializedVersion: 2 210 | rgba: 0 211 | iOSLaunchScreeniPadFillPct: 100 212 | iOSLaunchScreeniPadSize: 100 213 | iOSLaunchScreeniPadCustomXibPath: 214 | iOSLaunchScreenCustomStoryboardPath: 215 | iOSLaunchScreeniPadCustomStoryboardPath: 216 | iOSDeviceRequirements: [] 217 | iOSURLSchemes: [] 218 | macOSURLSchemes: [] 219 | iOSBackgroundModes: 0 220 | iOSMetalForceHardShadows: 0 221 | metalEditorSupport: 1 222 | metalAPIValidation: 1 223 | iOSRenderExtraFrameOnPause: 0 224 | iosCopyPluginsCodeInsteadOfSymlink: 0 225 | appleDeveloperTeamID: 226 | iOSManualSigningProvisioningProfileID: 227 | tvOSManualSigningProvisioningProfileID: 228 | iOSManualSigningProvisioningProfileType: 0 229 | tvOSManualSigningProvisioningProfileType: 0 230 | appleEnableAutomaticSigning: 0 231 | iOSRequireARKit: 0 232 | iOSAutomaticallyDetectAndAddCapabilities: 1 233 | appleEnableProMotion: 0 234 | shaderPrecisionModel: 0 235 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 236 | templatePackageId: com.unity.template.3d@5.0.3 237 | templateDefaultScene: Assets/Scenes/SampleScene.unity 238 | useCustomMainManifest: 0 239 | useCustomLauncherManifest: 0 240 | useCustomMainGradleTemplate: 0 241 | useCustomLauncherGradleManifest: 0 242 | useCustomBaseGradleTemplate: 0 243 | useCustomGradlePropertiesTemplate: 0 244 | useCustomProguardFile: 0 245 | AndroidTargetArchitectures: 1 246 | AndroidTargetDevices: 0 247 | AndroidSplashScreenScale: 0 248 | androidSplashScreen: {fileID: 0} 249 | AndroidKeystoreName: 250 | AndroidKeyaliasName: 251 | AndroidBuildApkPerCpuArchitecture: 0 252 | AndroidTVCompatibility: 0 253 | AndroidIsGame: 1 254 | AndroidEnableTango: 0 255 | androidEnableBanner: 1 256 | androidUseLowAccuracyLocation: 0 257 | androidUseCustomKeystore: 0 258 | m_AndroidBanners: 259 | - width: 320 260 | height: 180 261 | banner: {fileID: 0} 262 | androidGamepadSupportLevel: 0 263 | chromeosInputEmulation: 1 264 | AndroidMinifyWithR8: 0 265 | AndroidMinifyRelease: 0 266 | AndroidMinifyDebug: 0 267 | AndroidValidateAppBundleSize: 1 268 | AndroidAppBundleSizeToValidate: 150 269 | m_BuildTargetIcons: [] 270 | m_BuildTargetPlatformIcons: 271 | - m_BuildTarget: tvOS 272 | m_Icons: 273 | - m_Textures: [] 274 | m_Width: 1280 275 | m_Height: 768 276 | m_Kind: 0 277 | m_SubKind: 278 | - m_Textures: [] 279 | m_Width: 800 280 | m_Height: 480 281 | m_Kind: 0 282 | m_SubKind: 283 | - m_Textures: [] 284 | m_Width: 400 285 | m_Height: 240 286 | m_Kind: 0 287 | m_SubKind: 288 | - m_Textures: [] 289 | m_Width: 4640 290 | m_Height: 1440 291 | m_Kind: 1 292 | m_SubKind: 293 | - m_Textures: [] 294 | m_Width: 2320 295 | m_Height: 720 296 | m_Kind: 1 297 | m_SubKind: 298 | - m_Textures: [] 299 | m_Width: 3840 300 | m_Height: 1440 301 | m_Kind: 1 302 | m_SubKind: 303 | - m_Textures: [] 304 | m_Width: 1920 305 | m_Height: 720 306 | m_Kind: 1 307 | m_SubKind: 308 | - m_BuildTarget: iPhone 309 | m_Icons: 310 | - m_Textures: [] 311 | m_Width: 180 312 | m_Height: 180 313 | m_Kind: 0 314 | m_SubKind: iPhone 315 | - m_Textures: [] 316 | m_Width: 120 317 | m_Height: 120 318 | m_Kind: 0 319 | m_SubKind: iPhone 320 | - m_Textures: [] 321 | m_Width: 167 322 | m_Height: 167 323 | m_Kind: 0 324 | m_SubKind: iPad 325 | - m_Textures: [] 326 | m_Width: 152 327 | m_Height: 152 328 | m_Kind: 0 329 | m_SubKind: iPad 330 | - m_Textures: [] 331 | m_Width: 76 332 | m_Height: 76 333 | m_Kind: 0 334 | m_SubKind: iPad 335 | - m_Textures: [] 336 | m_Width: 120 337 | m_Height: 120 338 | m_Kind: 3 339 | m_SubKind: iPhone 340 | - m_Textures: [] 341 | m_Width: 80 342 | m_Height: 80 343 | m_Kind: 3 344 | m_SubKind: iPhone 345 | - m_Textures: [] 346 | m_Width: 80 347 | m_Height: 80 348 | m_Kind: 3 349 | m_SubKind: iPad 350 | - m_Textures: [] 351 | m_Width: 40 352 | m_Height: 40 353 | m_Kind: 3 354 | m_SubKind: iPad 355 | - m_Textures: [] 356 | m_Width: 87 357 | m_Height: 87 358 | m_Kind: 1 359 | m_SubKind: iPhone 360 | - m_Textures: [] 361 | m_Width: 58 362 | m_Height: 58 363 | m_Kind: 1 364 | m_SubKind: iPhone 365 | - m_Textures: [] 366 | m_Width: 29 367 | m_Height: 29 368 | m_Kind: 1 369 | m_SubKind: iPhone 370 | - m_Textures: [] 371 | m_Width: 58 372 | m_Height: 58 373 | m_Kind: 1 374 | m_SubKind: iPad 375 | - m_Textures: [] 376 | m_Width: 29 377 | m_Height: 29 378 | m_Kind: 1 379 | m_SubKind: iPad 380 | - m_Textures: [] 381 | m_Width: 60 382 | m_Height: 60 383 | m_Kind: 2 384 | m_SubKind: iPhone 385 | - m_Textures: [] 386 | m_Width: 40 387 | m_Height: 40 388 | m_Kind: 2 389 | m_SubKind: iPhone 390 | - m_Textures: [] 391 | m_Width: 40 392 | m_Height: 40 393 | m_Kind: 2 394 | m_SubKind: iPad 395 | - m_Textures: [] 396 | m_Width: 20 397 | m_Height: 20 398 | m_Kind: 2 399 | m_SubKind: iPad 400 | - m_Textures: [] 401 | m_Width: 1024 402 | m_Height: 1024 403 | m_Kind: 4 404 | m_SubKind: App Store 405 | - m_BuildTarget: Android 406 | m_Icons: 407 | - m_Textures: [] 408 | m_Width: 432 409 | m_Height: 432 410 | m_Kind: 2 411 | m_SubKind: 412 | - m_Textures: [] 413 | m_Width: 324 414 | m_Height: 324 415 | m_Kind: 2 416 | m_SubKind: 417 | - m_Textures: [] 418 | m_Width: 216 419 | m_Height: 216 420 | m_Kind: 2 421 | m_SubKind: 422 | - m_Textures: [] 423 | m_Width: 162 424 | m_Height: 162 425 | m_Kind: 2 426 | m_SubKind: 427 | - m_Textures: [] 428 | m_Width: 108 429 | m_Height: 108 430 | m_Kind: 2 431 | m_SubKind: 432 | - m_Textures: [] 433 | m_Width: 81 434 | m_Height: 81 435 | m_Kind: 2 436 | m_SubKind: 437 | - m_Textures: [] 438 | m_Width: 192 439 | m_Height: 192 440 | m_Kind: 1 441 | m_SubKind: 442 | - m_Textures: [] 443 | m_Width: 144 444 | m_Height: 144 445 | m_Kind: 1 446 | m_SubKind: 447 | - m_Textures: [] 448 | m_Width: 96 449 | m_Height: 96 450 | m_Kind: 1 451 | m_SubKind: 452 | - m_Textures: [] 453 | m_Width: 72 454 | m_Height: 72 455 | m_Kind: 1 456 | m_SubKind: 457 | - m_Textures: [] 458 | m_Width: 48 459 | m_Height: 48 460 | m_Kind: 1 461 | m_SubKind: 462 | - m_Textures: [] 463 | m_Width: 36 464 | m_Height: 36 465 | m_Kind: 1 466 | m_SubKind: 467 | - m_Textures: [] 468 | m_Width: 192 469 | m_Height: 192 470 | m_Kind: 0 471 | m_SubKind: 472 | - m_Textures: [] 473 | m_Width: 144 474 | m_Height: 144 475 | m_Kind: 0 476 | m_SubKind: 477 | - m_Textures: [] 478 | m_Width: 96 479 | m_Height: 96 480 | m_Kind: 0 481 | m_SubKind: 482 | - m_Textures: [] 483 | m_Width: 72 484 | m_Height: 72 485 | m_Kind: 0 486 | m_SubKind: 487 | - m_Textures: [] 488 | m_Width: 48 489 | m_Height: 48 490 | m_Kind: 0 491 | m_SubKind: 492 | - m_Textures: [] 493 | m_Width: 36 494 | m_Height: 36 495 | m_Kind: 0 496 | m_SubKind: 497 | m_BuildTargetBatching: 498 | - m_BuildTarget: Standalone 499 | m_StaticBatching: 1 500 | m_DynamicBatching: 0 501 | - m_BuildTarget: tvOS 502 | m_StaticBatching: 1 503 | m_DynamicBatching: 0 504 | - m_BuildTarget: Android 505 | m_StaticBatching: 1 506 | m_DynamicBatching: 0 507 | - m_BuildTarget: iPhone 508 | m_StaticBatching: 1 509 | m_DynamicBatching: 0 510 | - m_BuildTarget: WebGL 511 | m_StaticBatching: 0 512 | m_DynamicBatching: 0 513 | m_BuildTargetGraphicsJobs: 514 | - m_BuildTarget: MacStandaloneSupport 515 | m_GraphicsJobs: 0 516 | - m_BuildTarget: Switch 517 | m_GraphicsJobs: 1 518 | - m_BuildTarget: MetroSupport 519 | m_GraphicsJobs: 1 520 | - m_BuildTarget: AppleTVSupport 521 | m_GraphicsJobs: 0 522 | - m_BuildTarget: BJMSupport 523 | m_GraphicsJobs: 1 524 | - m_BuildTarget: LinuxStandaloneSupport 525 | m_GraphicsJobs: 1 526 | - m_BuildTarget: PS4Player 527 | m_GraphicsJobs: 1 528 | - m_BuildTarget: iOSSupport 529 | m_GraphicsJobs: 0 530 | - m_BuildTarget: WindowsStandaloneSupport 531 | m_GraphicsJobs: 1 532 | - m_BuildTarget: XboxOnePlayer 533 | m_GraphicsJobs: 1 534 | - m_BuildTarget: LuminSupport 535 | m_GraphicsJobs: 0 536 | - m_BuildTarget: AndroidPlayer 537 | m_GraphicsJobs: 0 538 | - m_BuildTarget: WebGLSupport 539 | m_GraphicsJobs: 0 540 | m_BuildTargetGraphicsJobMode: 541 | - m_BuildTarget: PS4Player 542 | m_GraphicsJobMode: 0 543 | - m_BuildTarget: XboxOnePlayer 544 | m_GraphicsJobMode: 0 545 | m_BuildTargetGraphicsAPIs: 546 | - m_BuildTarget: AndroidPlayer 547 | m_APIs: 150000000b000000 548 | m_Automatic: 1 549 | - m_BuildTarget: iOSSupport 550 | m_APIs: 10000000 551 | m_Automatic: 1 552 | - m_BuildTarget: AppleTVSupport 553 | m_APIs: 10000000 554 | m_Automatic: 1 555 | - m_BuildTarget: WebGLSupport 556 | m_APIs: 0b000000 557 | m_Automatic: 1 558 | m_BuildTargetVRSettings: 559 | - m_BuildTarget: Standalone 560 | m_Enabled: 0 561 | m_Devices: 562 | - Oculus 563 | - OpenVR 564 | openGLRequireES31: 0 565 | openGLRequireES31AEP: 0 566 | openGLRequireES32: 0 567 | m_TemplateCustomTags: {} 568 | mobileMTRendering: 569 | Android: 1 570 | iPhone: 1 571 | tvOS: 1 572 | m_BuildTargetGroupLightmapEncodingQuality: [] 573 | m_BuildTargetGroupLightmapSettings: [] 574 | m_BuildTargetNormalMapEncoding: [] 575 | m_BuildTargetDefaultTextureCompressionFormat: [] 576 | playModeTestRunnerEnabled: 0 577 | runPlayModeTestAsEditModeTest: 0 578 | actionOnDotNetUnhandledException: 1 579 | enableInternalProfiler: 0 580 | logObjCUncaughtExceptions: 1 581 | enableCrashReportAPI: 0 582 | cameraUsageDescription: 583 | locationUsageDescription: 584 | microphoneUsageDescription: 585 | bluetoothUsageDescription: 586 | switchNMETAOverride: 587 | switchNetLibKey: 588 | switchSocketMemoryPoolSize: 6144 589 | switchSocketAllocatorPoolSize: 128 590 | switchSocketConcurrencyLimit: 14 591 | switchScreenResolutionBehavior: 2 592 | switchUseCPUProfiler: 0 593 | switchUseGOLDLinker: 0 594 | switchLTOSetting: 0 595 | switchApplicationID: 0x01004b9000490000 596 | switchNSODependencies: 597 | switchTitleNames_0: 598 | switchTitleNames_1: 599 | switchTitleNames_2: 600 | switchTitleNames_3: 601 | switchTitleNames_4: 602 | switchTitleNames_5: 603 | switchTitleNames_6: 604 | switchTitleNames_7: 605 | switchTitleNames_8: 606 | switchTitleNames_9: 607 | switchTitleNames_10: 608 | switchTitleNames_11: 609 | switchTitleNames_12: 610 | switchTitleNames_13: 611 | switchTitleNames_14: 612 | switchTitleNames_15: 613 | switchPublisherNames_0: 614 | switchPublisherNames_1: 615 | switchPublisherNames_2: 616 | switchPublisherNames_3: 617 | switchPublisherNames_4: 618 | switchPublisherNames_5: 619 | switchPublisherNames_6: 620 | switchPublisherNames_7: 621 | switchPublisherNames_8: 622 | switchPublisherNames_9: 623 | switchPublisherNames_10: 624 | switchPublisherNames_11: 625 | switchPublisherNames_12: 626 | switchPublisherNames_13: 627 | switchPublisherNames_14: 628 | switchPublisherNames_15: 629 | switchIcons_0: {fileID: 0} 630 | switchIcons_1: {fileID: 0} 631 | switchIcons_2: {fileID: 0} 632 | switchIcons_3: {fileID: 0} 633 | switchIcons_4: {fileID: 0} 634 | switchIcons_5: {fileID: 0} 635 | switchIcons_6: {fileID: 0} 636 | switchIcons_7: {fileID: 0} 637 | switchIcons_8: {fileID: 0} 638 | switchIcons_9: {fileID: 0} 639 | switchIcons_10: {fileID: 0} 640 | switchIcons_11: {fileID: 0} 641 | switchIcons_12: {fileID: 0} 642 | switchIcons_13: {fileID: 0} 643 | switchIcons_14: {fileID: 0} 644 | switchIcons_15: {fileID: 0} 645 | switchSmallIcons_0: {fileID: 0} 646 | switchSmallIcons_1: {fileID: 0} 647 | switchSmallIcons_2: {fileID: 0} 648 | switchSmallIcons_3: {fileID: 0} 649 | switchSmallIcons_4: {fileID: 0} 650 | switchSmallIcons_5: {fileID: 0} 651 | switchSmallIcons_6: {fileID: 0} 652 | switchSmallIcons_7: {fileID: 0} 653 | switchSmallIcons_8: {fileID: 0} 654 | switchSmallIcons_9: {fileID: 0} 655 | switchSmallIcons_10: {fileID: 0} 656 | switchSmallIcons_11: {fileID: 0} 657 | switchSmallIcons_12: {fileID: 0} 658 | switchSmallIcons_13: {fileID: 0} 659 | switchSmallIcons_14: {fileID: 0} 660 | switchSmallIcons_15: {fileID: 0} 661 | switchManualHTML: 662 | switchAccessibleURLs: 663 | switchLegalInformation: 664 | switchMainThreadStackSize: 1048576 665 | switchPresenceGroupId: 666 | switchLogoHandling: 0 667 | switchReleaseVersion: 0 668 | switchDisplayVersion: 1.0.0 669 | switchStartupUserAccount: 0 670 | switchTouchScreenUsage: 0 671 | switchSupportedLanguagesMask: 0 672 | switchLogoType: 0 673 | switchApplicationErrorCodeCategory: 674 | switchUserAccountSaveDataSize: 0 675 | switchUserAccountSaveDataJournalSize: 0 676 | switchApplicationAttribute: 0 677 | switchCardSpecSize: -1 678 | switchCardSpecClock: -1 679 | switchRatingsMask: 0 680 | switchRatingsInt_0: 0 681 | switchRatingsInt_1: 0 682 | switchRatingsInt_2: 0 683 | switchRatingsInt_3: 0 684 | switchRatingsInt_4: 0 685 | switchRatingsInt_5: 0 686 | switchRatingsInt_6: 0 687 | switchRatingsInt_7: 0 688 | switchRatingsInt_8: 0 689 | switchRatingsInt_9: 0 690 | switchRatingsInt_10: 0 691 | switchRatingsInt_11: 0 692 | switchRatingsInt_12: 0 693 | switchLocalCommunicationIds_0: 694 | switchLocalCommunicationIds_1: 695 | switchLocalCommunicationIds_2: 696 | switchLocalCommunicationIds_3: 697 | switchLocalCommunicationIds_4: 698 | switchLocalCommunicationIds_5: 699 | switchLocalCommunicationIds_6: 700 | switchLocalCommunicationIds_7: 701 | switchParentalControl: 0 702 | switchAllowsScreenshot: 1 703 | switchAllowsVideoCapturing: 1 704 | switchAllowsRuntimeAddOnContentInstall: 0 705 | switchDataLossConfirmation: 0 706 | switchUserAccountLockEnabled: 0 707 | switchSystemResourceMemory: 16777216 708 | switchSupportedNpadStyles: 22 709 | switchNativeFsCacheSize: 32 710 | switchIsHoldTypeHorizontal: 0 711 | switchSupportedNpadCount: 8 712 | switchSocketConfigEnabled: 0 713 | switchTcpInitialSendBufferSize: 32 714 | switchTcpInitialReceiveBufferSize: 64 715 | switchTcpAutoSendBufferSizeMax: 256 716 | switchTcpAutoReceiveBufferSizeMax: 256 717 | switchUdpSendBufferSize: 9 718 | switchUdpReceiveBufferSize: 42 719 | switchSocketBufferEfficiency: 4 720 | switchSocketInitializeEnabled: 1 721 | switchNetworkInterfaceManagerInitializeEnabled: 1 722 | switchPlayerConnectionEnabled: 1 723 | switchUseNewStyleFilepaths: 0 724 | switchUseMicroSleepForYield: 1 725 | switchEnableRamDiskSupport: 0 726 | switchMicroSleepForYieldTime: 25 727 | switchRamDiskSpaceSize: 12 728 | ps4NPAgeRating: 12 729 | ps4NPTitleSecret: 730 | ps4NPTrophyPackPath: 731 | ps4ParentalLevel: 11 732 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 733 | ps4Category: 0 734 | ps4MasterVersion: 01.00 735 | ps4AppVersion: 01.00 736 | ps4AppType: 0 737 | ps4ParamSfxPath: 738 | ps4VideoOutPixelFormat: 0 739 | ps4VideoOutInitialWidth: 1920 740 | ps4VideoOutBaseModeInitialWidth: 1920 741 | ps4VideoOutReprojectionRate: 60 742 | ps4PronunciationXMLPath: 743 | ps4PronunciationSIGPath: 744 | ps4BackgroundImagePath: 745 | ps4StartupImagePath: 746 | ps4StartupImagesFolder: 747 | ps4IconImagesFolder: 748 | ps4SaveDataImagePath: 749 | ps4SdkOverride: 750 | ps4BGMPath: 751 | ps4ShareFilePath: 752 | ps4ShareOverlayImagePath: 753 | ps4PrivacyGuardImagePath: 754 | ps4ExtraSceSysFile: 755 | ps4NPtitleDatPath: 756 | ps4RemotePlayKeyAssignment: -1 757 | ps4RemotePlayKeyMappingDir: 758 | ps4PlayTogetherPlayerCount: 0 759 | ps4EnterButtonAssignment: 1 760 | ps4ApplicationParam1: 0 761 | ps4ApplicationParam2: 0 762 | ps4ApplicationParam3: 0 763 | ps4ApplicationParam4: 0 764 | ps4DownloadDataSize: 0 765 | ps4GarlicHeapSize: 2048 766 | ps4ProGarlicHeapSize: 2560 767 | playerPrefsMaxSize: 32768 768 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 769 | ps4pnSessions: 1 770 | ps4pnPresence: 1 771 | ps4pnFriends: 1 772 | ps4pnGameCustomData: 1 773 | playerPrefsSupport: 0 774 | enableApplicationExit: 0 775 | resetTempFolder: 1 776 | restrictedAudioUsageRights: 0 777 | ps4UseResolutionFallback: 0 778 | ps4ReprojectionSupport: 0 779 | ps4UseAudio3dBackend: 0 780 | ps4UseLowGarlicFragmentationMode: 1 781 | ps4SocialScreenEnabled: 0 782 | ps4ScriptOptimizationLevel: 0 783 | ps4Audio3dVirtualSpeakerCount: 14 784 | ps4attribCpuUsage: 0 785 | ps4PatchPkgPath: 786 | ps4PatchLatestPkgPath: 787 | ps4PatchChangeinfoPath: 788 | ps4PatchDayOne: 0 789 | ps4attribUserManagement: 0 790 | ps4attribMoveSupport: 0 791 | ps4attrib3DSupport: 0 792 | ps4attribShareSupport: 0 793 | ps4attribExclusiveVR: 0 794 | ps4disableAutoHideSplash: 0 795 | ps4videoRecordingFeaturesUsed: 0 796 | ps4contentSearchFeaturesUsed: 0 797 | ps4CompatibilityPS5: 0 798 | ps4GPU800MHz: 1 799 | ps4attribEyeToEyeDistanceSettingVR: 0 800 | ps4IncludedModules: [] 801 | ps4attribVROutputEnabled: 0 802 | monoEnv: 803 | splashScreenBackgroundSourceLandscape: {fileID: 0} 804 | splashScreenBackgroundSourcePortrait: {fileID: 0} 805 | blurSplashScreenBackground: 1 806 | spritePackerPolicy: 807 | webGLMemorySize: 16 808 | webGLExceptionSupport: 1 809 | webGLNameFilesAsHashes: 0 810 | webGLDataCaching: 1 811 | webGLDebugSymbols: 0 812 | webGLEmscriptenArgs: 813 | webGLModulesDirectory: 814 | webGLTemplate: APPLICATION:Default 815 | webGLAnalyzeBuildSize: 0 816 | webGLUseEmbeddedResources: 0 817 | webGLCompressionFormat: 1 818 | webGLWasmArithmeticExceptions: 0 819 | webGLLinkerTarget: 1 820 | webGLThreadsSupport: 0 821 | webGLDecompressionFallback: 0 822 | scriptingDefineSymbols: {} 823 | additionalCompilerArguments: {} 824 | platformArchitecture: {} 825 | scriptingBackend: {} 826 | il2cppCompilerConfiguration: {} 827 | managedStrippingLevel: {} 828 | incrementalIl2cppBuild: {} 829 | suppressCommonWarnings: 1 830 | allowUnsafeCode: 0 831 | useDeterministicCompilation: 1 832 | enableRoslynAnalyzers: 1 833 | additionalIl2CppArgs: 834 | scriptingRuntimeVersion: 1 835 | gcIncremental: 1 836 | assemblyVersionValidation: 1 837 | gcWBarrierValidation: 0 838 | apiCompatibilityLevelPerPlatform: {} 839 | m_RenderingPath: 1 840 | m_MobileRenderingPath: 1 841 | metroPackageName: Template_3D 842 | metroPackageVersion: 843 | metroCertificatePath: 844 | metroCertificatePassword: 845 | metroCertificateSubject: 846 | metroCertificateIssuer: 847 | metroCertificateNotAfter: 0000000000000000 848 | metroApplicationDescription: Template_3D 849 | wsaImages: {} 850 | metroTileShortName: 851 | metroTileShowName: 0 852 | metroMediumTileShowName: 0 853 | metroLargeTileShowName: 0 854 | metroWideTileShowName: 0 855 | metroSupportStreamingInstall: 0 856 | metroLastRequiredScene: 0 857 | metroDefaultTileSize: 1 858 | metroTileForegroundText: 2 859 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 860 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} 861 | metroSplashScreenUseBackgroundColor: 0 862 | platformCapabilities: {} 863 | metroTargetDeviceFamilies: {} 864 | metroFTAName: 865 | metroFTAFileTypes: [] 866 | metroProtocolName: 867 | XboxOneProductId: 868 | XboxOneUpdateKey: 869 | XboxOneSandboxId: 870 | XboxOneContentId: 871 | XboxOneTitleId: 872 | XboxOneSCId: 873 | XboxOneGameOsOverridePath: 874 | XboxOnePackagingOverridePath: 875 | XboxOneAppManifestOverridePath: 876 | XboxOneVersion: 1.0.0.0 877 | XboxOnePackageEncryption: 0 878 | XboxOnePackageUpdateGranularity: 2 879 | XboxOneDescription: 880 | XboxOneLanguage: 881 | - enus 882 | XboxOneCapability: [] 883 | XboxOneGameRating: {} 884 | XboxOneIsContentPackage: 0 885 | XboxOneEnhancedXboxCompatibilityMode: 0 886 | XboxOneEnableGPUVariability: 1 887 | XboxOneSockets: {} 888 | XboxOneSplashScreen: {fileID: 0} 889 | XboxOneAllowedProductIds: [] 890 | XboxOnePersistentLocalStorageSize: 0 891 | XboxOneXTitleMemory: 8 892 | XboxOneOverrideIdentityName: 893 | XboxOneOverrideIdentityPublisher: 894 | vrEditorSettings: {} 895 | cloudServicesEnabled: 896 | UNet: 1 897 | luminIcon: 898 | m_Name: 899 | m_ModelFolderPath: 900 | m_PortalFolderPath: 901 | luminCert: 902 | m_CertPath: 903 | m_SignPackage: 1 904 | luminIsChannelApp: 0 905 | luminVersion: 906 | m_VersionCode: 1 907 | m_VersionName: 908 | apiCompatibilityLevel: 6 909 | activeInputHandler: 0 910 | cloudProjectId: 911 | framebufferDepthMemorylessMode: 0 912 | qualitySettingsNames: [] 913 | projectName: 914 | organizationId: 915 | cloudEnabled: 0 916 | legacyClampBlendShapeWeights: 0 917 | playerDataPath: 918 | forceSRGBBlit: 1 919 | virtualTexturingSupportEnabled: 0 920 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2021.3.1f1 2 | m_EditorVersionWithRevision: 2021.3.1f1 (3b70a0754835) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Stadia: 5 227 | Standalone: 5 228 | WebGL: 3 229 | Windows Store Apps: 5 230 | XboxOne: 5 231 | iPhone: 2 232 | tvOS: 2 233 | -------------------------------------------------------------------------------- /ProjectSettings/SceneTemplateSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePinStates": [], 3 | "dependencyTypeInfos": [ 4 | { 5 | "userAdded": false, 6 | "type": "UnityEngine.AnimationClip", 7 | "ignore": false, 8 | "defaultInstantiationMode": 0, 9 | "supportsModification": true 10 | }, 11 | { 12 | "userAdded": false, 13 | "type": "UnityEditor.Animations.AnimatorController", 14 | "ignore": false, 15 | "defaultInstantiationMode": 0, 16 | "supportsModification": true 17 | }, 18 | { 19 | "userAdded": false, 20 | "type": "UnityEngine.AnimatorOverrideController", 21 | "ignore": false, 22 | "defaultInstantiationMode": 0, 23 | "supportsModification": true 24 | }, 25 | { 26 | "userAdded": false, 27 | "type": "UnityEditor.Audio.AudioMixerController", 28 | "ignore": false, 29 | "defaultInstantiationMode": 0, 30 | "supportsModification": true 31 | }, 32 | { 33 | "userAdded": false, 34 | "type": "UnityEngine.ComputeShader", 35 | "ignore": true, 36 | "defaultInstantiationMode": 1, 37 | "supportsModification": true 38 | }, 39 | { 40 | "userAdded": false, 41 | "type": "UnityEngine.Cubemap", 42 | "ignore": false, 43 | "defaultInstantiationMode": 0, 44 | "supportsModification": true 45 | }, 46 | { 47 | "userAdded": false, 48 | "type": "UnityEngine.GameObject", 49 | "ignore": false, 50 | "defaultInstantiationMode": 0, 51 | "supportsModification": true 52 | }, 53 | { 54 | "userAdded": false, 55 | "type": "UnityEditor.LightingDataAsset", 56 | "ignore": false, 57 | "defaultInstantiationMode": 0, 58 | "supportsModification": false 59 | }, 60 | { 61 | "userAdded": false, 62 | "type": "UnityEngine.LightingSettings", 63 | "ignore": false, 64 | "defaultInstantiationMode": 0, 65 | "supportsModification": true 66 | }, 67 | { 68 | "userAdded": false, 69 | "type": "UnityEngine.Material", 70 | "ignore": false, 71 | "defaultInstantiationMode": 0, 72 | "supportsModification": true 73 | }, 74 | { 75 | "userAdded": false, 76 | "type": "UnityEditor.MonoScript", 77 | "ignore": true, 78 | "defaultInstantiationMode": 1, 79 | "supportsModification": true 80 | }, 81 | { 82 | "userAdded": false, 83 | "type": "UnityEngine.PhysicMaterial", 84 | "ignore": false, 85 | "defaultInstantiationMode": 0, 86 | "supportsModification": true 87 | }, 88 | { 89 | "userAdded": false, 90 | "type": "UnityEngine.PhysicsMaterial2D", 91 | "ignore": false, 92 | "defaultInstantiationMode": 0, 93 | "supportsModification": true 94 | }, 95 | { 96 | "userAdded": false, 97 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", 98 | "ignore": false, 99 | "defaultInstantiationMode": 0, 100 | "supportsModification": true 101 | }, 102 | { 103 | "userAdded": false, 104 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", 105 | "ignore": false, 106 | "defaultInstantiationMode": 0, 107 | "supportsModification": true 108 | }, 109 | { 110 | "userAdded": false, 111 | "type": "UnityEngine.Rendering.VolumeProfile", 112 | "ignore": false, 113 | "defaultInstantiationMode": 0, 114 | "supportsModification": true 115 | }, 116 | { 117 | "userAdded": false, 118 | "type": "UnityEditor.SceneAsset", 119 | "ignore": false, 120 | "defaultInstantiationMode": 0, 121 | "supportsModification": false 122 | }, 123 | { 124 | "userAdded": false, 125 | "type": "UnityEngine.Shader", 126 | "ignore": true, 127 | "defaultInstantiationMode": 1, 128 | "supportsModification": true 129 | }, 130 | { 131 | "userAdded": false, 132 | "type": "UnityEngine.ShaderVariantCollection", 133 | "ignore": true, 134 | "defaultInstantiationMode": 1, 135 | "supportsModification": true 136 | }, 137 | { 138 | "userAdded": false, 139 | "type": "UnityEngine.Texture", 140 | "ignore": false, 141 | "defaultInstantiationMode": 0, 142 | "supportsModification": true 143 | }, 144 | { 145 | "userAdded": false, 146 | "type": "UnityEngine.Texture2D", 147 | "ignore": false, 148 | "defaultInstantiationMode": 0, 149 | "supportsModification": true 150 | }, 151 | { 152 | "userAdded": false, 153 | "type": "UnityEngine.Timeline.TimelineAsset", 154 | "ignore": false, 155 | "defaultInstantiationMode": 0, 156 | "supportsModification": true 157 | } 158 | ], 159 | "defaultDependencyTypeInfo": { 160 | "userAdded": false, 161 | "type": "", 162 | "ignore": false, 163 | "defaultInstantiationMode": 1, 164 | "supportsModification": true 165 | }, 166 | "newSceneOverride": 0 167 | } -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /ProjectSettings/boot.config: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QuantumCalzone/UnityGitPackageUpdater/ed0ac354789dc80f421d6346c16ca6ccd5559c5a/ProjectSettings/boot.config -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity Git Package Updater 2 | Easily update Unity packages hosted via git 3 | 4 | ![](https://imgur.com/ZTBjyRe.png) 5 | 6 | ## Location 7 | Window/Package Updater 8 | 9 | ## How to install 10 | ### Via 2019.4 and later 11 | - In Unity, open Window/Package Manager 12 | - Select the **+** button at the top left 13 | - Select **Add package from git URL...** 14 | - Paste in ```https://github.com/QuantumCalzone/UnityGitPackageUpdater.git#upm``` 15 | - Click the **Add** button 16 | 17 | ### Via 2019.3 and eariler 18 | - In your Unity Project, open up the manifest.json file located in your Packages folder 19 | - below ```"dependencies": {``` add the line ```"com.quantumcalzone.unityframework": "https://github.com/QuantumCalzone/UnityGitPackageUpdater.git#upm",``` 20 | -------------------------------------------------------------------------------- /UserSettings/EditorUserSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!162 &1 4 | EditorUserSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_ConfigSettings: 8 | vcSharedLogLevel: 9 | value: 0d5e400f0650 10 | flags: 0 11 | m_VCAutomaticAdd: 1 12 | m_VCDebugCom: 0 13 | m_VCDebugCmd: 0 14 | m_VCDebugOut: 0 15 | m_SemanticMergeMode: 2 16 | m_VCShowFailedCheckout: 1 17 | m_VCOverwriteFailedCheckoutAssets: 1 18 | m_VCOverlayIcons: 1 19 | m_VCAllowAsyncUpdate: 0 20 | -------------------------------------------------------------------------------- /UserSettings/Layouts/default-2021.dwlt: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 52 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 1 12 | m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_PixelRect: 16 | serializedVersion: 2 17 | x: 0 18 | y: 53 19 | width: 1680 20 | height: 907 21 | m_ShowMode: 4 22 | m_Title: Git Package Updater 23 | m_RootView: {fileID: 7} 24 | m_MinSize: {x: 875, y: 300} 25 | m_MaxSize: {x: 10000, y: 10000} 26 | m_Maximized: 1 27 | --- !u!114 &2 28 | MonoBehaviour: 29 | m_ObjectHideFlags: 52 30 | m_CorrespondingSourceObject: {fileID: 0} 31 | m_PrefabInstance: {fileID: 0} 32 | m_PrefabAsset: {fileID: 0} 33 | m_GameObject: {fileID: 0} 34 | m_Enabled: 1 35 | m_EditorHideFlags: 0 36 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} 37 | m_Name: ProjectBrowser 38 | m_EditorClassIdentifier: 39 | m_Children: [] 40 | m_Position: 41 | serializedVersion: 2 42 | x: 0 43 | y: 571 44 | width: 331 45 | height: 286 46 | m_MinSize: {x: 232, y: 271} 47 | m_MaxSize: {x: 10002, y: 10021} 48 | m_ActualView: {fileID: 19} 49 | m_Panes: 50 | - {fileID: 19} 51 | m_Selected: 0 52 | m_LastSelected: 0 53 | --- !u!114 &3 54 | MonoBehaviour: 55 | m_ObjectHideFlags: 52 56 | m_CorrespondingSourceObject: {fileID: 0} 57 | m_PrefabInstance: {fileID: 0} 58 | m_PrefabAsset: {fileID: 0} 59 | m_GameObject: {fileID: 0} 60 | m_Enabled: 1 61 | m_EditorHideFlags: 0 62 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} 63 | m_Name: 64 | m_EditorClassIdentifier: 65 | m_Children: 66 | - {fileID: 12} 67 | - {fileID: 2} 68 | m_Position: 69 | serializedVersion: 2 70 | x: 838 71 | y: 0 72 | width: 331 73 | height: 857 74 | m_MinSize: {x: 100, y: 200} 75 | m_MaxSize: {x: 8096, y: 16192} 76 | vertical: 1 77 | controlID: 91 78 | --- !u!114 &4 79 | MonoBehaviour: 80 | m_ObjectHideFlags: 52 81 | m_CorrespondingSourceObject: {fileID: 0} 82 | m_PrefabInstance: {fileID: 0} 83 | m_PrefabAsset: {fileID: 0} 84 | m_GameObject: {fileID: 0} 85 | m_Enabled: 1 86 | m_EditorHideFlags: 0 87 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} 88 | m_Name: ConsoleWindow 89 | m_EditorClassIdentifier: 90 | m_Children: [] 91 | m_Position: 92 | serializedVersion: 2 93 | x: 0 94 | y: 533 95 | width: 838 96 | height: 324 97 | m_MinSize: {x: 101, y: 121} 98 | m_MaxSize: {x: 4001, y: 4021} 99 | m_ActualView: {fileID: 17} 100 | m_Panes: 101 | - {fileID: 17} 102 | m_Selected: 0 103 | m_LastSelected: 0 104 | --- !u!114 &5 105 | MonoBehaviour: 106 | m_ObjectHideFlags: 52 107 | m_CorrespondingSourceObject: {fileID: 0} 108 | m_PrefabInstance: {fileID: 0} 109 | m_PrefabAsset: {fileID: 0} 110 | m_GameObject: {fileID: 0} 111 | m_Enabled: 1 112 | m_EditorHideFlags: 0 113 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} 114 | m_Name: 115 | m_EditorClassIdentifier: 116 | m_Children: 117 | - {fileID: 6} 118 | - {fileID: 4} 119 | m_Position: 120 | serializedVersion: 2 121 | x: 0 122 | y: 0 123 | width: 838 124 | height: 857 125 | m_MinSize: {x: 100, y: 200} 126 | m_MaxSize: {x: 8096, y: 16192} 127 | vertical: 1 128 | controlID: 51 129 | --- !u!114 &6 130 | MonoBehaviour: 131 | m_ObjectHideFlags: 52 132 | m_CorrespondingSourceObject: {fileID: 0} 133 | m_PrefabInstance: {fileID: 0} 134 | m_PrefabAsset: {fileID: 0} 135 | m_GameObject: {fileID: 0} 136 | m_Enabled: 1 137 | m_EditorHideFlags: 0 138 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} 139 | m_Name: PackageManagerWindow 140 | m_EditorClassIdentifier: 141 | m_Children: [] 142 | m_Position: 143 | serializedVersion: 2 144 | x: 0 145 | y: 0 146 | width: 838 147 | height: 533 148 | m_MinSize: {x: 801, y: 271} 149 | m_MaxSize: {x: 4001, y: 4021} 150 | m_ActualView: {fileID: 14} 151 | m_Panes: 152 | - {fileID: 20} 153 | - {fileID: 21} 154 | - {fileID: 16} 155 | - {fileID: 15} 156 | - {fileID: 14} 157 | m_Selected: 4 158 | m_LastSelected: 3 159 | --- !u!114 &7 160 | MonoBehaviour: 161 | m_ObjectHideFlags: 52 162 | m_CorrespondingSourceObject: {fileID: 0} 163 | m_PrefabInstance: {fileID: 0} 164 | m_PrefabAsset: {fileID: 0} 165 | m_GameObject: {fileID: 0} 166 | m_Enabled: 1 167 | m_EditorHideFlags: 1 168 | m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0} 169 | m_Name: 170 | m_EditorClassIdentifier: 171 | m_Children: 172 | - {fileID: 8} 173 | - {fileID: 9} 174 | - {fileID: 10} 175 | m_Position: 176 | serializedVersion: 2 177 | x: 0 178 | y: 0 179 | width: 1680 180 | height: 907 181 | m_MinSize: {x: 875, y: 300} 182 | m_MaxSize: {x: 10000, y: 10000} 183 | m_UseTopView: 1 184 | m_TopViewHeight: 30 185 | m_UseBottomView: 1 186 | m_BottomViewHeight: 20 187 | --- !u!114 &8 188 | MonoBehaviour: 189 | m_ObjectHideFlags: 52 190 | m_CorrespondingSourceObject: {fileID: 0} 191 | m_PrefabInstance: {fileID: 0} 192 | m_PrefabAsset: {fileID: 0} 193 | m_GameObject: {fileID: 0} 194 | m_Enabled: 1 195 | m_EditorHideFlags: 1 196 | m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0} 197 | m_Name: 198 | m_EditorClassIdentifier: 199 | m_Children: [] 200 | m_Position: 201 | serializedVersion: 2 202 | x: 0 203 | y: 0 204 | width: 1680 205 | height: 30 206 | m_MinSize: {x: 0, y: 0} 207 | m_MaxSize: {x: 0, y: 0} 208 | m_LastLoadedLayoutName: 209 | --- !u!114 &9 210 | MonoBehaviour: 211 | m_ObjectHideFlags: 52 212 | m_CorrespondingSourceObject: {fileID: 0} 213 | m_PrefabInstance: {fileID: 0} 214 | m_PrefabAsset: {fileID: 0} 215 | m_GameObject: {fileID: 0} 216 | m_Enabled: 1 217 | m_EditorHideFlags: 1 218 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} 219 | m_Name: 220 | m_EditorClassIdentifier: 221 | m_Children: 222 | - {fileID: 5} 223 | - {fileID: 3} 224 | - {fileID: 11} 225 | m_Position: 226 | serializedVersion: 2 227 | x: 0 228 | y: 30 229 | width: 1680 230 | height: 857 231 | m_MinSize: {x: 300, y: 200} 232 | m_MaxSize: {x: 24288, y: 16192} 233 | vertical: 0 234 | controlID: 90 235 | --- !u!114 &10 236 | MonoBehaviour: 237 | m_ObjectHideFlags: 52 238 | m_CorrespondingSourceObject: {fileID: 0} 239 | m_PrefabInstance: {fileID: 0} 240 | m_PrefabAsset: {fileID: 0} 241 | m_GameObject: {fileID: 0} 242 | m_Enabled: 1 243 | m_EditorHideFlags: 1 244 | m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0} 245 | m_Name: 246 | m_EditorClassIdentifier: 247 | m_Children: [] 248 | m_Position: 249 | serializedVersion: 2 250 | x: 0 251 | y: 887 252 | width: 1680 253 | height: 20 254 | m_MinSize: {x: 0, y: 0} 255 | m_MaxSize: {x: 0, y: 0} 256 | --- !u!114 &11 257 | MonoBehaviour: 258 | m_ObjectHideFlags: 52 259 | m_CorrespondingSourceObject: {fileID: 0} 260 | m_PrefabInstance: {fileID: 0} 261 | m_PrefabAsset: {fileID: 0} 262 | m_GameObject: {fileID: 0} 263 | m_Enabled: 1 264 | m_EditorHideFlags: 1 265 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} 266 | m_Name: 267 | m_EditorClassIdentifier: 268 | m_Children: [] 269 | m_Position: 270 | serializedVersion: 2 271 | x: 1169 272 | y: 0 273 | width: 511 274 | height: 857 275 | m_MinSize: {x: 276, y: 71} 276 | m_MaxSize: {x: 4001, y: 4021} 277 | m_ActualView: {fileID: 18} 278 | m_Panes: 279 | - {fileID: 18} 280 | m_Selected: 0 281 | m_LastSelected: 0 282 | --- !u!114 &12 283 | MonoBehaviour: 284 | m_ObjectHideFlags: 52 285 | m_CorrespondingSourceObject: {fileID: 0} 286 | m_PrefabInstance: {fileID: 0} 287 | m_PrefabAsset: {fileID: 0} 288 | m_GameObject: {fileID: 0} 289 | m_Enabled: 1 290 | m_EditorHideFlags: 1 291 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} 292 | m_Name: GitPackageUpdaterEditorWindow 293 | m_EditorClassIdentifier: 294 | m_Children: [] 295 | m_Position: 296 | serializedVersion: 2 297 | x: 0 298 | y: 0 299 | width: 331 300 | height: 571 301 | m_MinSize: {x: 102, y: 121} 302 | m_MaxSize: {x: 4002, y: 4021} 303 | m_ActualView: {fileID: 13} 304 | m_Panes: 305 | - {fileID: 22} 306 | - {fileID: 13} 307 | m_Selected: 1 308 | m_LastSelected: 0 309 | --- !u!114 &13 310 | MonoBehaviour: 311 | m_ObjectHideFlags: 52 312 | m_CorrespondingSourceObject: {fileID: 0} 313 | m_PrefabInstance: {fileID: 0} 314 | m_PrefabAsset: {fileID: 0} 315 | m_GameObject: {fileID: 0} 316 | m_Enabled: 1 317 | m_EditorHideFlags: 0 318 | m_Script: {fileID: 11500000, guid: ebc1eacd095939740ae4c45251497302, type: 3} 319 | m_Name: 320 | m_EditorClassIdentifier: 321 | m_MinSize: {x: 100, y: 100} 322 | m_MaxSize: {x: 4000, y: 4000} 323 | m_TitleContent: 324 | m_Text: Git Package Updater 325 | m_Image: {fileID: 0} 326 | m_Tooltip: 327 | m_Pos: 328 | serializedVersion: 2 329 | x: 838 330 | y: 83 331 | width: 329 332 | height: 550 333 | m_ViewDataDictionary: {fileID: 0} 334 | m_OverlayCanvas: 335 | m_LastAppliedPresetName: Default 336 | m_SaveData: [] 337 | --- !u!114 &14 338 | MonoBehaviour: 339 | m_ObjectHideFlags: 52 340 | m_CorrespondingSourceObject: {fileID: 0} 341 | m_PrefabInstance: {fileID: 0} 342 | m_PrefabAsset: {fileID: 0} 343 | m_GameObject: {fileID: 0} 344 | m_Enabled: 1 345 | m_EditorHideFlags: 0 346 | m_Script: {fileID: 13953, guid: 0000000000000000e000000000000000, type: 0} 347 | m_Name: 348 | m_EditorClassIdentifier: 349 | m_MinSize: {x: 800, y: 250} 350 | m_MaxSize: {x: 4000, y: 4000} 351 | m_TitleContent: 352 | m_Text: Package Manager 353 | m_Image: {fileID: -2824328813065806953, guid: 0000000000000000d000000000000000, type: 0} 354 | m_Tooltip: 355 | m_Pos: 356 | serializedVersion: 2 357 | x: 0 358 | y: 83 359 | width: 837 360 | height: 512 361 | m_ViewDataDictionary: {fileID: 0} 362 | m_OverlayCanvas: 363 | m_LastAppliedPresetName: Default 364 | m_SaveData: [] 365 | --- !u!114 &15 366 | MonoBehaviour: 367 | m_ObjectHideFlags: 52 368 | m_CorrespondingSourceObject: {fileID: 0} 369 | m_PrefabInstance: {fileID: 0} 370 | m_PrefabAsset: {fileID: 0} 371 | m_GameObject: {fileID: 0} 372 | m_Enabled: 1 373 | m_EditorHideFlags: 0 374 | m_Script: {fileID: 13854, guid: 0000000000000000e000000000000000, type: 0} 375 | m_Name: 376 | m_EditorClassIdentifier: 377 | m_MinSize: {x: 310, y: 200} 378 | m_MaxSize: {x: 4000, y: 4000} 379 | m_TitleContent: 380 | m_Text: Project Settings 381 | m_Image: {fileID: -5712115415447495865, guid: 0000000000000000d000000000000000, type: 0} 382 | m_Tooltip: 383 | m_Pos: 384 | serializedVersion: 2 385 | x: 0 386 | y: 83 387 | width: 837 388 | height: 511.5 389 | m_ViewDataDictionary: {fileID: 0} 390 | m_OverlayCanvas: 391 | m_LastAppliedPresetName: Default 392 | m_SaveData: [] 393 | m_PosLeft: {x: 0, y: 0} 394 | m_PosRight: {x: 0, y: 0} 395 | m_Scope: 1 396 | m_SplitterFlex: 0.2 397 | m_SearchText: 398 | m_TreeViewState: 399 | scrollPos: {x: 0, y: 0} 400 | m_SelectedIDs: 272fd499 401 | m_LastClickedID: -1714147545 402 | m_ExpandedIDs: a01a5fa600000000 403 | m_RenameOverlay: 404 | m_UserAcceptedRename: 0 405 | m_Name: 406 | m_OriginalName: 407 | m_EditFieldRect: 408 | serializedVersion: 2 409 | x: 0 410 | y: 0 411 | width: 0 412 | height: 0 413 | m_UserData: 0 414 | m_IsWaitingForDelay: 0 415 | m_IsRenaming: 0 416 | m_OriginalEventType: 11 417 | m_IsRenamingFilename: 0 418 | m_ClientGUIView: {fileID: 0} 419 | m_SearchString: 420 | --- !u!114 &16 421 | MonoBehaviour: 422 | m_ObjectHideFlags: 52 423 | m_CorrespondingSourceObject: {fileID: 0} 424 | m_PrefabInstance: {fileID: 0} 425 | m_PrefabAsset: {fileID: 0} 426 | m_GameObject: {fileID: 0} 427 | m_Enabled: 1 428 | m_EditorHideFlags: 0 429 | m_Script: {fileID: 13855, guid: 0000000000000000e000000000000000, type: 0} 430 | m_Name: 431 | m_EditorClassIdentifier: 432 | m_MinSize: {x: 310, y: 200} 433 | m_MaxSize: {x: 4000, y: 4000} 434 | m_TitleContent: 435 | m_Text: Preferences 436 | m_Image: {fileID: -5712115415447495865, guid: 0000000000000000d000000000000000, type: 0} 437 | m_Tooltip: 438 | m_Pos: 439 | serializedVersion: 2 440 | x: 0 441 | y: 75 442 | width: 969 443 | height: 520 444 | m_ViewDataDictionary: {fileID: 0} 445 | m_OverlayCanvas: 446 | m_LastAppliedPresetName: Default 447 | m_SaveData: [] 448 | m_PosLeft: {x: 0, y: 0} 449 | m_PosRight: {x: 0, y: 0} 450 | m_Scope: 0 451 | m_SplitterFlex: 0.2 452 | m_SearchText: 453 | m_TreeViewState: 454 | scrollPos: {x: 0, y: 0} 455 | m_SelectedIDs: 456 | m_LastClickedID: 0 457 | m_ExpandedIDs: 458 | m_RenameOverlay: 459 | m_UserAcceptedRename: 0 460 | m_Name: 461 | m_OriginalName: 462 | m_EditFieldRect: 463 | serializedVersion: 2 464 | x: 0 465 | y: 0 466 | width: 0 467 | height: 0 468 | m_UserData: 0 469 | m_IsWaitingForDelay: 0 470 | m_IsRenaming: 0 471 | m_OriginalEventType: 11 472 | m_IsRenamingFilename: 0 473 | m_ClientGUIView: {fileID: 0} 474 | m_SearchString: 475 | --- !u!114 &17 476 | MonoBehaviour: 477 | m_ObjectHideFlags: 52 478 | m_CorrespondingSourceObject: {fileID: 0} 479 | m_PrefabInstance: {fileID: 0} 480 | m_PrefabAsset: {fileID: 0} 481 | m_GameObject: {fileID: 0} 482 | m_Enabled: 1 483 | m_EditorHideFlags: 0 484 | m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0} 485 | m_Name: 486 | m_EditorClassIdentifier: 487 | m_MinSize: {x: 100, y: 100} 488 | m_MaxSize: {x: 4000, y: 4000} 489 | m_TitleContent: 490 | m_Text: Console 491 | m_Image: {fileID: -4327648978806127646, guid: 0000000000000000d000000000000000, type: 0} 492 | m_Tooltip: 493 | m_Pos: 494 | serializedVersion: 2 495 | x: 0 496 | y: 616 497 | width: 837 498 | height: 303 499 | m_ViewDataDictionary: {fileID: 0} 500 | m_OverlayCanvas: 501 | m_LastAppliedPresetName: Default 502 | m_SaveData: [] 503 | --- !u!114 &18 504 | MonoBehaviour: 505 | m_ObjectHideFlags: 52 506 | m_CorrespondingSourceObject: {fileID: 0} 507 | m_PrefabInstance: {fileID: 0} 508 | m_PrefabAsset: {fileID: 0} 509 | m_GameObject: {fileID: 0} 510 | m_Enabled: 1 511 | m_EditorHideFlags: 1 512 | m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} 513 | m_Name: 514 | m_EditorClassIdentifier: 515 | m_MinSize: {x: 275, y: 50} 516 | m_MaxSize: {x: 4000, y: 4000} 517 | m_TitleContent: 518 | m_Text: Inspector 519 | m_Image: {fileID: -2667387946076563598, guid: 0000000000000000d000000000000000, type: 0} 520 | m_Tooltip: 521 | m_Pos: 522 | serializedVersion: 2 523 | x: 1169 524 | y: 83 525 | width: 510 526 | height: 836 527 | m_ViewDataDictionary: {fileID: 0} 528 | m_OverlayCanvas: 529 | m_LastAppliedPresetName: Default 530 | m_SaveData: [] 531 | m_ObjectsLockedBeforeSerialization: [] 532 | m_InstanceIDsLockedBeforeSerialization: 533 | m_PreviewResizer: 534 | m_CachedPref: -160 535 | m_ControlHash: -371814159 536 | m_PrefName: Preview_InspectorPreview 537 | m_LastInspectedObjectInstanceID: -1 538 | m_LastVerticalScrollValue: 0 539 | m_GlobalObjectId: 540 | m_InspectorMode: 0 541 | m_LockTracker: 542 | m_IsLocked: 0 543 | m_PreviewWindow: {fileID: 0} 544 | --- !u!114 &19 545 | MonoBehaviour: 546 | m_ObjectHideFlags: 52 547 | m_CorrespondingSourceObject: {fileID: 0} 548 | m_PrefabInstance: {fileID: 0} 549 | m_PrefabAsset: {fileID: 0} 550 | m_GameObject: {fileID: 0} 551 | m_Enabled: 1 552 | m_EditorHideFlags: 1 553 | m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} 554 | m_Name: 555 | m_EditorClassIdentifier: 556 | m_MinSize: {x: 230, y: 250} 557 | m_MaxSize: {x: 10000, y: 10000} 558 | m_TitleContent: 559 | m_Text: Project 560 | m_Image: {fileID: -5467254957812901981, guid: 0000000000000000d000000000000000, type: 0} 561 | m_Tooltip: 562 | m_Pos: 563 | serializedVersion: 2 564 | x: 838 565 | y: 654 566 | width: 329 567 | height: 265 568 | m_ViewDataDictionary: {fileID: 0} 569 | m_OverlayCanvas: 570 | m_LastAppliedPresetName: Default 571 | m_SaveData: [] 572 | m_SearchFilter: 573 | m_NameFilter: 574 | m_ClassNames: [] 575 | m_AssetLabels: [] 576 | m_AssetBundleNames: [] 577 | m_VersionControlStates: [] 578 | m_SoftLockControlStates: [] 579 | m_ReferencingInstanceIDs: 580 | m_SceneHandles: 581 | m_ShowAllHits: 0 582 | m_SkipHidden: 0 583 | m_SearchArea: 1 584 | m_Folders: [] 585 | m_Globs: [] 586 | m_OriginalText: 587 | m_ViewMode: 0 588 | m_StartGridSize: 16 589 | m_LastFolders: [] 590 | m_LastFoldersGridSize: -1 591 | m_LastProjectPath: /Users/georgekatsaros/Projects/UnityGitPackageUpdater 592 | m_LockTracker: 593 | m_IsLocked: 0 594 | m_FolderTreeState: 595 | scrollPos: {x: 0, y: 0} 596 | m_SelectedIDs: 18090200 597 | m_LastClickedID: 133400 598 | m_ExpandedIDs: 0000000000410000024100000441000006410000 599 | m_RenameOverlay: 600 | m_UserAcceptedRename: 0 601 | m_Name: 602 | m_OriginalName: 603 | m_EditFieldRect: 604 | serializedVersion: 2 605 | x: 0 606 | y: 0 607 | width: 0 608 | height: 0 609 | m_UserData: 0 610 | m_IsWaitingForDelay: 0 611 | m_IsRenaming: 0 612 | m_OriginalEventType: 11 613 | m_IsRenamingFilename: 1 614 | m_ClientGUIView: {fileID: 0} 615 | m_SearchString: 616 | m_CreateAssetUtility: 617 | m_EndAction: {fileID: 0} 618 | m_InstanceID: 0 619 | m_Path: 620 | m_Icon: {fileID: 0} 621 | m_ResourceFile: 622 | m_AssetTreeState: 623 | scrollPos: {x: 0, y: 0} 624 | m_SelectedIDs: 625 | m_LastClickedID: 0 626 | m_ExpandedIDs: ffffffff0000000000410000024100000441000006410000 627 | m_RenameOverlay: 628 | m_UserAcceptedRename: 0 629 | m_Name: 630 | m_OriginalName: 631 | m_EditFieldRect: 632 | serializedVersion: 2 633 | x: 0 634 | y: 0 635 | width: 0 636 | height: 0 637 | m_UserData: 0 638 | m_IsWaitingForDelay: 0 639 | m_IsRenaming: 0 640 | m_OriginalEventType: 11 641 | m_IsRenamingFilename: 1 642 | m_ClientGUIView: {fileID: 2} 643 | m_SearchString: 644 | m_CreateAssetUtility: 645 | m_EndAction: {fileID: 0} 646 | m_InstanceID: 0 647 | m_Path: 648 | m_Icon: {fileID: 0} 649 | m_ResourceFile: 650 | m_ListAreaState: 651 | m_SelectedInstanceIDs: 652 | m_LastClickedInstanceID: 0 653 | m_HadKeyboardFocusLastEvent: 0 654 | m_ExpandedInstanceIDs: c6230000 655 | m_RenameOverlay: 656 | m_UserAcceptedRename: 0 657 | m_Name: 658 | m_OriginalName: 659 | m_EditFieldRect: 660 | serializedVersion: 2 661 | x: 0 662 | y: 0 663 | width: 0 664 | height: 0 665 | m_UserData: 0 666 | m_IsWaitingForDelay: 0 667 | m_IsRenaming: 0 668 | m_OriginalEventType: 11 669 | m_IsRenamingFilename: 1 670 | m_ClientGUIView: {fileID: 0} 671 | m_CreateAssetUtility: 672 | m_EndAction: {fileID: 0} 673 | m_InstanceID: 0 674 | m_Path: 675 | m_Icon: {fileID: 0} 676 | m_ResourceFile: 677 | m_NewAssetIndexInList: -1 678 | m_ScrollPosition: {x: 0, y: 0} 679 | m_GridSize: 16 680 | m_SkipHiddenPackages: 0 681 | m_DirectoriesAreaWidth: 115 682 | --- !u!114 &20 683 | MonoBehaviour: 684 | m_ObjectHideFlags: 52 685 | m_CorrespondingSourceObject: {fileID: 0} 686 | m_PrefabInstance: {fileID: 0} 687 | m_PrefabAsset: {fileID: 0} 688 | m_GameObject: {fileID: 0} 689 | m_Enabled: 1 690 | m_EditorHideFlags: 1 691 | m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0} 692 | m_Name: 693 | m_EditorClassIdentifier: 694 | m_MinSize: {x: 200, y: 200} 695 | m_MaxSize: {x: 4000, y: 4000} 696 | m_TitleContent: 697 | m_Text: Game 698 | m_Image: {fileID: -6423792434712278376, guid: 0000000000000000d000000000000000, type: 0} 699 | m_Tooltip: 700 | m_Pos: 701 | serializedVersion: 2 702 | x: 0 703 | y: 83 704 | width: 837 705 | height: 511.5 706 | m_ViewDataDictionary: {fileID: 0} 707 | m_OverlayCanvas: 708 | m_LastAppliedPresetName: Default 709 | m_SaveData: [] 710 | m_SerializedViewNames: [] 711 | m_SerializedViewValues: [] 712 | m_PlayModeViewName: GameView 713 | m_ShowGizmos: 0 714 | m_TargetDisplay: 0 715 | m_ClearColor: {r: 0, g: 0, b: 0, a: 0} 716 | m_TargetSize: {x: 837, y: 490.5} 717 | m_TextureFilterMode: 0 718 | m_TextureHideFlags: 61 719 | m_RenderIMGUI: 1 720 | m_EnterPlayModeBehavior: 0 721 | m_UseMipMap: 0 722 | m_VSyncEnabled: 0 723 | m_Gizmos: 0 724 | m_Stats: 0 725 | m_SelectedSizes: 00000000000000000000000000000000000000000000000000000000000000000000000000000000 726 | m_ZoomArea: 727 | m_HRangeLocked: 0 728 | m_VRangeLocked: 0 729 | hZoomLockedByDefault: 0 730 | vZoomLockedByDefault: 0 731 | m_HBaseRangeMin: -418.5 732 | m_HBaseRangeMax: 418.5 733 | m_VBaseRangeMin: -255.75 734 | m_VBaseRangeMax: 255.75 735 | m_HAllowExceedBaseRangeMin: 1 736 | m_HAllowExceedBaseRangeMax: 1 737 | m_VAllowExceedBaseRangeMin: 1 738 | m_VAllowExceedBaseRangeMax: 1 739 | m_ScaleWithWindow: 0 740 | m_HSlider: 0 741 | m_VSlider: 0 742 | m_IgnoreScrollWheelUntilClicked: 0 743 | m_EnableMouseInput: 1 744 | m_EnableSliderZoomHorizontal: 0 745 | m_EnableSliderZoomVertical: 0 746 | m_UniformScale: 1 747 | m_UpDirection: 1 748 | m_DrawArea: 749 | serializedVersion: 2 750 | x: 0 751 | y: 0 752 | width: 837 753 | height: 511.5 754 | m_Scale: {x: 1, y: 1} 755 | m_Translation: {x: 418.5, y: 255.75} 756 | m_MarginLeft: 0 757 | m_MarginRight: 0 758 | m_MarginTop: 0 759 | m_MarginBottom: 0 760 | m_LastShownAreaInsideMargins: 761 | serializedVersion: 2 762 | x: -418.5 763 | y: -255.75 764 | width: 837 765 | height: 511.5 766 | m_MinimalGUI: 1 767 | m_defaultScale: 1 768 | m_LastWindowPixelSize: {x: 837, y: 511.5} 769 | m_ClearInEditMode: 1 770 | m_NoCameraWarning: 1 771 | m_LowResolutionForAspectRatios: 00000000000000000000 772 | m_XRRenderMode: 0 773 | m_RenderTexture: {fileID: 0} 774 | --- !u!114 &21 775 | MonoBehaviour: 776 | m_ObjectHideFlags: 52 777 | m_CorrespondingSourceObject: {fileID: 0} 778 | m_PrefabInstance: {fileID: 0} 779 | m_PrefabAsset: {fileID: 0} 780 | m_GameObject: {fileID: 0} 781 | m_Enabled: 1 782 | m_EditorHideFlags: 1 783 | m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} 784 | m_Name: 785 | m_EditorClassIdentifier: 786 | m_MinSize: {x: 200, y: 200} 787 | m_MaxSize: {x: 4000, y: 4000} 788 | m_TitleContent: 789 | m_Text: Scene 790 | m_Image: {fileID: 2593428753322112591, guid: 0000000000000000d000000000000000, type: 0} 791 | m_Tooltip: 792 | m_Pos: 793 | serializedVersion: 2 794 | x: 0 795 | y: 75 796 | width: 969 797 | height: 520 798 | m_ViewDataDictionary: {fileID: 0} 799 | m_OverlayCanvas: 800 | m_LastAppliedPresetName: Default 801 | m_SaveData: 802 | - dockPosition: 0 803 | containerId: overlay-toolbar__top 804 | floating: 0 805 | collapsed: 0 806 | displayed: 1 807 | snapOffset: {x: 0, y: 0} 808 | snapOffsetDelta: {x: 0, y: 0} 809 | snapCorner: 3 810 | id: Tool Settings 811 | index: 0 812 | layout: 1 813 | - dockPosition: 0 814 | containerId: overlay-toolbar__top 815 | floating: 0 816 | collapsed: 0 817 | displayed: 1 818 | snapOffset: {x: -141, y: 149} 819 | snapOffsetDelta: {x: 0, y: 0} 820 | snapCorner: 1 821 | id: unity-grid-and-snap-toolbar 822 | index: 1 823 | layout: 1 824 | - dockPosition: 1 825 | containerId: overlay-toolbar__top 826 | floating: 0 827 | collapsed: 0 828 | displayed: 1 829 | snapOffset: {x: 0, y: 0} 830 | snapOffsetDelta: {x: 0, y: 0} 831 | snapCorner: 0 832 | id: unity-scene-view-toolbar 833 | index: 0 834 | layout: 1 835 | - dockPosition: 1 836 | containerId: overlay-toolbar__top 837 | floating: 0 838 | collapsed: 0 839 | displayed: 0 840 | snapOffset: {x: 0, y: 0} 841 | snapOffsetDelta: {x: 0, y: 0} 842 | snapCorner: 1 843 | id: unity-search-toolbar 844 | index: 1 845 | layout: 1 846 | - dockPosition: 0 847 | containerId: overlay-container--left 848 | floating: 0 849 | collapsed: 0 850 | displayed: 1 851 | snapOffset: {x: 0, y: 0} 852 | snapOffsetDelta: {x: 0, y: 0} 853 | snapCorner: 0 854 | id: unity-transform-toolbar 855 | index: 0 856 | layout: 2 857 | - dockPosition: 0 858 | containerId: overlay-container--right 859 | floating: 0 860 | collapsed: 0 861 | displayed: 1 862 | snapOffset: {x: 67.5, y: 86} 863 | snapOffsetDelta: {x: 0, y: 0} 864 | snapCorner: 0 865 | id: Orientation 866 | index: 0 867 | layout: 4 868 | - dockPosition: 1 869 | containerId: overlay-container--right 870 | floating: 0 871 | collapsed: 0 872 | displayed: 0 873 | snapOffset: {x: 0, y: 0} 874 | snapOffsetDelta: {x: 0, y: 0} 875 | snapCorner: 0 876 | id: Scene View/Light Settings 877 | index: 0 878 | layout: 4 879 | - dockPosition: 1 880 | containerId: overlay-container--right 881 | floating: 0 882 | collapsed: 0 883 | displayed: 0 884 | snapOffset: {x: 0, y: 0} 885 | snapOffsetDelta: {x: 0, y: 0} 886 | snapCorner: 0 887 | id: Scene View/Camera 888 | index: 1 889 | layout: 4 890 | - dockPosition: 1 891 | containerId: overlay-container--right 892 | floating: 0 893 | collapsed: 0 894 | displayed: 0 895 | snapOffset: {x: 0, y: 0} 896 | snapOffsetDelta: {x: 0, y: 0} 897 | snapCorner: 0 898 | id: Scene View/Cloth Constraints 899 | index: 2 900 | layout: 4 901 | - dockPosition: 1 902 | containerId: overlay-container--right 903 | floating: 0 904 | collapsed: 0 905 | displayed: 0 906 | snapOffset: {x: 0, y: 0} 907 | snapOffsetDelta: {x: 0, y: 0} 908 | snapCorner: 0 909 | id: Scene View/Cloth Collisions 910 | index: 3 911 | layout: 4 912 | - dockPosition: 1 913 | containerId: overlay-container--right 914 | floating: 0 915 | collapsed: 0 916 | displayed: 0 917 | snapOffset: {x: 0, y: 0} 918 | snapOffsetDelta: {x: 0, y: 0} 919 | snapCorner: 0 920 | id: Scene View/Navmesh Display 921 | index: 4 922 | layout: 4 923 | - dockPosition: 1 924 | containerId: overlay-container--right 925 | floating: 0 926 | collapsed: 0 927 | displayed: 0 928 | snapOffset: {x: 0, y: 0} 929 | snapOffsetDelta: {x: 0, y: 0} 930 | snapCorner: 0 931 | id: Scene View/Agent Display 932 | index: 5 933 | layout: 4 934 | - dockPosition: 1 935 | containerId: overlay-container--right 936 | floating: 0 937 | collapsed: 0 938 | displayed: 0 939 | snapOffset: {x: 0, y: 0} 940 | snapOffsetDelta: {x: 0, y: 0} 941 | snapCorner: 0 942 | id: Scene View/Obstacle Display 943 | index: 6 944 | layout: 4 945 | - dockPosition: 1 946 | containerId: overlay-container--right 947 | floating: 0 948 | collapsed: 0 949 | displayed: 0 950 | snapOffset: {x: 0, y: 0} 951 | snapOffsetDelta: {x: 0, y: 0} 952 | snapCorner: 0 953 | id: Scene View/Occlusion Culling 954 | index: 7 955 | layout: 4 956 | - dockPosition: 1 957 | containerId: overlay-container--right 958 | floating: 0 959 | collapsed: 0 960 | displayed: 0 961 | snapOffset: {x: 0, y: 0} 962 | snapOffsetDelta: {x: 0, y: 0} 963 | snapCorner: 0 964 | id: Scene View/Physics Debugger 965 | index: 8 966 | layout: 4 967 | - dockPosition: 1 968 | containerId: overlay-container--right 969 | floating: 0 970 | collapsed: 0 971 | displayed: 0 972 | snapOffset: {x: 0, y: 0} 973 | snapOffsetDelta: {x: 0, y: 0} 974 | snapCorner: 0 975 | id: Scene View/Scene Visibility 976 | index: 9 977 | layout: 4 978 | - dockPosition: 1 979 | containerId: overlay-container--right 980 | floating: 0 981 | collapsed: 0 982 | displayed: 0 983 | snapOffset: {x: 0, y: 0} 984 | snapOffsetDelta: {x: 0, y: 0} 985 | snapCorner: 0 986 | id: Scene View/Particles 987 | index: 10 988 | layout: 4 989 | m_WindowGUID: 7a55d06845cde401f9dab3225f884a8a 990 | m_Gizmos: 1 991 | m_OverrideSceneCullingMask: 6917529027641081856 992 | m_SceneIsLit: 1 993 | m_SceneLighting: 1 994 | m_2DMode: 0 995 | m_isRotationLocked: 0 996 | m_PlayAudio: 0 997 | m_AudioPlay: 0 998 | m_Position: 999 | m_Target: {x: 0, y: 0, z: 0} 1000 | speed: 2 1001 | m_Value: {x: 0, y: 0, z: 0} 1002 | m_RenderMode: 0 1003 | m_CameraMode: 1004 | drawMode: 0 1005 | name: Shaded 1006 | section: Shading Mode 1007 | m_ValidateTrueMetals: 0 1008 | m_DoValidateTrueMetals: 0 1009 | m_ExposureSliderValue: 0 1010 | m_SceneViewState: 1011 | m_AlwaysRefresh: 0 1012 | showFog: 1 1013 | showSkybox: 1 1014 | showFlares: 1 1015 | showImageEffects: 1 1016 | showParticleSystems: 1 1017 | showVisualEffectGraphs: 1 1018 | m_FxEnabled: 1 1019 | m_Grid: 1020 | xGrid: 1021 | m_Fade: 1022 | m_Target: 0 1023 | speed: 2 1024 | m_Value: 0 1025 | m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} 1026 | m_Pivot: {x: 0, y: 0, z: 0} 1027 | m_Size: {x: 0, y: 0} 1028 | yGrid: 1029 | m_Fade: 1030 | m_Target: 1 1031 | speed: 2 1032 | m_Value: 1 1033 | m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} 1034 | m_Pivot: {x: 0, y: 0, z: 0} 1035 | m_Size: {x: 1, y: 1} 1036 | zGrid: 1037 | m_Fade: 1038 | m_Target: 0 1039 | speed: 2 1040 | m_Value: 0 1041 | m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} 1042 | m_Pivot: {x: 0, y: 0, z: 0} 1043 | m_Size: {x: 0, y: 0} 1044 | m_ShowGrid: 1 1045 | m_GridAxis: 1 1046 | m_gridOpacity: 0.5 1047 | m_Rotation: 1048 | m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} 1049 | speed: 2 1050 | m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} 1051 | m_Size: 1052 | m_Target: 10 1053 | speed: 2 1054 | m_Value: 10 1055 | m_Ortho: 1056 | m_Target: 0 1057 | speed: 2 1058 | m_Value: 0 1059 | m_CameraSettings: 1060 | m_Speed: 1 1061 | m_SpeedNormalized: 0.5 1062 | m_SpeedMin: 0.001 1063 | m_SpeedMax: 2 1064 | m_EasingEnabled: 1 1065 | m_EasingDuration: 0.4 1066 | m_AccelerationEnabled: 1 1067 | m_FieldOfViewHorizontalOrVertical: 60 1068 | m_NearClip: 0.03 1069 | m_FarClip: 10000 1070 | m_DynamicClip: 1 1071 | m_OcclusionCulling: 0 1072 | m_LastSceneViewRotation: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} 1073 | m_LastSceneViewOrtho: 0 1074 | m_ReplacementShader: {fileID: 0} 1075 | m_ReplacementString: 1076 | m_SceneVisActive: 1 1077 | m_LastLockedObject: {fileID: 0} 1078 | m_ViewIsLockedToObject: 0 1079 | --- !u!114 &22 1080 | MonoBehaviour: 1081 | m_ObjectHideFlags: 52 1082 | m_CorrespondingSourceObject: {fileID: 0} 1083 | m_PrefabInstance: {fileID: 0} 1084 | m_PrefabAsset: {fileID: 0} 1085 | m_GameObject: {fileID: 0} 1086 | m_Enabled: 1 1087 | m_EditorHideFlags: 1 1088 | m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} 1089 | m_Name: 1090 | m_EditorClassIdentifier: 1091 | m_MinSize: {x: 200, y: 200} 1092 | m_MaxSize: {x: 4000, y: 4000} 1093 | m_TitleContent: 1094 | m_Text: Hierarchy 1095 | m_Image: {fileID: 7966133145522015247, guid: 0000000000000000d000000000000000, type: 0} 1096 | m_Tooltip: 1097 | m_Pos: 1098 | serializedVersion: 2 1099 | x: 838 1100 | y: 83 1101 | width: 329.5 1102 | height: 550 1103 | m_ViewDataDictionary: {fileID: 0} 1104 | m_OverlayCanvas: 1105 | m_LastAppliedPresetName: Default 1106 | m_SaveData: [] 1107 | m_SceneHierarchy: 1108 | m_TreeViewState: 1109 | scrollPos: {x: 0, y: 0} 1110 | m_SelectedIDs: 1111 | m_LastClickedID: 0 1112 | m_ExpandedIDs: 38fbffff 1113 | m_RenameOverlay: 1114 | m_UserAcceptedRename: 0 1115 | m_Name: 1116 | m_OriginalName: 1117 | m_EditFieldRect: 1118 | serializedVersion: 2 1119 | x: 0 1120 | y: 0 1121 | width: 0 1122 | height: 0 1123 | m_UserData: 0 1124 | m_IsWaitingForDelay: 0 1125 | m_IsRenaming: 0 1126 | m_OriginalEventType: 11 1127 | m_IsRenamingFilename: 0 1128 | m_ClientGUIView: {fileID: 0} 1129 | m_SearchString: 1130 | m_ExpandedScenes: [] 1131 | m_CurrenRootInstanceID: 0 1132 | m_LockTracker: 1133 | m_IsLocked: 0 1134 | m_CurrentSortingName: TransformSorting 1135 | m_WindowGUID: dc0c4887af6a74e8ebe53a3a49051ecb 1136 | -------------------------------------------------------------------------------- /UserSettings/Search.settings: -------------------------------------------------------------------------------- 1 | {} --------------------------------------------------------------------------------