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)); }
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(); }