fix: clap sample can't be uploaded on SDK 3.1.13 (#273)

* chore: update VPM dependencies

* fix: set sample audio clip to load in background
This commit is contained in:
bd_ 2023-04-10 21:27:10 +09:00 committed by GitHub
parent deb6bbfe5e
commit 82d58e52fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 86 additions and 72 deletions

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using UnityEditor; using UnityEditor;
using UnityEditor.UIElements; using UnityEditor.UIElements;
@ -18,7 +19,7 @@ namespace VRC.PackageManagement.PackageMaker
{ {
// VisualElements // VisualElements
private VisualElement _rootView; private VisualElement _rootView;
private TextField _targetAssetFolderField; private TextField _targetAssetFolderField;
private TextField _packageIDField; private TextField _packageIDField;
private Button _actionButton; private Button _actionButton;
private EnumField _targetVRCPackageField; private EnumField _targetVRCPackageField;
@ -31,9 +32,10 @@ namespace VRC.PackageManagement.PackageMaker
{ {
_targetAssetFolderField.SetValueWithoutNotify(_windowData.targetAssetFolder); _targetAssetFolderField.SetValueWithoutNotify(_windowData.targetAssetFolder);
} }
_packageIDField.SetValueWithoutNotify(_windowData.packageID); _packageIDField.SetValueWithoutNotify(_windowData.packageID);
_targetVRCPackageField.SetValueWithoutNotify(_windowData.relatedPackage); _targetVRCPackageField.SetValueWithoutNotify(_windowData.relatedPackage);
RefreshActionButtonState(); RefreshActionButtonState();
} }
@ -49,31 +51,35 @@ namespace VRC.PackageManagement.PackageMaker
PackageMakerWindow wnd = GetWindow<PackageMakerWindow>(); PackageMakerWindow wnd = GetWindow<PackageMakerWindow>();
wnd.titleContent = new GUIContent("Package Maker"); wnd.titleContent = new GUIContent("Package Maker");
} }
[MenuItem("Assets/Export VPM as UnityPackage")] [MenuItem("Assets/Export VPM as UnityPackage")]
private static void ExportAsUnityPackage () private static void ExportAsUnityPackage()
{ {
if (Selection.assetGUIDs.Length != 1) var foldersToExport = new List<string>();
StringBuilder exportFilename = new StringBuilder("exported");
foreach (string guid in Selection.assetGUIDs)
{ {
Debug.LogWarning($"Cannot export selection, must be a single Folder."); string selectedFolder = AssetDatabase.GUIDToAssetPath(guid);
return; var manifestPath = Path.Combine(selectedFolder, VRCPackageManifest.Filename);
} var manifest = VRCPackageManifest.GetManifestAtPath(manifestPath);
if (manifest == null)
string selectedFolder = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]); {
var manifestPath = Path.Combine(selectedFolder, VRCPackageManifest.Filename); Debug.LogWarning(
var manifest = VRCPackageManifest.GetManifestAtPath(manifestPath); $"Could not read valid Package Manifest at {manifestPath}. You need to create this first to export a VPM Package.");
if (manifest == null) continue;
{ }
Debug.LogWarning($"Could not read valid Package Manifest at {manifestPath}. You need to create this first.");
return; exportFilename.Append($"-{manifest.Id}-{manifest.Version}");
foldersToExport.Add(selectedFolder);
} }
exportFilename.Append(".unitypackage");
var exportDir = Path.Combine(Directory.GetCurrentDirectory(), "Exports"); var exportDir = Path.Combine(Directory.GetCurrentDirectory(), "Exports");
Directory.CreateDirectory(exportDir); Directory.CreateDirectory(exportDir);
AssetDatabase.ExportPackage AssetDatabase.ExportPackage
( (
selectedFolder, foldersToExport.ToArray(),
Path.Combine(exportDir, $"{manifest.Id}-{manifest.Version}.unitypackage"), Path.Combine(exportDir, exportFilename.ToString()),
ExportPackageOptions.Recurse | ExportPackageOptions.Interactive ExportPackageOptions.Recurse | ExportPackageOptions.Interactive
); );
} }
@ -84,7 +90,7 @@ namespace VRC.PackageManagement.PackageMaker
{ {
_windowData = PackageMakerWindowData.GetOrCreate(); _windowData = PackageMakerWindowData.GetOrCreate();
} }
if (_rootView == null) return; if (_rootView == null) return;
if (_windowData != null) if (_windowData != null)
@ -110,7 +116,7 @@ namespace VRC.PackageManagement.PackageMaker
{ {
_windowData = PackageMakerWindowData.GetOrCreate(); _windowData = PackageMakerWindowData.GetOrCreate();
} }
_rootView = rootVisualElement; _rootView = rootVisualElement;
_rootView.name = "root-view"; _rootView.name = "root-view";
_rootView.styleSheets.Add((StyleSheet) Resources.Load("PackageMakerWindowStyle")); _rootView.styleSheets.Add((StyleSheet) Resources.Load("PackageMakerWindowStyle"));
@ -132,7 +138,7 @@ namespace VRC.PackageManagement.PackageMaker
Base = 3, Base = 3,
UdonSharp = 4, UdonSharp = 4,
} }
private VisualElement CreateTargetVRCPackageElement() private VisualElement CreateTargetVRCPackageElement()
{ {
_targetVRCPackageField = new EnumField("Related VRChat Package", VRCPackageEnum.None); _targetVRCPackageField = new EnumField("Related VRChat Package", VRCPackageEnum.None);
@ -144,7 +150,7 @@ namespace VRC.PackageManagement.PackageMaker
private void OnTargetVRCPackageChanged(ChangeEvent<Enum> evt) private void OnTargetVRCPackageChanged(ChangeEvent<Enum> evt)
{ {
_windowData.relatedPackage = (VRCPackageEnum)evt.newValue; _windowData.relatedPackage = (VRCPackageEnum) evt.newValue;
_windowData.Save(); _windowData.Save();
} }
@ -172,12 +178,13 @@ namespace VRC.PackageManagement.PackageMaker
ForceRefresh(); ForceRefresh();
} }
} }
public static void ForceRefresh () public static void ForceRefresh()
{ {
MethodInfo method = typeof( UnityEditor.PackageManager.Client ).GetMethod( "Resolve", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly ); MethodInfo method = typeof(UnityEditor.PackageManager.Client).GetMethod("Resolve",
if( method != null ) BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
method.Invoke( null, null ); if (method != null)
method.Invoke(null, null);
AssetDatabase.Refresh(); AssetDatabase.Refresh();
} }
@ -192,17 +199,19 @@ namespace VRC.PackageManagement.PackageMaker
_packageIDField = new TextField("Package ID", 255, false, false, '*'); _packageIDField = new TextField("Package ID", 255, false, false, '*');
_packageIDField.RegisterValueChangedCallback(OnPackageIDChanged); _packageIDField.RegisterValueChangedCallback(OnPackageIDChanged);
box.Add(_packageIDField); box.Add(_packageIDField);
box.Add(new Label("Lowercase letters, numbers and dots only.") box.Add(new Label("Lowercase letters, numbers and dots only.")
{ {
name="description", name = "description",
tooltip = "Standard practice is reverse domain notation like com.vrchat.packagename. Needs to be unique across VRChat, so if you don't own a domain you can try your username.", tooltip =
"Standard practice is reverse domain notation like com.vrchat.packagename. Needs to be unique across VRChat, so if you don't own a domain you can try your username.",
}); });
return box; return box;
} }
private Regex packageIdRegex = new Regex("[^a-z0-9.]"); private Regex packageIdRegex = new Regex("[^a-z0-9.]");
private void OnPackageIDChanged(ChangeEvent<string> evt) private void OnPackageIDChanged(ChangeEvent<string> evt)
{ {
if (evt.newValue != null) if (evt.newValue != null)
@ -212,6 +221,7 @@ namespace VRC.PackageManagement.PackageMaker
_windowData.packageID = newId; _windowData.packageID = newId;
_windowData.Save(); _windowData.Save();
} }
RefreshActionButtonState(); RefreshActionButtonState();
} }
@ -221,17 +231,22 @@ namespace VRC.PackageManagement.PackageMaker
{ {
name = "editor-target-box" name = "editor-target-box"
}; };
_targetAssetFolderField = new TextField("Target Folder"); _targetAssetFolderField = new TextField("Target Folder");
_targetAssetFolderField.RegisterCallback<DragEnterEvent>(OnTargetAssetFolderDragEnter, TrickleDown.TrickleDown); _targetAssetFolderField.RegisterCallback<DragEnterEvent>(OnTargetAssetFolderDragEnter,
_targetAssetFolderField.RegisterCallback<DragLeaveEvent>(OnTargetAssetFolderDragLeave, TrickleDown.TrickleDown); TrickleDown.TrickleDown);
_targetAssetFolderField.RegisterCallback<DragUpdatedEvent>(OnTargetAssetFolderDragUpdated, TrickleDown.TrickleDown); _targetAssetFolderField.RegisterCallback<DragLeaveEvent>(OnTargetAssetFolderDragLeave,
_targetAssetFolderField.RegisterCallback<DragPerformEvent>(OnTargetAssetFolderDragPerform, TrickleDown.TrickleDown); TrickleDown.TrickleDown);
_targetAssetFolderField.RegisterCallback<DragExitedEvent>(OnTargetAssetFolderDragExited, TrickleDown.TrickleDown); _targetAssetFolderField.RegisterCallback<DragUpdatedEvent>(OnTargetAssetFolderDragUpdated,
TrickleDown.TrickleDown);
_targetAssetFolderField.RegisterCallback<DragPerformEvent>(OnTargetAssetFolderDragPerform,
TrickleDown.TrickleDown);
_targetAssetFolderField.RegisterCallback<DragExitedEvent>(OnTargetAssetFolderDragExited,
TrickleDown.TrickleDown);
_targetAssetFolderField.RegisterValueChangedCallback(OnTargetAssetFolderValueChanged); _targetAssetFolderField.RegisterValueChangedCallback(OnTargetAssetFolderValueChanged);
targetFolderBox.Add(_targetAssetFolderField); targetFolderBox.Add(_targetAssetFolderField);
targetFolderBox.Add(new Label("Drag and Drop an Assets Folder to Convert Above"){name="description"}); targetFolderBox.Add(new Label("Drag and Drop an Assets Folder to Convert Above") {name = "description"});
return targetFolderBox; return targetFolderBox;
} }
@ -241,7 +256,7 @@ namespace VRC.PackageManagement.PackageMaker
{ {
return !string.IsNullOrWhiteSpace(targetFolder) && AssetDatabase.IsValidFolder(targetFolder); return !string.IsNullOrWhiteSpace(targetFolder) && AssetDatabase.IsValidFolder(targetFolder);
} }
private void OnTargetAssetFolderValueChanged(ChangeEvent<string> evt) private void OnTargetAssetFolderValueChanged(ChangeEvent<string> evt)
{ {
string targetFolder = evt.newValue; string targetFolder = evt.newValue;
@ -257,7 +272,7 @@ namespace VRC.PackageManagement.PackageMaker
_targetAssetFolderField.SetValueWithoutNotify(evt.previousValue); _targetAssetFolderField.SetValueWithoutNotify(evt.previousValue);
} }
} }
private void OnTargetAssetFolderDragExited(DragExitedEvent evt) private void OnTargetAssetFolderDragExited(DragExitedEvent evt)
{ {
DragAndDrop.visualMode = DragAndDropVisualMode.None; DragAndDrop.visualMode = DragAndDropVisualMode.None;
@ -297,7 +312,7 @@ namespace VRC.PackageManagement.PackageMaker
private void OnTargetAssetFolderDragEnter(DragEnterEvent evt) private void OnTargetAssetFolderDragEnter(DragEnterEvent evt)
{ {
if (DragAndDrop.paths.Length == 1) if (DragAndDrop.paths.Length == 1)
{ {
DragAndDrop.visualMode = DragAndDropVisualMode.Copy; DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
DragAndDrop.AcceptDrag(); DragAndDrop.AcceptDrag();
} }
@ -309,9 +324,8 @@ namespace VRC.PackageManagement.PackageMaker
private void DoMigration(string corePath, string targetDir) private void DoMigration(string corePath, string targetDir)
{ {
EditorUtility.DisplayProgressBar("Migrating Package", "Creating Starter Package", 0.1f); EditorUtility.DisplayProgressBar("Migrating Package", "Creating Starter Package", 0.1f);
// Convert PackageType enum to VRC Package ID string // Convert PackageType enum to VRC Package ID string
string packageType = null; string packageType = null;
switch (_windowData.relatedPackage) switch (_windowData.relatedPackage)
@ -334,12 +348,11 @@ namespace VRC.PackageManagement.PackageMaker
Core.Utilities.CreateStarterPackage(_windowData.packageID, parentDir, packageType); Core.Utilities.CreateStarterPackage(_windowData.packageID, parentDir, packageType);
var allFiles = GetAllFiles(corePath).ToList(); var allFiles = GetAllFiles(corePath).ToList();
MoveFilesToPackageDir(allFiles, corePath, targetDir); MoveFilesToPackageDir(allFiles, corePath, targetDir);
// Clear target asset folder since it should no longer exist // Clear target asset folder since it should no longer exist
_windowData.targetAssetFolder = ""; _windowData.targetAssetFolder = "";
} }
private static IEnumerable<string> GetAllFiles(string path) private static IEnumerable<string> GetAllFiles(string path)
{ {
var excludedPaths = new List<string>() var excludedPaths = new List<string>()
@ -351,7 +364,7 @@ namespace VRC.PackageManagement.PackageMaker
s => excludedPaths.All(entry => !s.Contains(entry)) s => excludedPaths.All(entry => !s.Contains(entry))
); );
} }
public static void MoveFilesToPackageDir(List<string> files, string pathBase, string targetDir) public static void MoveFilesToPackageDir(List<string> files, string pathBase, string targetDir)
{ {
EditorUtility.DisplayProgressBar("Migrating Package", "Moving Package Files", 0f); EditorUtility.DisplayProgressBar("Migrating Package", "Moving Package Files", 0f);
@ -364,7 +377,7 @@ namespace VRC.PackageManagement.PackageMaker
EditorUtility.DisplayProgressBar("Migrating Package", "Moving Package Files", i / totalFiles); EditorUtility.DisplayProgressBar("Migrating Package", "Moving Package Files", i / totalFiles);
var file = files[i]; var file = files[i];
string simplifiedPath = file.Replace($"{pathBase}\\", ""); string simplifiedPath = file.Replace($"{pathBase}\\", "");
string dest = null; string dest = null;
if (simplifiedPath.Contains("Editor\\")) if (simplifiedPath.Contains("Editor\\"))
{ {
@ -389,11 +402,11 @@ namespace VRC.PackageManagement.PackageMaker
continue; continue;
} }
} }
Directory.Delete(pathBase, true); // cleans up leftover folders since only files are moved Directory.Delete(pathBase, true); // cleans up leftover folders since only files are moved
EditorUtility.ClearProgressBar(); EditorUtility.ClearProgressBar();
} }
// Important while we're doing copy-and-rename in order to rename paths with "Assets" without renaming paths with "Sample Assets" // Important while we're doing copy-and-rename in order to rename paths with "Assets" without renaming paths with "Sample Assets"
public static string ReplaceFirst(string text, string search, string replace) public static string ReplaceFirst(string text, string search, string replace)
{ {
@ -408,5 +421,4 @@ namespace VRC.PackageManagement.PackageMaker
#endregion #endregion
} }
} }

View File

@ -11,16 +11,17 @@ using UnityEngine;
using VRC.PackageManagement.Core; using VRC.PackageManagement.Core;
using VRC.PackageManagement.Core.Types; using VRC.PackageManagement.Core.Types;
using VRC.PackageManagement.Core.Types.Packages; using VRC.PackageManagement.Core.Types.Packages;
using Version = VRC.PackageManagement.Core.Types.VPMVersion.Version;
namespace VRC.PackageManagement.Resolver namespace VRC.PackageManagement.Resolver
{ {
[InitializeOnLoad] [InitializeOnLoad]
public class Resolver public class Resolver
{ {
private const string _projectLoadedKey = "PROJECT_LOADED"; private const string _projectLoadedKey = "PROJECT_LOADED";
private static string _projectDir; private static string _projectDir;
public static string ProjectDir public static string ProjectDir
{ {
get get
@ -67,7 +68,7 @@ namespace VRC.PackageManagement.Resolver
private static async Task CheckResolveNeeded() private static async Task CheckResolveNeeded()
{ {
SessionState.SetBool(_projectLoadedKey, true); SessionState.SetBool(_projectLoadedKey, true);
//Wait for project to finish compiling //Wait for project to finish compiling
while (EditorApplication.isCompiling || EditorApplication.isUpdating) while (EditorApplication.isCompiling || EditorApplication.isUpdating)
{ {
@ -76,12 +77,11 @@ namespace VRC.PackageManagement.Resolver
try try
{ {
if (string.IsNullOrWhiteSpace(ProjectDir)) if (string.IsNullOrWhiteSpace(ProjectDir))
{ {
return; return;
} }
if (VPMProjectManifest.ResolveIsNeeded(ProjectDir)) if (VPMProjectManifest.ResolveIsNeeded(ProjectDir))
{ {
Debug.Log($"Resolve needed."); Debug.Log($"Resolve needed.");
@ -103,7 +103,7 @@ namespace VRC.PackageManagement.Resolver
// Unity says we can't open windows from this function so it throws an exception but also works fine. // Unity says we can't open windows from this function so it throws an exception but also works fine.
} }
} }
public static bool VPMManifestExists() public static bool VPMManifestExists()
{ {
return VPMProjectManifest.Exists(ProjectDir, out _); return VPMProjectManifest.Exists(ProjectDir, out _);
@ -114,7 +114,7 @@ namespace VRC.PackageManagement.Resolver
VPMProjectManifest.Load(ProjectDir); VPMProjectManifest.Load(ProjectDir);
ResolverWindow.Refresh(); ResolverWindow.Refresh();
} }
public static void ResolveManifest() public static void ResolveManifest()
{ {
ResolveStatic(ProjectDir); ResolveStatic(ProjectDir);
@ -128,7 +128,7 @@ namespace VRC.PackageManagement.Resolver
EditorUtility.ClearProgressBar(); EditorUtility.ClearProgressBar();
ForceRefresh(); ForceRefresh();
} }
public static List<string> GetAllVersionsOf(string id) public static List<string> GetAllVersionsOf(string id)
{ {
var project = new UnityProject(ProjectDir); var project = new UnityProject(ProjectDir);
@ -185,15 +185,15 @@ namespace VRC.PackageManagement.Resolver
return null; return null;
} }
public static void ForceRefresh () public static void ForceRefresh()
{ {
MethodInfo method = typeof( UnityEditor.PackageManager.Client ).GetMethod( "Resolve", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly ); MethodInfo method = typeof(UnityEditor.PackageManager.Client).GetMethod("Resolve",
if( method != null ) BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
method.Invoke( null, null ); if (method != null)
method.Invoke(null, null);
AssetDatabase.Refresh(); AssetDatabase.Refresh();
} }
} }
} }

View File

@ -1,7 +1,7 @@
{ {
"name": "com.vrchat.core.vpm-resolver", "name": "com.vrchat.core.vpm-resolver",
"displayName": "VRChat Package Resolver Tool", "displayName": "VRChat Package Resolver Tool",
"version": "0.1.17", "version": "0.1.18",
"unity": "2019.4", "unity": "2019.4",
"description": "Tool to Download VPM Packages", "description": "Tool to Download VPM Packages",
"vrchatVersion": "2022.1.1", "vrchatVersion": "2022.1.1",

View File

@ -14,7 +14,7 @@ AudioImporter:
forceToMono: 1 forceToMono: 1
normalize: 1 normalize: 1
preloadAudioData: 1 preloadAudioData: 1
loadInBackground: 0 loadInBackground: 1
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:

View File

@ -9,16 +9,18 @@
}, },
"locked": { "locked": {
"com.vrchat.avatars": { "com.vrchat.avatars": {
"version": "3.1.10", "version": "3.1.13",
"dependencies": { "dependencies": {
"com.vrchat.base": "3.1.x" "com.vrchat.base": "3.1.13"
} }
}, },
"com.vrchat.base": { "com.vrchat.base": {
"version": "3.1.10" "version": "3.1.13",
"dependencies": {}
}, },
"com.vrchat.core.vpm-resolver": { "com.vrchat.core.vpm-resolver": {
"version": "0.1.17" "version": "0.1.18",
"dependencies": {}
} }
} }
} }