Skip to content

Commit

Permalink
server: physx: fixed incorrect world-space actor bounds calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
SNMetamorph committed Dec 25, 2023
1 parent 4ef7628 commit b622ca6
Showing 1 changed file with 5 additions and 14 deletions.
19 changes: 5 additions & 14 deletions server/physx/physx_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1526,7 +1526,6 @@ bool CPhysicPhysX :: IsBodySleeping( CBaseEntity *pEntity )

void CPhysicPhysX :: UpdateEntityAABB( CBaseEntity *pEntity )
{
PxU32 boundsCount;
PxActor *pActor = ActorFromEntity( pEntity );
if (!pActor)
return;
Expand All @@ -1535,17 +1534,11 @@ void CPhysicPhysX :: UpdateEntityAABB( CBaseEntity *pEntity )
if (!pRigidActor || pRigidActor->getNbShapes() <= 0)
return;

PxBounds3 actorBounds = pRigidActor->getWorldBounds();
ClearBounds( pEntity->pev->absmin, pEntity->pev->absmax );
PxTransform globalPose = pRigidActor->getGlobalPose();
PxBounds3 *boundsList = PxRigidActorExt::getRigidActorShapeLocalBoundsList(*pRigidActor, boundsCount);
AddPointToBounds( actorBounds.minimum, pEntity->pev->absmin, pEntity->pev->absmax );
AddPointToBounds( actorBounds.maximum, pEntity->pev->absmin, pEntity->pev->absmax );

for (PxU32 i = 0; i < boundsCount; i++)
{
const PxBounds3 &bbox = boundsList[i];
AddPointToBounds( globalPose.transform(bbox.minimum), pEntity->pev->absmin, pEntity->pev->absmax );
AddPointToBounds( globalPose.transform(bbox.maximum), pEntity->pev->absmin, pEntity->pev->absmax );
}

pEntity->pev->mins = pEntity->pev->absmin - pEntity->pev->origin;
pEntity->pev->maxs = pEntity->pev->absmax - pEntity->pev->origin;
pEntity->pev->size = pEntity->pev->maxs - pEntity->pev->mins;
Expand Down Expand Up @@ -2178,13 +2171,11 @@ void CPhysicPhysX::SetupWorld(void)

pActor->setName(g_pWorld->GetClassname());
pActor->userData = g_pWorld->edict();

m_pScene->addActor(*pActor);
m_pSceneActor = pActor;
m_fLoaded = true;

PxU32 boundsCount;
PxBounds3 *boundsList = PxRigidActorExt::getRigidActorShapeLocalBoundsList(*pActor, boundsCount);
m_worldBounds = boundsList[0];
m_worldBounds = pActor->getWorldBounds();
}

void CPhysicPhysX :: DebugDraw( void )
Expand Down

0 comments on commit b622ca6

Please sign in to comment.