mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-03-04 04:44:55 +08:00
fix: NotSynced parameters become synced when merging (#1347)
Closes: #1342
This commit is contained in:
parent
4405d7aa56
commit
30512c26e8
@ -87,7 +87,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
_component, PluginDefinition.Instance, paramType)
|
||||
{
|
||||
IsAnimatorOnly = animatorOnly,
|
||||
WantSynced = !p.localOnly,
|
||||
WantSynced = !p.localOnly && !animatorOnly,
|
||||
IsHidden = p.internalParameter,
|
||||
DefaultValue = p.defaultValue
|
||||
};
|
||||
|
@ -136,6 +136,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
if (ResolvedParameter.syncType == ParameterSyncType.NotSynced)
|
||||
{
|
||||
ResolvedParameter.syncType = info.ResolvedParameter.syncType;
|
||||
ResolvedParameter.localOnly = info.ResolvedParameter.localOnly;
|
||||
} else if (ResolvedParameter.syncType != info.ResolvedParameter.syncType && info.ResolvedParameter.syncType != ParameterSyncType.NotSynced)
|
||||
{
|
||||
TypeConflict = true;
|
||||
@ -734,6 +735,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
ParameterConfig parameterConfig = param;
|
||||
parameterConfig.nameOrPrefix = remapTo;
|
||||
parameterConfig.remapTo = remapTo;
|
||||
parameterConfig.localOnly = parameterConfig.localOnly || param.syncType == ParameterSyncType.NotSynced;
|
||||
var info = new ParameterInfo()
|
||||
{
|
||||
ResolvedParameter = parameterConfig,
|
||||
|
@ -306,6 +306,45 @@ namespace modular_avatar_tests.RenameParametersTests
|
||||
|
||||
Assert.AreNotEqual(fuga.name, "Fuga"); // should be auto-renamed
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AnimatorOnlyAndLocalParameterShouldNotSync()
|
||||
{
|
||||
var root = CreateRoot("x");
|
||||
|
||||
var c1 = CreateChild(root, "c1");
|
||||
var c2 = CreateChild(root, "c2");
|
||||
|
||||
var p1 = c1.AddComponent<ModularAvatarParameters>();
|
||||
var p2 = c2.AddComponent<ModularAvatarParameters>();
|
||||
|
||||
p1.parameters = new()
|
||||
{
|
||||
new()
|
||||
{
|
||||
nameOrPrefix = "a",
|
||||
syncType = ParameterSyncType.NotSynced,
|
||||
localOnly = false
|
||||
}
|
||||
};
|
||||
p2.parameters = new()
|
||||
{
|
||||
new()
|
||||
{
|
||||
nameOrPrefix = "a",
|
||||
syncType = ParameterSyncType.Int,
|
||||
localOnly = true
|
||||
}
|
||||
};
|
||||
|
||||
AvatarProcessor.ProcessAvatar(root);
|
||||
|
||||
var expParams = root.GetComponent<VRCAvatarDescriptor>().expressionParameters.parameters
|
||||
.Select(p => new KeyValuePair<string, VRCExpressionParameters.Parameter>(p.name, p))
|
||||
.ToImmutableDictionary();
|
||||
|
||||
Assert.IsFalse(expParams["a"].networkSynced);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user