Esempio n. 1
0
bool CVehicleEntity::Create()
{
	// Is the vehicle already spawned?
	if(IsSpawned())
		return false;

	// Load the model
	m_pModelInfo->AddReference(true);

	DWORD dwModelHash = m_pModelInfo->GetHash();

	unsigned uiVehicleHandle;
	CIVScript::CreateCar(dwModelHash, 0.0f, 0.0f, 0.0f, &uiVehicleHandle, true);

    // Create the vehicle instance
	m_pVehicle = new CIVVehicle(g_pCore->GetGame()->GetPools()->GetVehiclePool()->AtHandle(uiVehicleHandle));

	// Disable damage
	m_pVehicle->SetCarCanBeDamaged(false);
	m_pVehicle->SetCanBeVisiblyDamaged(false);

	// Reset Indicators
	SetIndicatorState(false,false,true,true);

	// Mark as spawned
	m_bSpawned = true;

	CLogFile::Printf("Created vehicle! (Id: %d, Handle: %d)", m_vehicleId, m_uiVehicleHandle);
	return true;
}
CNetworkVehicle::CNetworkVehicle(DWORD dwModelHash, int iModelId)
	: CStreamableEntity(STREAM_ENTITY_VEHICLE, 200.0f),
	m_pVehicle ( NULL),
	m_vehicleId(INVALID_ENTITY_ID),
	m_pDriver(NULL),
	m_pModelInfo(CGame::GetModelInfo(MODEL_ADMIRAL_INDEX)),
	m_bSirenState(false),
	m_dwDoorLockState(0),
	m_ulHornDurationEnd(0),
	m_uiHealth(1000),
	m_fPetrolTankHealth(1000.0f),
	m_fDirtLevel(1000.0f),
	m_ucVariation(0),
	m_bEngineStatus(false),
	m_bTaxiLights(false),
	m_bLights(false),
	m_bGpsState(false),
	m_uiInterior(-1),
	m_bActorVehicle(false),
	m_bFirstStreamIn(false),
	m_bActive(false),
	m_iVehicleType(-1)
{

	for(int i = 0; i < 8; i++)
		m_pPassengers[i] = NULL;
	
	SetModel(dwModelHash);
	memset(&m_vecPosition, 0, sizeof(CVector3));
	memset(&m_vecRotation, 0, sizeof(CVector3));
	memset(&m_vecMoveSpeed, 0, sizeof(CVector3));
	memset(&m_vecTurnSpeed, 0, sizeof(CVector3));
	memset(m_byteColors, 0, sizeof(m_byteColors));
	
	memset(m_bIndicatorState, 0, sizeof(m_bIndicatorState));
	SetIndicatorState(false, false, false, false);

	m_iVehicleType = iModelId;

	memset(m_iComponents, 0, sizeof(m_iComponents));
	m_interp.pos.ulFinishTime = 0;
	m_interp.rot.ulFinishTime = 0;
	
	for(int i = 0; i < 6; i++)
		m_fDoor[i] = 0.0f;
	
	for(int i = 0; i < 4; i++)
		m_bWindow[i] = false;
}
void CVehicleEntity::Reset()
{
	// Check vehicle iv ptr
	if(!m_pVehicle)
		return;

	// Turn the engine off
	SetEngineState(false);
	
	// Reset Indicators
	SetIndicatorState(false,false,false,false);

	// Disable damage
	//m_pVehicle->SetCarCanBeDamaged(false);
	//m_pVehicle->SetCanBeVisiblyDamaged(false);

}