Exemplo n.º 1
0
        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));
                }
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
        }