MCPcopy Create free account
hub / github.com/NVIDIAGameWorks/PhysX / updateObject

Method updateObject

physx/source/scenequery/src/SqExtendedBucketPruner.cpp:225–257  ·  view source on GitHub ↗

///////////////////////////////////////////////////////////////////// Update object

Source from the content-addressed store, hash-verified

223//////////////////////////////////////////////////////////////////////////
224// Update object
225bool ExtendedBucketPruner::updateObject(const PxBounds3& worldAABB, const PrunerPayload& object, const PoolIndex poolIndex)
226{
227 const ExtendedBucketPrunerMap::Entry* extendedPrunerEntry = mExtendedBucketPrunerMap.find(object);
228
229 // if object is not in tree of trees, it is in bucket pruner core
230 if(!extendedPrunerEntry)
231 {
232#if USE_INCREMENTAL_PRUNER
233 PX_UNUSED(worldAABB);
234 return mPrunerCore.updateObject(poolIndex);
235#else
236 PX_UNUSED(poolIndex);
237 return mPrunerCore.updateObject(worldAABB, object);
238#endif
239 }
240 else
241 {
242 const ExtendedBucketPrunerData& data = extendedPrunerEntry->second;
243
244 PX_ASSERT(data.mMergeIndex < mCurrentTreeIndex);
245
246 // update tree where objects belongs to
247 AABBTree& tree = *mMergedTrees[data.mMergeIndex].mTree;
248 PX_ASSERT(data.mSubTreeNode < tree.getNbNodes());
249 // mark for refit node in merged tree
250 tree.markNodeForRefit(data.mSubTreeNode);
251 PX_ASSERT(mMainTreeUpdateMap[data.mMergeIndex] < mMainTree->getNbNodes());
252 // mark for refit node in main aabb tree
253 mMainTree->markNodeForRefit(mMainTreeUpdateMap[data.mMergeIndex]);
254 mTreesDirty = true;
255 }
256 return true;
257}
258
259//////////////////////////////////////////////////////////////////////////
260// refit merged nodes

Callers

nothing calls this directly

Calls 4

PX_UNUSEDFunction · 0.85
markNodeForRefitMethod · 0.80
findMethod · 0.45
getNbNodesMethod · 0.45

Tested by

no test coverage detected