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

Method updateChunk

physx/samples/samplelargeworld/ChunkLoader.cpp:644–673  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

642}
643
644void BackgroundLoader::updateChunk(const PxVec3& cameraPos)
645{
646 ChunkID id = getChunkIdFromPosition(cameraPos, mTerrainRange, mChunkWidth);
647 if( id.id == mCurChunkId.id)
648 return;
649
650 mLocalBounds = PxBounds3::centerExtents( PxVec3(id.coord.x*mChunkWidth, 0.0f, id.coord.y*mChunkWidth), PxVec3(mChunkWidth));
651 updateDynamicChunkId();
652
653 mCurChunkId = id;
654 CoordType x = PxClamp(id.coord.x, (CoordType)mHalfRange, (CoordType)(mTerrainRange - mHalfRange));
655 CoordType y = PxClamp(id.coord.y, (CoordType)mHalfRange, (CoordType)(mTerrainRange - mHalfRange));
656
657 std::vector<ChunkID> requestQueue;
658 for( CoordType i = PxMax( (CoordType)0, (CoordType)(x - mHalfRange) ); i <= PxMin( (CoordType)N2, (CoordType)(x + mHalfRange)); i++ )
659 {
660 for( CoordType j = PxMax( (CoordType)0, (CoordType)(y - mHalfRange)); j <= PxMin( (CoordType)N2, (CoordType)(y + mHalfRange)); j++ )
661 {
662 ChunkID id;
663 id.coord.x = i;
664 id.coord.y = j;
665 requestQueue.push_back(id);
666 }
667 }
668
669 mQueueLock.lock();
670 mRequestQueue = requestQueue;
671 mQueueLock.unlock();
672 mRequestReady.set();
673}
674
675static const char* getPlatformName()
676{

Callers 1

onSubstepMethod · 0.80

Calls 8

getChunkIdFromPositionFunction · 0.85
PxClampFunction · 0.85
PxMaxFunction · 0.85
PxMinFunction · 0.85
PxVec3Class · 0.50
lockMethod · 0.45
unlockMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected