public bool AddValue(object objectValue, bool add, List<uint> addresses = null) { double? changeValueNullable = ParsingUtilities.ParseDoubleNullable(objectValue); if (!changeValueNullable.HasValue) return false; double changeValue = changeValueNullable.Value; List<object> currentValues = _watchVar.GetValues(addresses); List<double?> currentValuesDoubleNullable = currentValues.ConvertAll( currentValue => ParsingUtilities.ParseDoubleNullable(currentValue)); List<object> newValues = currentValuesDoubleNullable.ConvertAll(currentValueDoubleNullable => { if (!currentValueDoubleNullable.HasValue) return null; double currentValueDouble = currentValueDoubleNullable.Value; object convertedValue = ConvertValue(currentValueDouble, false, false); // TODO tyler fix this for float logic double convertedValueDouble = ParsingUtilities.ParseDouble(convertedValue); double modifiedValue = convertedValueDouble + changeValue * (add ? +1 : -1); object unconvertedValue = UnconvertValue(modifiedValue); return unconvertedValue; }); bool success = _watchVar.SetValues(newValues, addresses); if (success && GetLockedBool(addresses)) WatchVariableLockManager.UpdateLockValues(_watchVar, newValues, addresses); return success; }
public bool SetValues(List <object> values, List <uint> addresses = null) { values = values.ConvertAll(value => UnconvertValue(value)); return(WatchVar.SetValues(values, addresses)); }