protected override void UpdateBinding(IVariableStore variables, BindingAnimationStatus status) { if (Graph.Instruction && !Graph.IsRunning) { Resolve(variables, Variable, out VariableValue value); if (!VariableHandler.IsEqual(_value, value).GetValueOrDefault(false)) { StartCoroutine(VariableChanged(value, status)); } } }
protected override void UpdateBinding(IVariableStore variables, BindingAnimationStatus status) { if (Resolve(variables, Variable, out VariableValue value)) { var equal = VariableHandler.IsEqual(value, _previousValue); if (!equal.HasValue || !equal.Value) { SetText(value.ToString(), true); _previousValue = value; } } else { _previousValue = VariableValue.Empty; SetText(string.Empty, false); } }
public string GetText(IVariableStore variables, bool suppressErrors) { var changed = _dirty; foreach (var token in _tokens) { if (token.Reference != null) { var value = token.Reference.GetValue(variables); var equal = VariableHandler.IsEqual(value, token.Value); if (value.IsEmpty) { if (!suppressErrors) { Debug.LogWarningFormat(_missingVariableWarning, Text, token.Reference.Variable); } } else if (!equal.HasValue || !equal.Value) { token.Value = value; token.Text = value.ToString(); changed = true; } } } if (changed) { _temporaryBuilder.Clear(); foreach (var token in _tokens) { _temporaryBuilder.Append(token.Text); } _result = _temporaryBuilder.ToString(); _dirty = false; } return(_result); }
private void SetItem(int index, VariableValue item) { if (_items[index] != null) { var equal = VariableHandler.IsEqual(_items[index].Value, item); if (equal.HasValue && equal.Value) { return; } Destroy(_items[index].gameObject); } var binding = Instantiate(Template, transform); binding.transform.SetSiblingIndex(index); binding.Value = item; _items[index] = binding; }
protected override void UpdateBinding(IVariableStore variables, BindingAnimationStatus status) { if (Resolve(variables, Variable, out VariableValue value)) { var equal = VariableHandler.IsEqual(value, _previousValue); if (!equal.HasValue || !equal.Value) { if (value.TryGetInt(out int i)) { var text = Format.GetFormattedString(i); SetText(text, true); _previousValue = value; } else if (value.TryGetFloat(out float f)) { var text = Format.GetFormattedString(f); SetText(text, true); _previousValue = value; } else { if (!SuppressErrors) { Debug.LogWarningFormat(this, _invalidVariableWarning, Variable, name, value.Type); } SetText(string.Empty, false); _previousValue = VariableValue.Empty; } } } else { _previousValue = VariableValue.Empty; SetText(string.Empty, false); } }
protected override void UpdateBinding(IVariableStore variables, BindingAnimationStatus status) { var enabled = false; var text = string.Empty; try { var result = Expression.Evaluate(variables); var equal = VariableHandler.IsEqual(result, _resultValue); if (_resultState != ResultState.Value || !equal.HasValue || !equal.Value) { if (result.IsEmpty) { if (!SuppressErrors) { Debug.LogWarningFormat(this, _missingExpressionWarning, this); } } else { enabled = true; if (result.TryGetInt(out var intValue)) { text = Formatting.GetFormattedString(intValue); } if (result.TryGetFloat(out var floatValue)) { text = Formatting.GetFormattedString(floatValue); } else { text = result.ToString(); } } } _resultValue = result; } catch (ExpressionEvaluationException exception) { if (_resultState != ResultState.Error) { Debug.LogWarningFormat(this, _failedExpressionWarning, this, Expression.LastOperation, exception.Message); } _resultState = ResultState.Error; } catch (CommandEvaluationException exception) { if (_resultState != ResultState.Error) { Debug.LogWarningFormat(this, _failedCommandWarning, this, exception.Command, exception.Message); } _resultState = ResultState.Error; } SetText(text, enabled); }