diff --git a/Components/AvatarMenuCreatorBase.cs b/Components/AvatarMenuCreatorBase.cs index 479b4ee..1667d09 100644 --- a/Components/AvatarMenuCreatorBase.cs +++ b/Components/AvatarMenuCreatorBase.cs @@ -33,6 +33,6 @@ public IEnumerable GetParameterNameAndTypes() public abstract IEnumerable GetEffectiveParameterNameAndTypes(); - protected string ParameterName => string.IsNullOrEmpty(AvatarMenu.ParameterName) ? name : AvatarMenu.ParameterName; + public string ParameterName => string.IsNullOrEmpty(AvatarMenu.ParameterName) ? name : AvatarMenu.ParameterName; } } diff --git a/Components/Editor/ParameterProviders.meta b/Components/Editor/ParameterProviders.meta new file mode 100644 index 0000000..c95b578 --- /dev/null +++ b/Components/Editor/ParameterProviders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4c2c93790f933e4aa541857aea7015d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Components/Editor/ParameterProviders/AvatarMenuCreatorBaseParameterProvider.cs b/Components/Editor/ParameterProviders/AvatarMenuCreatorBaseParameterProvider.cs new file mode 100644 index 0000000..deec804 --- /dev/null +++ b/Components/Editor/ParameterProviders/AvatarMenuCreatorBaseParameterProvider.cs @@ -0,0 +1,39 @@ +using nadena.dev.ndmf; +using net.narazaka.avatarmenucreator.components; +using net.narazaka.avatarmenucreator.components.editor; +using net.narazaka.avatarmenucreator.editor.util; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Diagnostics.CodeAnalysis; +using System.Linq; + +namespace net.narazaka.avatarmenucreator.editor +{ + [ParameterProviderFor(typeof(AvatarMenuCreatorBase))] + internal class AvatarMenuCreatorBaseParameterProvider : IParameterProvider + { + readonly AvatarMenuCreatorBase Menu; + + public AvatarMenuCreatorBaseParameterProvider(AvatarMenuCreatorBase c) + { + Menu = c; + } + + public IEnumerable GetSuppliedParameters([AllowNull] BuildContext context = null) + { + return Menu.GetParameterNameAndTypes().Select(p => + new ProvidedParameter(p.name, ParameterNamespace.Animator, Menu, AvatarMenuCreatorPlugin.Instance, p.valueType.ToAnimatorControllerParameterType()) + { + WantSynced = true, + IsHidden = Menu.AvatarMenu.InternalParameter, + } + ); + } + + public void RemapParameters(ref ImmutableDictionary<(ParameterNamespace, string), ParameterMapping> nameMap, + BuildContext context) + { + // no-op + } + } +} diff --git a/Components/Editor/ParameterProviders/AvatarMenuCreatorBaseParameterProvider.cs.meta b/Components/Editor/ParameterProviders/AvatarMenuCreatorBaseParameterProvider.cs.meta new file mode 100644 index 0000000..c12df26 --- /dev/null +++ b/Components/Editor/ParameterProviders/AvatarMenuCreatorBaseParameterProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 59e448f643f99cf4dbc32d8554552bdc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Components/Editor/ParameterProviders/AvatarMenuCreatorForMA.Components.Editor.ParameterProviders.asmdef b/Components/Editor/ParameterProviders/AvatarMenuCreatorForMA.Components.Editor.ParameterProviders.asmdef new file mode 100644 index 0000000..8e2e156 --- /dev/null +++ b/Components/Editor/ParameterProviders/AvatarMenuCreatorForMA.Components.Editor.ParameterProviders.asmdef @@ -0,0 +1,31 @@ +{ + "name": "AvatarMenuCreatorForMA.Components.Editor.ParameterProviders", + "rootNamespace": "", + "references": [ + "nadena.dev.ndmf", + "nadena.dev.ndmf.vrchat", + "AvatarMenuCreatorForMA.Components", + "AvatarMenuCreatorForMA.Core", + "AvatarMenuCreatorForMA.Editor.Util", + "AvatarMenuCreatorForMA.Components.Editor" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": false, + "defineConstraints": [ + "HAS_NDMF_ParameterProvider" + ], + "versionDefines": [ + { + "name": "nadena.dev.ndmf", + "expression": "[1.4.0-rc.2,2)", + "define": "HAS_NDMF_ParameterProvider" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Components/Editor/ParameterProviders/AvatarMenuCreatorForMA.Components.Editor.ParameterProviders.asmdef.meta b/Components/Editor/ParameterProviders/AvatarMenuCreatorForMA.Components.Editor.ParameterProviders.asmdef.meta new file mode 100644 index 0000000..50aa017 --- /dev/null +++ b/Components/Editor/ParameterProviders/AvatarMenuCreatorForMA.Components.Editor.ParameterProviders.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3922d985a3ca7e8418c790b81a5c3f88 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Util/Util.cs b/Editor/Util/Util.cs index f8d7bec..4d01621 100644 --- a/Editor/Util/Util.cs +++ b/Editor/Util/Util.cs @@ -1,6 +1,7 @@ using System.Linq; using System.Collections.Generic; using UnityEngine; +using VRC.SDK3.Avatars.ScriptableObjects; namespace net.narazaka.avatarmenucreator.editor.util { @@ -244,5 +245,21 @@ public static IEnumerable GetShaderParameters(Shader shader) descriptions .SelectMany(desc => desc.ShaderParameters) .Distinct(new ShaderParameterComparator()); + + + public static AnimatorControllerParameterType ToAnimatorControllerParameterType(this VRCExpressionParameters.ValueType valueType) + { + switch (valueType) + { + case VRCExpressionParameters.ValueType.Bool: + return AnimatorControllerParameterType.Bool; + case VRCExpressionParameters.ValueType.Float: + return AnimatorControllerParameterType.Float; + case VRCExpressionParameters.ValueType.Int: + return AnimatorControllerParameterType.Int; + default: + throw new System.ArgumentOutOfRangeException(nameof(valueType)); + } + } } } diff --git a/README.md b/README.md index b280ad3..cec76b2 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,12 @@ NDMF(Modular Avatar 1.8.0以降)のコンポーネントによる非破壊 ## 更新履歴 +- 1.17.0 + - NDMF 1.4.0 Parameter Providerに対応 +- 1.17.0-rc.1 + - NDMF 1.4.0-rc.x Parameter Provider対応2 +- 1.17.0-rc.0 + - NDMF 1.4.0-rc.x Parameter Provider対応 - 1.16.1 - fix typo - 1.16.0 diff --git a/package.json b/package.json index 080a4c2..f5ba3c1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "net.narazaka.vrchat.avatar-menu-creater-for-ma", - "version": "1.16.1", + "version": "1.17.0", "displayName": "AvatarMenuCreatorForMA", "description": "AvatarMenuCreator for Modular Avatar", "author": {