| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
							- /*
 
- Bullet Continuous Collision Detection and Physics Library
 
- Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
 
- This software is provided 'as-is', without any express or implied warranty.
 
- In no event will the authors be held liable for any damages arising from the use of this software.
 
- Permission is granted to anyone to use this software for any purpose, 
 
- including commercial applications, and to alter it and redistribute it freely, 
 
- subject to the following restrictions:
 
- 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
 
- 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
 
- 3. This notice may not be removed or altered from any source distribution.
 
- */
 
- #ifndef SPU_CONTACT_RESULT2_H
 
- #define SPU_CONTACT_RESULT2_H
 
- #ifndef _WIN32
 
- #include <stdint.h>
 
- #endif
 
- #include "../SpuDoubleBuffer.h"
 
- #include "bullet/LinearMath/btTransform.h"
 
- #include "bullet/BulletCollision//NarrowPhaseCollision/btPersistentManifold.h"
 
- #include "bullet/BulletCollision//NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h"
 
- class btCollisionShape;
 
- struct SpuCollisionPairInput
 
- {
 
- 	ppu_address_t m_collisionShapes[2];
 
- 	btCollisionShape*	m_spuCollisionShapes[2];
 
- 	ppu_address_t m_persistentManifoldPtr;
 
- 	btVector3	m_primitiveDimensions0;
 
- 	btVector3	m_primitiveDimensions1;
 
- 	int		m_shapeType0;
 
- 	int		m_shapeType1;	
 
- 	float	m_collisionMargin0;
 
- 	float	m_collisionMargin1;
 
- 	btTransform	m_worldTransform0;
 
- 	btTransform m_worldTransform1;
 
- 	
 
- 	bool	m_isSwapped;
 
- 	bool    m_useEpa;
 
- };
 
- struct SpuClosestPointInput : public btDiscreteCollisionDetectorInterface::ClosestPointInput
 
- {
 
- 	struct SpuConvexPolyhedronVertexData* m_convexVertexData[2];
 
- };
 
- ///SpuContactResult exports the contact points using double-buffered DMA transfers, only when needed
 
- ///So when an existing contact point is duplicated, no transfer/refresh is performed.
 
- class SpuContactResult : public btDiscreteCollisionDetectorInterface::Result
 
- {
 
-     btTransform		m_rootWorldTransform0;
 
- 	btTransform		m_rootWorldTransform1;
 
- 	ppu_address_t	m_manifoldAddress;
 
-     btPersistentManifold* m_spuManifold;
 
- 	bool m_RequiresWriteBack;
 
- 	btScalar	m_combinedFriction;
 
- 	btScalar	m_combinedRestitution;
 
- 	
 
- 	bool m_isSwapped;
 
- 	DoubleBuffer<btPersistentManifold, 1> g_manifoldDmaExport;
 
- 	public:
 
- 		SpuContactResult();
 
- 		virtual ~SpuContactResult();
 
- 		btPersistentManifold*	GetSpuManifold() const
 
- 		{
 
- 			return m_spuManifold;
 
- 		}
 
- 		virtual void setShapeIdentifiersA(int partId0,int index0);
 
- 		virtual void setShapeIdentifiersB(int partId1,int index1);
 
- 		void	setContactInfo(btPersistentManifold* spuManifold, ppu_address_t	manifoldAddress,const btTransform& worldTrans0,const btTransform& worldTrans1, btScalar restitution0,btScalar restitution1, btScalar friction0,btScalar friction01, bool isSwapped);
 
-         void writeDoubleBufferedManifold(btPersistentManifold* lsManifold, btPersistentManifold* mmManifold);
 
-         virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth);
 
- 		void flush();
 
- };
 
- #endif //SPU_CONTACT_RESULT2_H
 
 
  |