void GameController::DrawLine(int toolSelection, ui::Point point1, ui::Point point2)
{
	Simulation * sim = gameModel->GetSimulation();
	Tool * activeTool = gameModel->GetActiveTool(toolSelection);
	gameModel->SetLastTool(activeTool);
	Brush * cBrush = gameModel->GetBrush();
	if(!activeTool || !cBrush)
		return;
	activeTool->SetStrength(gameModel->GetToolStrength());
	activeTool->DrawLine(sim, cBrush, point1, point2);
}
void GameController::DrawPoints(int toolSelection, ui::Point oldPos, ui::Point newPos, bool held)
{
    Simulation * sim = gameModel->GetSimulation();
    Tool * activeTool = gameModel->GetActiveTool(toolSelection);
    gameModel->SetLastTool(activeTool);
    Brush * cBrush = gameModel->GetBrush();
    if (!activeTool || !cBrush)
    {
        return;
    }

    activeTool->SetStrength(gameModel->GetToolStrength());
    if (!held)
        activeTool->Draw(sim, cBrush, newPos);
    else
        activeTool->DrawLine(sim, cBrush, oldPos, newPos, true);
}
void GameController::DrawPoints(int toolSelection, queue<ui::Point> & pointQueue)
{
	Simulation * sim = gameModel->GetSimulation();
	Tool * activeTool = gameModel->GetActiveTool(toolSelection);
	gameModel->SetLastTool(activeTool);
	Brush * cBrush = gameModel->GetBrush();
	if(!activeTool || !cBrush)
	{
		if(!pointQueue.empty())
		{
			while(!pointQueue.empty())
			{
				pointQueue.pop();
			}
		}
		return;
	}

	activeTool->SetStrength(gameModel->GetToolStrength());
	if(!pointQueue.empty())
	{
		ui::Point sPoint(0, 0);
		int size = pointQueue.size();
		bool first = true;
		while(!pointQueue.empty())
		{
			ui::Point fPoint = pointQueue.front();
			pointQueue.pop();
			if(size > 1)
			{
				if (!first)
				{
					activeTool->DrawLine(sim, cBrush, sPoint, fPoint, true);
				}
				first = false;
			}
			else
			{
				activeTool->Draw(sim, cBrush, fPoint);
			}
			sPoint = fPoint;
		}
	}
}