mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-04-12 15:38:59 +08:00
chore: early return if VRCSDK project but not VRChat avatar
This commit is contained in:
parent
5433227c5b
commit
4f89c4aea2
@ -158,6 +158,7 @@ namespace nadena.dev.modular_avatar.animation
|
|||||||
|
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
var avatarDescriptor = context.AvatarDescriptor;
|
var avatarDescriptor = context.AvatarDescriptor;
|
||||||
|
if (!avatarDescriptor) return;
|
||||||
|
|
||||||
foreach (var layer in avatarDescriptor.baseAnimationLayers)
|
foreach (var layer in avatarDescriptor.baseAnimationLayers)
|
||||||
{
|
{
|
||||||
|
@ -92,6 +92,8 @@ namespace nadena.dev.modular_avatar.animation
|
|||||||
public void AddPropertyDefinition(AnimatorControllerParameter paramDef)
|
public void AddPropertyDefinition(AnimatorControllerParameter paramDef)
|
||||||
{
|
{
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
|
if (!_context.AvatarDescriptor) return;
|
||||||
|
|
||||||
var fx = (AnimatorController)
|
var fx = (AnimatorController)
|
||||||
_context.AvatarDescriptor.baseAnimationLayers
|
_context.AvatarDescriptor.baseAnimationLayers
|
||||||
.First(l => l.type == VRCAvatarDescriptor.AnimLayerType.FX)
|
.First(l => l.type == VRCAvatarDescriptor.AnimLayerType.FX)
|
||||||
|
@ -53,6 +53,8 @@ namespace nadena.dev.modular_avatar.animation
|
|||||||
// This helps reduce the risk that we'll accidentally modify the original assets.
|
// This helps reduce the risk that we'll accidentally modify the original assets.
|
||||||
|
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
|
if (!context.AvatarDescriptor) return;
|
||||||
|
|
||||||
context.AvatarDescriptor.baseAnimationLayers =
|
context.AvatarDescriptor.baseAnimationLayers =
|
||||||
CloneLayers(context, context.AvatarDescriptor.baseAnimationLayers);
|
CloneLayers(context, context.AvatarDescriptor.baseAnimationLayers);
|
||||||
context.AvatarDescriptor.specialAnimationLayers =
|
context.AvatarDescriptor.specialAnimationLayers =
|
||||||
|
@ -369,21 +369,24 @@ namespace nadena.dev.modular_avatar.animation
|
|||||||
Profiler.EndSample();
|
Profiler.EndSample();
|
||||||
|
|
||||||
#if MA_VRCSDK3_AVATARS
|
#if MA_VRCSDK3_AVATARS
|
||||||
var layers = context.AvatarDescriptor.baseAnimationLayers
|
if (context.AvatarDescriptor)
|
||||||
.Concat(context.AvatarDescriptor.specialAnimationLayers);
|
|
||||||
|
|
||||||
Profiler.BeginSample("ApplyMappingsToAvatarMasks");
|
|
||||||
foreach (var layer in layers)
|
|
||||||
{
|
{
|
||||||
ApplyMappingsToAvatarMask(layer.mask);
|
var layers = context.AvatarDescriptor.baseAnimationLayers
|
||||||
|
.Concat(context.AvatarDescriptor.specialAnimationLayers);
|
||||||
|
|
||||||
if (layer.animatorController is AnimatorController ac)
|
Profiler.BeginSample("ApplyMappingsToAvatarMasks");
|
||||||
// By this point, all AnimationOverrideControllers have been collapsed into an ephemeral
|
foreach (var layer in layers)
|
||||||
// AnimatorController so we can safely modify the controller in-place.
|
{
|
||||||
foreach (var acLayer in ac.layers)
|
ApplyMappingsToAvatarMask(layer.mask);
|
||||||
ApplyMappingsToAvatarMask(acLayer.avatarMask);
|
|
||||||
|
if (layer.animatorController is AnimatorController ac)
|
||||||
|
// By this point, all AnimationOverrideControllers have been collapsed into an ephemeral
|
||||||
|
// AnimatorController so we can safely modify the controller in-place.
|
||||||
|
foreach (var acLayer in ac.layers)
|
||||||
|
ApplyMappingsToAvatarMask(acLayer.avatarMask);
|
||||||
|
}
|
||||||
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
Profiler.EndSample();
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Profiler.EndSample();
|
Profiler.EndSample();
|
||||||
|
@ -19,6 +19,8 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
|
|
||||||
internal static void FixupExpressionsMenu(BuildContext context)
|
internal static void FixupExpressionsMenu(BuildContext context)
|
||||||
{
|
{
|
||||||
|
if (!context.AvatarDescriptor) return;
|
||||||
|
|
||||||
context.AvatarDescriptor.customExpressions = true;
|
context.AvatarDescriptor.customExpressions = true;
|
||||||
|
|
||||||
var expressionsMenu = context.AvatarDescriptor.expressionsMenu;
|
var expressionsMenu = context.AvatarDescriptor.expressionsMenu;
|
||||||
|
@ -65,6 +65,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
mergeSessions.Clear();
|
mergeSessions.Clear();
|
||||||
|
|
||||||
var descriptor = avatarGameObject.GetComponent<VRCAvatarDescriptor>();
|
var descriptor = avatarGameObject.GetComponent<VRCAvatarDescriptor>();
|
||||||
|
if (!descriptor) return;
|
||||||
|
|
||||||
if (descriptor.baseAnimationLayers != null) InitSessions(descriptor.baseAnimationLayers);
|
if (descriptor.baseAnimationLayers != null) InitSessions(descriptor.baseAnimationLayers);
|
||||||
if (descriptor.specialAnimationLayers != null) InitSessions(descriptor.specialAnimationLayers);
|
if (descriptor.specialAnimationLayers != null) InitSessions(descriptor.specialAnimationLayers);
|
||||||
|
@ -9,6 +9,8 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
{
|
{
|
||||||
protected override void Execute(ndmf.BuildContext context)
|
protected override void Execute(ndmf.BuildContext context)
|
||||||
{
|
{
|
||||||
|
if (!context.AvatarDescriptor) return;
|
||||||
|
|
||||||
var expParams = context.AvatarDescriptor.expressionParameters;
|
var expParams = context.AvatarDescriptor.expressionParameters;
|
||||||
if (expParams != null && context.IsTemporaryAsset(expParams))
|
if (expParams != null && context.IsTemporaryAsset(expParams))
|
||||||
{
|
{
|
||||||
|
@ -34,6 +34,8 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
|
|
||||||
internal void Execute()
|
internal void Execute()
|
||||||
{
|
{
|
||||||
|
if (!context.AvatarDescriptor) return;
|
||||||
|
|
||||||
// Having a WD OFF layer after WD ON layers can break WD. We match the behavior of the existing states,
|
// Having a WD OFF layer after WD ON layers can break WD. We match the behavior of the existing states,
|
||||||
// and if mixed, use WD ON to maximize compatibility.
|
// and if mixed, use WD ON to maximize compatibility.
|
||||||
_writeDefaults = MergeAnimatorProcessor.ProbeWriteDefaults(FindFxController().animatorController as AnimatorController) ?? true;
|
_writeDefaults = MergeAnimatorProcessor.ProbeWriteDefaults(FindFxController().animatorController as AnimatorController) ?? true;
|
||||||
|
@ -159,6 +159,8 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
|
|
||||||
public void OnPreprocessAvatar(GameObject avatar, BuildContext context)
|
public void OnPreprocessAvatar(GameObject avatar, BuildContext context)
|
||||||
{
|
{
|
||||||
|
if (!context.AvatarDescriptor) return;
|
||||||
|
|
||||||
_context = context;
|
_context = context;
|
||||||
|
|
||||||
var syncParams = WalkTree(avatar);
|
var syncParams = WalkTree(avatar);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user