feat: platform support declarations (#1547)

This commit is contained in:
bd_ 2025-04-07 18:29:26 -07:00 committed by GitHub
parent 420f9b00b1
commit 5be1f13840
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 42 additions and 16 deletions

View File

@ -4,7 +4,7 @@
"version": "3.7.4"
},
"nadena.dev.ndmf": {
"version": "1.7.4"
"version": "1.8.0-alpha.4"
}
},
"locked": {
@ -19,7 +19,7 @@
"dependencies": {}
},
"nadena.dev.ndmf": {
"version": "1.7.4"
"version": "1.8.0-alpha.4"
}
}
}

View File

@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- (実験的機能) VRC以外のプラットフォームのサポートを有効化
### Fixed

View File

@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- (Experimental feature) Enabled support for non-VRC platforms
### Fixed

View File

@ -9,6 +9,7 @@ Modular Avatarの主な変更点をこのファイルで記録しています。
## [Unreleased]
### Added
- (実験的機能) VRC以外のプラットフォームのサポートを有効化
### Fixed

View File

@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- (Experimental feature) Enabled support for non-VRC platforms
### Fixed

View File

@ -23,6 +23,7 @@ namespace nadena.dev.modular_avatar.animation
internal HashSet<VirtualLayer> mmdAffectedOriginalLayers = new();
}
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class MMDRelayEarlyPass : Pass<MMDRelayEarlyPass>
{
protected override void Execute(BuildContext context)
@ -46,6 +47,7 @@ namespace nadena.dev.modular_avatar.animation
/// layer to relay this to layers which should be affected. Finally, any layer which _shouldn't_ be affected is
/// pushed out of the first three layers by injecting dummy layers.
/// </summary>
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class MMDRelayPass : Pass<MMDRelayPass>
{
private const string MMDRelayParam = "__MA/Internal/MMDNotActive";

View File

@ -13,6 +13,7 @@ using UnityEngine;
namespace nadena.dev.modular_avatar.core.editor
{
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class ApplyAnimatorDefaultValuesPass : Pass<ApplyAnimatorDefaultValuesPass>
{
protected override void Execute(ndmf.BuildContext context)

View File

@ -16,6 +16,7 @@ using Object = UnityEngine.Object;
namespace nadena.dev.modular_avatar.core.editor
{
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class MergeBlendTreePass : Pass<MergeBlendTreePass>
{
internal const string ALWAYS_ONE = "__ModularAvatarInternal/One";

View File

@ -14,6 +14,7 @@ using VRC.Dynamics;
namespace nadena.dev.modular_avatar.core.editor
{
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class ConstraintConverterPass : Pass<ConstraintConverterPass>
{
#if MA_VRCSDK3_AVATARS_3_7_0_OR_NEWER

View File

@ -5,6 +5,7 @@ using nadena.dev.ndmf;
namespace nadena.dev.modular_avatar.core.editor
{
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class PruneParametersPass : Pass<PruneParametersPass>
{
protected override void Execute(ndmf.BuildContext context)

View File

@ -7,6 +7,7 @@ using nadena.dev.modular_avatar.editor.ErrorReporting;
using nadena.dev.ndmf;
using nadena.dev.ndmf.animator;
using nadena.dev.ndmf.fluent;
using nadena.dev.ndmf.model;
using nadena.dev.ndmf.util;
using UnityEngine;
using Object = UnityEngine.Object;
@ -19,6 +20,7 @@ using Object = UnityEngine.Object;
namespace nadena.dev.modular_avatar.core.editor.plugin
{
[RunsOnAllPlatforms]
class PluginDefinition : Plugin<PluginDefinition>
{
public override string QualifiedName => "nadena.dev.modular-avatar";
@ -58,6 +60,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
#if MA_VRCSDK3_AVATARS
seq.Run(ReactiveObjectPrepass.Instance);
#endif
seq.WithRequiredExtension(typeof(AnimatorServicesContext), _s2 =>
{
#if MA_VRCSDK3_AVATARS
@ -70,7 +73,8 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
seq.WithRequiredExtension(typeof(ReadablePropertyExtension), _s3 =>
{
seq.Run("Shape Changer", ctx => new ReactiveObjectPass(ctx).Execute())
// TODO - refactor out VRChat-specific bits
seq.Run("Reactive Components", ctx => new ReactiveObjectPass(ctx).Execute())
.PreviewingWith(new ShapeChangerPreview(), new ObjectSwitcherPreview(),
new MaterialSetterPreview());
});
@ -82,26 +86,27 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
seq.Run(MenuInstallPluginPass.Instance);
#endif
seq.Run(MergeArmaturePluginPass.Instance);
seq.Run(BoneProxyPluginPass.Instance);
#if MA_VRCSDK3_AVATARS
seq.Run(VisibleHeadAccessoryPluginPass.Instance);
#endif
seq.Run("World Fixed Object",
ctx => new WorldFixedObjectProcessor().Process(ctx)
);
seq.OnPlatforms(new[] { WellKnownPlatforms.VRChatAvatar30 }, _seq =>
{
seq.Run("World Fixed Object",
ctx => new WorldFixedObjectProcessor().Process(ctx)
);
});
seq.Run(WorldScaleObjectPass.Instance);
seq.Run(ReplaceObjectPluginPass.Instance);
#if MA_VRCSDK3_AVATARS
seq.Run(BlendshapeSyncAnimationPluginPass.Instance);
seq.Run(ConstraintConverterPass.Instance);
#endif
seq.Run(ConstraintConverterPass.Instance);
seq.Run("Prune empty animator layers",
ctx => { ctx.Extension<AnimatorServicesContext>().RemoveEmptyLayers(); });
seq.Run("Harmonize animator parameter types",
@ -111,10 +116,13 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
});
#if MA_VRCSDK3_AVATARS
seq.Run(PhysbonesBlockerPluginPass.Instance);
seq.Run("Fixup Expressions Menu", ctx =>
seq.OnPlatforms(new[] { WellKnownPlatforms.VRChatAvatar30 }, _seq =>
{
var maContext = ctx.Extension<ModularAvatarContext>().BuildContext;
FixupExpressionsMenuPass.FixupExpressionsMenu(maContext);
seq.Run("Fixup Expressions Menu", ctx =>
{
var maContext = ctx.Extension<ModularAvatarContext>().BuildContext;
FixupExpressionsMenuPass.FixupExpressionsMenu(maContext);
});
});
seq.Run(SyncParameterSequencePass.Instance);
#endif
@ -212,6 +220,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
}
}
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
class MergeAnimatorPluginPass : MAPass<MergeAnimatorPluginPass>
{
protected override void Execute(ndmf.BuildContext context)
@ -220,6 +229,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
}
}
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
class MenuInstallPluginPass : MAPass<MenuInstallPluginPass>
{
protected override void Execute(ndmf.BuildContext context)
@ -246,6 +256,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
}
#if MA_VRCSDK3_AVATARS
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
class VisibleHeadAccessoryPluginPass : MAPass<VisibleHeadAccessoryPluginPass>
{
protected override void Execute(ndmf.BuildContext context)
@ -264,6 +275,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
}
#if MA_VRCSDK3_AVATARS
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] // TODO - support other platforms
class BlendshapeSyncAnimationPluginPass : MAPass<BlendshapeSyncAnimationPluginPass>
{
protected override void Execute(ndmf.BuildContext context)
@ -271,7 +283,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
new BlendshapeSyncAnimationProcessor(context).OnPreprocessAvatar();
}
}
class PhysbonesBlockerPluginPass : MAPass<PhysbonesBlockerPluginPass>
{
protected override void Execute(ndmf.BuildContext context)

View File

@ -9,6 +9,7 @@ namespace nadena.dev.modular_avatar.core.editor
/// Reserve an animator layer for reactive object use. We do this here so that we can take advantage of MergeAnimator's
/// layer reference correction logic; this can go away once we have a more unified animation services API.
/// </summary>
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class ReactiveObjectPrepass : Pass<ReactiveObjectPrepass>
{
internal const string TAG_PATH = "__MA/ShapeChanger/PrepassPlaceholder";

View File

@ -12,6 +12,7 @@ using Object = UnityEngine.Object;
namespace nadena.dev.modular_avatar.core.editor
{
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
public class SyncParameterSequencePass : Pass<SyncParameterSequencePass>
{
private static Platform? CurrentPlatform

View File

@ -4,6 +4,7 @@ using nadena.dev.ndmf;
namespace nadena.dev.modular_avatar.core.editor
{
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class VRChatSettingsPass : Pass<VRChatSettingsPass>
{
protected override void Execute(ndmf.BuildContext context)

View File

@ -12,6 +12,7 @@ using UnityEngine.Animations;
namespace nadena.dev.modular_avatar.core.editor
{
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
internal class WorldScaleObjectPass : Pass<WorldScaleObjectPass>
{
protected override void Execute(ndmf.BuildContext context)

View File

@ -16,6 +16,6 @@
},
"vpmDependencies": {
"com.vrchat.avatars": ">=3.7.4",
"nadena.dev.ndmf": ">=1.7.4 <2.0.0-a"
"nadena.dev.ndmf": ">=1.8.0-alpha.4 <2.0.0-a"
}
}