diff options
| author | Sheikh Dawood <[email protected]> | 2018-05-25 09:54:38 -0500 |
|---|---|---|
| committer | Sheikh Dawood <[email protected]> | 2018-05-25 09:54:38 -0500 |
| commit | b99b3783cd7e3fb1bb0a07dc472b2fc000c4cdc1 (patch) | |
| tree | de67d7adc7cc66d44c3e0a399d94d1db6bcebd0c /PhysX_3.4/Source/SimulationController | |
| parent | PhysX 3.4, APEX 1.4 patch release @23933511 (diff) | |
| download | physx-3.4-b99b3783cd7e3fb1bb0a07dc472b2fc000c4cdc1.tar.xz physx-3.4-b99b3783cd7e3fb1bb0a07dc472b2fc000c4cdc1.zip | |
PhysX 3.4, APEX 1.4 patch release @24214033v3.4.2
Diffstat (limited to 'PhysX_3.4/Source/SimulationController')
97 files changed, 267 insertions, 289 deletions
diff --git a/PhysX_3.4/Source/SimulationController/include/ScActorCore.h b/PhysX_3.4/Source/SimulationController/include/ScActorCore.h index 52672e1a..38971e8f 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScActorCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScActorCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScArticulationCore.h b/PhysX_3.4/Source/SimulationController/include/ScArticulationCore.h index a20fd810..c42cde67 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScArticulationCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScArticulationCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScArticulationJointCore.h b/PhysX_3.4/Source/SimulationController/include/ScArticulationJointCore.h index 633a111d..f08ec930 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScArticulationJointCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScArticulationJointCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScBodyCore.h b/PhysX_3.4/Source/SimulationController/include/ScBodyCore.h index 3c989930..8204d6a9 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScBodyCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScBodyCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScClothCore.h b/PhysX_3.4/Source/SimulationController/include/ScClothCore.h index 962bea20..43ee0eac 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScClothCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScClothCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScClothFabricCore.h b/PhysX_3.4/Source/SimulationController/include/ScClothFabricCore.h index 93135a30..46170c29 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScClothFabricCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScClothFabricCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScConstraintCore.h b/PhysX_3.4/Source/SimulationController/include/ScConstraintCore.h index 7f415b1d..3ac2641d 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScConstraintCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScConstraintCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScIterators.h b/PhysX_3.4/Source/SimulationController/include/ScIterators.h index 97115db6..fdea235e 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScIterators.h +++ b/PhysX_3.4/Source/SimulationController/include/ScIterators.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScMaterialCore.h b/PhysX_3.4/Source/SimulationController/include/ScMaterialCore.h index a3f894ba..875765e6 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScMaterialCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScMaterialCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScParticleSystemCore.h b/PhysX_3.4/Source/SimulationController/include/ScParticleSystemCore.h index 39597396..de8b62c3 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScParticleSystemCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScParticleSystemCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScPhysics.h b/PhysX_3.4/Source/SimulationController/include/ScPhysics.h index aebf4ae5..385fc718 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScPhysics.h +++ b/PhysX_3.4/Source/SimulationController/include/ScPhysics.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScRigidCore.h b/PhysX_3.4/Source/SimulationController/include/ScRigidCore.h index e324a24c..a804ea07 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScRigidCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScRigidCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScScene.h b/PhysX_3.4/Source/SimulationController/include/ScScene.h index b4766fcd..30799b84 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScScene.h +++ b/PhysX_3.4/Source/SimulationController/include/ScScene.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -589,6 +589,8 @@ namespace Sc PX_FORCE_INLINE PxU32 getFilterShaderDataSizeFast() const { return mFilterShaderDataSize; } PX_FORCE_INLINE PxSimulationFilterShader getFilterShaderFast() const { return mFilterShader; } PX_FORCE_INLINE PxSimulationFilterCallback* getFilterCallbackFast() const { return mFilterCallback; } + PX_FORCE_INLINE PxPairFilteringMode::Enum getKineKineFilteringMode() const { return mKineKineFilteringMode; } + PX_FORCE_INLINE PxPairFilteringMode::Enum getStaticKineFilteringMode() const { return mStaticKineFilteringMode; } PX_FORCE_INLINE PxU32 getTimeStamp() const { return mTimeStamp; } PX_FORCE_INLINE PxU32 getReportShapePairTimeStamp() const { return mReportShapePairTimeStamp; } @@ -850,6 +852,9 @@ namespace Sc PxSimulationFilterShader mFilterShader; PxSimulationFilterCallback* mFilterCallback; + PxPairFilteringMode::Enum mKineKineFilteringMode; + PxPairFilteringMode::Enum mStaticKineFilteringMode; + Ps::CoalescedHashSet<BodyCore*> mSleepBodies; Ps::CoalescedHashSet<BodyCore*> mWokeBodies; bool mWokeBodyListValid; diff --git a/PhysX_3.4/Source/SimulationController/include/ScShapeCore.h b/PhysX_3.4/Source/SimulationController/include/ScShapeCore.h index d3e19ae6..682a087f 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScShapeCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScShapeCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/include/ScStaticCore.h b/PhysX_3.4/Source/SimulationController/include/ScStaticCore.h index 3b9cdb11..f9eea5d2 100644 --- a/PhysX_3.4/Source/SimulationController/include/ScStaticCore.h +++ b/PhysX_3.4/Source/SimulationController/include/ScStaticCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScActorCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScActorCore.cpp index 8ab80698..eae0b0c7 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScActorCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScActorCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScActorElementPair.h b/PhysX_3.4/Source/SimulationController/src/ScActorElementPair.h index a8a36b5b..aacf7da0 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScActorElementPair.h +++ b/PhysX_3.4/Source/SimulationController/src/ScActorElementPair.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScActorInteraction.h b/PhysX_3.4/Source/SimulationController/src/ScActorInteraction.h index f37b1307..090a4188 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScActorInteraction.h +++ b/PhysX_3.4/Source/SimulationController/src/ScActorInteraction.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScActorPair.h b/PhysX_3.4/Source/SimulationController/src/ScActorPair.h index 5491f302..fa0c7835 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScActorPair.h +++ b/PhysX_3.4/Source/SimulationController/src/ScActorPair.h @@ -23,11 +23,10 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. - #ifndef PX_COLLISION_ACTORPAIR #define PX_COLLISION_ACTORPAIR @@ -39,20 +38,19 @@ namespace physx { namespace Sc { - class ActorPairContactReportData { public: ActorPairContactReportData() : - mStrmResetStamp (0xffffffff), - mActorAID (0xffffffff), - mActorBID (0xffffffff), - mPxActorA (NULL), - mPxActorB (NULL), - mActorAClientID (0xff), - mActorBClientID (0xff), - mActorAClientBehavior (0), - mActorBClientBehavior (0) + mStrmResetStamp (0xffffffff), + mActorAID (0xffffffff), + mActorBID (0xffffffff), + mPxActorA (NULL), + mPxActorB (NULL), + mActorAClientID (0xff), + mActorBClientID (0xff), + mActorAClientBehavior (0), + mActorBClientBehavior (0) {} ContactStreamManager mContactStreamManager; @@ -67,7 +65,6 @@ namespace Sc PxU8 mActorBClientBehavior; }; - /** \brief Class shared by all shape interactions for a pair of actors. @@ -76,11 +73,10 @@ namespace Sc class ActorPair { public: - enum ActorPairFlags { - eIS_REPORT_PAIR = (1<<0), - eNEXT_FREE = (1<<1) + eIS_REPORT_PAIR = (1<<0), + eNEXT_FREE = (1<<1) }; PX_FORCE_INLINE ActorPair() : mInternalFlags(0), mTouchCount(0), mRefCount(0) {} @@ -99,7 +95,6 @@ namespace Sc private: ActorPair& operator=(const ActorPair&); - protected: PxU16 mInternalFlags; PxU16 mTouchCount; @@ -107,7 +102,6 @@ namespace Sc PxU16 mPad; // instances of this class are stored in a pool which needs an item size of at least size_t }; - /** \brief Class shared by all shape interactions for a pair of actors if contact reports are requested. @@ -166,7 +160,6 @@ namespace Sc } // namespace Sc - PX_FORCE_INLINE Sc::ActorPairReport::ActorPairReport(RigidSim& actor0, RigidSim& actor1) : ActorPair(), mActorA (actor0), mActorB (actor1), @@ -176,19 +169,16 @@ mReportData (NULL) mInternalFlags = ActorPair::eIS_REPORT_PAIR; } - PX_FORCE_INLINE Sc::ActorPairReport::~ActorPairReport() { PX_ASSERT(mReportData == NULL); } - PX_FORCE_INLINE bool Sc::ActorPairReport::streamResetNeeded(PxU32 cmpStamp) const { return (cmpStamp != mReportData->mStrmResetStamp); } - PX_INLINE bool Sc::ActorPairReport::streamResetStamp(PxU32 cmpStamp) { PX_ASSERT(mReportData); @@ -197,7 +187,6 @@ PX_INLINE bool Sc::ActorPairReport::streamResetStamp(PxU32 cmpStamp) return ret; } - PX_INLINE Sc::ContactStreamManager& Sc::ActorPairReport::createContactStreamManager(NPhaseCore& npCore) { // Lazy create report data @@ -207,7 +196,6 @@ PX_INLINE Sc::ContactStreamManager& Sc::ActorPairReport::createContactStreamMana return mReportData->mContactStreamManager; } - PX_FORCE_INLINE void Sc::ActorPairReport::createContactReportData(NPhaseCore& npCore) { PX_ASSERT(!mReportData); @@ -216,8 +204,8 @@ PX_FORCE_INLINE void Sc::ActorPairReport::createContactReportData(NPhaseCore& np if(reportData) { - reportData->mActorAID = mActorA.getID(); - reportData->mActorBID = mActorB.getID(); + reportData->mActorAID = mActorA.getRigidID(); + reportData->mActorBID = mActorB.getRigidID(); reportData->mPxActorA = mActorA.getPxActor(); reportData->mPxActorB = mActorB.getPxActor(); @@ -233,7 +221,6 @@ PX_FORCE_INLINE void Sc::ActorPairReport::createContactReportData(NPhaseCore& np } } - PX_FORCE_INLINE void Sc::ActorPairReport::releaseContactReportData(NPhaseCore& npCore) { // Can't take the NPhaseCore (scene) reference from the actors since they're already gone on scene release @@ -245,7 +232,6 @@ PX_FORCE_INLINE void Sc::ActorPairReport::releaseContactReportData(NPhaseCore& n } } - } #endif diff --git a/PhysX_3.4/Source/SimulationController/src/ScActorSim.cpp b/PhysX_3.4/Source/SimulationController/src/ScActorSim.cpp index f4534e8f..f5f4d3fb 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScActorSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScActorSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScActorSim.h b/PhysX_3.4/Source/SimulationController/src/ScActorSim.h index db30aba9..7739886c 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScActorSim.h +++ b/PhysX_3.4/Source/SimulationController/src/ScActorSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScArticulationCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScArticulationCore.cpp index 707595c7..21cd643d 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScArticulationCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScArticulationCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScArticulationJointCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScArticulationJointCore.cpp index 3688a902..0042a60a 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScArticulationJointCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScArticulationJointCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScArticulationJointSim.cpp b/PhysX_3.4/Source/SimulationController/src/ScArticulationJointSim.cpp index a53cf5d3..eae98540 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScArticulationJointSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScArticulationJointSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScArticulationJointSim.h b/PhysX_3.4/Source/SimulationController/src/ScArticulationJointSim.h index d93a0cd1..ff7ec8a3 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScArticulationJointSim.h +++ b/PhysX_3.4/Source/SimulationController/src/ScArticulationJointSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScArticulationSim.cpp b/PhysX_3.4/Source/SimulationController/src/ScArticulationSim.cpp index 62bb9dfc..6aae8bdc 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScArticulationSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScArticulationSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScArticulationSim.h b/PhysX_3.4/Source/SimulationController/src/ScArticulationSim.h index d36bb851..156d2b32 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScArticulationSim.h +++ b/PhysX_3.4/Source/SimulationController/src/ScArticulationSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScBodyCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScBodyCore.cpp index 7409eed0..0f728816 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScBodyCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScBodyCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScBodyCoreKinematic.cpp b/PhysX_3.4/Source/SimulationController/src/ScBodyCoreKinematic.cpp index f5b059e5..79d2226d 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScBodyCoreKinematic.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScBodyCoreKinematic.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScBodySim.cpp b/PhysX_3.4/Source/SimulationController/src/ScBodySim.cpp index 579c5438..a68719f1 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScBodySim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScBodySim.cpp @@ -23,11 +23,10 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. - #include "ScBodySim.h" #include "ScScene.h" #include "ScConstraintSim.h" @@ -49,6 +48,7 @@ using namespace physx; using namespace physx::Dy; +using namespace Sc; #define PX_FREEZE_INTERVAL 1.5f #define PX_FREE_EXIT_THRESHOLD 4.f @@ -121,7 +121,6 @@ Sc::BodySim::BodySim(Scene& scene, BodyCore& core) : } } - //If a user add force or torque before the body is inserted into the scene, //this logic will make sure pre solver stage apply external force/torque to the body if(hasPendingForce && !isArticulationLink()) @@ -164,7 +163,6 @@ Sc::BodySim::BodySim(Scene& scene, BodyCore& core) : } } - Sc::BodySim::~BodySim() { Sc::Scene &scene = getScene(); @@ -199,14 +197,12 @@ Sc::BodySim::~BodySim() mCore.setSim(NULL); } - //-------------------------------------------------------------- // // Actor implementation // //-------------------------------------------------------------- - void Sc::BodySim::onActivate() { PX_ASSERT((!isKinematic()) || notInScene() || readInternalFlag(BF_KINEMATIC_MOVED)); // kinematics should only get activated when a target is set. @@ -264,7 +260,6 @@ void Sc::BodySim::updateContactDistance(PxReal* contactDistance, const PxReal dt } } - void Sc::BodySim::onDeactivate() { PX_ASSERT((!isKinematic()) || notInScene() || !readInternalFlag(BF_KINEMATIC_MOVED)); // kinematics should only get deactivated when no target is set. @@ -291,17 +286,14 @@ void Sc::BodySim::onDeactivate() getScene().removeFromPosePreviewList(*this); } destroySqBounds(); - } - //-------------------------------------------------------------- // // BodyCore interface implementation // //-------------------------------------------------------------- - void Sc::BodySim::notifyAddSpatialAcceleration() { //The dirty flag is stored separately in the BodySim so that we query the dirty flag before going to @@ -319,7 +311,6 @@ void Sc::BodySim::notifyClearSpatialAcceleration() getScene().getVelocityModifyMap().growAndSet(getNodeIndex().index()); } - void Sc::BodySim::notifyAddSpatialVelocity() { //The dirty flag is stored separately in the BodySim so that we query the dirty flag before going to @@ -336,7 +327,6 @@ void Sc::BodySim::notifyClearSpatialVelocity() getScene().getVelocityModifyMap().growAndSet(getNodeIndex().index()); } - void Sc::BodySim::postActorFlagChange(PxU32 oldFlags, PxU32 newFlags) { // PT: don't convert to bool if not needed @@ -354,7 +344,6 @@ void Sc::BodySim::postActorFlagChange(PxU32 oldFlags, PxU32 newFlags) } } - void Sc::BodySim::postBody2WorldChange() { mLLBody.saveLastCCDTransform(); @@ -367,7 +356,6 @@ void Sc::BodySim::postBody2WorldChange() notifyShapesOfTransformChange(); } - void Sc::BodySim::postSetWakeCounter(PxReal t, bool forceWakeUp) { if ((t > 0.0f) || forceWakeUp) @@ -380,7 +368,6 @@ void Sc::BodySim::postSetWakeCounter(PxReal t, bool forceWakeUp) } } - void Sc::BodySim::postSetKinematicTarget() { PX_ASSERT(getBodyCore().getSimStateData(true)); @@ -390,6 +377,14 @@ void Sc::BodySim::postSetKinematicTarget() raiseInternalFlag(BF_KINEMATIC_MOVED); // Important to set this here already because trigger interactions need to have this information when being activated. } +static void updateBPGroup(ElementSim* current) +{ + while(current) + { + static_cast<ShapeSim*>(current)->updateBPGroup(); + current = current->mNextInActor; + } +} void Sc::BodySim::postSwitchToKinematic() { @@ -402,8 +397,9 @@ void Sc::BodySim::postSwitchToKinematic() setActorsInteractionsDirty(InteractionDirtyFlag::eBODY_KINEMATIC, NULL, InteractionFlag::eFILTERABLE); getScene().getSimpleIslandManager()->setKinematic(mNodeIndex); -} + updateBPGroup(getElements_()); +} void Sc::BodySim::postSwitchToDynamic() { @@ -411,7 +407,7 @@ void Sc::BodySim::postSwitchToDynamic() setForcesToDefaults(true); - if (getConstraintGroup()) + if(getConstraintGroup()) getConstraintGroup()->markForProjectionTreeRebuild(mScene.getProjectionManager()); // - interactions need to get refiltered to make sure that former kinematic-kinematic and kinematic-static pairs get enabled @@ -423,10 +419,12 @@ void Sc::BodySim::postSwitchToDynamic() clearInternalFlag(BF_KINEMATIC_MOVE_FLAGS); - if (isActive()) + if(isActive()) mScene.swapInActiveBodyList(*this); -} + // + updateBPGroup(getElements_()); +} void Sc::BodySim::postPosePreviewChange(const PxU32 posePreviewFlag) { @@ -441,14 +439,12 @@ void Sc::BodySim::postPosePreviewChange(const PxU32 posePreviewFlag) PX_ASSERT(!getScene().isInPosePreviewList(*this)); } - //-------------------------------------------------------------- // // Sleeping // //-------------------------------------------------------------- - void Sc::BodySim::setActive(bool active, PxU32 infoFlag) { PX_ASSERT(!active || isDynamicRigid()); // Currently there should be no need to activate an actor that does not take part in island generation @@ -489,7 +485,6 @@ void Sc::BodySim::setActive(bool active, PxU32 infoFlag) } } - void Sc::BodySim::activateInteractions(PxU32 /*infoFlag*/) { const PxU32 nbInteractions = getActorInteractionCount(); @@ -511,7 +506,6 @@ void Sc::BodySim::activateInteractions(PxU32 /*infoFlag*/) } } - void Sc::BodySim::deactivateInteractions(PxU32 infoFlag) { const PxU32 nbInteractions = getActorInteractionCount(); @@ -533,14 +527,12 @@ void Sc::BodySim::deactivateInteractions(PxU32 infoFlag) } } - void Sc::BodySim::wakeUp() { setActive(true); notifyWakeUp(true); } - void Sc::BodySim::putToSleep() { PX_ASSERT(getBodyCore().getWakeCounter() == 0.0f); @@ -563,7 +555,6 @@ void Sc::BodySim::putToSleep() // We can move this code when we look into the open task of making buffered re-insertion more consistent with the non-buffered case. } - void Sc::BodySim::internalWakeUp(PxReal wakeCounterValue) { if(mArticulation) @@ -572,14 +563,12 @@ void Sc::BodySim::internalWakeUp(PxReal wakeCounterValue) internalWakeUpBase(wakeCounterValue); } - void Sc::BodySim::internalWakeUpArticulationLink(PxReal wakeCounterValue) { PX_ASSERT(mArticulation); internalWakeUpBase(wakeCounterValue); } - void Sc::BodySim::internalWakeUpBase(PxReal wakeCounterValue) //this one can only increase the wake counter, not decrease it, so it can't be used to put things to sleep! { if ((!isKinematic()) && (getBodyCore().getWakeCounter() < wakeCounterValue)) @@ -595,26 +584,22 @@ void Sc::BodySim::internalWakeUpBase(PxReal wakeCounterValue) //this one can onl } } - void Sc::BodySim::notifyReadyForSleeping() { if(mArticulation == NULL) getScene().getSimpleIslandManager()->deactivateNode(mNodeIndex); } - void Sc::BodySim::notifyNotReadyForSleeping() { getScene().getSimpleIslandManager()->activateNode(mNodeIndex); } - void Sc::BodySim::notifyWakeUp(bool /*wakeUpInIslandGen*/) { getScene().getSimpleIslandManager()->activateNode(mNodeIndex); } - void Sc::BodySim::notifyPutToSleep() { getScene().getSimpleIslandManager()->putNodeToSleep(mNodeIndex); @@ -692,7 +677,6 @@ PxReal Sc::BodySim::updateWakeCounter(PxReal dt, PxReal energyThreshold, const C return wc; } - //-------------------------------------------------------------- // // Kinematics @@ -714,7 +698,6 @@ PX_FORCE_INLINE void Sc::BodySim::initKinematicStateBase(BodyCore&, bool asPartO getConstraintGroup()->markForProjectionTreeRebuild(getScene().getProjectionManager()); } - void Sc::BodySim::calculateKinematicVelocity(PxReal oneOverDt) { PX_ASSERT(isKinematic()); @@ -802,8 +785,6 @@ void Sc::BodySim::updateKinematicPose() } } - - bool Sc::BodySim::deactivateKinematic() { BodyCore& core = getBodyCore(); @@ -829,15 +810,12 @@ bool Sc::BodySim::deactivateKinematic() return false; } - - //-------------------------------------------------------------- // // Miscellaneous // //-------------------------------------------------------------- - void Sc::BodySim::updateForces(PxReal dt, PxsRigidBody** updatedBodySims, PxU32* updatedBodyNodeIndices, PxU32& index, Cm::SpatialVector* acceleration, bool simUsesAdaptiveForce) { PxVec3 linAcc(0.0f), angAcc(0.0f); @@ -894,8 +872,6 @@ void Sc::BodySim::updateForces(PxReal dt, PxsRigidBody** updatedBodySims, PxU32* setForcesToDefaults(readVelocityModFlag(VMF_ACC_DIRTY)); } - - bool Sc::BodySim::isConnectedTo(const ActorSim& other, bool& collisionDisabled) const { const Sc::ActorSim* actorToMatch; @@ -933,7 +909,6 @@ bool Sc::BodySim::isConnectedTo(const ActorSim& other, bool& collisionDisabled) return false; } - void Sc::BodySim::onConstraintDetach() { PX_ASSERT(readInternalFlag(BF_HAS_CONSTRAINTS)); @@ -952,7 +927,6 @@ void Sc::BodySim::onConstraintDetach() clearInternalFlag(BF_HAS_CONSTRAINTS); // There are no other constraint interactions left } - void Sc::BodySim::setArticulation(Sc::ArticulationSim* a, PxReal wakeCounter, bool asleep, PxU32 bodyIndex) { mArticulation = a; diff --git a/PhysX_3.4/Source/SimulationController/src/ScBodySim.h b/PhysX_3.4/Source/SimulationController/src/ScBodySim.h index 943cf3a0..a032a771 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScBodySim.h +++ b/PhysX_3.4/Source/SimulationController/src/ScBodySim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -45,6 +45,10 @@ namespace physx { +namespace Bp +{ + class BoundsArray; +} class PxsTransformCache; class PxsSimulationController; namespace Sc diff --git a/PhysX_3.4/Source/SimulationController/src/ScClient.h b/PhysX_3.4/Source/SimulationController/src/ScClient.h index 5da63817..9ead6569 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScClient.h +++ b/PhysX_3.4/Source/SimulationController/src/ScClient.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScConstraintCore.cpp index c618e6f2..d491fd8c 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintGroupNode.cpp b/PhysX_3.4/Source/SimulationController/src/ScConstraintGroupNode.cpp index b2f8d64f..0e6fcd27 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintGroupNode.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintGroupNode.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintGroupNode.h b/PhysX_3.4/Source/SimulationController/src/ScConstraintGroupNode.h index 4836c559..91c1b818 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintGroupNode.h +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintGroupNode.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintInteraction.cpp b/PhysX_3.4/Source/SimulationController/src/ScConstraintInteraction.cpp index 5087749b..9d800c4e 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintInteraction.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintInteraction.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintInteraction.h b/PhysX_3.4/Source/SimulationController/src/ScConstraintInteraction.h index 20b966d2..3c93e679 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintInteraction.h +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintInteraction.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionManager.cpp b/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionManager.cpp index 01802fe4..0541a6cf 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionManager.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionManager.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionManager.h b/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionManager.h index b5ae67d4..00fa0b98 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionManager.h +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionManager.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionTree.cpp b/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionTree.cpp index 306f5deb..30a55e1d 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionTree.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionTree.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionTree.h b/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionTree.h index 0e805f7a..eb2c3eca 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionTree.h +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintProjectionTree.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintSim.cpp b/PhysX_3.4/Source/SimulationController/src/ScConstraintSim.cpp index f55954a9..d4add601 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScConstraintSim.h b/PhysX_3.4/Source/SimulationController/src/ScConstraintSim.h index 98e20256..24a49993 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScConstraintSim.h +++ b/PhysX_3.4/Source/SimulationController/src/ScConstraintSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScContactReportBuffer.h b/PhysX_3.4/Source/SimulationController/src/ScContactReportBuffer.h index 251e5926..ecce4baf 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScContactReportBuffer.h +++ b/PhysX_3.4/Source/SimulationController/src/ScContactReportBuffer.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScContactStream.h b/PhysX_3.4/Source/SimulationController/src/ScContactStream.h index 2481b454..2d753c0e 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScContactStream.h +++ b/PhysX_3.4/Source/SimulationController/src/ScContactStream.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScElementInteractionMarker.cpp b/PhysX_3.4/Source/SimulationController/src/ScElementInteractionMarker.cpp index d669aabc..e55be6cf 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScElementInteractionMarker.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScElementInteractionMarker.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScElementInteractionMarker.h b/PhysX_3.4/Source/SimulationController/src/ScElementInteractionMarker.h index 743de966..397a4f24 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScElementInteractionMarker.h +++ b/PhysX_3.4/Source/SimulationController/src/ScElementInteractionMarker.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScElementSim.cpp b/PhysX_3.4/Source/SimulationController/src/ScElementSim.cpp index 9ff82819..b865ac6b 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScElementSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScElementSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -127,7 +127,7 @@ PX_COMPILE_TIME_ASSERT(PxU32(PxSimulationStatistics::eCLOTH) == PxU32(Sc::Elemen PX_COMPILE_TIME_ASSERT(PxU32(PxSimulationStatistics::ePARTICLE_SYSTEM) == PxU32(Sc::ElementType::ePARTICLE_PACKET)); #endif -void Sc::ElementSim::addToAABBMgr(PxReal contactDistance, PxU32 group, bool isTrigger) +void Sc::ElementSim::addToAABBMgr(PxReal contactDistance, Bp::FilterGroup::Enum group, Ps::IntBool isTrigger) { Sc::Scene& scene = getScene(); bool success = scene.getAABBManager()->addBounds(mElementID, contactDistance, group, this, mActor.getActorCore().getAggregateID(), isTrigger ? PxU8(Sc::ElementType::eTRIGGER) : PxU8(mType) ); diff --git a/PhysX_3.4/Source/SimulationController/src/ScElementSim.h b/PhysX_3.4/Source/SimulationController/src/ScElementSim.h index aace946b..d82bd9cb 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScElementSim.h +++ b/PhysX_3.4/Source/SimulationController/src/ScElementSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -115,7 +115,7 @@ namespace Sc PX_FORCE_INLINE PxU32 getElementID() const { return mElementID; } PX_FORCE_INLINE bool isInBroadPhase() const { return mInBroadPhase; } - void addToAABBMgr(PxReal contactDistance, PxU32 group, bool isTrigger); + void addToAABBMgr(PxReal contactDistance, Bp::FilterGroup::Enum group, Ps::IntBool isTrigger); void removeFromAABBMgr(); //---------- Filtering ---------- diff --git a/PhysX_3.4/Source/SimulationController/src/ScElementSimInteraction.h b/PhysX_3.4/Source/SimulationController/src/ScElementSimInteraction.h index daa95c0f..fae9f063 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScElementSimInteraction.h +++ b/PhysX_3.4/Source/SimulationController/src/ScElementSimInteraction.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScInteraction.cpp b/PhysX_3.4/Source/SimulationController/src/ScInteraction.cpp index fffc1bcc..17d8fdb5 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScInteraction.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScInteraction.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScInteraction.h b/PhysX_3.4/Source/SimulationController/src/ScInteraction.h index 90cd83c4..82d4e6f0 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScInteraction.h +++ b/PhysX_3.4/Source/SimulationController/src/ScInteraction.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScInteractionFlags.h b/PhysX_3.4/Source/SimulationController/src/ScInteractionFlags.h index d15a05a8..e0bfb7bc 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScInteractionFlags.h +++ b/PhysX_3.4/Source/SimulationController/src/ScInteractionFlags.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScIterators.cpp b/PhysX_3.4/Source/SimulationController/src/ScIterators.cpp index 4ed8195f..3f6e1d04 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScIterators.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScIterators.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScMaterialCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScMaterialCore.cpp index 63ebeb2a..ef604212 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScMaterialCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScMaterialCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScMetaData.cpp b/PhysX_3.4/Source/SimulationController/src/ScMetaData.cpp index b484a6f6..32c2649f 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScMetaData.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScMetaData.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScNPhaseCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScNPhaseCore.cpp index 24c6da5e..c3472b39 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScNPhaseCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScNPhaseCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -170,16 +170,10 @@ PxU32 Sc::NPhaseCore::getDefaultContactReportStreamBufferSize() const return mContactReportBuffer.getDefaultBufferSize(); } -// PT: function used only once, so safe to force inline Sc::ElementSimInteraction* Sc::NPhaseCore::findInteraction(ElementSim* _element0, ElementSim* _element1) { - if (_element0 > _element1) - Ps::swap(_element0, _element1); - const Ps::HashMap<ElementSimKey, ElementSimInteraction*>::Entry* pair = mElementSimMap.find(ElementSimKey(_element0, _element1)); - if (pair) - return pair->second; - return NULL; + return pair ? pair->second : NULL; } PxFilterInfo Sc::NPhaseCore::onOverlapFilter(ElementSim* volume0, ElementSim* volume1) @@ -480,23 +474,12 @@ void Sc::NPhaseCore::onOverlapCreated(const Bp::AABBOverlap* PX_RESTRICT pairs, void Sc::NPhaseCore::registerInteraction(ElementSimInteraction* interaction) { - ElementSim* sim0 = &interaction->getElement0(); - ElementSim* sim1 = &interaction->getElement1(); - - if (sim0 > sim1) - Ps::swap(sim0, sim1); - - mElementSimMap.insert(ElementSimKey(sim0, sim1), interaction); + mElementSimMap.insert(ElementSimKey(&interaction->getElement0(), &interaction->getElement1()), interaction); } void Sc::NPhaseCore::unregisterInteraction(ElementSimInteraction* interaction) { - ElementSim* sim0 = &interaction->getElement0(); - ElementSim* sim1 = &interaction->getElement1(); - if (sim0 > sim1) - Ps::swap(sim0, sim1); - - mElementSimMap.erase(ElementSimKey(sim0, sim1)); + mElementSimMap.erase(ElementSimKey(&interaction->getElement0(), &interaction->getElement1())); } ElementSimInteraction* Sc::NPhaseCore::onOverlapRemovedStage1(ElementSim* volume0, ElementSim* volume1) @@ -797,7 +780,6 @@ Sc::ShapeInteraction* Sc::NPhaseCore::createShapeInteraction(ShapeSim& s0, Shape If bodyA is in an earlier BP group than bodyB, swap */ { - // PT: 'getRbSim()' is not inlined so call it only once here. Sc::RigidSim& rs0 = s0.getRbSim(); Sc::RigidSim& rs1 = s1.getRbSim(); @@ -806,13 +788,12 @@ Sc::ShapeInteraction* Sc::NPhaseCore::createShapeInteraction(ShapeSim& s0, Shape if( actorType0 == PxActorType::eRIGID_STATIC || (actorType0 == PxActorType::eRIGID_DYNAMIC && actorType1 == PxActorType::eARTICULATION_LINK) || ((actorType0 == PxActorType::eRIGID_DYNAMIC && actorType1 == PxActorType::eRIGID_DYNAMIC) && s0.getBodySim()->isKinematic()) - || (actorType0 == actorType1 && rs0.getBroadphaseGroupId() < rs1.getBroadphaseGroupId())) + || (actorType0 == actorType1 && rs0.getRigidID() < rs1.getRigidID())) Ps::swap(_s0, _s1); } - ActorPair* aPair = NULL; ShapeInteraction* si = shapeInteraction ? shapeInteraction : mShapeInteractionPool.allocate(); - PX_PLACEMENT_NEW(si, ShapeInteraction)(*_s0, *_s1, aPair, pairFlags, contactManager); + PX_PLACEMENT_NEW(si, ShapeInteraction)(*_s0, *_s1, pairFlags, contactManager); PX_ASSERT(si->mReportPairIndex == INVALID_REPORT_PAIR_ID); @@ -1311,7 +1292,18 @@ PxFilterInfo Sc::NPhaseCore::filterRbCollisionPair(const ShapeSim& s0, const Sha const bool kinematicPair = isS0Kinematic | isS1Kinematic; if(kinematicPair) { - const PxSceneFlags sceneFlags = mOwnerScene.getPublicFlags(); + PxSceneFlags sceneFlags = mOwnerScene.getPublicFlags(); + const PxPairFilteringMode::Enum kineKineFilteringMode = mOwnerScene.getKineKineFilteringMode(); + if(kineKineFilteringMode==PxPairFilteringMode::eKEEP) + sceneFlags |= PxSceneFlag::eENABLE_KINEMATIC_PAIRS; + else if(kineKineFilteringMode==PxPairFilteringMode::eSUPPRESS) + sceneFlags &= ~PxSceneFlag::eENABLE_KINEMATIC_PAIRS; + + const PxPairFilteringMode::Enum staticKineFilteringMode = mOwnerScene.getStaticKineFilteringMode(); + if(staticKineFilteringMode==PxPairFilteringMode::eKEEP) + sceneFlags |= PxSceneFlag::eENABLE_KINEMATIC_STATIC_PAIRS; + else if(staticKineFilteringMode==PxPairFilteringMode::eSUPPRESS) + sceneFlags &= ~PxSceneFlag::eENABLE_KINEMATIC_STATIC_PAIRS; // ...then ignore kinematic vs. static pairs if(!(sceneFlags & PxSceneFlag::eENABLE_KINEMATIC_STATIC_PAIRS)) @@ -1406,11 +1398,11 @@ Sc::ActorPair* Sc::NPhaseCore::findActorPair(ShapeSim* s0, ShapeSim* s1, Ps::Int RigidSim* aLess = &s0->getRbSim(); RigidSim* aMore = &s1->getRbSim(); - if (aLess->getID() > aMore->getID()) + if (aLess->getRigidID() > aMore->getRigidID()) Ps::swap(aLess, aMore); - key.mSim0 = aLess->getID(); - key.mSim1 = aMore->getID(); + key.mSim0 = aLess->getRigidID(); + key.mSim1 = aMore->getRigidID(); Sc::ActorPair*& actorPair = mActorPairMap[key]; @@ -2007,12 +1999,6 @@ void Sc::NPhaseCore::removeFromDirtyInteractionList(Interaction* pair) mDirtyInteractions.erase(pair); } -void Sc::NPhaseCore::reserveSpaceInNphaseCore(const PxU32 nbContactManagers) -{ - PX_UNUSED(nbContactManagers); -} - - void Sc::NPhaseCore::updateDirtyInteractions(PxsContactManagerOutputIterator& outputs, bool useAdaptiveForce) { // The sleeping SIs will be updated on activation @@ -2159,11 +2145,11 @@ void Sc::NPhaseCore::lostTouchReports(ShapeInteraction* si, PxU32 flags, PxU32 c BodyPairKey pair; - if (sim0->getID() > sim1->getID()) + if (sim0->getRigidID() > sim1->getRigidID()) Ps::swap(sim0, sim1); - pair.mSim0 = sim0->getID(); - pair.mSim1 = sim1->getID(); + pair.mSim0 = sim0->getRigidID(); + pair.mSim1 = sim1->getRigidID(); mActorPairMap.erase(pair); diff --git a/PhysX_3.4/Source/SimulationController/src/ScNPhaseCore.h b/PhysX_3.4/Source/SimulationController/src/ScNPhaseCore.h index 1a9f9eec..1d506d50 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScNPhaseCore.h +++ b/PhysX_3.4/Source/SimulationController/src/ScNPhaseCore.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -46,10 +46,8 @@ #include "ScContactReportBuffer.h" #include "PsHash.h" - namespace physx { - namespace Bp { struct AABBOverlap; @@ -94,7 +92,6 @@ namespace Sc class RigidSim; - struct PairReleaseFlag { enum Enum @@ -111,28 +108,22 @@ namespace Sc The broadphase inserts shape pairs into the NPhaseCore, which are then processed into contact point streams. Pairs can then be processed into AxisConstraints by the GroupSolveCore. - */ - - - struct BodyPairKey { PxU32 mSim0; PxU32 mSim1; - bool operator == (const BodyPairKey& pair) const { return mSim0 == pair.mSim0 && mSim1 == pair.mSim1; } + PX_FORCE_INLINE bool operator == (const BodyPairKey& pair) const { return mSim0 == pair.mSim0 && mSim1 == pair.mSim1; } }; - - PX_INLINE PxU32 hash(const BodyPairKey& key) { - PxU32 add0 = key.mSim0; - PxU32 add1 = key.mSim1; + const PxU32 add0 = key.mSim0; + const PxU32 add1 = key.mSim1; - PxU32 base = PxU32((add0 & 0xFFFF) | (add1 << 16)); + const PxU32 base = PxU32((add0 & 0xFFFF) | (add1 << 16)); return physx::shdfnd::hash(base); } @@ -141,11 +132,18 @@ namespace Sc { ElementSim* mSim0, *mSim1; - ElementSimKey(ElementSim* sim0 = NULL, ElementSim* sim1 = NULL) : mSim0(sim0), mSim1(sim1) + ElementSimKey() : mSim0(NULL), mSim1(NULL) {} - bool operator == (const ElementSimKey& pair) const { return mSim0 == pair.mSim0 && mSim1 == pair.mSim1; } + ElementSimKey(ElementSim* sim0, ElementSim* sim1) + { + if(sim0 > sim1) + Ps::swap(sim0, sim1); + mSim0 = sim0; + mSim1 = sim1; + } + PX_FORCE_INLINE bool operator == (const ElementSimKey& pair) const { return mSim0 == pair.mSim0 && mSim1 == pair.mSim1; } }; PX_INLINE PxU32 hash(const ElementSimKey& key) @@ -157,12 +155,11 @@ namespace Sc add0 = add0 >> 2; add1 = add1 >> 2; - PxU32 base = PxU32((add0 & 0xFFFF) | (add1 << 16)); + const PxU32 base = PxU32((add0 & 0xFFFF) | (add1 << 16)); return physx::shdfnd::hash(base); } - class NPhaseCore : public Ps::UserAllocated { PX_NOCOPY(NPhaseCore) @@ -199,9 +196,6 @@ namespace Sc void removeFromDirtyInteractionList(Interaction* interaction); void updateDirtyInteractions(PxsContactManagerOutputIterator& outputs, bool useAdaptiveForce); - void reserveSpaceInNphaseCore(const PxU32 nbContactManagers); - - /* Description: Perform trigger overlap tests. */ diff --git a/PhysX_3.4/Source/SimulationController/src/ScObjectIDTracker.h b/PhysX_3.4/Source/SimulationController/src/ScObjectIDTracker.h index cb703db7..16b1ea74 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScObjectIDTracker.h +++ b/PhysX_3.4/Source/SimulationController/src/ScObjectIDTracker.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScPhysics.cpp b/PhysX_3.4/Source/SimulationController/src/ScPhysics.cpp index 8f273fe8..62a7edee 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScPhysics.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScPhysics.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScRbElementInteraction.h b/PhysX_3.4/Source/SimulationController/src/ScRbElementInteraction.h index cae25488..e1790d0b 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScRbElementInteraction.h +++ b/PhysX_3.4/Source/SimulationController/src/ScRbElementInteraction.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScRigidCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScRigidCore.cpp index 824f2ce9..3c375dec 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScRigidCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScRigidCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp b/PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp index 573f7bb1..46fcdb21 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -53,13 +53,7 @@ using namespace physx; Sc::RigidSim::RigidSim(Scene& scene, RigidCore& core) : ActorSim(scene, core) { - mRigidId = scene.getRigidIDTracker().createID(); - -#if PX_CHECKED -#if PX_USE_16_BIT_HANDLES - PX_CHECK_MSG(getBroadphaseGroupId() < BP_INVALID_BP_HANDLE, "The total of actors in the scene plus the number of adds cannot exceed 65535 between simulate()/fetchResult() calls. The sdk will can now proceed with unexpected outcomes. \n"); -#endif -#endif + mRigidId = scene.getRigidIDTracker().createID(); } Sc::RigidSim::~RigidSim() @@ -110,7 +104,3 @@ Sc::ShapeSim& Sc::RigidSim::getSimForShape(Sc::ShapeCore& core) const return *reinterpret_cast<Sc::ShapeSim*>(1); } -PxActor* Sc::RigidSim::getPxActor() const -{ - return getRigidCore().getPxActor(); -} diff --git a/PhysX_3.4/Source/SimulationController/src/ScRigidSim.h b/PhysX_3.4/Source/SimulationController/src/ScRigidSim.h index 992e3f22..d6e91185 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScRigidSim.h +++ b/PhysX_3.4/Source/SimulationController/src/ScRigidSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -52,18 +52,15 @@ namespace Sc RigidSim(Scene&, RigidCore&); virtual ~RigidSim(); - PX_FORCE_INLINE RigidCore& getRigidCore() const { return static_cast<RigidCore&>(mCore); } + PX_FORCE_INLINE RigidCore& getRigidCore() const { return static_cast<RigidCore&>(mCore); } - PX_FORCE_INLINE PxU32 getID() const { return mRigidId; } - - PX_FORCE_INLINE PxU32 getBroadphaseGroupId() const { return (getActorType()!=PxActorType::eRIGID_STATIC ? mRigidId + PxU32(Bp::FilterGroup::eDYNAMICS_BASE) : PxU32(Bp::FilterGroup::eSTATICS));} + PX_FORCE_INLINE PxU32 getRigidID() const { return mRigidId; } void notifyShapesOfTransformChange(); Sc::ShapeSim& getSimForShape(Sc::ShapeCore& shape) const; - - PxActor* getPxActor() const; + PxActor* getPxActor() const { return getRigidCore().getPxActor(); } private: PxU32 mRigidId; }; diff --git a/PhysX_3.4/Source/SimulationController/src/ScScene.cpp b/PhysX_3.4/Source/SimulationController/src/ScScene.cpp index b19852e7..1cc84a0d 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScScene.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScScene.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -582,6 +582,8 @@ Sc::Scene::Scene(const PxSceneDesc& desc, PxU64 contextID) : mMemBlock256Pool (PX_DEBUG_EXP("PxsContext ConstraintBlock256Pool")), mMemBlock384Pool (PX_DEBUG_EXP("PxsContext ConstraintBlock384Pool")), mNPhaseCore (NULL), + mKineKineFilteringMode (desc.kineKineFilteringMode), + mStaticKineFilteringMode (desc.staticKineFilteringMode), mSleepBodies (PX_DEBUG_EXP("sceneSleepBodies")), mWokeBodies (PX_DEBUG_EXP("sceneWokeBodies")), mEnableStabilization (desc.flags & PxSceneFlag::eENABLE_STABILIZATION), @@ -804,7 +806,9 @@ Sc::Scene::Scene(const PxSceneDesc& desc, PxU64 contextID) : mSimulationControllerCallback = PX_PLACEMENT_NEW(PX_ALLOC(sizeof(ScSimulationControllerCallback), PX_DEBUG_EXP("ScSimulationControllerCallback")), ScSimulationControllerCallback(this)); mSimulationController = createSimulationController(mSimulationControllerCallback); - mAABBManager = PX_NEW(Bp::SimpleAABBManager)(*mBP, *mBoundsArray, *mContactDistance, desc.limits.maxNbAggregates, desc.limits.maxNbStaticShapes + desc.limits.maxNbDynamicShapes, allocator, contextID); + mAABBManager = PX_NEW(Bp::SimpleAABBManager)( *mBP, *mBoundsArray, *mContactDistance, + desc.limits.maxNbAggregates, desc.limits.maxNbStaticShapes + desc.limits.maxNbDynamicShapes, allocator, contextID, + desc.kineKineFilteringMode, desc.staticKineFilteringMode); } else { @@ -841,7 +845,9 @@ Sc::Scene::Scene(const PxSceneDesc& desc, PxU64 contextID) : Ps::VirtualAllocator tAllocator(mHeapMemoryAllocationManager->mMappedMemoryAllocators); - mAABBManager = PX_NEW(Bp::SimpleAABBManager)(*mBP, *mBoundsArray, *mContactDistance, desc.limits.maxNbAggregates, desc.limits.maxNbStaticShapes + desc.limits.maxNbDynamicShapes, tAllocator, contextID); + mAABBManager = PX_NEW(Bp::SimpleAABBManager)( *mBP, *mBoundsArray, *mContactDistance, + desc.limits.maxNbAggregates, desc.limits.maxNbStaticShapes + desc.limits.maxNbDynamicShapes, tAllocator, contextID, + desc.kineKineFilteringMode, desc.staticKineFilteringMode); #endif } @@ -1695,7 +1701,7 @@ void Sc::Scene::removeBody(BodySim& body) //this also notifies any connected joi else PX_ASSERT(!isInPosePreviewList(body)); - markReleasedBodyIDForLostTouch(body.getID()); + markReleasedBodyIDForLostTouch(body.getRigidID()); } void Sc::Scene::addConstraint(ConstraintCore& constraint, RigidCore* body0, RigidCore* body1) @@ -3893,7 +3899,6 @@ public: const PxReal mDt; IG::SimpleIslandManager* mIslandManager; PxsSimulationController* mSimulationController; - PxU64 mContextID; bool mSimUsesAdaptiveForce; public: @@ -3903,7 +3908,6 @@ public: mDt (dt), mIslandManager (islandManager), mSimulationController (simulationController), - mContextID (contextID), mSimUsesAdaptiveForce (simUsesAdaptiveForce) { } @@ -5824,7 +5828,7 @@ void Sc::Scene::addToLostTouchList(BodySim* body1, BodySim* body2) { PX_ASSERT(body1 != 0); PX_ASSERT(body2 != 0); - SimpleBodyPair p = { body1, body2, body1->getID(), body2->getID() }; + SimpleBodyPair p = { body1, body2, body1->getRigidID(), body2->getRigidID() }; mLostTouchPairs.pushBack(p); } @@ -6036,13 +6040,35 @@ PxU32 Sc::Scene::createAggregate(void* userData, bool selfCollisions) { const physx::Bp::BoundsIndex index = getElementIDPool().createID(); mBoundsArray->initEntry(index); - return mAABBManager->createAggregate(index, userData, selfCollisions); +#ifdef BP_USE_AGGREGATE_GROUP_TAIL + return mAABBManager->createAggregate(index, Bp::FilterGroup::eINVALID, userData, selfCollisions); +#else + // PT: TODO: ideally a static compound would have a static group + const PxU32 rigidId = getRigidIDTracker().createID(); + const Bp::FilterGroup::Enum bpGroup = Bp::FilterGroup::Enum(rigidId + Bp::FilterGroup::eDYNAMICS_BASE); + return mAABBManager->createAggregate(index, bpGroup, userData, selfCollisions); +#endif } void Sc::Scene::deleteAggregate(PxU32 id) { - const physx::Bp::BoundsIndex index = mAABBManager->destroyAggregate(id); - getElementIDPool().releaseID(index); + Bp::BoundsIndex index; + Bp::FilterGroup::Enum bpGroup; +#ifdef BP_USE_AGGREGATE_GROUP_TAIL + if(mAABBManager->destroyAggregate(index, bpGroup, id)) + { + getElementIDPool().releaseID(index); + } +#else + if(mAABBManager->destroyAggregate(index, bpGroup, id)) + { + getElementIDPool().releaseID(index); + + // PT: this is clumsy.... + const PxU32 rigidId = PxU32(bpGroup) - Bp::FilterGroup::eDYNAMICS_BASE; + getRigidIDTracker().releaseID(rigidId); + } +#endif } //~PX_AGGREGATE diff --git a/PhysX_3.4/Source/SimulationController/src/ScShapeCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScShapeCore.cpp index 58963ade..9979f5dd 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScShapeCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScShapeCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScShapeInteraction.cpp b/PhysX_3.4/Source/SimulationController/src/ScShapeInteraction.cpp index 0760d911..6ee9218d 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScShapeInteraction.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScShapeInteraction.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -40,11 +40,11 @@ using namespace physx; -Sc::ShapeInteraction::ShapeInteraction(ShapeSim& s1, ShapeSim& s2, ActorPair* aPair, PxPairFlags pairFlags, PxsContactManager* contactManager) : +Sc::ShapeInteraction::ShapeInteraction(ShapeSim& s1, ShapeSim& s2, PxPairFlags pairFlags, PxsContactManager* contactManager) : RbElementInteraction (s1, s2, InteractionType::eOVERLAP, InteractionFlag::eRB_ELEMENT|InteractionFlag::eFILTERABLE), mContactReportStamp (PX_INVALID_U32), mFlags (0), - mActorPair (aPair), + mActorPair (NULL), mReportPairIndex (INVALID_REPORT_PAIR_ID), mManager (NULL), mEdgeIndex (IG_INVALID_EDGE), @@ -110,9 +110,6 @@ Sc::ShapeInteraction::ShapeInteraction(ShapeSim& s1, ShapeSim& s2, ActorPair* aP { onActivate(contactManager); } - - if(aPair) - aPair->incRefCount(); } diff --git a/PhysX_3.4/Source/SimulationController/src/ScShapeInteraction.h b/PhysX_3.4/Source/SimulationController/src/ScShapeInteraction.h index 6ae2d777..c628ea2f 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScShapeInteraction.h +++ b/PhysX_3.4/Source/SimulationController/src/ScShapeInteraction.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -85,7 +85,7 @@ namespace Sc LL_MANAGER_RECREATE_EVENT = CONTACT_REPORT_EVENTS | CONTACTS_COLLECT_POINTS | CONTACTS_RESPONSE_DISABLED | PxU32(PxPairFlag::eMODIFY_CONTACTS) }; - ShapeInteraction(ShapeSim& s1, ShapeSim& s2, ActorPair* aPair, PxPairFlags pairFlags, PxsContactManager* contactManager); + ShapeInteraction(ShapeSim& s1, ShapeSim& s2, PxPairFlags pairFlags, PxsContactManager* contactManager); virtual ~ShapeInteraction(); // Submits to contact stream diff --git a/PhysX_3.4/Source/SimulationController/src/ScShapeIterator.h b/PhysX_3.4/Source/SimulationController/src/ScShapeIterator.h index 0b8d46f9..f2304a64 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScShapeIterator.h +++ b/PhysX_3.4/Source/SimulationController/src/ScShapeIterator.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScShapeSim.cpp b/PhysX_3.4/Source/SimulationController/src/ScShapeSim.cpp index 42bd5e88..d4e10a93 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScShapeSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScShapeSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -60,6 +60,7 @@ using namespace physx; using namespace Gu; +using namespace Sc; // PT: keep local functions in cpp, no need to pollute the header. Don't force conversions to bool if not necessary. static PX_FORCE_INLINE PxU32 hasTriggerFlags(PxShapeFlags flags) { return PxU32(flags) & PxU32(PxShapeFlag::eTRIGGER_SHAPE); } @@ -99,13 +100,9 @@ void Sc::ShapeSim::initSubsystemsDependingOnElementID() { PX_PROFILE_ZONE("API.simAddShapeToBroadPhase", scScene.getContextId()); if(isBroadPhase(mCore.getFlags())) - { internalAddToBroadPhase(); - } else - { scScene.getAABBManager()->reserveSpaceForBounds(index); - } scScene.updateContactDistance(index, getContactOffset()); } @@ -155,32 +152,37 @@ Sc::ShapeSim::~ShapeSim() scScene.getShapeIDTracker().releaseID(mId); } +Bp::FilterGroup::Enum ShapeSim::getBPGroup() const +{ + bool isKinematic = false; + BodySim* bs = getBodySim(); + if(bs) + isKinematic = bs->isKinematic(); + + RigidSim& rbSim = getRbSim(); + return Bp::getFilterGroup(rbSim.getActorType()==PxActorType::eRIGID_STATIC, rbSim.getRigidID(), isKinematic); +} + PX_FORCE_INLINE void Sc::ShapeSim::internalAddToBroadPhase() { PX_ASSERT(!isInBroadPhase()); - addToAABBMgr(mCore.getContactOffset(), getRbSim().getBroadphaseGroupId(), !!(mCore.getCore().mShapeFlags & PxShapeFlag::eTRIGGER_SHAPE)); + addToAABBMgr(mCore.getContactOffset(), getBPGroup(), Ps::IntBool(mCore.getCore().mShapeFlags & PxShapeFlag::eTRIGGER_SHAPE)); } -PX_FORCE_INLINE void Sc::ShapeSim::internalRemoveFromBroadPhase() +PX_FORCE_INLINE void Sc::ShapeSim::internalRemoveFromBroadPhase(bool wakeOnLostTouch) { PX_ASSERT(isInBroadPhase()); removeFromAABBMgr(); - Sc::Scene& scene = getScene(); + Scene& scene = getScene(); PxsContactManagerOutputIterator outputs = scene.getLowLevelContext()->getNphaseImplementationContext()->getContactManagerOutputs(); - scene.getNPhaseCore()->onVolumeRemoved(this, PxU32(PairReleaseFlag::eWAKE_ON_LOST_TOUCH), outputs, scene.getPublicFlags() & PxSceneFlag::eADAPTIVE_FORCE); + scene.getNPhaseCore()->onVolumeRemoved(this, wakeOnLostTouch ? PxU32(PairReleaseFlag::eWAKE_ON_LOST_TOUCH) : 0, outputs, scene.getPublicFlags() & PxSceneFlag::eADAPTIVE_FORCE); } void Sc::ShapeSim::removeFromBroadPhase(bool wakeOnLostTouch) { if(isInBroadPhase()) - { - // PT: TODO: refactor with internalRemoveFromBroadPhase() - removeFromAABBMgr(); - Sc::Scene& scene = getScene(); - PxsContactManagerOutputIterator outputs = scene.getLowLevelContext()->getNphaseImplementationContext()->getContactManagerOutputs(); - scene.getNPhaseCore()->onVolumeRemoved(this, wakeOnLostTouch ? PxU32(PairReleaseFlag::eWAKE_ON_LOST_TOUCH) : 0, outputs, scene.getPublicFlags() & PxSceneFlag::eADAPTIVE_FORCE); - } + internalRemoveFromBroadPhase(wakeOnLostTouch); } void Sc::ShapeSim::reinsertBroadPhase() @@ -258,8 +260,6 @@ void Sc::ShapeSim::onFlagChange(PxShapeFlags oldFlags) { PxShapeFlags newFlags = mCore.getFlags(); - const PxSceneFlags sceneFlags = getScene().getPublicFlags(); - const bool oldBp = isBroadPhase(oldFlags)!=0; const bool newBp = isBroadPhase(newFlags)!=0; @@ -267,17 +267,14 @@ void Sc::ShapeSim::onFlagChange(PxShapeFlags oldFlags) if(oldBp != newBp) { if(!oldBp && newBp) - { - PX_ASSERT(!isInBroadPhase()); internalAddToBroadPhase(); - } else - { internalRemoveFromBroadPhase(); - } } else { + Scene& scene = getScene(); + const PxSceneFlags sceneFlags = scene.getPublicFlags(); const bool wasTrigger = hasTriggerFlags(oldFlags)!=0; const bool isTrigger = hasTriggerFlags(newFlags)!=0; if(!(sceneFlags & PxSceneFlag::eDEPRECATED_TRIGGER_TRIGGER_REPORTS)) @@ -287,7 +284,7 @@ void Sc::ShapeSim::onFlagChange(PxShapeFlags oldFlags) } else { - getScene().getAABBManager()->setVolumeType(this->getElementID(), PxU8((isTrigger ? Sc::ElementType::eTRIGGER : getElementType()))); + scene.getAABBManager()->setVolumeType(this->getElementID(), PxU8((isTrigger ? Sc::ElementType::eTRIGGER : getElementType()))); if (wasTrigger != isTrigger) setElementInteractionsDirty(InteractionDirtyFlag::eFILTER_STATE, InteractionFlag::eFILTERABLE); } @@ -296,7 +293,8 @@ void Sc::ShapeSim::onFlagChange(PxShapeFlags oldFlags) PxShapeFlags hadSq = oldFlags&PxShapeFlag::eSCENE_QUERY_SHAPE, hasSq = newFlags&PxShapeFlag::eSCENE_QUERY_SHAPE; if(hasSq && !hadSq) { - if(getBodySim() && getBodySim()->isActive()) + BodySim* body = getBodySim(); + if(body && body->isActive()) createSqBounds(); } else if(hadSq && !hasSq) @@ -354,7 +352,7 @@ void Sc::ShapeSim::getAbsPoseAligned(PxTransform* PX_RESTRICT globalPose) const Cm::getStaticGlobalPoseAligned(*actor2World, shape2Actor, *globalPose); } -Sc::BodySim* Sc::ShapeSim::getBodySim() const +Sc::BodySim* Sc::ShapeSim::getBodySim() const { ActorSim& a = getActor(); return a.isDynamicRigid() ? static_cast<BodySim*>(&a) : NULL; @@ -424,8 +422,9 @@ Ps::IntBool Sc::ShapeSim::updateSweptBounds() PxBounds3 bounds = PxBounds3::centerExtents(endOrigin, endExtent); - PxcRigidBody& rigidBody = getBodySim()->getLowLevelBody(); - PxsBodyCore& bodyCore = getBodySim()->getBodyCore().getCore(); + BodySim* body = getBodySim(); + PxcRigidBody& rigidBody = body->getLowLevelBody(); + PxsBodyCore& bodyCore = body->getBodyCore().getCore(); PX_ALIGN(16, PxTransform shape2World); Cm::getDynamicGlobalPoseAligned(rigidBody.mLastTransform, shapeCore.getShape2Actor(), bodyCore.getBody2Actor(), shape2World); PxBounds3 startBounds = computeBounds(shapeCore.getGeometry(), shape2World, !physx::gUnifiedHeightfieldCollision); @@ -444,18 +443,25 @@ Ps::IntBool Sc::ShapeSim::updateSweptBounds() return isFastMoving; } +void ShapeSim::updateBPGroup() +{ + if(isInBroadPhase()) + { + Sc::Scene& scene = getScene(); + scene.getAABBManager()->setBPGroup(getElementID(), getBPGroup()); + } +} + void Sc::ShapeSim::markBoundsForUpdate(bool forceBoundsUpdate, bool isDynamic) { PX_UNUSED(isDynamic); Sc::Scene& scene = getScene(); - const PxU32 elementID = getElementID(); - if(forceBoundsUpdate) updateCached(0, &scene.getAABBManager()->getChangedAABBMgActorHandleMap()); else if(isInBroadPhase()) - scene.getDirtyShapeSimMap().growAndSet(elementID); + scene.getDirtyShapeSimMap().growAndSet(getElementID()); #if PX_USE_PARTICLE_SYSTEM_API #if PX_SUPPORT_GPU_PHYSX @@ -535,7 +541,6 @@ void Sc::ShapeSim::createSqBounds() return; Sc::BodySim* bodySim = getBodySim(); - PX_ASSERT(bodySim); if(bodySim->usingSqKinematicTarget() || bodySim->isFrozen() || !bodySim->isActive()) diff --git a/PhysX_3.4/Source/SimulationController/src/ScShapeSim.h b/PhysX_3.4/Source/SimulationController/src/ScShapeSim.h index e185703f..5d4277db 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScShapeSim.h +++ b/PhysX_3.4/Source/SimulationController/src/ScShapeSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -128,6 +128,7 @@ namespace Sc void updateCached(PxsTransformCache& transformCache, Bp::BoundsArray& boundsArray); void updateContactDistance(PxReal* contactDistance, const PxReal inflation, const PxVec3 angVel, const PxReal dt, Bp::BoundsArray& boundsArray); Ps::IntBool updateSweptBounds(); + void updateBPGroup(); PX_FORCE_INLINE PxsShapeSim& getLLShapeSim() { return mLLShape; } private: @@ -137,8 +138,9 @@ namespace Sc PxU32 mSqBoundsId; PX_FORCE_INLINE void internalAddToBroadPhase(); - PX_FORCE_INLINE void internalRemoveFromBroadPhase(); + PX_FORCE_INLINE void internalRemoveFromBroadPhase(bool wakeOnLostTouch=true); void initSubsystemsDependingOnElementID(); + Bp::FilterGroup::Enum getBPGroup() const; } PX_ALIGN_SUFFIX(16); diff --git a/PhysX_3.4/Source/SimulationController/src/ScSimStateData.h b/PhysX_3.4/Source/SimulationController/src/ScSimStateData.h index 7211c45e..1f743d46 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScSimStateData.h +++ b/PhysX_3.4/Source/SimulationController/src/ScSimStateData.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScSimStats.cpp b/PhysX_3.4/Source/SimulationController/src/ScSimStats.cpp index 382d9381..1e210bc1 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScSimStats.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScSimStats.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScSimStats.h b/PhysX_3.4/Source/SimulationController/src/ScSimStats.h index 3960c4be..faed1b7b 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScSimStats.h +++ b/PhysX_3.4/Source/SimulationController/src/ScSimStats.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScSimulationController.cpp b/PhysX_3.4/Source/SimulationController/src/ScSimulationController.cpp index e907e837..dafec5ba 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScSimulationController.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScSimulationController.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScSimulationController.h b/PhysX_3.4/Source/SimulationController/src/ScSimulationController.h index b370745d..1cc07a55 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScSimulationController.h +++ b/PhysX_3.4/Source/SimulationController/src/ScSimulationController.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScSqBoundsManager.cpp b/PhysX_3.4/Source/SimulationController/src/ScSqBoundsManager.cpp index 7d2d692c..70443b4b 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScSqBoundsManager.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScSqBoundsManager.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScSqBoundsManager.h b/PhysX_3.4/Source/SimulationController/src/ScSqBoundsManager.h index a1b80b4b..75342847 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScSqBoundsManager.h +++ b/PhysX_3.4/Source/SimulationController/src/ScSqBoundsManager.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScStaticCore.cpp b/PhysX_3.4/Source/SimulationController/src/ScStaticCore.cpp index 7b0ad933..67ad840a 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScStaticCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScStaticCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScStaticSim.cpp b/PhysX_3.4/Source/SimulationController/src/ScStaticSim.cpp index 83546e83..fef59468 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScStaticSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScStaticSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScStaticSim.h b/PhysX_3.4/Source/SimulationController/src/ScStaticSim.h index 118c442c..13cca69a 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScStaticSim.h +++ b/PhysX_3.4/Source/SimulationController/src/ScStaticSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScTriggerInteraction.cpp b/PhysX_3.4/Source/SimulationController/src/ScTriggerInteraction.cpp index 03c5362f..80cce5cf 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScTriggerInteraction.cpp +++ b/PhysX_3.4/Source/SimulationController/src/ScTriggerInteraction.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScTriggerInteraction.h b/PhysX_3.4/Source/SimulationController/src/ScTriggerInteraction.h index 028229c7..8c1c9e9d 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScTriggerInteraction.h +++ b/PhysX_3.4/Source/SimulationController/src/ScTriggerInteraction.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/ScTriggerPairs.h b/PhysX_3.4/Source/SimulationController/src/ScTriggerPairs.h index ff5a72d0..12b13dfe 100644 --- a/PhysX_3.4/Source/SimulationController/src/ScTriggerPairs.h +++ b/PhysX_3.4/Source/SimulationController/src/ScTriggerPairs.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothCore.cpp b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothCore.cpp index dfd6760d..a67b0200 100644 --- a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothFabricCore.cpp b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothFabricCore.cpp index 46f06366..be2226ca 100644 --- a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothFabricCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothFabricCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothShape.cpp b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothShape.cpp index f06c9f04..fa078320 100644 --- a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothShape.cpp +++ b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothShape.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -105,7 +105,13 @@ void Sc::ClothShape::createLowLevelVolume() { PX_ASSERT(getWorldBounds().isFinite()); getScene().getBoundsArray().setBounds(getWorldBounds(), getElementID()); +#ifdef BP_FILTERING_USES_TYPE_IN_GROUP + const PxU32 group = Bp::FilterGroup::eCLOTH_NO_PARTICLE_INTERACTION; + const PxU32 type = Bp::FilterType::DYNAMIC; + addToAABBMgr(0, Bp::FilterGroup::Enum((group<<2)|type), false); +#else addToAABBMgr(0, Bp::FilterGroup::eCLOTH_NO_PARTICLE_INTERACTION, false); +#endif } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothShape.h b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothShape.h index 32453f16..6e0da37c 100644 --- a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothShape.h +++ b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothShape.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothSim.cpp b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothSim.cpp index 9edabed1..95e65eea 100644 --- a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothSim.h b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothSim.h index df0ca5ed..6fc824e6 100644 --- a/PhysX_3.4/Source/SimulationController/src/cloth/ScClothSim.h +++ b/PhysX_3.4/Source/SimulationController/src/cloth/ScClothSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleBodyInteraction.cpp b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleBodyInteraction.cpp index 98612cb8..031fd6e6 100644 --- a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleBodyInteraction.cpp +++ b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleBodyInteraction.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleBodyInteraction.h b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleBodyInteraction.h index 112aa74a..de7cba67 100644 --- a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleBodyInteraction.h +++ b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleBodyInteraction.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/particles/ScParticlePacketShape.cpp b/PhysX_3.4/Source/SimulationController/src/particles/ScParticlePacketShape.cpp index fde841d5..de7bc0b4 100644 --- a/PhysX_3.4/Source/SimulationController/src/particles/ScParticlePacketShape.cpp +++ b/PhysX_3.4/Source/SimulationController/src/particles/ScParticlePacketShape.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. @@ -171,7 +171,13 @@ void Sc::ParticlePacketShape::createLowLevelVolume() PX_ASSERT(getBounds().isFinite()); getScene().getBoundsArray().setBounds(getBounds(), getElementID()); +#ifdef BP_FILTERING_USES_TYPE_IN_GROUP + const PxU32 group = Bp::FilterGroup::ePARTICLES; + const PxU32 type = Bp::FilterType::DYNAMIC; + addToAABBMgr(0, Bp::FilterGroup::Enum((group<<2)|type), false); +#else addToAABBMgr(0, Bp::FilterGroup::ePARTICLES, false); +#endif } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/PhysX_3.4/Source/SimulationController/src/particles/ScParticlePacketShape.h b/PhysX_3.4/Source/SimulationController/src/particles/ScParticlePacketShape.h index 71db35ff..4826e1c9 100644 --- a/PhysX_3.4/Source/SimulationController/src/particles/ScParticlePacketShape.h +++ b/PhysX_3.4/Source/SimulationController/src/particles/ScParticlePacketShape.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemCore.cpp b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemCore.cpp index 9eba9bf5..0ed2fc08 100644 --- a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemCore.cpp +++ b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemCore.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemSim.cpp b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemSim.cpp index c0ba7cd8..233cad43 100644 --- a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemSim.cpp +++ b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemSim.cpp @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. diff --git a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemSim.h b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemSim.h index 03ddee0e..d3d29373 100644 --- a/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemSim.h +++ b/PhysX_3.4/Source/SimulationController/src/particles/ScParticleSystemSim.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2008-2018 NVIDIA Corporation. All rights reserved. // Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. // Copyright (c) 2001-2004 NovodeX AG. All rights reserved. |