function [new_agent] = IRControl( t, dt, agent, rectangles, numberOfRectangles)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
    uMax = 1;

    x = agent(t-1, 1);
    y = agent(t-1, 2);
    v = agent(t-1, 3);
    theta1 = agent(t-1, 4);   
    u = agent(t-1, 5);  
    avoidSwitch = agent(t-1, 6);
    avoidStartTheta = agent(t-1, 7);
    avoidEndTheta = agent(t-1, 8);
    firstDistance = agent(t-1, 9);
    secondDistance = agent(t-1, 10);
    avoidDistanceLeft = agent(t-1, 11);
    
    
    theta2 = theta1 + u*v*dt;
    agent(t, 1) = x + v*dt*cos(theta1);
    agent(t, 2) = y + v*dt*sin(theta1);
	agent(t, 3) = v;
	agent(t, 4) = theta2;
    
    distance = IRSensorAll(rectangles, numberOfRectangles,...
        agent(t,1), agent(t,2), agent(t,4));
    if (t>2)
        previousDistance = IRSensorAll(rectangles, numberOfRectangles,...
            agent(t-1,1), agent(t-1,2), agent(t-1,4));
    else 
        previousDistance = -1;
    end
    
    if avoidSwitch == 1
        agent(t, 7) = avoidStartTheta;
        agent(t, 9) = firstDistance;
        
        if agent(t-2, 6) == 0 %at second theta
            r1 = firstDistance
            r2 = distance
            agent(t, 10) = r2;
            turningTheta = FindTurningTheta( r1, r2, uMax, v, dt)
            agent(t, 8) = avoidStartTheta + turningTheta;
            agent(t, 11) = avoidDistanceLeft;
            agent(t, 5) = u;
            agent(t, 6) = 1;
            
%         elseif agent(t-3, 6) == 0 %at third theta
%             r1 = firstDistance
%             r2 = distance
%             agent(t, 10) = r2;
%             turningTheta = FindTurningTheta( r1, r2, uMax, v, 2*dt)
%             agent(t, 8) = avoidStartTheta + turningTheta;
%             agent(t, 11) = avoidDistanceLeft;
%             agent(t, 5) = u;
%             agent(t, 6) = 1;
%             
        elseif distance > 0 %continuing until thetaf
            agent(t, 5) = u;
            agent(t, 6) = 1;
            agent(t, 8) = agent(t-1, 8);
            agent(t, 10) = agent(t-1, 10);
            agent(t, 11) = agent(t-1, 11);
            
        elseif (distance < 0 && previousDistance > 0 ) %just passed last vision point (thetaf)
            agent(t, 5) = u;
            agent(t, 6) = 1;
            agent(t, 8) = agent(t-1, 8);
            agent(t, 10) = agent(t-1, 10);
            
            thetaf = theta2 - avoidStartTheta;
            r1 = agent(t-1, 9); 
            r2 = agent(t-1, 10);
            avoidDistanceLeft = FindTravelDistance( r1, r2, uMax, v, dt, thetaf);
            agent(t, 11) = avoidDistanceLeft;
                
        elseif theta2 < avoidEndTheta %between thetaf and endtheta
            agent(t, 5) = u;
            agent(t, 6) = 1;
            agent(t, 8) = agent(t-1, 8);
            agent(t, 10) = agent(t-1, 10);
            agent(t, 11) = agent(t-1, 11);
            
        elseif (theta2 >= avoidEndTheta && u~=0) %got to or just past endtheta
            agent(t, 5) = 0;
            agent(t, 6) = 1;
            agent(t, 8) = agent(t-1, 8);
            agent(t, 10) = agent(t-1, 10);
            agent(t, 11) = agent(t-1, 11);
            
        elseif avoidDistanceLeft > 0 %travelling parallel but not at end yet
            agent(t, 5) = 0;
            agent(t, 6) = 1;
            agent(t, 8) = agent(t-1, 8);
            agent(t, 10) = agent(t-1, 10);
            agent(t, 11) = avoidDistanceLeft - v*dt;
            
        else %past distance, end of avoid
            agent(t, 3) = 0; %stop
            agent(t, 5) = 0;
            agent(t, 6) = 0;
            agent(t, 8) = 0;
            agent(t, 9) = 0;
            agent(t, 10) = 0;
            agent(t, 11) = 0;
        end
        
    else
        if (distance > 0 && distance <= 2)
            agent(t, 5) = uMax;
            agent(t, 6) = 1;
            agent(t, 7) = theta1;
            agent(t, 9) = distance;
        else
            agent(t, 5) = agent(t-1, 5);
            agent(t, 6) = 0;
            agent(t, 7) = 0;
            agent(t, 9) = 0;
        end
        agent(t, 8) = 0;
        agent(t, 10) = 0;
        agent(t, 11) = 0;
    end
    
%     distance = IRSensorAll(rectangles, numberOfRectangles,...
%         agent(t-1,1), agent(t-1,2), agent(t-1,4));
%     if (distance > 0)
%         agent(t, 5) = uMax;
%     else
%         agent(t, 5) = 0;
%     end
% %             agent(t, 5) = uMax;


    new_agent = agent;
end

