Exemplo n.º 1
0
        public bool IsGlobalKeyValid(string key)
        {
            var keysList = key.Split('.');

            if (!VariableKeys().Contains(keysList.FirstOrDefault()))
            {
                return(false);
            }

            if (keysList.Length == 1)
            {
                return(true);
            }

            var currentLevel = GetParameter(keysList.FirstOrDefault());

            var mutableLevel = currentLevel as MutableObject;

            var testField = new MutableField <object>()
            {
                AbsoluteKey = keysList.Skip(1).Aggregate((a, b) => a + "." + b)
            };

            return(testField.IsFieldResolvable(mutableLevel));
        }
Exemplo n.º 2
0
        private void ChangeLiteralValue(bool applyValue)
        {
            if (SuppressLiteralEvaluation)
            {
                return;
            }

            var text = LiteralValueInputFieldComponent.text;

            object result = null;

            var success = text.StringToValueOfType(Type, ref result);

            if (applyValue)
            {
                UndoLord.Instance.Push(new MutableFieldChange(this, MutableField, "Literal." + text));
            }

            if (success && applyValue)
            {
                IndicateError = !MutableField.SetLiteralValueAsObject(result);
            }
            else
            {
                IndicateError = !success;
            }
        }
Exemplo n.º 3
0
        public object GetParameter(string key)
        {
            var keysList = key.Split('.');

            var firstKey = keysList.First();

            var foundResult = (from foundMutable in
                               DataStore.Select(kvp => kvp.Value)
                               from pair in foundMutable
                               where pair.Key == firstKey
                               select pair.Value).FirstOrDefault();

            if (keysList.Length == 1)
            {
                return(foundResult);
            }

            var mutableLevel = foundResult as MutableObject;

            var testField = new MutableField <object>()
            {
                AbsoluteKey = keysList.Skip(1).Aggregate((a, b) => a + "." + b)
            };

            return(testField.GetFirstValue(mutableLevel));
        }
Exemplo n.º 4
0
        private void SetInitialMutableValue()
        {
            var userFacingAbsKey = MutableField.AbsoluteKey;

            switch (MutableField.SchemaSource)
            {
            case SchemaSource.Mutable:
                SetSelectedMutableText("Local Payload" + (userFacingAbsKey.Length == 0 ? "" : ".") + userFacingAbsKey);
                break;

            case SchemaSource.Global:
                SetSelectedMutableText("Global Payload" + (userFacingAbsKey.Length == 0 ? "" : ".") + userFacingAbsKey);
                break;
            }

            var segmentCount = MutableField.AbsoluteKey.Count(c => c.Equals('.')) + 2;

            GetComponent <LayoutElement>().preferredHeight = segmentCount * 16;

            SchemaProvider.CacheSchema();
            bool fieldValid;

            try
            {
                fieldValid = MutableField.ValidateKey(SchemaProvider.Schema);
            }
            catch (NullReferenceException)
            {
                fieldValid = false;
            }
            SchemaProvider.UnCacheSchema();

            IndicateError = !fieldValid;
        }
Exemplo n.º 5
0
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            var samplerField = new MutableField <T> {
                AbsoluteKey = FieldKey.GetFirstValue(payload.Data)
            };

            if (!samplerField.CouldResolve(payload.Data))
            {
                Debug.Log("Couldn't resolve assignment switch " + samplerField.AbsoluteKey + ".  Using default value.");
                AssignmentTarget.SetValue(GetDefaultValue(), payload.Data);
            }
            else
            {
                try
                {
                    foreach (var entry in AssignmentTarget.GetEntries(payload.Data))
                    {
                        AssignmentTarget.SetValue(samplerField.GetValue(entry), entry);
                    }
                }
                catch (Exception e)
                {
                    Debug.LogError("Assignment switch invalid! Probably can't target " + AssignmentTarget.AbsoluteKey + " from theoretical field " + samplerField.AbsoluteKey + "!  Exception: " + e);
                    throw e;
                }
            }

            var iterator = Router.TransmitAll(payload);

            while (iterator.MoveNext())
            {
                yield return(null);
            }
        }
Exemplo n.º 6
0
        private void IndicateLiteralValue()
        {
            SuppressLiteralEvaluation = true;

            LiteralValueInputFieldComponent.text = MutableField.GetLiteralValueAsString();

            SuppressLiteralEvaluation = false;
        }
Exemplo n.º 7
0
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            var extantDataField = new MutableField <T> {
                AbsoluteKey = PerElementAbsoluteKey.GetFirstValue(payload.Data)
            };

            bool valueAssigned = false;

            foreach (var entries in BoundsList.GetEntries(payload.Data))
            {
                var boundsList = BoundsList.GetValue(entries);

                foreach (var bound in boundsList)
                {
                    var useExtantValue = extantDataField.ValidateKey(bound.Data);

                    if (useExtantValue)
                    {
                        DefaultableField.SetValue(
                            extantDataField.GetLastKeyValue(bound.Data), payload.Data);
                        valueAssigned = true;
                    }
                    if (valueAssigned)
                    {
                        break;
                    }
                }
                if (valueAssigned)
                {
                    break;
                }
            }

            if (!valueAssigned)
            {
                DefaultableField.SetValue(DefaultValue.GetFirstValue(payload.Data), payload.Data);
            }

            var iterator = Router.TransmitAll(payload);

            while (iterator.MoveNext())
            {
                yield return(null);
            }
        }
Exemplo n.º 8
0
        protected override MutableObject Mutate(MutableObject mutable)
        {
            var extantDataField = new MutableField <T> {
                AbsoluteKey = DefaultableField.AbsoluteKey
            };

            foreach (var entry in DefaultableField.GetEntries(mutable))
            {
                var useExtantValue =
                    MutableField <MutableObject> .CouldFieldResolveOnEntry(DefaultableField.AbsoluteKey, entry);

                DefaultableField.SetValue(
                    useExtantValue?
                    extantDataField.GetValue(entry)
                    :DefaultValue.GetValue(entry), entry);
            }

            return(mutable);
        }
Exemplo n.º 9
0
        //private void HandleGlobalParameterSelected( MutableBoxMutableItemBehaviour item )
        //{
        //    IndicateGlobalValue(item);
        //
        //    ShowItemDropDown = false;
        //}

        private void IndicateMutableValue(MutableBoxMutableItemBehaviour item)
        {
            SetSelectedMutableText(item.UserFacingAbsoluteKey);

            var segmentCount = item.UserFacingAbsoluteKey.Count(c => c.Equals('.')) + 1;

            GetComponent <LayoutElement>().preferredHeight = segmentCount * 16;

            UndoLord.Instance.Push(new MutableFieldChange(this, MutableField, item.UserFacingAbsoluteKey));

            // ArraySuffix never leaves this class!
            var arrayFreeText = item.AbsoluteKey.Replace(ArraySuffix, "");

            SchemaProvider.CacheSchema();
            MutableField.AbsoluteKey = arrayFreeText;

            MutableField.SchemaSource = item.SchemaSource;

            //////
            //MutableField.UseMutableValue = !item.useCachedData?
            //////

            //MutableField.UseMutableData = true;

            bool fieldValid;

            try
            {
                fieldValid = MutableField.ValidateKey(SchemaProvider.Schema);
            }
            catch (NullReferenceException)
            {
                fieldValid = false;
            }
            SchemaProvider.UnCacheSchema();

            IndicateError = !fieldValid;

            SwitchDisplayToMutableValue();

            //ShowItemDropDown = false;
        }
Exemplo n.º 10
0
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            PayloadData = payload.Data;
            CacheSchema(); var extantDataField = new MutableField <T> {
                AbsoluteKey = PerElementAbsoluteKey.GetFirstValue(payload.Data)
            };

            bool valueAssigned = false;

            var boundsList = Expression.ResolveExpression(ChainView.Instance.Chain.RootBoundingBoxes);

            foreach (var bound in boundsList)
            {
                var useExtantValue = extantDataField.ValidateKey(bound.Data);

                if (useExtantValue)
                {
                    DefaultableField.SetValue(
                        extantDataField.GetLastKeyValue(bound.Data), payload.Data);
                    valueAssigned = true;
                }
                if (valueAssigned)
                {
                    break;
                }
            }

            if (!valueAssigned)
            {
                DefaultableField.SetValue(GetDefaultValue(payload.Data), payload.Data);
            }

            UnCacheSchema();

            var iterator = Router.TransmitAll(payload);

            while (iterator.MoveNext())
            {
                yield return(null);
            }
        }
Exemplo n.º 11
0
        public void DoUndo(bool toLiteral, string value)
        {
            if (LiteralValueDisplayPanel.activeInHierarchy != toLiteral)
            {
                if (toLiteral)
                {
                    SwitchDisplayToLiteralValue();
                }
                else
                {
                    SwitchDisplayToMutableValue();
                }
            }

            if (toLiteral)
            {
                LiteralValueInputFieldComponent.text = value;

                object result = null;

                var success = value.StringToValueOfType(Type, ref result);

                if (success)
                {
                    IndicateError = !MutableField.SetLiteralValueAsObject(result);
                }
            }
            else //This was a Mutable
            {
                var segmentCount = value.Count(c => c.Equals('.')) + 1;
                GetComponent <LayoutElement>().preferredHeight = segmentCount * 16;

                SetSelectedMutableText(value);

                var schemaSource = value.StartsWith("Local") ? SchemaSource.Mutable : SchemaSource.Global;
                value = value.Substring(value.IndexOf(".", StringComparison.CurrentCulture) + 1);

                // ArraySuffix never leaves this class!
                var arrayFreeText = value.Replace(ArraySuffix, "");

                SchemaProvider.CacheSchema();
                MutableField.AbsoluteKey = arrayFreeText;

                MutableField.SchemaSource = schemaSource;

                bool fieldValid;

                try
                {
                    fieldValid = MutableField.ValidateKey(SchemaProvider.Schema);
                }
                catch (NullReferenceException)
                {
                    fieldValid = false;
                }
                SchemaProvider.UnCacheSchema();

                IndicateError = !fieldValid;

                SwitchDisplayToMutableValue();
            }
        }
Exemplo n.º 12
0
        public void HandleLiteralValueSelected()
        {
            // This merely switches to using literal values--nothing to do with the value itself!

            UndoLord.Instance.Push(new MutableFieldChange(this, MutableField, "Literal." + MutableField.GetLiteralValueAsString()));

            SwitchDisplayToLiteralValue();
        }