コード例 #1
0
    public void SetParam(string name, string evaluationString, List <Param> evaluationParameters = null, bool check = true)
    {
        float value = 0;

        value = ExpressionSolver.CalculateFloat(evaluationString, evaluationParameters);
        SetParam(name, value, check);
    }
コード例 #2
0
ファイル: ItemButton.cs プロジェクト: Hengle/QuestEditor
    public void UpdateValue()
    {
        counter.text = parameter.PValue.ToString();

        GetComponent <Button>().interactable = parameter.activating;

        if ((parameter.manualActivationWithState || parameter.withChange) && parameter.activating)
        {
            if (ExpressionSolver.CalculateBool(parameter.manualUsingCondition.conditionString, parameter.manualUsingCondition.Parameters))
            {
                GetComponent <Button>().interactable = true;
            }
            else
            {
                GetComponent <Button>().interactable = false;
            }
        }



        if (parameter.PValue <= 0)
        {
            Destroy(gameObject);
        }

        if (parameter.PValue == 1)
        {
            counter.enabled = false;
        }
        else
        {
            counter.enabled = true;
        }
    }
コード例 #3
0
        public void ExpressionSolverTest(decimal expectedRes, string expression)
        {
            var parser     = new ExpressionParser();
            var solver     = new ExpressionSolver();
            var parsedData = parser.Parse(expression);

            Assert.AreEqual(expectedRes, solver.Solve(parsedData));
        }
コード例 #4
0
    private void Start()
    {
        if (InteractingSocket != null)
        {
            PlugIn();
        }

        solver = GameObject.FindGameObjectWithTag("ExpressionSolver").GetComponent <ExpressionSolver>();
    }
コード例 #5
0
 private void Start()
 {
     queue     = new Queue <EquationSet>();
     solver    = new ExpressionSolver();
     positions = new List <Vector3>();
     normals   = new List <Vector3>();
     uvs       = new List <Vector2>();
     faces     = new List <int>();
     gameObject.SetActive(false);
 }
コード例 #6
0
        public bool CheckCondition(Condition condition)
        {
            List <float> playerParameters = new List <float>();

            foreach (Param p in condition.Parameters)
            {
                InitParam(p);
                playerParameters.Add(saveInfo.paramsDictionary[p.paramGUID]);
                Debug.Log(saveInfo.paramsDictionary[p.paramGUID]);
            }
            return(ExpressionSolver.CalculateBool(condition.conditionString, playerParameters));
        }
コード例 #7
0
        public float CalcParamAfterChange(ParamChanges changer)
        {
            List <float> values = new List <float>();

            InitParam(changer.aimParam);

            foreach (Param p in changer.Parameters)
            {
                InitParam(p);
                values.Add(saveInfo.paramsDictionary[p.paramGUID]);
            }
            return(ExpressionSolver.CalculateFloat(changer.changeString, values));
        }
コード例 #8
0
 private void Start()
 {
     solver = new ExpressionSolver();
     InitializeParticleSystem();
     varX    = solver.SetGlobalVariable("x", 0);
     varY    = solver.SetGlobalVariable("y", 0);
     xMin    = (float)solver.EvaluateExpression(expressionXMin);
     xMax    = (float)solver.EvaluateExpression(expressionXMax);
     expYMin = solver.SymbolicateExpression(expressionYMin);
     expYMax = solver.SymbolicateExpression(expressionYMax);
     expZMin = solver.SymbolicateExpression(expressionZMin);
     expZMax = solver.SymbolicateExpression(expressionZMax);
     Generate3DRegion();
 }
コード例 #9
0
    private void Awake()
    {
        // queue = new Queue<EquationSet>();
        solver    = new ExpressionSolver();
        positions = new List <Vector3>();
        normals   = new List <Vector3>();
        uvs       = new List <Vector2>();
        faces     = new List <int>();
        gameObject.SetActive(false);
        ExportMenu em = this.transform.Find("ExportMenu").gameObject.GetComponent <ExportMenu>();

        if (em != null)
        {
            em.Initialize(this);
        }
    }
コード例 #10
0
ファイル: TwentyFourGame.cs プロジェクト: nschorer/24-Game
    void Start()
    {
        // Force set the resolution
        Screen.SetResolution(800, 600, false);

        // Read in all of the cards from the text file, and randomly select one to display first
        LoadCards(txtFile);
        NewCard();

        // Prepare the expression solver, which can dynamically evaluate math expressions
        solver = new ExpressionSolver();
        //print(solver.SymbolicateExpression("3+1").Evaluate());

        // Prepare remaining UI elements
        score = 0;
        UpdateScoreText();
        timer = timeLimit;
    }
コード例 #11
0
 public void SetParam(string name, float value, bool check = true)
 {
     if (check)
     {
         parameters.First(x => x.name == name).PValue = value;
     }
     else
     {
         parameters.First(x => x.name == name).pValue = value;
     }
     foreach (ConditionChange pch in parameters.First(x => x.name == name).autoActivatedChangesGUIDS)
     {
         if (ExpressionSolver.CalculateBool(pch.condition.conditionString, pch.condition.Parameters))
         {
             foreach (ParamChanges pcha in pch.changes)
             {
                 SetParam(pcha.aimParam.name, pcha.changeString, pcha.parameters, false);
             }
         }
     }
     OnParamChanging.Invoke(parameters.First(x => x.name == name));
 }
コード例 #12
0
    // Use this for initialization
    void Start()
    {
        solver = new ExpressionSolver();
        expZ   = new AK.Expression();
        //Variable varU = new Variable(), varV = new Variable();
        positions = new List <Vector3>();
        normals   = new List <Vector3>();
        uvs       = new List <Vector2>();
        faces     = new List <int>();

        /* TEST */
        solver.SetGlobalVariable("x", -5);
        solver.SetGlobalVariable("y", -5);
        expZ = solver.SymbolicateExpression(expressionZ);
        varU = solver.GetGlobalVariable("x");
        varV = solver.GetGlobalVariable("y");
        uMin = (float)solver.EvaluateExpression(u_min); uMax = (float)solver.EvaluateExpression(u_max);
        vMin = (float)solver.EvaluateExpression(v_min); vMax = (float)solver.EvaluateExpression(v_max);
        TessellateSurface();
        left.mesh  = TessellateCurve(0, 1, 0, null);
        right.mesh = TessellateCurve(0, 1, 1, null);
        back.mesh  = TessellateCurve(0, null, 0, 1);
        front.mesh = TessellateCurve(1, null, 0, 1);
    }
コード例 #13
0
        int Calculate(int attr)
        {
            ExpressionSolver solver = new ExpressionSolver();

            return((int)solver.EvaluateExpression(calc[attr - minAttr]));
        }
コード例 #14
0
        public MelonInterpreter(MelonEngine engine)
        {
            _engine = engine;

            _expressionSolver = new ExpressionSolver(engine);
        }
コード例 #15
0
 public ExpressionSolverTests()
 {
     sut = new ExpressionSolver();
 }
コード例 #16
0
        private void DrawCondition(Path path)
        {
            EditorGUILayout.LabelField("condition:");
            EditorGUILayout.BeginHorizontal();
            GUI.backgroundColor = Color.white;
            try
            {
                List <float> pv = new List <float>();
                foreach (Param p in path.condition.Parameters)
                {
                    pv.Add(0);
                }
                ExpressionSolver.CalculateBool(path.condition.conditionString, pv);
            }
            catch
            {
                GUI.color = Color.red;
            }
            EditorGUI.BeginChangeCheck();
            string conditionString = EditorGUILayout.TextField(path.condition.conditionString);



            GUI.color = Color.white;
            EditorGUILayout.EndHorizontal();

            Param removingParam = null;

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(p, "path condition string");
                path.condition.conditionString = conditionString;
            }

            for (int i = 0; i < path.condition.Parameters.Count; i++)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("[p" + i + "]", GUILayout.Width(35));

                if (!p.Game.parameters.Contains(path.condition.Parameters[i]))
                {
                    if (p.Game.parameters.Count > 0)
                    {
                        path.condition.Parameters[i] = p.Game.parameters[0];
                    }
                    else
                    {
                        removingParam = path.condition.Parameters[i];
                        continue;
                    }
                }

                EditorGUI.BeginChangeCheck();

                int paramIndex = EditorGUILayout.Popup(p.Game.parameters.IndexOf(path.condition.Parameters[i]), p.Game.parameters.Select(x => x.paramName).ToArray());

                if (EditorGUI.EndChangeCheck())
                {
                    Undo.RecordObject(p, "set condition param");
                    path.condition.setParam(i, p.Game.parameters[paramIndex]);
                }

                GUI.color = Color.red;
                if (GUILayout.Button("", GUILayout.Height(15), GUILayout.Width(15)))
                {
                    removingParam = path.condition.Parameters[i];
                }
                GUI.color = Color.white;
                EditorGUILayout.EndHorizontal();
            }

            if (removingParam != null)
            {
                Undo.RecordObject(p, "removing condition param");
                path.condition.RemoveParam(removingParam);
            }
        }
コード例 #17
0
        private void DrawChanges(Path path)
        {
            ParamChanges removingChanger = null;

            for (int i = 0; i < path.changes.Count; i++)
            {
                GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) });
                EditorGUILayout.BeginHorizontal();
                if (GUILayout.Button("delete"))
                {
                    removingChanger = path.changes[i];
                }
                if (GUILayout.Button("add param"))
                {
                    Undo.RecordObject(p, "add path changer param");
                    path.changes[i].AddParam(p.Game.parameters[0]);
                }
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginHorizontal();
                if (!p.Game.parameters.Contains(path.changes[i].aimParam))
                {
                    if (p.Game.parameters.Count > 0)
                    {
                        path.changes[i].aimParam = p.Game.parameters[0];
                    }
                    else
                    {
                        removingChanger = path.changes[i];
                        continue;
                    }
                }
                EditorGUI.BeginChangeCheck();
                int paramIndex = EditorGUILayout.Popup(p.Game.parameters.IndexOf(path.changes[i].aimParam), p.Game.parameters.Select(x => x.paramName).ToArray(), GUILayout.Width(100));
                if (EditorGUI.EndChangeCheck())
                {
                    Undo.RecordObject(p, "chose path changer param");
                    path.changes[i].aimParam = p.Game.parameters[paramIndex];
                }
                GUILayout.Label("=", GUILayout.Width(15));
                GUI.backgroundColor = Color.white;
                try
                {
                    List <float> paramsV = new List <float>();
                    foreach (Param p in path.changes[i].Parameters)
                    {
                        paramsV.Add(1);
                    }
                    ExpressionSolver.CalculateFloat(path.changes[i].changeString, paramsV);
                }
                catch
                {
                    GUI.color = Color.red;
                }
                EditorGUI.BeginChangeCheck();
                string changeString = EditorGUILayout.TextField(path.changes[i].changeString);
                if (EditorGUI.EndChangeCheck())
                {
                    Undo.RecordObject(p, "change path changer string");
                    path.changes[i].changeString = changeString;
                }
                GUI.color = Color.white;
                Param removingParam = null;
                EditorGUILayout.EndHorizontal();
                for (int j = 0; j < path.changes[i].Parameters.Count; j++)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("[p" + j + "]", GUILayout.Width(35));

                    if (!p.Game.parameters.Contains(path.changes[i].Parameters[j]))
                    {
                        if (p.Game.parameters.Count > 0)
                        {
                            path.changes[i].setParam(p.Game.parameters[0], j);
                        }
                        else
                        {
                            removingParam = path.changes[i].Parameters[j];
                            continue;
                        }
                    }
                    EditorGUI.BeginChangeCheck();
                    int v = EditorGUILayout.Popup(p.Game.parameters.IndexOf(path.changes[i].Parameters[j]), p.Game.parameters.Select(x => x.paramName).ToArray());
                    if (EditorGUI.EndChangeCheck())
                    {
                        Undo.RecordObject(p, "change path changer sub param");
                        path.changes[i].setParam(p.Game.parameters[v], j);
                    }
                    GUI.color = Color.red;
                    if (GUILayout.Button("", GUILayout.Height(15), GUILayout.Width(15)))
                    {
                        removingParam = path.changes[i].Parameters[j];
                    }
                    GUI.color = Color.white;
                    EditorGUILayout.EndHorizontal();
                }
                if (removingParam != null)
                {
                    Undo.RecordObject(p, "remove path changer sub param");
                    path.changes[i].RemoveParam(removingParam);
                }
                GUI.color = Color.white;
            }
            if (removingChanger != null)
            {
                Undo.RecordObject(p, "remove path changer param");
                path.changes.Remove(removingChanger);
            }
        }
コード例 #18
0
 public MelonVisitor(MelonEngine engine)
 {
     _engine           = engine;
     _expressionSolver = new ExpressionSolver(engine);
 }