Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion src/Libraries/CoreNodeModels/CurveMapperNodeModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -680,7 +680,7 @@ public void UpdateGaussianCurveControlPoints(double deltaX, string tag)

#region Private Methods

private bool IsValidInput()
private bool HasValidRangesAndCount()
{
if (pointsCount == null || pointsCount.Count == 0)
return false;
Expand Down Expand Up @@ -792,6 +792,13 @@ private void DataBridgeCallback(object data)
// Ignore invalid inputs & grab input data
if (!(data is ArrayList inputs) || inputs.Count < 5) return;

// Try parsing all 4 double values
bool hasInvalidFormat =
!double.TryParse(inputs[0]?.ToString(), out var p0) ||
!double.TryParse(inputs[1]?.ToString(), out var p1) ||
!double.TryParse(inputs[2]?.ToString(), out var p2) ||
!double.TryParse(inputs[3]?.ToString(), out var p3);

var minValueX = double.TryParse(inputs[0]?.ToString(), out var minX) ? minX : MinLimitX;
var maxValueX = double.TryParse(inputs[1]?.ToString(), out var maxX) ? maxX : MaxLimitX;
var minValueY = double.TryParse(inputs[2]?.ToString(), out var minY) ? minY : MinLimitY;
Expand Down Expand Up @@ -827,6 +834,19 @@ private void DataBridgeCallback(object data)
{
RaisePropertyChanged(propertyName);
}

// Check both logic and format:
// - HasValidRangesAndCount() ensures values make sense (e.g. min ≠ max, count ≥ 2)
// - hasInvalidFormat ensures inputs can be parsed (are single scalar values and not lists)
// Only clear warnings if both checks pass.
if (!HasValidRangesAndCount())
{
Warning(Properties.Resources.CurveMapperWarningMessage, isPersistent: true);
}
else if (!hasInvalidFormat)
{
ClearErrorsAndWarnings();
}
}

public override IEnumerable<AssociativeNode> BuildOutputAst(List<AssociativeNode> inputAstNodes)
Expand Down Expand Up @@ -942,6 +962,11 @@ public override IEnumerable<AssociativeNode> BuildOutputAst(List<AssociativeNode
VMDataBridge.DataBridge.GenerateBridgeDataAst(GUID.ToString(), AstFactory.BuildExprList(inputValues))
);

if (InPorts.Any(x => !x.IsConnected))
{
return new[] { xValuesAssignment, yValuesAssignment };
}

return new[] { xValuesAssignment, yValuesAssignment, dataBridgeCall };
}

Expand Down
Loading