Example #1
0
        private void ProcessNode(ActionNode node, params SerializablePoint[] actionPositions)
        {
            using var log = Logger.LogBlock();

            if (node.Is(ActionNodeFlags.ResetTrigger))
            {
                Graph.ResetState();
            }

            if (node.Actions is null)
            {
                Thread.Sleep(node.AdditionalDelayAfterLastAction);

                node.CurrentCrossing++;

                return;
            }

            if (actionPositions.Length > 0)
            {
                foreach (var actionPosition in actionPositions)
                {
                    InputSimulator.MoveEvent(actionPosition);

                    InputSimulator.Simulate(node.Actions, actionPosition, node.AdditionalDelayBetweenActions);

                    Thread.Sleep(node.AdditionalDelayAfterLastAction);
                }
            }
            else
            {
                InputSimulator.Simulate(node.Actions, null, node.AdditionalDelayBetweenActions);
            }

            node.CurrentCrossing++;
        }