diff --git a/Assets/.gitkeep b/Assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Packages/.gitignore b/Packages/.gitignore new file mode 100644 index 0000000..39fd3c1 --- /dev/null +++ b/Packages/.gitignore @@ -0,0 +1,2 @@ +com.vrchat.*/ +!com.vrchat.core.*/ diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor.meta b/Packages/com.vrchat.core.vpm-resolver/Editor.meta new file mode 100644 index 0000000..0f0ccc3 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1058b5946fb23674cad310b1f4bd5b61 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies.meta new file mode 100644 index 0000000..72fd76e --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f4e8a9c940ed84943bb0433246ec42bb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/SemanticVersioning.dll b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/SemanticVersioning.dll new file mode 100644 index 0000000..e021672 Binary files /dev/null and b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/SemanticVersioning.dll differ diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/SemanticVersioning.dll.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/SemanticVersioning.dll.meta new file mode 100644 index 0000000..cc2ba32 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/SemanticVersioning.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 65d82c6541a90644390df2caa29c2209 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.File.dll b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.File.dll new file mode 100644 index 0000000..1600c05 Binary files /dev/null and b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.File.dll differ diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.File.dll.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.File.dll.meta new file mode 100644 index 0000000..53d8dd7 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.File.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 0c56563958a156145b708466db0e35cc +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.License.md b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.License.md new file mode 100644 index 0000000..d9f6ecd --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.License.md @@ -0,0 +1,23 @@ + +The MIT License (MIT) + +Copyright (c) 2020 Kurai András +Copyright (c) 2022-Present VRChat Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.License.md.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.License.md.meta new file mode 100644 index 0000000..597bf25 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.License.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 598e678340a8c6e4e9a3debcdc6a9579 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.dll b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.dll new file mode 100644 index 0000000..d433ac6 Binary files /dev/null and b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.dll differ diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.dll.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.dll.meta new file mode 100644 index 0000000..932224a --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.Sinks.Unity3D.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: cfc1421f162f0354d8a64d569417d9c9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.dll b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.dll new file mode 100644 index 0000000..5b77642 Binary files /dev/null and b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.dll differ diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.dll.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.dll.meta new file mode 100644 index 0000000..2ef53f9 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/Serilog.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 702a5a2579f8edf43b5e7bfb2f52e2c6 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/YamlDotNet.dll b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/YamlDotNet.dll new file mode 100644 index 0000000..d0bbb75 Binary files /dev/null and b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/YamlDotNet.dll differ diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/YamlDotNet.dll.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/YamlDotNet.dll.meta new file mode 100644 index 0000000..4b5ebc3 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/YamlDotNet.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 9fd667e0ec0d1d84c9e17dad407f2272 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/vpm-core-lib.dll b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/vpm-core-lib.dll new file mode 100644 index 0000000..8e5dedf Binary files /dev/null and b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/vpm-core-lib.dll differ diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/vpm-core-lib.dll.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/vpm-core-lib.dll.meta new file mode 100644 index 0000000..71e73f6 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Dependencies/vpm-core-lib.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 140aba2a5b760e94cb3ed9f39a52610a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 1 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/EditorCoroutine.cs b/Packages/com.vrchat.core.vpm-resolver/Editor/EditorCoroutine.cs new file mode 100644 index 0000000..ecb86c9 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/EditorCoroutine.cs @@ -0,0 +1,61 @@ +using System.Collections; +using UnityEditor; + +namespace VRC.PackageManagement.Resolver +{ + public class EditorCoroutine + { + public static EditorCoroutine Start( IEnumerator _routine ) + { + EditorCoroutine coroutine = new EditorCoroutine(_routine); + coroutine.start(); + return coroutine; + } + + + public static EditorCoroutine Start(System.Action _action) + { + EditorCoroutine coroutine = new EditorCoroutine(_action); + coroutine.start(); + return coroutine; + } + + readonly IEnumerator routine; + EditorCoroutine( IEnumerator _routine ) + { + routine = _routine; + } + + readonly System.Action action; + EditorCoroutine(System.Action _action) + { + action = _action; + } + + void start() + { + EditorApplication.update += update; + } + public void stop() + { + EditorApplication.update -= update; + } + + void update() + { + if (routine != null) + { + if (!routine.MoveNext()) + stop(); + } + else if (action != null) + { + action(); + stop(); + } + else + stop(); + + } + } +} \ No newline at end of file diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/EditorCoroutine.cs.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/EditorCoroutine.cs.meta new file mode 100644 index 0000000..4f1370c --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/EditorCoroutine.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2d750f141971477694e83947d3713160 +timeCreated: 1659037261 \ No newline at end of file diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Resolver.cs b/Packages/com.vrchat.core.vpm-resolver/Editor/Resolver.cs new file mode 100644 index 0000000..8d70fe1 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Resolver.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using Serilog; +using Serilog.Sinks.Unity3D; +using UnityEditor; +using UnityEngine; +using VRC.PackageManagement.Core; +using VRC.PackageManagement.Core.Types; +using VRC.PackageManagement.Core.Types.Packages; + +namespace VRC.PackageManagement.Resolver +{ + + [InitializeOnLoad] + public class Resolver + { + private const string _projectLoadedKey = "PROJECT_LOADED"; + + private static string _projectDir; + public static string ProjectDir + { + get + { + if (_projectDir != null) + { + return _projectDir; + } + + try + { + _projectDir = new DirectoryInfo(Assembly.GetExecutingAssembly().Location).Parent.Parent.Parent + .FullName; + return _projectDir; + } + catch (Exception) + { + return ""; + } + } + } + + static Resolver() + { + SetupLogging(); + if (!SessionState.GetBool(_projectLoadedKey, false)) + { + EditorCoroutine.Start(CheckResolveNeeded()); + } + } + + private static void SetupLogging() + { + VRCLibLogger.SetLoggerDirectly( + new LoggerConfiguration() + .MinimumLevel.Information() + .WriteTo.Unity3D() + .CreateLogger() + ); + } + + private static IEnumerator CheckResolveNeeded() + { + SessionState.SetBool(_projectLoadedKey, true); + + //Wait for project to finish compiling + while (EditorApplication.isCompiling || EditorApplication.isUpdating) + { + yield return null; + } + + try + { + + if (string.IsNullOrWhiteSpace(ProjectDir)) + { + yield break; + } + + if (VPMProjectManifest.ResolveIsNeeded(ProjectDir)) + { + Debug.Log($"Resolve needed."); + var result = EditorUtility.DisplayDialog("VRChat Package Management", + $"This project requires some VRChat Packages which are not in the project yet.\n\nPress OK to download and install them.", + "OK", "Show Me What's Missing"); + if (result) + { + ResolveStatic(ProjectDir); + } + else + { + ResolverWindow.ShowWindow(); + } + } + } + catch (Exception) + { + // Unity says we can't open windows from this function so it throws an exception but also works fine. + } + } + + public static bool VPMManifestExists() + { + return VPMProjectManifest.Exists(ProjectDir, out _); + } + + public static void CreateManifest() + { + VPMProjectManifest.Load(ProjectDir); + ResolverWindow.Refresh(); + } + + public static void ResolveManifest() + { + ResolveStatic(ProjectDir); + } + + public static void ResolveStatic(string dir) + { + // Todo: calculate and show actual progress + EditorUtility.DisplayProgressBar($"Getting all VRChat Packages", "Downloading and Installing...", 0.5f); + VPMProjectManifest.Resolve(ProjectDir); + EditorUtility.ClearProgressBar(); + ForceRefresh(); + } + + public static List GetAllVersionsOf(string id) + { + var project = new UnityProject(ProjectDir); + + var versions = new List(); + foreach (var provider in Repos.GetAll) + { + var packagesWithVersions = provider.GetAllWithVersions(); + + foreach (var packageVersionList in packagesWithVersions) + { + foreach (var package in packageVersionList.Value.VersionsDescending) + { + if (package.Id != id) + continue; + if (Version.TryParse(package.Version, out var result)) + { + if (!versions.Contains(package.Version)) + versions.Add(package.Version); + } + } + } + } + + // Sort packages in project to the top + var sorted = from entry in versions orderby project.VPMProvider.HasPackage(entry) descending select entry; + + return sorted.ToList(); + } + + public static List GetAffectedPackageList(IVRCPackage package) + { + List list = new List(); + + var project = new UnityProject(ProjectDir); + + if (Repos.GetAllDependencies(package, out Dictionary dependencies, null)) + { + foreach (KeyValuePair item in dependencies) + { + project.VPMProvider.Refresh(); + if (project.VPMProvider.GetPackage(item.Key, item.Value) == null) + { + IVRCPackage d = Repos.GetPackageWithVersionMatch(item.Key, item.Value); + if (d != null) + { + list.Add(d.Id + " " + d.Version + "\n"); + } + } + } + + return list; + } + + return null; + } + + public static void ForceRefresh () + { + MethodInfo method = typeof( UnityEditor.PackageManager.Client ).GetMethod( "Resolve", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly ); + if( method != null ) + method.Invoke( null, null ); + + AssetDatabase.Refresh(); + } + + } +} \ No newline at end of file diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Resolver.cs.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Resolver.cs.meta new file mode 100644 index 0000000..a540340 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Resolver.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f872e3586f8b4f06bab3c9facd14f6e6 +timeCreated: 1659048476 \ No newline at end of file diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/ResolverWindow.cs b/Packages/com.vrchat.core.vpm-resolver/Editor/ResolverWindow.cs new file mode 100644 index 0000000..fad3f54 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/ResolverWindow.cs @@ -0,0 +1,292 @@ +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using UnityEditor; +using UnityEditor.UIElements; +using UnityEngine; +using UnityEngine.UIElements; +using VRC.PackageManagement.Core; +using VRC.PackageManagement.Core.Types; +using VRC.PackageManagement.Core.Types.Packages; +using Version = VRC.PackageManagement.Core.Types.VPMVersion.Version; + +namespace VRC.PackageManagement.Resolver +{ + public class ResolverWindow : EditorWindow + { + // VisualElements + private static VisualElement _rootView; + private static Button _refreshButton; + private static Button _createButton; + private static Button _resolveButton; + private static Box _manifestInfo; + private static Label _manifestLabel; + private static bool _isUpdating; + private static Color _colorPositive = Color.green; + private static Color _colorNegative = new Color(1, 0.3f, 0.3f); + + + [MenuItem("VRChat SDK/Utilities/Package Resolver")] + public static void ShowWindow() + { + ResolverWindow wnd = GetWindow(); + wnd.titleContent = new GUIContent("Package Resolver"); + } + + public static void Refresh() + { + if (_rootView == null || string.IsNullOrWhiteSpace(Resolver.ProjectDir)) return; + + _manifestInfo.SetEnabled(!_isUpdating); + _refreshButton.SetEnabled(!_isUpdating); + _manifestLabel.text = (_isUpdating ? "Working ..." : "Required Packages"); + _manifestInfo.Clear(); + _manifestInfo.Add(_manifestLabel); + + bool needsResolve = VPMProjectManifest.ResolveIsNeeded(Resolver.ProjectDir); + string resolveStatus = needsResolve ? "Please press \"Resolve\" to Download them." : "All of them are in the project."; + + // check for vpm dependencies + if (!Resolver.VPMManifestExists()) + { + TextElement noManifestText = new TextElement(); + noManifestText.text = "No VPM Manifest"; + noManifestText.style.color = _colorNegative; + _manifestInfo.Add(noManifestText); + } + else + { + var manifest = VPMProjectManifest.Load(Resolver.ProjectDir); + var project = new UnityProject(Resolver.ProjectDir); + + // Here is where we detect if all dependencies are installed + var allDependencies = (manifest.locked != null && manifest.locked.Count > 0) + ? manifest.locked + : manifest.dependencies; + + foreach (var pair in allDependencies) + { + var id = pair.Key; + var version = pair.Value.version; + IVRCPackage package = project.VPMProvider.GetPackage(id, version); + _manifestInfo.Add(CreateDependencyRow(id, version, project, (package != null))); + } + + } + _resolveButton.SetEnabled(needsResolve); + Resolver.ForceRefresh(); + } + + /// + /// Unity calls the CreateGUI method automatically when the window needs to display + /// + private void CreateGUI() + { + _rootView = rootVisualElement; + _rootView.name = "root-view"; + _rootView.styleSheets.Add((StyleSheet)Resources.Load("ResolverWindowStyle")); + + // Main Container + var container = new Box() + { + name = "buttons" + }; + _rootView.Add(container); + + // Create Button + if (!Resolver.VPMManifestExists()) + { + _createButton = new Button(Resolver.CreateManifest) + { + text = "Create", + name = "create-button-base" + }; + container.Add(_createButton); + } + else + { + _resolveButton = new Button(Resolver.ResolveManifest) + { + text = "Resolve All", + name = "resolve-button-base" + }; + container.Add(_resolveButton); + } + + // Manifest Info + _manifestInfo = new Box() + { + name = "manifest-info", + }; + _manifestLabel = (new Label("Required Packages") { name = "manifest-header" }); + + _rootView.Add(_manifestInfo); + + // Refresh Button + var refreshBox = new Box(); + _refreshButton = new Button(Refresh) + { + text = "Refresh", + name = "refresh-button-base" + }; + refreshBox.Add(_refreshButton); + _rootView.Add(refreshBox); + + Refresh(); + } + + private static VisualElement CreateDependencyRow(string id, string version, UnityProject project, bool havePackage) + { + // Table + + VisualElement row = new Box() { name = "package-box" }; + VisualElement column1 = new Box() { name = "package-box" }; + VisualElement column2 = new Box() { name = "package-box" }; + VisualElement column3 = new Box() { name = "package-box" }; + VisualElement column4 = new Box() { name = "package-box" }; + + column1.style.minWidth = 200; + column2.style.minWidth = 100; + column3.style.minWidth = 100; + column4.style.minWidth = 100; + + row.Add(column1); + row.Add(column2); + row.Add(column3); + row.Add(column4); + + // Package Name + Status + + TextElement text = new TextElement { text = $"{id} {version} " }; + + column1.Add(text); + + if (!havePackage) + { + TextElement missingText = new TextElement { text = "MISSING" }; + missingText.style.color = _colorNegative; + missingText.style.display = (_isUpdating ? DisplayStyle.None : DisplayStyle.Flex); + column2.Add(missingText); + } + + // Version Popup + + var choices = new List(); + foreach (string n in Resolver.GetAllVersionsOf(id)) + { + choices.Add(n); + } + + var popupField = new PopupField(choices, 0); + popupField.value = choices[0]; + popupField.style.display = (_isUpdating ? DisplayStyle.None : DisplayStyle.Flex); + + column3.Add(popupField); + + // Button + + Button updateButton = new Button() { text = "Update" }; + if (havePackage) + RefreshUpdateButton(updateButton, version, choices[0]); + else + RefreshMissingButton(updateButton); + + updateButton.clicked += (() => + { + IVRCPackage package = Repos.GetPackageWithVersionMatch(id, popupField.value); + + // Check and warn on Dependencies if Updating or Downgrading + if (Version.TryParse(version, out var currentVersion) && + Version.TryParse(popupField.value, out var newVersion)) + { + Dictionary dependencies = new Dictionary(); + StringBuilder dialogMsg = new StringBuilder(); + List affectedPackages = Resolver.GetAffectedPackageList(package); + for (int v = 0; v < affectedPackages.Count; v++) + { + dialogMsg.Append(affectedPackages[v]); + } + + if (affectedPackages.Count > 1) + { + dialogMsg.Insert(0, "This will update multiple packages:\n\n"); + dialogMsg.AppendLine("\nAre you sure?"); + if (EditorUtility.DisplayDialog("Package Has Dependencies", dialogMsg.ToString(), "OK", "Cancel")) + OnUpdatePackageClicked(project, package); + } + else + { + OnUpdatePackageClicked(project, package); + } + } + + }); + column4.Add(updateButton); + + popupField.RegisterCallback>((evt) => + { + if (havePackage) + RefreshUpdateButton(updateButton, version, evt.newValue); + else + RefreshMissingButton(updateButton); + }); + + return row; + } + + private static void RefreshUpdateButton(Button button, string currentVersion, string highestAvailableVersion) + { + if (currentVersion == highestAvailableVersion) + { + button.style.display = DisplayStyle.None; + } + else + { + button.style.display = (_isUpdating ? DisplayStyle.None : DisplayStyle.Flex); + if (Version.TryParse(currentVersion, out var currentVersionObject) && + Version.TryParse(highestAvailableVersion, out var highestAvailableVersionObject)) + { + if (currentVersionObject < highestAvailableVersionObject) + { + SetButtonColor(button, _colorPositive); + button.text = "Update"; + } + else + { + SetButtonColor(button, _colorNegative); + button.text = "Downgrade"; + } + } + } + } + + private static void RefreshMissingButton(Button button) + { + button.text = "Resolve"; + SetButtonColor(button, Color.white); + button.style.display = (_isUpdating ? DisplayStyle.None : DisplayStyle.Flex); + } + + private static void SetButtonColor(Button button, Color color) + { + button.style.color = color; + color.a = 0.25f; + button.style.borderRightColor = + button.style.borderLeftColor = + button.style.borderTopColor = + button.style.borderBottomColor = + color; + } + + private static async void OnUpdatePackageClicked(UnityProject project, IVRCPackage package) + { + _isUpdating = true; + Refresh(); + await Task.Delay(500); + await Task.Run(() => project.UpdateVPMPackage(package)); + _isUpdating = false; + Refresh(); + } + + } +} \ No newline at end of file diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/ResolverWindow.cs.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/ResolverWindow.cs.meta new file mode 100644 index 0000000..fbfb6ef --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/ResolverWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 32d2636186ee0834fa1dc2287750dd32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Resources.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Resources.meta new file mode 100644 index 0000000..4474299 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8700b619eebc09545b4aaf4f69a2bf79 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Resources/ResolverWindowStyle.uss b/Packages/com.vrchat.core.vpm-resolver/Editor/Resources/ResolverWindowStyle.uss new file mode 100644 index 0000000..443e2e9 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Resources/ResolverWindowStyle.uss @@ -0,0 +1,25 @@ +.unity-box { + margin:2px; + padding:10px; + border-width:0px; +} + +#package-box { + margin:2px; + padding:10px; + border-width:0px; + flex-direction:row; + max-height:20px; + min-height:20px; + height:20px; + padding-top:0px; + padding-bottom:0px; + margin-top:0px; + margin-bottom:0px; + align-items:center; +} + +#manifest-header { + font-size: 20px; + margin-bottom: 10px; +} \ No newline at end of file diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/Resources/ResolverWindowStyle.uss.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/Resources/ResolverWindowStyle.uss.meta new file mode 100644 index 0000000..042729b --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/Resources/ResolverWindowStyle.uss.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 346f7a547766ecb4396d15f585a15133 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} + disableValidation: 0 diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/com.vrchat.core.vpm-resolver.Editor.asmdef b/Packages/com.vrchat.core.vpm-resolver/Editor/com.vrchat.core.vpm-resolver.Editor.asmdef new file mode 100644 index 0000000..2dd9d94 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/com.vrchat.core.vpm-resolver.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.vrchat.core.vpm-resolver.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Packages/com.vrchat.core.vpm-resolver/Editor/com.vrchat.core.vpm-resolver.Editor.asmdef.meta b/Packages/com.vrchat.core.vpm-resolver/Editor/com.vrchat.core.vpm-resolver.Editor.asmdef.meta new file mode 100644 index 0000000..7345680 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/Editor/com.vrchat.core.vpm-resolver.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d1e8c2ba944807d4a9213e2de6930a0b +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/License.md b/Packages/com.vrchat.core.vpm-resolver/License.md new file mode 100644 index 0000000..275530c --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/License.md @@ -0,0 +1,11 @@ +# VRCHAT INC. +### VRCHAT DISTRO LICENSE FILE +Version: February 24, 2022 + +**SUMMARY OF TERMS:** Any materials subject to this Distro Asset License may be distributed by you, with or without modifications, on a non-commercial basis (i.e., at no charge), in accordance with the full terms of the Materials License Agreement. + +This Distro License File is a "License File" as defined in the VRChat Materials License Agreement, found at https://hello.vrchat.com/legal/sdk (or any successor link designated by VRChat) (as may be revised from time to time, the "Materials License Agreement"). + +This Distro License File applies to all the files in the Folder containing this Distro License File and those in all Child Folders within that Folder (except with respect to files in any Child Folder that contains a different License File) (such files, other than this Distro License File, the "Covered Files"). All capitalized terms used but not otherwise defined in this Distro License File have the meanings provided in the Materials License Agreement. + +This Distro License File only provides a summary of the terms applicable to the Covered Files. To understand your rights and obligations and the full set of terms that apply to use of the Covered Files, please see the relevant sections of the Materials License Agreement, including terms applicable to Distro Materials. \ No newline at end of file diff --git a/Packages/com.vrchat.core.vpm-resolver/License.md.meta b/Packages/com.vrchat.core.vpm-resolver/License.md.meta new file mode 100644 index 0000000..20b9751 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/License.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7727f888edf4714448d5a0287deec6dd +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.vrchat.core.vpm-resolver/package.json b/Packages/com.vrchat.core.vpm-resolver/package.json new file mode 100644 index 0000000..f3afb2d --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/package.json @@ -0,0 +1,17 @@ +{ + "name" : "com.vrchat.core.vpm-resolver", + "displayName" : "VRChat Package Resolver Tool", + "version" : "0.1.12", + "unity" : "2019.4", + "description" : "Tool to Download VPM Packages", + "vrchatVersion" : "2022.1.1", + "author" : { + "name" : "VRChat", + "email" : "developer@vrchat.com", + "url" : "https://github.com/vrchat/packages" + }, + "url" : "", + "dependencies" : { + "com.unity.nuget.newtonsoft-json" : "2.0.2" + } +} diff --git a/Packages/com.vrchat.core.vpm-resolver/package.json.meta b/Packages/com.vrchat.core.vpm-resolver/package.json.meta new file mode 100644 index 0000000..b323585 --- /dev/null +++ b/Packages/com.vrchat.core.vpm-resolver/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6b02e2915ebf04e4ea94e503d73e7411 +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json new file mode 100644 index 0000000..b167d9e --- /dev/null +++ b/Packages/manifest.json @@ -0,0 +1,45 @@ +{ + "dependencies" : { + "com.unity.collab-proxy" : "1.6.0", + "com.unity.ide.rider" : "1.2.1", + "com.unity.ide.visualstudio" : "2.0.9", + "com.unity.ide.vscode" : "1.2.3", + "com.unity.test-framework" : "1.1.27", + "com.unity.textmeshpro" : "2.1.6", + "com.unity.timeline" : "1.2.18", + "com.unity.ugui" : "1.0.0", + "com.unity.xr.oculus.standalone" : "2.38.4", + "com.unity.xr.openvr.standalone" : "2.0.5", + "com.unity.modules.ai" : "1.0.0", + "com.unity.modules.androidjni" : "1.0.0", + "com.unity.modules.animation" : "1.0.0", + "com.unity.modules.assetbundle" : "1.0.0", + "com.unity.modules.audio" : "1.0.0", + "com.unity.modules.cloth" : "1.0.0", + "com.unity.modules.director" : "1.0.0", + "com.unity.modules.imageconversion" : "1.0.0", + "com.unity.modules.imgui" : "1.0.0", + "com.unity.modules.jsonserialize" : "1.0.0", + "com.unity.modules.particlesystem" : "1.0.0", + "com.unity.modules.physics" : "1.0.0", + "com.unity.modules.physics2d" : "1.0.0", + "com.unity.modules.screencapture" : "1.0.0", + "com.unity.modules.terrain" : "1.0.0", + "com.unity.modules.terrainphysics" : "1.0.0", + "com.unity.modules.tilemap" : "1.0.0", + "com.unity.modules.ui" : "1.0.0", + "com.unity.modules.uielements" : "1.0.0", + "com.unity.modules.umbra" : "1.0.0", + "com.unity.modules.unityanalytics" : "1.0.0", + "com.unity.modules.unitywebrequest" : "1.0.0", + "com.unity.modules.unitywebrequestassetbundle" : "1.0.0", + "com.unity.modules.unitywebrequestaudio" : "1.0.0", + "com.unity.modules.unitywebrequesttexture" : "1.0.0", + "com.unity.modules.unitywebrequestwww" : "1.0.0", + "com.unity.modules.vehicles" : "1.0.0", + "com.unity.modules.video" : "1.0.0", + "com.unity.modules.vr" : "1.0.0", + "com.unity.modules.wind" : "1.0.0", + "com.unity.modules.xr" : "1.0.0" + } +} diff --git a/Packages/vpm-manifest.json b/Packages/vpm-manifest.json new file mode 100644 index 0000000..34eb9d2 --- /dev/null +++ b/Packages/vpm-manifest.json @@ -0,0 +1,11 @@ +{ + "dependencies" : { + "com.vrchat.avatars" : { + "version" : "3.1.x" + }, + "com.vrchat.core.vpm-resolver" : { + "version" : "0.1.x" + } + }, + "locked" : {} +} diff --git a/ProjectSettings/AudioManager.asset b/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..d0d684d --- /dev/null +++ b/ProjectSettings/AudioManager.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 48000 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 64 + m_RealVoiceCount: 32 + m_EnableOutputSuspension: 1 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 + m_RequestedDSPBufferSize: 0 diff --git a/ProjectSettings/ClusterInputManager.asset b/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..4a93999 --- /dev/null +++ b/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,36 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: dfafffffdfafffffdfafffffffffffffdfafffffc800c0ffffffffffffffffffdfafffffdf09fcffdf09fcffdfafffffc800c0ffdfe9c3ffc820c0ffdfa9ffffdfa9ffffdfa9ffffdf8fffffdf8fffffdf8fffffdf8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ClothGravity: {x: 0, y: -9.81, z: 0} + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 + m_FrictionType: 0 + m_EnableEnhancedDeterminism: 0 + m_EnableUnifiedHeightmaps: 1 + m_SolverType: 0 + m_DefaultMaxAngularSpeed: 7 diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..0147887 --- /dev/null +++ b/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: [] + m_configObjects: {} diff --git a/ProjectSettings/EditorSettings.asset b/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..f920544 --- /dev/null +++ b/ProjectSettings/EditorSettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_ExternalVersionControlSupport: Visible Meta Files + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 0 + m_DefaultBehaviorMode: 0 + m_PrefabRegularEnvironment: {fileID: 0} + m_PrefabUIEnvironment: {fileID: 0} + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref + m_ProjectGenerationRootNamespace: + m_CollabEditorSettings: + inProgressEnabled: 1 + m_EnableTextureStreamingInEditMode: 1 + m_EnableTextureStreamingInPlayMode: 1 + m_AsyncShaderCompilation: 1 + m_EnterPlayModeOptionsEnabled: 0 + m_EnterPlayModeOptions: 3 + m_ShowLightmapResolutionOverlay: 1 + m_UseLegacyProbeSampleCount: 0 + m_AssetPipelineMode: 1 + m_CacheServerMode: 0 + m_CacheServerEndpoint: + m_CacheServerNamespacePrefix: default + m_CacheServerEnableDownload: 1 + m_CacheServerEnableUpload: 1 diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..a869f3d --- /dev/null +++ b/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, + type: 0} + m_CustomRenderPipeline: {fileID: 0} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_LightsUseLinearIntensity: 1 + m_LightsUseColorTemperature: 1 + m_LogWhenShaderIsCompiled: 0 + m_AllowEnlightenSupportForUpgradedProject: 0 diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..17c8f53 --- /dev/null +++ b/ProjectSettings/InputManager.asset @@ -0,0 +1,295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..3b0b7c3 --- /dev/null +++ b/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset new file mode 100644 index 0000000..6920e3a --- /dev/null +++ b/ProjectSettings/PackageManagerSettings.asset @@ -0,0 +1,38 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_ScopedRegistriesSettingsExpanded: 1 + oneTimeWarningShown: 0 + m_Registries: + - m_Id: main + m_Name: + m_Url: https://packages.unity.com + m_Scopes: [] + m_IsDefault: 1 + m_UserSelectedRegistryName: + m_UserAddingNewScopedRegistry: 0 + m_RegistryInfoDraft: + m_ErrorMessage: + m_Original: + m_Id: + m_Name: + m_Url: + m_Scopes: [] + m_IsDefault: 0 + m_Modified: 0 + m_Name: + m_Url: + m_Scopes: + - + m_SelectedScopeIndex: 0 diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..47880b1 --- /dev/null +++ b/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_JobOptions: + serializedVersion: 2 + useMultithreading: 0 + useConsistencySorting: 0 + m_InterpolationPosesPerJob: 100 + m_NewContactsPerJob: 30 + m_CollideContactsPerJob: 100 + m_ClearFlagsPerJob: 200 + m_ClearBodyForcesPerJob: 200 + m_SyncDiscreteFixturesPerJob: 50 + m_SyncContinuousFixturesPerJob: 50 + m_FindNearestContactsPerJob: 100 + m_UpdateTriggerContactsPerJob: 100 + m_IslandSolverCostThreshold: 100 + m_IslandSolverBodyCostScale: 1 + m_IslandSolverContactCostScale: 10 + m_IslandSolverJointCostScale: 10 + m_IslandSolverBodiesPerJob: 50 + m_IslandSolverContactsPerJob: 50 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 1 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/ProjectSettings/PresetManager.asset b/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..67a94da --- /dev/null +++ b/ProjectSettings/PresetManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_DefaultPresets: {} diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..99fb884 --- /dev/null +++ b/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,709 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 20 + productGUID: 9e59d35066069f1469c7165423087ff5 + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: clean-avatar-project + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: [] + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 1 + m_ActiveColorSpace: 1 + m_MTRendering: 1 + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosUseCustomAppBackgroundBehavior: 0 + iosAllowHTTPDownload: 1 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 1 + androidUseSwappy: 0 + androidBlitType: 0 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 1 + captureSingleScreen: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + useFlipModelSwapchain: 1 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 1 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 0 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 + stadiaPresentMode: 0 + stadiaTargetFramerate: 0 + vulkanNumSwapchainBuffers: 3 + vulkanEnableSetSRGBWrite: 0 + vulkanEnableLateAcquireNextImage: 0 + m_SupportedAspectRatios: + 4:3: 1 + 5:4: 1 + 16:10: 1 + 16:9: 1 + Others: 1 + bundleVersion: 0.1 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + vrSettings: + cardboard: + depthFormat: 0 + enableTransitionView: 0 + daydream: + depthFormat: 0 + useSustainedPerformanceMode: 0 + enableVideoLayer: 0 + useProtectedVideoMemory: 0 + minimumSupportedHeadTracking: 0 + maximumSupportedHeadTracking: 1 + hololens: + depthFormat: 1 + depthBufferSharingEnabled: 1 + lumin: + depthFormat: 0 + frameTiming: 2 + enableGLCache: 0 + glCacheMaxBlobSize: 524288 + glCacheMaxFileSize: 8388608 + oculus: + sharedDepthBuffer: 1 + dashSupport: 1 + lowOverheadMode: 0 + protectedContext: 0 + v2Signing: 1 + enable360StereoCapture: 0 + isWsaHolographicRemotingEnabled: 0 + enableFrameTimingStats: 0 + useHDRDisplay: 0 + D3DHDRBitDepth: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.1 + applicationIdentifier: {} + buildNumber: {} + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 19 + AndroidTargetSdkVersion: 0 + AndroidPreferredInstallLocation: 1 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + APKExpansionFiles: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 1 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSTargetOSVersionString: 10.0 + tvOSSdkVersion: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 10.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreenCustomXibPath: + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreeniPadCustomXibPath: + iOSUseLaunchScreenStoryboard: 0 + iOSLaunchScreenCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + iOSRenderExtraFrameOnPause: 0 + iosCopyPluginsCodeInsteadOfSymlink: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea + templatePackageId: com.vrchat.template.base@1.0.0 + templateDefaultScene: Assets/VRCWelcome.unity + AndroidTargetArchitectures: 1 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 0 + AndroidIsGame: 1 + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + androidUseCustomKeystore: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + AndroidValidateAppBundleSize: 1 + AndroidAppBundleSizeToValidate: 150 + m_BuildTargetIcons: [] + m_BuildTargetPlatformIcons: [] + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 1 + - m_BuildTarget: tvOS + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: Android + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: iPhone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: WebGL + m_StaticBatching: 0 + m_DynamicBatching: 0 + m_BuildTargetGraphicsJobs: + - m_BuildTarget: MacStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: Switch + m_GraphicsJobs: 1 + - m_BuildTarget: MetroSupport + m_GraphicsJobs: 1 + - m_BuildTarget: AppleTVSupport + m_GraphicsJobs: 0 + - m_BuildTarget: BJMSupport + m_GraphicsJobs: 1 + - m_BuildTarget: LinuxStandaloneSupport + m_GraphicsJobs: 1 + - m_BuildTarget: PS4Player + m_GraphicsJobs: 1 + - m_BuildTarget: iOSSupport + m_GraphicsJobs: 0 + - m_BuildTarget: WindowsStandaloneSupport + m_GraphicsJobs: 1 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobs: 1 + - m_BuildTarget: LuminSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AndroidPlayer + m_GraphicsJobs: 0 + - m_BuildTarget: WebGLSupport + m_GraphicsJobs: 0 + m_BuildTargetGraphicsJobMode: + - m_BuildTarget: PS4Player + m_GraphicsJobMode: 0 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobMode: 0 + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: AndroidPlayer + m_APIs: 0b000000 + m_Automatic: 0 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AppleTVSupport + m_APIs: 10000000 + m_Automatic: 0 + - m_BuildTarget: WebGLSupport + m_APIs: 0b000000 + m_Automatic: 1 + - m_BuildTarget: WindowsStandaloneSupport + m_APIs: 02000000 + m_Automatic: 0 + m_BuildTargetVRSettings: + - m_BuildTarget: Standalone + m_Enabled: 1 + m_Devices: + - None + - OpenVR + - Oculus + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + openGLRequireES32: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupLightmapSettings: [] + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: + locationUsageDescription: + microphoneUsageDescription: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchTitleNames_15: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchPublisherNames_15: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchIcons_15: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchSmallIcons_15: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchTouchScreenUsage: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchRatingsInt_12: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 22 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchPlayerConnectionEnabled: 1 + switchUseMicroSleepForYield: 1 + switchMicroSleepForYieldTime: 25 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4ExtraSceSysFile: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 1 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + playerPrefsMaxSize: 32768 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4UseLowGarlicFragmentationMode: 1 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 0 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4CompatibilityPS5: 0 + ps4AllowPS5Detection: 0 + ps4GPU800MHz: 1 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + ps4attribVROutputEnabled: 0 + ps5ParamFilePath: + ps5VideoOutPixelFormat: 0 + ps5VideoOutInitialWidth: 1920 + ps5VideoOutOutputMode: 1 + ps5BackgroundImagePath: + ps5StartupImagePath: + ps5Pic2Path: + ps5StartupImagesFolder: + ps5IconImagesFolder: + ps5SaveDataImagePath: + ps5SdkOverride: + ps5BGMPath: + ps5ShareOverlayImagePath: + ps5NPConfigZipPath: + ps5Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps5UseResolutionFallback: 0 + ps5UseAudio3dBackend: 0 + ps5ScriptOptimizationLevel: 2 + ps5Audio3dVirtualSpeakerCount: 14 + ps5UpdateReferencePackage: + ps5disableAutoHideSplash: 0 + ps5OperatingSystemCanDisableSplashScreen: 0 + ps5IncludedModules: [] + ps5SharedBinaryContentLabels: [] + ps5SharedBinarySystemFolders: [] + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + blurSplashScreenBackground: 1 + spritePackerPolicy: + webGLMemorySize: 16 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 1 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + webGLWasmStreaming: 0 + scriptingDefineSymbols:{} + platformArchitecture: {} + scriptingBackend: {} + il2cppCompilerConfiguration: {} + managedStrippingLevel: {} + incrementalIl2cppBuild: {} + suppressCommonWarnings: 1 + allowUnsafeCode: 0 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + gcIncremental: 1 + assemblyVersionValidation: 1 + gcWBarrierValidation: 0 + apiCompatibilityLevelPerPlatform: + Standalone: 3 + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: Template_3D + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: Template_3D + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, + a: 1} + metroSplashScreenUseBackgroundColor: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnhancedXboxCompatibilityMode: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + XboxOneOverrideIdentityName: + XboxOneOverrideIdentityPublisher: + vrEditorSettings: + daydream: + daydreamIconForeground: {fileID: 0} + daydreamIconBackground: {fileID: 0} + cloudServicesEnabled: + UNet: 1 + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_SignPackage: 1 + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + apiCompatibilityLevel: 6 + cloudProjectId: + framebufferDepthMemorylessMode: 0 + projectName: + organizationId: + cloudEnabled: 0 + enableNativePlatformBackendsForNewInputSystem: 1 + disableOldInputManagerSupport: 0 + legacyClampBlendShapeWeights: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..b5d85d5 --- /dev/null +++ b/ProjectSettings/ProjectVersion.txt @@ -0,0 +1 @@ +m_EditorVersion: 2019.4.31f1 diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..7fd3dc4 --- /dev/null +++ b/ProjectSettings/QualitySettings.asset @@ -0,0 +1,207 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 3 + m_QualitySettings: + - serializedVersion: 2 + name: VRC Low + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 75 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 0 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 0 + lodBias: 1 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 64 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: + - Android + - serializedVersion: 2 + name: VRC Medium + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 75 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 4 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 0 + lodBias: 1.5 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 2048 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 64 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: + - Android + - serializedVersion: 2 + name: VRC High + pixelLightCount: 8 + shadows: 2 + shadowResolution: 3 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 75 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 4 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 0 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 128 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: + - Android + - serializedVersion: 2 + name: VRC Ultra + pixelLightCount: 8 + shadows: 2 + shadowResolution: 3 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 4 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 0 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 128 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: + - Android + - serializedVersion: 2 + name: VRC Mobile + pixelLightCount: 4 + shadows: 0 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 50 + shadowNearPlaneOffset: 2 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 1 + vSyncCount: 0 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 1 + asyncUploadBufferSize: 32 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 0} + excludedTargetPlatforms: + - Standalone + m_PerPlatformDefaultQuality: + Android: 2 + Lumin: 5 + Nintendo 3DS: 5 + Nintendo Switch: 5 + PS4: 5 + PSP2: 2 + Stadia: 5 + Standalone: 5 + WebGL: 3 + Windows Store Apps: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 2 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..6b6fb7f --- /dev/null +++ b/ProjectSettings/TagManager.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - Interactive + - Player + - PlayerLocal + - Environment + - UiMenu + - Pickup + - PickupNoEnvironment + - StereoLeft + - StereoRight + - Walkthrough + - MirrorReflection + - reserved2 + - reserved3 + - reserved4 + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..558a017 --- /dev/null +++ b/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.33333334 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..fa0b146 --- /dev/null +++ b/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 0 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_TestInitMode: 0 + CrashReportingSettings: + m_EventUrl: https://perf-events.cloud.unity3d.com + m_Enabled: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/ProjectSettings/VFXManager.asset b/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..3a95c98 --- /dev/null +++ b/ProjectSettings/VFXManager.asset @@ -0,0 +1,12 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_StripUpdateShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 diff --git a/ProjectSettings/XRSettings.asset b/ProjectSettings/XRSettings.asset new file mode 100644 index 0000000..482590c --- /dev/null +++ b/ProjectSettings/XRSettings.asset @@ -0,0 +1,10 @@ +{ + "m_SettingKeys": [ + "VR Device Disabled", + "VR Device User Alert" + ], + "m_SettingValues": [ + "False", + "False" + ] +} \ No newline at end of file diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..2137de2 --- /dev/null +++ b/Readme.md @@ -0,0 +1,98 @@ +# VRChat Avatar Project Template + +This repo makes it easy to start a new VRChat Avatar project! + +
+ + +## I Wanna Go Fast +If you don't care about using source control and just want to make something quick: + + + +1. [Download this Zip](https://github.com/vrchat-community/template-avatar/archive/refs/heads/main.zip) and unpack it somewhere. +2. Go to [Open the Project](#open-the-project) + +
+ +
+ + +## I Want To Use Source Control +This template is set up to easily make your own GitHub projects, and we highly recommend you take this route. + + + +## 1. Make Your Own GitHub Project + +Press [Use This Template](https://github.com/vrchat-community/curated-packages/generate) to start a new GitHub project, and follow the directions there. This is an optional step but gets you started with using GitHub for source control so you'll always have a backup. + +## 2. Clone or Download the Project + +If you're not ready to use git yet, you can download a zip of your project by pressing the "Code" button and then "Download Zip". + +If you're down with git, use your favorite client or the command line to clone your repository. + +
+ +
+ + +## 3. Open the Project + + + +Use Unity 2019.4.31.f1 to open the project. Press "OK" on the dialog that offers to download the required VRChat packages. + +
+ +
+ + +## 4. Load the Example Avatar + + + +Find the "VRChat SDK" item in the menu bar at the top of the Unity Editor window, press it to open, then choose "Samples > Avatar Dynamics Robot Avatar". + +Once the scene opens, choose "File > Save As..." and give the scene a new name. + +Then modify the avatar however you'd like - you can [read all about our Avatars 3.0 System here](https://docs.vrchat.com/docs/avatars-30). + +
+ +
+ + +## 5. Test Your Avatar + + + +When you're ready to try out your Avatar, find and choose the menu item "VRChat SDK > Show Control Panel". +* Sign into your VRChat Account in the "Authentication" tab. +* Switch to the "Builder" tab and choose "Build & Test". +* After a quick build process, you should see a popup with the message "Test Avatar Built". +* Launch VRChat, open your Avatars menu (click on "Avatars" in your Quick Menu) and look in the "Other" section. Your test avatar will have a temporary name based on the name of the GameObject with the VRC Avatar Descriptor on it. The default name will be "SDK: Tutorial_Robot_Avatar_Dynamics_Demo_v1". +* Select your Test Avatar and press "Test This Avatar" on the left-hand side of your menu. + +You should now be testing your custom avatar! + +
+ +
+ + +## 6. Publish Your Avatar + + + +When you're ready to publish your Avatar so you can use it regularly: +* Return to the VRChat SDK Control Panel in your Unity Project +* Switch to the "Builder" tab and press "Build and Publish for Windows". +* This will build your Avatar and add some publishing options to your Game window. +* Fill out the required fields "Avatar Name", "Description", "Sharing", and check the terms box "the above information is accurate...". +* Press "Upload". + +Return to VRChat - your Avatar should now show up under "My Creations" at the top of the Avatar listing. Choose it and enjoy! + +
\ No newline at end of file diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..3f262e2 --- /dev/null +++ b/license.txt @@ -0,0 +1 @@ +https://hello.vrchat.com/legal/sdk