public static void ProcessCanvasInput(InputManager input, Loc tileCoords, bool inWindow, StrokeCreator createStroke, StrokeCreator deleteStroke, StrokeAction strokeAction, ref CanvasStroke <T> pendingStroke) { if (input.JustPressed(FrameInput.InputType.LeftMouse) && inWindow) { pendingStroke = createStroke(); } else if (pendingStroke != null && input[FrameInput.InputType.LeftMouse]) { pendingStroke.SetEnd(tileCoords); } else if (pendingStroke != null && input.JustReleased(FrameInput.InputType.LeftMouse)) { strokeAction(pendingStroke); pendingStroke = null; } else if (input.JustPressed(FrameInput.InputType.RightMouse) && inWindow) { pendingStroke = deleteStroke(); } else if (pendingStroke != null && input[FrameInput.InputType.RightMouse]) { pendingStroke.SetEnd(tileCoords); } else if (pendingStroke != null && input.JustReleased(FrameInput.InputType.RightMouse)) { strokeAction(pendingStroke); pendingStroke = null; } }