当前位置: 首页>>代码示例>>C++>>正文


C++ PxBounds3::setMaximal方法代码示例

本文整理汇总了C++中PxBounds3::setMaximal方法的典型用法代码示例。如果您正苦于以下问题:C++ PxBounds3::setMaximal方法的具体用法?C++ PxBounds3::setMaximal怎么用?C++ PxBounds3::setMaximal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PxBounds3的用法示例。


在下文中一共展示了PxBounds3::setMaximal方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: shiftOrigin

void PxsContext::shiftOrigin(const PxVec3& shift)
{
	// transform cache
	mTransformCache.shiftTransforms(-shift);

	if (getContactCacheFlag())
	{
		//Iterate all active contact managers
		Cm::BitMap::Iterator it(mActiveContactManager);
		PxU32 index = it.getNext();
		while(index != Cm::BitMap::Iterator::DONE)
		{
			PxsContactManager* cm = mContactManagerPool.findByIndexFast(index);

			PxcNpWorkUnit& npwUnit = cm->getWorkUnit();

			// contact cache
			PxU8* contactCachePtr = npwUnit.pairCache.ptr;
			if (contactCachePtr)
			{
				PxcLocalContactsCache* lcc;
				PxU8* contacts = PxcNpCacheRead(npwUnit.pairCache, lcc);
#ifdef _DEBUG
				PxcLocalContactsCache testCache;
				PxU32 testBytes;
				const PxU8* testPtr = PxcNpCacheRead2(npwUnit.pairCache, testCache, testBytes);
#endif

				lcc->mTransform0.p -= shift;
				lcc->mTransform1.p -= shift;
				
				const PxU32 nbContacts = lcc->mNbCachedContacts;
				const bool sameNormal = lcc->mSameNormal;
				const bool useFaceIndices = lcc->mUseFaceIndices;
				
				for(PxU32 i=0; i < nbContacts; i++)
				{
					if (i != nbContacts-1)
						Ps::prefetchLine(contacts, 128);

					if(!i || !sameNormal)
						contacts += sizeof(PxVec3);

					PxVec3* cachedPoint	= (PxVec3*)contacts;
					*cachedPoint -= shift;
					contacts += sizeof(PxVec3);
					contacts += sizeof(PxReal);

					if(useFaceIndices)
						contacts += 2 * sizeof(PxU32);
				}

#ifdef _DEBUG
				PX_ASSERT(contacts == (testPtr + testBytes));
#endif
			}

			index = it.getNext();
		}
	}

	//
	// adjust visualization culling box
	//
	PxBounds3 maximalBounds;
	maximalBounds.setMaximal();
	if ((mVisualizationCullingBox.minimum != maximalBounds.minimum) || (mVisualizationCullingBox.maximum != maximalBounds.maximum))
	{
		mVisualizationCullingBox.minimum -= shift;
		mVisualizationCullingBox.maximum -= shift;
	}
}
开发者ID:didixp,项目名称:Ark-Dev-Kit,代码行数:72,代码来源:PxsContext.cpp


注:本文中的PxBounds3::setMaximal方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。