fix: menu item with float value incorrectly generates bool parameter

This commit is contained in:
nekobako 2024-09-14 18:27:43 +09:00
parent c80d24ea46
commit 988eb9cf3a

View File

@ -115,8 +115,7 @@ namespace nadena.dev.modular_avatar.core.editor
var nextValue = 1; var nextValue = 1;
var canBeBool = true; var valueType = VRCExpressionParameters.ValueType.Bool;
var canBeInt = true;
var isSaved = false; var isSaved = false;
var isSynced = false; var isSynced = false;
@ -137,10 +136,14 @@ namespace nadena.dev.modular_avatar.core.editor
} }
} }
if (Mathf.Abs(mami.Control.value - Mathf.Round(mami.Control.value)) > 0.01f) var type =
canBeInt = false; Mathf.Abs(mami.Control.value - Mathf.Round(mami.Control.value)) > 0.01f ? VRCExpressionParameters.ValueType.Float
else : mami.Control.value < 0 || mami.Control.value > 1 ? VRCExpressionParameters.ValueType.Int
canBeBool &= mami.Control.value is >= 0 and <= 1; : VRCExpressionParameters.ValueType.Bool;
if (valueType == VRCExpressionParameters.ValueType.Bool || type == VRCExpressionParameters.ValueType.Float)
{
valueType = type;
}
isSaved |= mami.isSaved; isSaved |= mami.isSaved;
isSynced |= mami.isSynced; isSynced |= mami.isSynced;
@ -148,15 +151,10 @@ namespace nadena.dev.modular_avatar.core.editor
if (!declaredParams.ContainsKey(paramName)) if (!declaredParams.ContainsKey(paramName))
{ {
VRCExpressionParameters.ValueType newType;
if (canBeBool) newType = VRCExpressionParameters.ValueType.Bool;
else if (canBeInt) newType = VRCExpressionParameters.ValueType.Int;
else newType = VRCExpressionParameters.ValueType.Float;
var newParam = new VRCExpressionParameters.Parameter var newParam = new VRCExpressionParameters.Parameter
{ {
name = paramName, name = paramName,
valueType = newType, valueType = valueType,
saved = isSaved, saved = isSaved,
defaultValue = defaultValue, defaultValue = defaultValue,
networkSynced = isSynced networkSynced = isSynced