mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-03-10 07:44:57 +08:00
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:
parent
deb6bbfe5e
commit
82d58e52fa
Binary file not shown.
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEditor;
|
||||
using UnityEditor.UIElements;
|
||||
@ -18,7 +19,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
{
|
||||
// VisualElements
|
||||
private VisualElement _rootView;
|
||||
private TextField _targetAssetFolderField;
|
||||
private TextField _targetAssetFolderField;
|
||||
private TextField _packageIDField;
|
||||
private Button _actionButton;
|
||||
private EnumField _targetVRCPackageField;
|
||||
@ -31,9 +32,10 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
{
|
||||
_targetAssetFolderField.SetValueWithoutNotify(_windowData.targetAssetFolder);
|
||||
}
|
||||
|
||||
_packageIDField.SetValueWithoutNotify(_windowData.packageID);
|
||||
_targetVRCPackageField.SetValueWithoutNotify(_windowData.relatedPackage);
|
||||
|
||||
|
||||
RefreshActionButtonState();
|
||||
}
|
||||
|
||||
@ -49,31 +51,35 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
PackageMakerWindow wnd = GetWindow<PackageMakerWindow>();
|
||||
wnd.titleContent = new GUIContent("Package Maker");
|
||||
}
|
||||
|
||||
|
||||
[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.");
|
||||
return;
|
||||
}
|
||||
|
||||
string selectedFolder = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]);
|
||||
var manifestPath = Path.Combine(selectedFolder, VRCPackageManifest.Filename);
|
||||
var manifest = VRCPackageManifest.GetManifestAtPath(manifestPath);
|
||||
if (manifest == null)
|
||||
{
|
||||
Debug.LogWarning($"Could not read valid Package Manifest at {manifestPath}. You need to create this first.");
|
||||
return;
|
||||
string selectedFolder = AssetDatabase.GUIDToAssetPath(guid);
|
||||
var manifestPath = Path.Combine(selectedFolder, VRCPackageManifest.Filename);
|
||||
var manifest = VRCPackageManifest.GetManifestAtPath(manifestPath);
|
||||
if (manifest == null)
|
||||
{
|
||||
Debug.LogWarning(
|
||||
$"Could not read valid Package Manifest at {manifestPath}. You need to create this first to export a VPM Package.");
|
||||
continue;
|
||||
}
|
||||
|
||||
exportFilename.Append($"-{manifest.Id}-{manifest.Version}");
|
||||
foldersToExport.Add(selectedFolder);
|
||||
}
|
||||
|
||||
exportFilename.Append(".unitypackage");
|
||||
var exportDir = Path.Combine(Directory.GetCurrentDirectory(), "Exports");
|
||||
Directory.CreateDirectory(exportDir);
|
||||
AssetDatabase.ExportPackage
|
||||
(
|
||||
selectedFolder,
|
||||
Path.Combine(exportDir, $"{manifest.Id}-{manifest.Version}.unitypackage"),
|
||||
foldersToExport.ToArray(),
|
||||
Path.Combine(exportDir, exportFilename.ToString()),
|
||||
ExportPackageOptions.Recurse | ExportPackageOptions.Interactive
|
||||
);
|
||||
}
|
||||
@ -84,7 +90,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
{
|
||||
_windowData = PackageMakerWindowData.GetOrCreate();
|
||||
}
|
||||
|
||||
|
||||
if (_rootView == null) return;
|
||||
|
||||
if (_windowData != null)
|
||||
@ -110,7 +116,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
{
|
||||
_windowData = PackageMakerWindowData.GetOrCreate();
|
||||
}
|
||||
|
||||
|
||||
_rootView = rootVisualElement;
|
||||
_rootView.name = "root-view";
|
||||
_rootView.styleSheets.Add((StyleSheet) Resources.Load("PackageMakerWindowStyle"));
|
||||
@ -132,7 +138,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
Base = 3,
|
||||
UdonSharp = 4,
|
||||
}
|
||||
|
||||
|
||||
private VisualElement CreateTargetVRCPackageElement()
|
||||
{
|
||||
_targetVRCPackageField = new EnumField("Related VRChat Package", VRCPackageEnum.None);
|
||||
@ -144,7 +150,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
|
||||
private void OnTargetVRCPackageChanged(ChangeEvent<Enum> evt)
|
||||
{
|
||||
_windowData.relatedPackage = (VRCPackageEnum)evt.newValue;
|
||||
_windowData.relatedPackage = (VRCPackageEnum) evt.newValue;
|
||||
_windowData.Save();
|
||||
}
|
||||
|
||||
@ -172,12 +178,13 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
ForceRefresh();
|
||||
}
|
||||
}
|
||||
|
||||
public static void ForceRefresh ()
|
||||
|
||||
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 );
|
||||
MethodInfo method = typeof(UnityEditor.PackageManager.Client).GetMethod("Resolve",
|
||||
BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
|
||||
if (method != null)
|
||||
method.Invoke(null, null);
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
@ -192,17 +199,19 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
_packageIDField = new TextField("Package ID", 255, false, false, '*');
|
||||
_packageIDField.RegisterValueChangedCallback(OnPackageIDChanged);
|
||||
box.Add(_packageIDField);
|
||||
|
||||
|
||||
box.Add(new Label("Lowercase letters, numbers and dots only.")
|
||||
{
|
||||
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.",
|
||||
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.",
|
||||
});
|
||||
|
||||
|
||||
return box;
|
||||
}
|
||||
|
||||
private Regex packageIdRegex = new Regex("[^a-z0-9.]");
|
||||
|
||||
private void OnPackageIDChanged(ChangeEvent<string> evt)
|
||||
{
|
||||
if (evt.newValue != null)
|
||||
@ -212,6 +221,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
_windowData.packageID = newId;
|
||||
_windowData.Save();
|
||||
}
|
||||
|
||||
RefreshActionButtonState();
|
||||
}
|
||||
|
||||
@ -221,17 +231,22 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
{
|
||||
name = "editor-target-box"
|
||||
};
|
||||
|
||||
|
||||
_targetAssetFolderField = new TextField("Target Folder");
|
||||
_targetAssetFolderField.RegisterCallback<DragEnterEvent>(OnTargetAssetFolderDragEnter, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragLeaveEvent>(OnTargetAssetFolderDragLeave, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragUpdatedEvent>(OnTargetAssetFolderDragUpdated, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragPerformEvent>(OnTargetAssetFolderDragPerform, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragExitedEvent>(OnTargetAssetFolderDragExited, TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragEnterEvent>(OnTargetAssetFolderDragEnter,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragLeaveEvent>(OnTargetAssetFolderDragLeave,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragUpdatedEvent>(OnTargetAssetFolderDragUpdated,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragPerformEvent>(OnTargetAssetFolderDragPerform,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterCallback<DragExitedEvent>(OnTargetAssetFolderDragExited,
|
||||
TrickleDown.TrickleDown);
|
||||
_targetAssetFolderField.RegisterValueChangedCallback(OnTargetAssetFolderValueChanged);
|
||||
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;
|
||||
}
|
||||
|
||||
@ -241,7 +256,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
{
|
||||
return !string.IsNullOrWhiteSpace(targetFolder) && AssetDatabase.IsValidFolder(targetFolder);
|
||||
}
|
||||
|
||||
|
||||
private void OnTargetAssetFolderValueChanged(ChangeEvent<string> evt)
|
||||
{
|
||||
string targetFolder = evt.newValue;
|
||||
@ -257,7 +272,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
_targetAssetFolderField.SetValueWithoutNotify(evt.previousValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void OnTargetAssetFolderDragExited(DragExitedEvent evt)
|
||||
{
|
||||
DragAndDrop.visualMode = DragAndDropVisualMode.None;
|
||||
@ -297,7 +312,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
private void OnTargetAssetFolderDragEnter(DragEnterEvent evt)
|
||||
{
|
||||
if (DragAndDrop.paths.Length == 1)
|
||||
{
|
||||
{
|
||||
DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
|
||||
DragAndDrop.AcceptDrag();
|
||||
}
|
||||
@ -309,9 +324,8 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
|
||||
private void DoMigration(string corePath, string targetDir)
|
||||
{
|
||||
|
||||
EditorUtility.DisplayProgressBar("Migrating Package", "Creating Starter Package", 0.1f);
|
||||
|
||||
|
||||
// Convert PackageType enum to VRC Package ID string
|
||||
string packageType = null;
|
||||
switch (_windowData.relatedPackage)
|
||||
@ -334,12 +348,11 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
Core.Utilities.CreateStarterPackage(_windowData.packageID, parentDir, packageType);
|
||||
var allFiles = GetAllFiles(corePath).ToList();
|
||||
MoveFilesToPackageDir(allFiles, corePath, targetDir);
|
||||
|
||||
|
||||
// Clear target asset folder since it should no longer exist
|
||||
_windowData.targetAssetFolder = "";
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static IEnumerable<string> GetAllFiles(string path)
|
||||
{
|
||||
var excludedPaths = new List<string>()
|
||||
@ -351,7 +364,7 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
s => excludedPaths.All(entry => !s.Contains(entry))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public static void MoveFilesToPackageDir(List<string> files, string pathBase, string targetDir)
|
||||
{
|
||||
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);
|
||||
var file = files[i];
|
||||
string simplifiedPath = file.Replace($"{pathBase}\\", "");
|
||||
|
||||
|
||||
string dest = null;
|
||||
if (simplifiedPath.Contains("Editor\\"))
|
||||
{
|
||||
@ -389,11 +402,11 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Directory.Delete(pathBase, true); // cleans up leftover folders since only files are moved
|
||||
EditorUtility.ClearProgressBar();
|
||||
}
|
||||
|
||||
|
||||
// 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)
|
||||
{
|
||||
@ -408,5 +421,4 @@ namespace VRC.PackageManagement.PackageMaker
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
@ -11,16 +11,17 @@ using UnityEngine;
|
||||
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
|
||||
{
|
||||
|
||||
[InitializeOnLoad]
|
||||
public class Resolver
|
||||
{
|
||||
private const string _projectLoadedKey = "PROJECT_LOADED";
|
||||
|
||||
|
||||
private static string _projectDir;
|
||||
|
||||
public static string ProjectDir
|
||||
{
|
||||
get
|
||||
@ -67,7 +68,7 @@ namespace VRC.PackageManagement.Resolver
|
||||
private static async Task CheckResolveNeeded()
|
||||
{
|
||||
SessionState.SetBool(_projectLoadedKey, true);
|
||||
|
||||
|
||||
//Wait for project to finish compiling
|
||||
while (EditorApplication.isCompiling || EditorApplication.isUpdating)
|
||||
{
|
||||
@ -76,12 +77,11 @@ namespace VRC.PackageManagement.Resolver
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
if (string.IsNullOrWhiteSpace(ProjectDir))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (VPMProjectManifest.ResolveIsNeeded(ProjectDir))
|
||||
{
|
||||
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.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static bool VPMManifestExists()
|
||||
{
|
||||
return VPMProjectManifest.Exists(ProjectDir, out _);
|
||||
@ -114,7 +114,7 @@ namespace VRC.PackageManagement.Resolver
|
||||
VPMProjectManifest.Load(ProjectDir);
|
||||
ResolverWindow.Refresh();
|
||||
}
|
||||
|
||||
|
||||
public static void ResolveManifest()
|
||||
{
|
||||
ResolveStatic(ProjectDir);
|
||||
@ -128,7 +128,7 @@ namespace VRC.PackageManagement.Resolver
|
||||
EditorUtility.ClearProgressBar();
|
||||
ForceRefresh();
|
||||
}
|
||||
|
||||
|
||||
public static List<string> GetAllVersionsOf(string id)
|
||||
{
|
||||
var project = new UnityProject(ProjectDir);
|
||||
@ -185,15 +185,15 @@ namespace VRC.PackageManagement.Resolver
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void ForceRefresh ()
|
||||
|
||||
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 );
|
||||
MethodInfo method = typeof(UnityEditor.PackageManager.Client).GetMethod("Resolve",
|
||||
BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
|
||||
if (method != null)
|
||||
method.Invoke(null, null);
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "com.vrchat.core.vpm-resolver",
|
||||
"displayName": "VRChat Package Resolver Tool",
|
||||
"version": "0.1.17",
|
||||
"version": "0.1.18",
|
||||
"unity": "2019.4",
|
||||
"description": "Tool to Download VPM Packages",
|
||||
"vrchatVersion": "2022.1.1",
|
||||
|
@ -14,7 +14,7 @@ AudioImporter:
|
||||
forceToMono: 1
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
loadInBackground: 1
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
|
@ -9,16 +9,18 @@
|
||||
},
|
||||
"locked": {
|
||||
"com.vrchat.avatars": {
|
||||
"version": "3.1.10",
|
||||
"version": "3.1.13",
|
||||
"dependencies": {
|
||||
"com.vrchat.base": "3.1.x"
|
||||
"com.vrchat.base": "3.1.13"
|
||||
}
|
||||
},
|
||||
"com.vrchat.base": {
|
||||
"version": "3.1.10"
|
||||
"version": "3.1.13",
|
||||
"dependencies": {}
|
||||
},
|
||||
"com.vrchat.core.vpm-resolver": {
|
||||
"version": "0.1.17"
|
||||
"version": "0.1.18",
|
||||
"dependencies": {}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user