123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #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];
- };
- 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
|