Exemplo n.º 1
0
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void IVP_Controller_Raycast_Airboat::DoSimulationPontoons( IVP_Raycast_Airboat_Pontoon_Temp *pTempPontoons,
													       IVP_Raycast_Airboat_Impact *pImpacts, IVP_Event_Sim *pEventSim )
{
	for ( int iPoint = 0; iPoint < n_wheels; ++iPoint )
	{
		IVP_Raycast_Airboat_Wheel *pPontoonPoint = get_wheel( IVP_POS_WHEEL( iPoint ) );
		if ( !pPontoonPoint )
			continue;

		if ( pImpacts[iPoint].bImpact )
			DoSimulationPontoonsGround( pPontoonPoint, &pTempPontoons[iPoint], &pImpacts[iPoint], pEventSim );
		else if ( pImpacts[iPoint].bInWater )
			DoSimulationPontoonsWater( &pTempPontoons[iPoint], &pImpacts[iPoint], pEventSim );
	}
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void IVP_Controller_Raycast_Airboat::DoSimulationPontoons( IVP_Raycast_Airboat_Pontoon_Temp *pTempPontoons,
													       IVP_Raycast_Airboat_Impact *pImpacts, IVP_Event_Sim *pEventSim,
													       IVP_Core *pAirboatCore )
{
	int nPontoonPoints = n_wheels;
	for ( int iPoint = 0; iPoint < nPontoonPoints; ++iPoint )
	{
		IVP_Raycast_Airboat_Wheel *pPontoonPoint = get_wheel( IVP_POS_WHEEL( iPoint ) );
		if ( !pPontoonPoint )
			continue;

		if ( pImpacts[iPoint].bImpact )
		{
			DoSimulationPontoonsGround( pPontoonPoint, &pTempPontoons[iPoint], &pImpacts[iPoint], pEventSim, pAirboatCore );
		}
		else if ( pImpacts[iPoint].bInWater )
		{
			IVP_BOOL bFront = ( iPoint < 2 ) ? IVP_TRUE : IVP_FALSE;
			DoSimulationPontoonsWater( pPontoonPoint, &pTempPontoons[iPoint], &pImpacts[iPoint], pEventSim, pAirboatCore, bFront );
		}
	}
}