Esempio n. 1
0
void CVehicleEntity::Interpolate()
{
	// Do we have a driver?
	if(GetDriver())
	{
		// Update our target position
		UpdateTargetPosition();

		// Update our target rotation
		UpdateTargetRotation();

		// Update our interior
		UpdateInterior(true);
	}
	else
	{
		// Update our interior
		UpdateInterior(false);

		// Remove our target position
		RemoveTargetPosition();

		// Remove our target rotation
		RemoveTargetRotation();
	}
}
Esempio n. 2
0
void CVehicleEntity::ResetInterpolation()
{
    if(HasTargetPosition())
        SetPosition(m_interp.pos.vecTarget, true);

    if(HasTargetRotation())
        SetRotation(m_interp.rot.vecTarget);

    RemoveTargetPosition();
    RemoveTargetRotation();
}
Esempio n. 3
0
void CVehicleEntity::SetPosition(const CVector3& vecPosition, bool bDontCancelTasks, bool bResetInterpolation)
{
	if (IsSpawned())
	{
		m_pVehicle->RemoveFromWorld();
		Vector4 coords(vecPosition.fX, vecPosition.fY, vecPosition.fZ, 0);
		m_pVehicle->GetVehicle()->SetCoordinates(&coords, 1, 0);
		m_pVehicle->GetVehicle()->UpdatePhysicsMatrix(true);
		m_pVehicle->AddToWorld();
	}

	m_vecPosition = vecPosition;

	// Reset interpolation if requested
	if (bResetInterpolation)
		RemoveTargetPosition();
}
Esempio n. 4
0
void CVehicleEntity::SetPosition(const CVector3& vecPosition, bool bDontCancelTasks, bool bResetInterpolation)
{
	if(IsSpawned())
	{
		if(!bDontCancelTasks)
			CIVScript::SetCarCoordinatesNoOffset(GetScriptingHandle(), vecPosition.fX, vecPosition.fY, vecPosition.fZ);
		else
		{
			// Set the position in the matrix
			m_pVehicle->SetPosition(vecPosition);

			//m_pVehicle->GetVehicle()->UpdatePhysicsMatrix(true);
		}
	}

	m_vecPosition = vecPosition;

	// Reset interpolation if requested
	if(bResetInterpolation)
		RemoveTargetPosition();
}
void CVehicleEntity::SetPosition(const CVector3& vecPosition, bool bDontCancelTasks, bool bResetInterpolation)
{
	if (IsSpawned())
	{
		if (!bDontCancelTasks)
		{
			EFLC::CScript::SetCarCoordinatesNoOffset(GetScriptingHandle(), vecPosition.fX, vecPosition.fY, vecPosition.fZ);
			g_pCore->GetGraphics()->GetChat()->Print("!bDontCancelTasks");
		}
		else
		{
			m_pVehicle->RemoveFromWorld();
			// Set the position in the matrix
			m_pVehicle->SetPosition(vecPosition);
			m_pVehicle->AddToWorld();

			//m_pVehicle->RemoveFromWorld();
			//Vector4 coords(vecPosition.fX, vecPosition.fY, vecPosition.fZ, 0);
			//m_pVehicle->GetVehicle()->SetCoordinates(&coords, 1, 0);
			//m_pVehicle->GetVehicle()->UpdatePhysicsMatrix(true);
			//m_pVehicle->AddToWorld();
		}

		m_vecPosition = vecPosition;

		// Reset interpolation if requested
		if (bResetInterpolation)
			RemoveTargetPosition();

		return;

		//
		Vector4 coords(vecPosition.fX, vecPosition.fY, vecPosition.fZ, 0);
		m_pVehicle->GetVehicle()->SetCoordinates(&coords, 1, 0);
		m_pVehicle->GetVehicle()->UpdatePhysicsMatrix(true);
		m_pVehicle->GetVehicle()->Function100();
		
		DWORD dwsub_9D92E0 = g_pCore->GetBase() + 0x9D92E0;

		if (sub_9D92E0(m_pVehicle->GetVehicle()))
		{
			int v8 = sub_9D92E0(m_pVehicle->GetVehicle());
			(*(void(__thiscall **)(int))(*(DWORD *)v8 + 16))(v8);
			if (*(DWORD *)(sub_9D92E0(m_pVehicle->GetVehicle()) + 24))
			{
				int v9 = sub_9D92E0(m_pVehicle->GetVehicle());
				sub_5C9D60(*(void **)(v9 + 24), 1);
			}
		}

		//__debugbreak();
		sub_9FFFC0(m_pVehicle->GetVehicle(), 1);
		//

		//m_pVehicle->RemoveFromWorld();
		//m_pVehicle->GetVehicle()->Function31(&coords, 0, 1);
		//m_pVehicle->AddToWorld();
		//m_pVehicle->RemoveFromWorld();
		//EFLC::CScript::SetCarCoordinatesNoOffset(GetScriptingHandle(), vecPosition.fX, vecPosition.fY, vecPosition.fZ);
		//EFLC::CScript::SetCarCoordinates(GetScriptingHandle(), vecPosition.fX, vecPosition.fY, vecPosition.fZ);
		//m_pVehicle->AddToWorld();
		
		// Reset interpolation if requested
		if (bResetInterpolation)
			RemoveTargetPosition();		
	}

	m_vecPosition = vecPosition;
}