diff --git a/.github/ProjectRoot/vpm-manifest-2022.json b/.github/ProjectRoot/vpm-manifest-2022.json index 9eb0da9d..fe2945c9 100644 --- a/.github/ProjectRoot/vpm-manifest-2022.json +++ b/.github/ProjectRoot/vpm-manifest-2022.json @@ -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" } } } \ No newline at end of file diff --git a/CHANGELOG-PRERELEASE-jp.md b/CHANGELOG-PRERELEASE-jp.md index 567cfdbb..5518c435 100644 --- a/CHANGELOG-PRERELEASE-jp.md +++ b/CHANGELOG-PRERELEASE-jp.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added +- (実験的機能) VRC以外のプラットフォームのサポートを有効化 ### Fixed diff --git a/CHANGELOG-PRERELEASE.md b/CHANGELOG-PRERELEASE.md index a43c996d..4e0f030c 100644 --- a/CHANGELOG-PRERELEASE.md +++ b/CHANGELOG-PRERELEASE.md @@ -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 diff --git a/CHANGELOG-jp.md b/CHANGELOG-jp.md index 1a9a5981..545765f6 100644 --- a/CHANGELOG-jp.md +++ b/CHANGELOG-jp.md @@ -9,6 +9,7 @@ Modular Avatarの主な変更点をこのファイルで記録しています。 ## [Unreleased] ### Added +- (実験的機能) VRC以外のプラットフォームのサポートを有効化 ### Fixed diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fdfacd1..0e141332 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/Editor/Animation/MMDRelayPass.cs b/Editor/Animation/MMDRelayPass.cs index 2eeb78d1..b43ab135 100644 --- a/Editor/Animation/MMDRelayPass.cs +++ b/Editor/Animation/MMDRelayPass.cs @@ -23,6 +23,7 @@ namespace nadena.dev.modular_avatar.animation internal HashSet mmdAffectedOriginalLayers = new(); } + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] internal class MMDRelayEarlyPass : Pass { 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. /// + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] internal class MMDRelayPass : Pass { private const string MMDRelayParam = "__MA/Internal/MMDNotActive"; diff --git a/Editor/ApplyAnimatorDefaultValuesPass.cs b/Editor/ApplyAnimatorDefaultValuesPass.cs index 84056413..f320db01 100644 --- a/Editor/ApplyAnimatorDefaultValuesPass.cs +++ b/Editor/ApplyAnimatorDefaultValuesPass.cs @@ -13,6 +13,7 @@ using UnityEngine; namespace nadena.dev.modular_avatar.core.editor { + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] internal class ApplyAnimatorDefaultValuesPass : Pass { protected override void Execute(ndmf.BuildContext context) diff --git a/Editor/MergeBlendTreePass.cs b/Editor/MergeBlendTreePass.cs index 985caac2..bea45aaa 100644 --- a/Editor/MergeBlendTreePass.cs +++ b/Editor/MergeBlendTreePass.cs @@ -16,6 +16,7 @@ using Object = UnityEngine.Object; namespace nadena.dev.modular_avatar.core.editor { + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] internal class MergeBlendTreePass : Pass { internal const string ALWAYS_ONE = "__ModularAvatarInternal/One"; diff --git a/Editor/OptimizationPasses/ConstraintConverterPass.cs b/Editor/OptimizationPasses/ConstraintConverterPass.cs index f733a1db..4da83215 100644 --- a/Editor/OptimizationPasses/ConstraintConverterPass.cs +++ b/Editor/OptimizationPasses/ConstraintConverterPass.cs @@ -14,6 +14,7 @@ using VRC.Dynamics; namespace nadena.dev.modular_avatar.core.editor { + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] internal class ConstraintConverterPass : Pass { #if MA_VRCSDK3_AVATARS_3_7_0_OR_NEWER diff --git a/Editor/OptimizationPasses/PruneParametersPass.cs b/Editor/OptimizationPasses/PruneParametersPass.cs index 801fb3e9..48d9e983 100644 --- a/Editor/OptimizationPasses/PruneParametersPass.cs +++ b/Editor/OptimizationPasses/PruneParametersPass.cs @@ -5,6 +5,7 @@ using nadena.dev.ndmf; namespace nadena.dev.modular_avatar.core.editor { + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] internal class PruneParametersPass : Pass { protected override void Execute(ndmf.BuildContext context) diff --git a/Editor/PluginDefinition/PluginDefinition.cs b/Editor/PluginDefinition/PluginDefinition.cs index 54f9f093..59968124 100644 --- a/Editor/PluginDefinition/PluginDefinition.cs +++ b/Editor/PluginDefinition/PluginDefinition.cs @@ -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 { 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().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().BuildContext; - FixupExpressionsMenuPass.FixupExpressionsMenu(maContext); + seq.Run("Fixup Expressions Menu", ctx => + { + var maContext = ctx.Extension().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 { 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 { 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 { 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 { 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 { protected override void Execute(ndmf.BuildContext context) diff --git a/Editor/ReactiveObjects/AnimationGeneration/ReactiveObjectPrepass.cs b/Editor/ReactiveObjects/AnimationGeneration/ReactiveObjectPrepass.cs index b1ae09e1..e78f22c6 100644 --- a/Editor/ReactiveObjects/AnimationGeneration/ReactiveObjectPrepass.cs +++ b/Editor/ReactiveObjects/AnimationGeneration/ReactiveObjectPrepass.cs @@ -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. /// + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] internal class ReactiveObjectPrepass : Pass { internal const string TAG_PATH = "__MA/ShapeChanger/PrepassPlaceholder"; diff --git a/Editor/SyncParameterSequencePass.cs b/Editor/SyncParameterSequencePass.cs index e6e83d37..9369779b 100644 --- a/Editor/SyncParameterSequencePass.cs +++ b/Editor/SyncParameterSequencePass.cs @@ -12,6 +12,7 @@ using Object = UnityEngine.Object; namespace nadena.dev.modular_avatar.core.editor { + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] public class SyncParameterSequencePass : Pass { private static Platform? CurrentPlatform diff --git a/Editor/VRChat/VRChatSettingsPass.cs b/Editor/VRChat/VRChatSettingsPass.cs index fea0bca7..6c8aa2ee 100644 --- a/Editor/VRChat/VRChatSettingsPass.cs +++ b/Editor/VRChat/VRChatSettingsPass.cs @@ -4,6 +4,7 @@ using nadena.dev.ndmf; namespace nadena.dev.modular_avatar.core.editor { + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] internal class VRChatSettingsPass : Pass { protected override void Execute(ndmf.BuildContext context) diff --git a/Editor/WorldScaleObjectPass.cs b/Editor/WorldScaleObjectPass.cs index 3d537540..23b3b188 100644 --- a/Editor/WorldScaleObjectPass.cs +++ b/Editor/WorldScaleObjectPass.cs @@ -12,6 +12,7 @@ using UnityEngine.Animations; namespace nadena.dev.modular_avatar.core.editor { + [RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] internal class WorldScaleObjectPass : Pass { protected override void Execute(ndmf.BuildContext context) diff --git a/package.json b/package.json index 7b4278e7..3a1f3f38 100644 --- a/package.json +++ b/package.json @@ -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" } }