Пример #1
0
 private IEnumerable <Vector> ConvertPositions(IEnumerable <Vector> input, IToolBrush toolBrush)
 {
     if (toolBrush.IsValid(input))
     {
         return(toolBrush.ComputePositions(input));
     }
     else
     {
         return(null);
     }
 }
Пример #2
0
        private ToolOutcome Apply(IActionQueue actionQueue, IToolBehavior toolBehavior, IToolBrush toolBrush, IEnumerable <Vector> inputPositions)
        {
            IEnumerable <Vector> toolPositions = toolBrush.ComputePositions(inputPositions);
            var action = toolBehavior.CreateActions(toolPositions);

            void ValidatedAction(World gs)
            {
                if (Validate(gs, toolBehavior, toolPositions))
                {
                    action(gs);
                }
                else
                {
                    throw new InvalidOperationException("Action is not valid");
                }
            }

            // TODO: don't use exception to control the flow. Need google for this.
            try
            {
                actionQueue.ExecuteSynchronously(ValidatedAction);
                return(ToolOutcome.Success);
            }
            catch (InvalidOperationException)
            {
                return(ToolOutcome.Failure);
            }
        }
Пример #3
0
        private ToolPreviewOutcome Preview(IWorldView worldView, IToolBehavior toolBehavior, IToolBrush toolBrush, IEnumerable <Vector> inputPositions)
        {
            IEnumerable <Vector> toolPositions = toolBrush.ComputePositions(inputPositions);

            return(toolBehavior.Preview(worldView, toolPositions));
        }