void AI_Update()
{
//avoidObject = GetComponent<ObstacleAvoid> ().avoidObstacle;
//angleObject = GetComponent<ObstacleAvoid> ().angleObstacle;
//posObject = GetComponent<ObstacleAvoid> ().obstaclePosition;
leftObj = GetComponent<ObstacleAvoid> ().leftObs;
centerObj = GetComponent<ObstacleAvoid> ().centerObs;
rightObj = GetComponent <ObstacleAvoid> ().rightObs;
LeftDis = GetComponent <ObstacleAvoid> ().LeftDis;
RightDis = GetComponent<ObstacleAvoid> ().RightDis;
CenterDis = GetComponent <ObstacleAvoid> ().CenterDis;
rb.drag = rb.velocity.magnitude / 250;
//Check if the next path segment needs to be calculated in a thread
if (pathCalculated == false && jobInProgress == false) {
//trigger thread job for this car to obtain the next set of waypoints
Node pathStartNode;
if (currentThreadJob.destinationNode == PathPlanningDataStructures.graph.endNode) {
pathStartNode = startNode;
} else {
pathStartNode = currentThreadJob.destinationNode;
}
currentThreadJob = new DynamicPathThreadJob(pathStartNode,
PathPlanningDataStructures.graph.endNode);
currentThreadJob.Start();
jobInProgress = true;
}
//Check if in progress thread has completed the path calculation
if (jobInProgress) {
if (currentThreadJob.isFinished()) {
nextWayPoints = currentThreadJob.getPathWayPoints();
pathCalculated = true;
jobInProgress = false;
Debug.Log ("Finished next thread job. Size: " + nextWayPoints.Count);
}
}
GoToWayPoint ();
input_rpm = (GetCollider (0).rpm + GetCollider (1).rpm) / 2 * GearRatio [CurrGear];
ShiftGears ();
GetCollider (0).motorTorque = engineTorque / GearRatio [CurrGear] * input_torque;
GetCollider (1).motorTorque = engineTorque / GearRatio [CurrGear] * input_torque;
GetCollider (2).motorTorque = engineTorque / GearRatio [CurrGear] * input_torque;
GetCollider (3).motorTorque = engineTorque / GearRatio [CurrGear] * input_torque;
GetCollider (0).brakeTorque = brake_power;
GetCollider (1).brakeTorque = brake_power;
GetCollider (2).brakeTorque = brake_power;
GetCollider (3).brakeTorque = brake_power;
GetCollider (0).steerAngle = maxSteer * input_steer;
GetCollider (1).steerAngle = maxSteer * input_steer;
//print (avoidObject);
}