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(); } }
void CVehicleEntity::ResetInterpolation() { if(HasTargetPosition()) SetPosition(m_interp.pos.vecTarget, true); if(HasTargetRotation()) SetRotation(m_interp.rot.vecTarget); RemoveTargetPosition(); RemoveTargetRotation(); }
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(); }
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; }