示例#1
0
文件: main.cpp 项目: chunkyan/DirectX
bool	processCollision(Obstacle &tmpObject)
{
	if (!gameInPlay)
		return false;

	Point pointOnField = tmpObject.getOrigin() +tmpObject.getVelocity();
	tmpObject.setOrigin(pointOnField);

	//Point pointOnField = currentOrigin +velocity;
	//Point currentVehicleOrigin = vehicle.getOrigin();
	//pointOnField = pointOnField + originInSpace;
	//vehicle.setOrigin(pointOnField);

	//collision with Wall/Floor
	if ( abs(pointOnField.x) > courseDepth 
		||abs(pointOnField.z) > courseDepth 
		||abs(pointOnField.y) > courseDepth )
	{
		//velocity=Point(0,0,0);
		//speed=0;
		tmpObject.setSpeed(0);

		//adjust the course Velocity so we don't get stuck in a wall
		if ( tmpObject.getOrigin().x > courseDepth)
			tmpObject.setOrigin(Point( courseDepth,tmpObject.getOrigin().y,tmpObject.getOrigin().z));
		if ( tmpObject.getOrigin().x < -courseDepth)
			tmpObject.setOrigin(Point( -courseDepth,tmpObject.getOrigin().y,tmpObject.getOrigin().z));
		if ( tmpObject.getOrigin().z > courseDepth)
			tmpObject.setOrigin(Point(tmpObject.getOrigin().x,tmpObject.getOrigin().y, courseDepth));
		if ( tmpObject.getOrigin().z < -courseDepth)
			tmpObject.setOrigin(Point(tmpObject.getOrigin().x,tmpObject.getOrigin().y, -courseDepth));
		if ( tmpObject.getOrigin().y > courseDepth)
			tmpObject.setOrigin(Point(tmpObject.getOrigin().x, courseDepth,tmpObject.getOrigin().z));
		if ( tmpObject.getOrigin().y < -courseDepth)
			tmpObject.setOrigin(Point(tmpObject.getOrigin().x, -courseDepth,tmpObject.getOrigin().z));
		//cout <<"Collision with Wall "<<pointOnField  <<"  x> depth("<<courseDepth<<endl;
		return true;
	}

	//collision vehicle With Pond
	//if(pond.objectWithinBoundingBox(tmpObject))
	pond.setOrigin(pond.getOrigin()+Point(0,-30,0));
	if(	pond.objectWithinRadius(tmpObject))
	{
		pond.setOrigin(pondOrigin);
		tmpObject.setSpeed(0);
		//cout << "collision with pond  vehicle at "<<pointOnField<<endl;
		return true;
	}
	pond.setOrigin(pondOrigin);

	//collision with snowdrift 2;
	if(snowcave2.objectWithinBoundingBox(tmpObject))
	{
  		velocity = Point(0,0,0);
		tmpObject.setSpeed(0);
		//cout << "collision with   snowcave2 at "<<pointOnField<<endl;
		return true;
	}

	if(snowcave.objectWithinBoundingBox(tmpObject))
	{
  		velocity = Point(0,0,0);
		tmpObject.setSpeed(0);
		//cout << "collision with   snowcave at "<<pointOnField<<endl;
		return true;
	}

	//collision with snowman
	if(snowman.objectWithinBoundingBox(tmpObject)
		|| snowman2.objectWithinBoundingBox(tmpObject)
		|| snowman3.objectWithinBoundingBox(tmpObject))
	{
		tmpObject.setSpeed(0);
		//cout << "collision with   snowman at "<<pointOnField<<endl;
		return true;
	}

	//put back the vehicleOrigin()
	//vehicle.setOrigin(currentVehicleOrigin);
	return false;

}//end of processCollision