Пример #1
0
        public void solve()
        {
            EquationSystem system = new EquationSystem(_limits);
            var            result = system.solve();

            StartMethod?.Invoke(new StartMethodObject(new PointS(result, solveFunction(result.X, result.Y)), _limits, _func));

            if (Utils.IsInteger(result))
            {
                _maxS = new PointS(result, solveFunction(result.X, result.Y));
            }
            else
            {
                List <int> list = new List <int>();
                if (!Utils.IsInteger(result.X))
                {
                    solve(_limits, new Equation(1, 0, ">=", Math.Ceiling(result.X)), new List <int>(list));
                    solve(_limits, new Equation(1, 0, "<=", Math.Floor(result.X)), new List <int>(list));
                }
                else
                {
                    solve(_limits, new Equation(0, 1, ">=", Math.Ceiling(result.Y)), new List <int>(list));
                    solve(_limits, new Equation(0, 1, "<=", Math.Floor(result.Y)), new List <int>(list));
                }
            }
            EndMethod.Invoke(this, new EndMethodObject(_maxS, true));
        }
Пример #2
0
        public void Update(Object[] args)
        {
            if (StartMethod != null)
            {
                foreach (var instance in StartList)
                {
                    var node = instance.Node;

                    if (node != null && node.IsEnabled())
                    {
                        if (node.Scene != null)
                        {
                            StartMethod.Invoke(instance, null);
                        }
                    }
                }

                // TODO: need to handle delayed starts when node isn't enabled
                StartList.Clear();
            }

            if (UpdateMethod != null)
            {
                foreach (var instance in Instances)
                {
                    bool remove = false;

                    var node = instance.Node;

                    if (node != null && node.IsEnabled())
                    {
                        if (node.Scene != null)
                        {
                            UpdateMethod.Invoke(instance, args);
                        }
                        else
                        {
                            remove = true;
                        }
                    }
                    else
                    {
                        remove = true;
                    }

                    if (remove)
                    {
                        RemoveList.Add(instance);
                    }
                }
            }

            foreach (var instance in RemoveList)
            {
                Instances.Remove(instance);
            }

            RemoveList.Clear();
        }