Exemplo n.º 1
0
        /// <summary>
        ///     Constructor
        /// </summary>
        /// <param name="efsSystem"></param>
        public Override(EfsSystem efsSystem)
            : base(efsSystem, "Override")
        {
            DefaultFunction      = (Parameter)acceptor.getFactory().createParameter();
            DefaultFunction.Name = "Default";
            DefaultFunction.Type = EFSSystem.AnyType;
            DefaultFunction.setFather(this);
            FormalParameters.Add(DefaultFunction);

            OverrideFunction      = (Parameter)acceptor.getFactory().createParameter();
            OverrideFunction.Name = "Override";
            OverrideFunction.Type = EFSSystem.AnyType;
            OverrideFunction.setFather(this);
            FormalParameters.Add(OverrideFunction);

            Returns            = (Function)acceptor.getFactory().createFunction();
            Returns.Name       = "Override";
            Returns.ReturnType = EFSSystem.DoubleType;
            Returns.setFather(this);

            Parameter distanceParam = (Parameter)acceptor.getFactory().createParameter();

            distanceParam.Name = "Distance";
            distanceParam.Type = EFSSystem.DoubleType;
            distanceParam.setFather(Returns);
            Returns.appendParameters(distanceParam);

            Parameter speedParameter = (Parameter)acceptor.getFactory().createParameter();

            speedParameter.Name = "Speed";
            speedParameter.Type = EFSSystem.DoubleType;
            speedParameter.setFather(Returns);
            Returns.appendParameters(speedParameter);
        }
Exemplo n.º 2
0
            SerializedProperty IterateOverrides(
                OverrideFunction overrideFunction, PathFunction pathFunction, EndFunction endFunction)
            {
                var overridesProperty = serializedObject.FindProperty("overrides");

                for (int i = 0, n = overridesProperty.arraySize; i < n; ++i)
                {
                    var overrideProperty = overridesProperty.GetArrayElementAtIndex(i);

                    var filterProperty = overrideProperty.FindPropertyRelative("filter");
                    var filter         = filterProperty.stringValue;

                    if (i < _cacheTables.Count)
                    {
                        var table = _cacheTables[i];

                        if (overrideFunction(overrideProperty, i, n, table.Count))
                        {
                            foreach (var x in table)
                            {
                                pathFunction(x.Key, x.Value, i);
                            }
                        }
                    }

                    endFunction(overrideProperty);
                }

                return(overridesProperty);
            }
Exemplo n.º 3
0
        /// <summary>
        ///     Provides the surface of this function if it has been statically defined
        /// </summary>
        /// <param name="context">the context used to create the surface</param>
        /// <param name="explain"></param>
        /// <returns></returns>
        public override Surface CreateSurface(InterpretationContext context, ExplanationPart explain)
        {
            Surface retVal = null;

            Surface defaultSurface = createSurfaceForValue(context, context.FindOnStack(DefaultFunction).Value, explain);

            if (defaultSurface != null)
            {
                Surface overrideSurface = createSurfaceForValue(context, context.FindOnStack(OverrideFunction).Value,
                                                                explain);
                if (overrideSurface != null)
                {
                    retVal = defaultSurface.Override(overrideSurface);
                }
                else
                {
                    OverrideFunction.AddError("Cannot create graph for OVERRIDE argument");
                }
            }
            else
            {
                DefaultFunction.AddError("Cannot create graph for DEFAULT argument");
            }

            return(retVal);
        }