mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-04-15 00:48:59 +08:00
feat: platform support declarations (#1547)
This commit is contained in:
parent
420f9b00b1
commit
5be1f13840
4
.github/ProjectRoot/vpm-manifest-2022.json
vendored
4
.github/ProjectRoot/vpm-manifest-2022.json
vendored
@ -4,7 +4,7 @@
|
|||||||
"version": "3.7.4"
|
"version": "3.7.4"
|
||||||
},
|
},
|
||||||
"nadena.dev.ndmf": {
|
"nadena.dev.ndmf": {
|
||||||
"version": "1.7.4"
|
"version": "1.8.0-alpha.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -19,7 +19,7 @@
|
|||||||
"dependencies": {}
|
"dependencies": {}
|
||||||
},
|
},
|
||||||
"nadena.dev.ndmf": {
|
"nadena.dev.ndmf": {
|
||||||
"version": "1.7.4"
|
"version": "1.8.0-alpha.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- (実験的機能) VRC以外のプラットフォームのサポートを有効化
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- (Experimental feature) Enabled support for non-VRC platforms
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ Modular Avatarの主な変更点をこのファイルで記録しています。
|
|||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- (実験的機能) VRC以外のプラットフォームのサポートを有効化
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- (Experimental feature) Enabled support for non-VRC platforms
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ namespace nadena.dev.modular_avatar.animation
|
|||||||
internal HashSet<VirtualLayer> mmdAffectedOriginalLayers = new();
|
internal HashSet<VirtualLayer> mmdAffectedOriginalLayers = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
internal class MMDRelayEarlyPass : Pass<MMDRelayEarlyPass>
|
internal class MMDRelayEarlyPass : Pass<MMDRelayEarlyPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(BuildContext context)
|
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
|
/// 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.
|
/// pushed out of the first three layers by injecting dummy layers.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
internal class MMDRelayPass : Pass<MMDRelayPass>
|
internal class MMDRelayPass : Pass<MMDRelayPass>
|
||||||
{
|
{
|
||||||
private const string MMDRelayParam = "__MA/Internal/MMDNotActive";
|
private const string MMDRelayParam = "__MA/Internal/MMDNotActive";
|
||||||
|
@ -13,6 +13,7 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace nadena.dev.modular_avatar.core.editor
|
namespace nadena.dev.modular_avatar.core.editor
|
||||||
{
|
{
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
internal class ApplyAnimatorDefaultValuesPass : Pass<ApplyAnimatorDefaultValuesPass>
|
internal class ApplyAnimatorDefaultValuesPass : Pass<ApplyAnimatorDefaultValuesPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
protected override void Execute(ndmf.BuildContext context)
|
||||||
|
@ -16,6 +16,7 @@ using Object = UnityEngine.Object;
|
|||||||
|
|
||||||
namespace nadena.dev.modular_avatar.core.editor
|
namespace nadena.dev.modular_avatar.core.editor
|
||||||
{
|
{
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
internal class MergeBlendTreePass : Pass<MergeBlendTreePass>
|
internal class MergeBlendTreePass : Pass<MergeBlendTreePass>
|
||||||
{
|
{
|
||||||
internal const string ALWAYS_ONE = "__ModularAvatarInternal/One";
|
internal const string ALWAYS_ONE = "__ModularAvatarInternal/One";
|
||||||
|
@ -14,6 +14,7 @@ using VRC.Dynamics;
|
|||||||
|
|
||||||
namespace nadena.dev.modular_avatar.core.editor
|
namespace nadena.dev.modular_avatar.core.editor
|
||||||
{
|
{
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
internal class ConstraintConverterPass : Pass<ConstraintConverterPass>
|
internal class ConstraintConverterPass : Pass<ConstraintConverterPass>
|
||||||
{
|
{
|
||||||
#if MA_VRCSDK3_AVATARS_3_7_0_OR_NEWER
|
#if MA_VRCSDK3_AVATARS_3_7_0_OR_NEWER
|
||||||
|
@ -5,6 +5,7 @@ using nadena.dev.ndmf;
|
|||||||
|
|
||||||
namespace nadena.dev.modular_avatar.core.editor
|
namespace nadena.dev.modular_avatar.core.editor
|
||||||
{
|
{
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
internal class PruneParametersPass : Pass<PruneParametersPass>
|
internal class PruneParametersPass : Pass<PruneParametersPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
protected override void Execute(ndmf.BuildContext context)
|
||||||
|
@ -7,6 +7,7 @@ using nadena.dev.modular_avatar.editor.ErrorReporting;
|
|||||||
using nadena.dev.ndmf;
|
using nadena.dev.ndmf;
|
||||||
using nadena.dev.ndmf.animator;
|
using nadena.dev.ndmf.animator;
|
||||||
using nadena.dev.ndmf.fluent;
|
using nadena.dev.ndmf.fluent;
|
||||||
|
using nadena.dev.ndmf.model;
|
||||||
using nadena.dev.ndmf.util;
|
using nadena.dev.ndmf.util;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Object = UnityEngine.Object;
|
using Object = UnityEngine.Object;
|
||||||
@ -19,6 +20,7 @@ using Object = UnityEngine.Object;
|
|||||||
|
|
||||||
namespace nadena.dev.modular_avatar.core.editor.plugin
|
namespace nadena.dev.modular_avatar.core.editor.plugin
|
||||||
{
|
{
|
||||||
|
[RunsOnAllPlatforms]
|
||||||
class PluginDefinition : Plugin<PluginDefinition>
|
class PluginDefinition : Plugin<PluginDefinition>
|
||||||
{
|
{
|
||||||
public override string QualifiedName => "nadena.dev.modular-avatar";
|
public override string QualifiedName => "nadena.dev.modular-avatar";
|
||||||
@ -58,6 +60,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
|
|||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
seq.Run(ReactiveObjectPrepass.Instance);
|
seq.Run(ReactiveObjectPrepass.Instance);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
seq.WithRequiredExtension(typeof(AnimatorServicesContext), _s2 =>
|
seq.WithRequiredExtension(typeof(AnimatorServicesContext), _s2 =>
|
||||||
{
|
{
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
@ -70,7 +73,8 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
|
|||||||
|
|
||||||
seq.WithRequiredExtension(typeof(ReadablePropertyExtension), _s3 =>
|
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(),
|
.PreviewingWith(new ShapeChangerPreview(), new ObjectSwitcherPreview(),
|
||||||
new MaterialSetterPreview());
|
new MaterialSetterPreview());
|
||||||
});
|
});
|
||||||
@ -82,26 +86,27 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
|
|||||||
seq.Run(MenuInstallPluginPass.Instance);
|
seq.Run(MenuInstallPluginPass.Instance);
|
||||||
#endif
|
#endif
|
||||||
seq.Run(MergeArmaturePluginPass.Instance);
|
seq.Run(MergeArmaturePluginPass.Instance);
|
||||||
|
|
||||||
seq.Run(BoneProxyPluginPass.Instance);
|
seq.Run(BoneProxyPluginPass.Instance);
|
||||||
|
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
seq.Run(VisibleHeadAccessoryPluginPass.Instance);
|
seq.Run(VisibleHeadAccessoryPluginPass.Instance);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
seq.Run("World Fixed Object",
|
seq.OnPlatforms(new[] { WellKnownPlatforms.VRChatAvatar30 }, _seq =>
|
||||||
ctx => new WorldFixedObjectProcessor().Process(ctx)
|
{
|
||||||
);
|
seq.Run("World Fixed Object",
|
||||||
|
ctx => new WorldFixedObjectProcessor().Process(ctx)
|
||||||
|
);
|
||||||
|
});
|
||||||
seq.Run(WorldScaleObjectPass.Instance);
|
seq.Run(WorldScaleObjectPass.Instance);
|
||||||
|
|
||||||
seq.Run(ReplaceObjectPluginPass.Instance);
|
seq.Run(ReplaceObjectPluginPass.Instance);
|
||||||
|
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
seq.Run(BlendshapeSyncAnimationPluginPass.Instance);
|
seq.Run(BlendshapeSyncAnimationPluginPass.Instance);
|
||||||
|
seq.Run(ConstraintConverterPass.Instance);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
seq.Run(ConstraintConverterPass.Instance);
|
|
||||||
|
|
||||||
seq.Run("Prune empty animator layers",
|
seq.Run("Prune empty animator layers",
|
||||||
ctx => { ctx.Extension<AnimatorServicesContext>().RemoveEmptyLayers(); });
|
ctx => { ctx.Extension<AnimatorServicesContext>().RemoveEmptyLayers(); });
|
||||||
seq.Run("Harmonize animator parameter types",
|
seq.Run("Harmonize animator parameter types",
|
||||||
@ -111,10 +116,13 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
|
|||||||
});
|
});
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
seq.Run(PhysbonesBlockerPluginPass.Instance);
|
seq.Run(PhysbonesBlockerPluginPass.Instance);
|
||||||
seq.Run("Fixup Expressions Menu", ctx =>
|
seq.OnPlatforms(new[] { WellKnownPlatforms.VRChatAvatar30 }, _seq =>
|
||||||
{
|
{
|
||||||
var maContext = ctx.Extension<ModularAvatarContext>().BuildContext;
|
seq.Run("Fixup Expressions Menu", ctx =>
|
||||||
FixupExpressionsMenuPass.FixupExpressionsMenu(maContext);
|
{
|
||||||
|
var maContext = ctx.Extension<ModularAvatarContext>().BuildContext;
|
||||||
|
FixupExpressionsMenuPass.FixupExpressionsMenu(maContext);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
seq.Run(SyncParameterSequencePass.Instance);
|
seq.Run(SyncParameterSequencePass.Instance);
|
||||||
#endif
|
#endif
|
||||||
@ -212,6 +220,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
class MergeAnimatorPluginPass : MAPass<MergeAnimatorPluginPass>
|
class MergeAnimatorPluginPass : MAPass<MergeAnimatorPluginPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
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>
|
class MenuInstallPluginPass : MAPass<MenuInstallPluginPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
protected override void Execute(ndmf.BuildContext context)
|
||||||
@ -246,6 +256,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
class VisibleHeadAccessoryPluginPass : MAPass<VisibleHeadAccessoryPluginPass>
|
class VisibleHeadAccessoryPluginPass : MAPass<VisibleHeadAccessoryPluginPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
protected override void Execute(ndmf.BuildContext context)
|
||||||
@ -264,6 +275,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)] // TODO - support other platforms
|
||||||
class BlendshapeSyncAnimationPluginPass : MAPass<BlendshapeSyncAnimationPluginPass>
|
class BlendshapeSyncAnimationPluginPass : MAPass<BlendshapeSyncAnimationPluginPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
protected override void Execute(ndmf.BuildContext context)
|
||||||
@ -271,7 +283,7 @@ namespace nadena.dev.modular_avatar.core.editor.plugin
|
|||||||
new BlendshapeSyncAnimationProcessor(context).OnPreprocessAvatar();
|
new BlendshapeSyncAnimationProcessor(context).OnPreprocessAvatar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class PhysbonesBlockerPluginPass : MAPass<PhysbonesBlockerPluginPass>
|
class PhysbonesBlockerPluginPass : MAPass<PhysbonesBlockerPluginPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
protected override void Execute(ndmf.BuildContext context)
|
||||||
|
@ -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
|
/// 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.
|
/// layer reference correction logic; this can go away once we have a more unified animation services API.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
internal class ReactiveObjectPrepass : Pass<ReactiveObjectPrepass>
|
internal class ReactiveObjectPrepass : Pass<ReactiveObjectPrepass>
|
||||||
{
|
{
|
||||||
internal const string TAG_PATH = "__MA/ShapeChanger/PrepassPlaceholder";
|
internal const string TAG_PATH = "__MA/ShapeChanger/PrepassPlaceholder";
|
||||||
|
@ -12,6 +12,7 @@ using Object = UnityEngine.Object;
|
|||||||
|
|
||||||
namespace nadena.dev.modular_avatar.core.editor
|
namespace nadena.dev.modular_avatar.core.editor
|
||||||
{
|
{
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
public class SyncParameterSequencePass : Pass<SyncParameterSequencePass>
|
public class SyncParameterSequencePass : Pass<SyncParameterSequencePass>
|
||||||
{
|
{
|
||||||
private static Platform? CurrentPlatform
|
private static Platform? CurrentPlatform
|
||||||
|
@ -4,6 +4,7 @@ using nadena.dev.ndmf;
|
|||||||
|
|
||||||
namespace nadena.dev.modular_avatar.core.editor
|
namespace nadena.dev.modular_avatar.core.editor
|
||||||
{
|
{
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
internal class VRChatSettingsPass : Pass<VRChatSettingsPass>
|
internal class VRChatSettingsPass : Pass<VRChatSettingsPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
protected override void Execute(ndmf.BuildContext context)
|
||||||
|
@ -12,6 +12,7 @@ using UnityEngine.Animations;
|
|||||||
|
|
||||||
namespace nadena.dev.modular_avatar.core.editor
|
namespace nadena.dev.modular_avatar.core.editor
|
||||||
{
|
{
|
||||||
|
[RunsOnPlatforms(WellKnownPlatforms.VRChatAvatar30)]
|
||||||
internal class WorldScaleObjectPass : Pass<WorldScaleObjectPass>
|
internal class WorldScaleObjectPass : Pass<WorldScaleObjectPass>
|
||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
protected override void Execute(ndmf.BuildContext context)
|
||||||
|
@ -16,6 +16,6 @@
|
|||||||
},
|
},
|
||||||
"vpmDependencies": {
|
"vpmDependencies": {
|
||||||
"com.vrchat.avatars": ">=3.7.4",
|
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user