Skip to content

Commit

Permalink
parameter-provider
Browse files Browse the repository at this point in the history
  • Loading branch information
Narazaka committed Mar 14, 2024
1 parent e31169f commit 6def629
Show file tree
Hide file tree
Showing 9 changed files with 136 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Components/AvatarMenuCreatorBase.cs
Expand Up @@ -33,6 +33,6 @@ public IEnumerable<VRCExpressionParameters.Parameter> GetParameterNameAndTypes()

public abstract IEnumerable<VRCExpressionParameters.Parameter> GetEffectiveParameterNameAndTypes();

protected string ParameterName => string.IsNullOrEmpty(AvatarMenu.ParameterName) ? name : AvatarMenu.ParameterName;
public string ParameterName => string.IsNullOrEmpty(AvatarMenu.ParameterName) ? name : AvatarMenu.ParameterName;
}
}
8 changes: 8 additions & 0 deletions Components/Editor/ParameterProviders.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

@@ -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<ProvidedParameter> 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
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

@@ -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.1,2)",
"define": "HAS_NDMF_ParameterProvider"
}
],
"noEngineReferences": false
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

@@ -0,0 +1,11 @@
using nadena.dev.ndmf;
using net.narazaka.avatarmenucreator.components;

namespace net.narazaka.avatarmenucreator.editor
{
[ParameterProviderFor(typeof(AvatarToggleMenuCreator))]
internal class AvatarToggleMenuCreatorParameterProvider : AvatarMenuCreatorBaseParameterProvider
{
public AvatarToggleMenuCreatorParameterProvider(AvatarToggleMenuCreator c) : base(c) { }
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions 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
{
Expand Down Expand Up @@ -244,5 +245,21 @@ public static IEnumerable<ShaderParameter> 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));
}
}
}
}

0 comments on commit 6def629

Please sign in to comment.