#include "SpuGatheringCollisionTask.h"#include "../SpuDoubleBuffer.h"#include "../SpuCollisionTaskProcess.h"#include "../SpuGatheringCollisionDispatcher.h"#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"#include "../SpuContactManifoldCollisionAlgorithm.h"#include "BulletCollision/CollisionDispatch/btCollisionObject.h"#include "SpuContactResult.h"#include "BulletCollision/CollisionShapes/btOptimizedBvh.h"#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h"#include "BulletCollision/CollisionShapes/btSphereShape.h"#include "BulletCollision/CollisionShapes/btConvexPointCloudShape.h"#include "BulletCollision/CollisionShapes/btCapsuleShape.h"#include "BulletCollision/CollisionShapes/btConvexShape.h"#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h"#include "BulletCollision/CollisionShapes/btConvexHullShape.h"#include "BulletCollision/CollisionShapes/btCompoundShape.h"#include "SpuMinkowskiPenetrationDepthSolver.h"#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h"#include "boxBoxDistance.h"#include "BulletMultiThreaded/vectormath2bullet.h"#include "SpuCollisionShapes.h"#include "BulletCollision/CollisionDispatch/btBoxBoxDetector.h"#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h"#include "BulletCollision/CollisionShapes/btTriangleShape.h"#include <stdio.h>#include <stdlib.h>
Go to the source code of this file.
Classes | |
| struct | CollisionTask_LocalStoreMemory |
| Make sure no destructors are called on this memory. More... | |
| class | spuNodeCallback |
Defines | |
| #define | IGNORE_ALIGNMENT 1 |
| #define | spu_printf printf |
| #define | USE_DEDICATED_BOX_BOX 1 |
Functions | |
| void * | createCollisionLocalStoreMemory () |
| void | ProcessSpuConvexConvexCollision (SpuCollisionPairInput *wuInput, CollisionTask_LocalStoreMemory *lsMemPtr, SpuContactResult &spuContacts) |
| Convex versus Convex collision detection (handles collision between sphere, box, cylinder, triangle, cone, convex polyhedron etc). | |
| SIMD_FORCE_INLINE void | small_cache_read (void *buffer, ppu_address_t ea, size_t size) |
| SIMD_FORCE_INLINE void | small_cache_read_triple (void *ls0, ppu_address_t ea0, void *ls1, ppu_address_t ea1, void *ls2, ppu_address_t ea2, size_t size) |
| void | btConvexPlaneCollideSingleContact (SpuCollisionPairInput *wuInput, CollisionTask_LocalStoreMemory *lsMemPtr, SpuContactResult &spuContacts) |
| void | ProcessConvexPlaneSpuCollision (SpuCollisionPairInput *wuInput, CollisionTask_LocalStoreMemory *lsMemPtr, SpuContactResult &spuContacts) |
| void | ProcessConvexConcaveSpuCollision (SpuCollisionPairInput *wuInput, CollisionTask_LocalStoreMemory *lsMemPtr, SpuContactResult &spuContacts) |
| Convex versus Concave triangle mesh collision detection (handles concave triangle mesh versus sphere, box, cylinder, triangle, cone, convex polyhedron etc). | |
| template<typename T > | |
| void | DoSwap (T &a, T &b) |
| SIMD_FORCE_INLINE void | dmaAndSetupCollisionObjects (SpuCollisionPairInput &collisionPairInput, CollisionTask_LocalStoreMemory &lsMem) |
| void | handleCollisionPair (SpuCollisionPairInput &collisionPairInput, CollisionTask_LocalStoreMemory &lsMem, SpuContactResult &spuContacts, ppu_address_t collisionShape0Ptr, void *collisionShape0Loc, ppu_address_t collisionShape1Ptr, void *collisionShape1Loc, bool dmaShapes=true) |
| void | processCollisionTask (void *userPtr, void *lsMemPtr) |
Variables | |
| int | gSkippedCol = 0 |
| int | gProcessedCol = 0 |
| bool | gUseEpa = false |
| software caching | |
| int | stats [11] = {0,0,0,0,0,0,0,0,0,0,0} |
| int | degenerateStats [11] = {0,0,0,0,0,0,0,0,0,0,0} |
| #define IGNORE_ALIGNMENT 1 |
Definition at line 120 of file SpuGatheringCollisionTask.cpp.
| #define spu_printf printf |
Definition at line 123 of file SpuGatheringCollisionTask.cpp.
| #define USE_DEDICATED_BOX_BOX 1 |
| void btConvexPlaneCollideSingleContact | ( | SpuCollisionPairInput * | wuInput, | |
| CollisionTask_LocalStoreMemory * | lsMemPtr, | |||
| SpuContactResult & | spuContacts | |||
| ) |
report a contact. internally this will be kept persistent, and contact reduction is done
Definition at line 376 of file SpuGatheringCollisionTask.cpp.
| void* createCollisionLocalStoreMemory | ( | ) |
Definition at line 194 of file SpuGatheringCollisionTask.cpp.
| SIMD_FORCE_INLINE void dmaAndSetupCollisionObjects | ( | SpuCollisionPairInput & | collisionPairInput, | |
| CollisionTask_LocalStoreMemory & | lsMem | |||
| ) |
Definition at line 787 of file SpuGatheringCollisionTask.cpp.
| void DoSwap | ( | T & | a, | |
| T & | b | |||
| ) | [inline] |
Definition at line 779 of file SpuGatheringCollisionTask.cpp.
| void handleCollisionPair | ( | SpuCollisionPairInput & | collisionPairInput, | |
| CollisionTask_LocalStoreMemory & | lsMem, | |||
| SpuContactResult & | spuContacts, | |||
| ppu_address_t | collisionShape0Ptr, | |||
| void * | collisionShape0Loc, | |||
| ppu_address_t | collisionShape1Ptr, | |||
| void * | collisionShape1Loc, | |||
| bool | dmaShapes = true | |||
| ) |
Definition at line 811 of file SpuGatheringCollisionTask.cpp.
| void processCollisionTask | ( | void * | userPtr, | |
| void * | lsMemPtr | |||
| ) |
can wait on the combined DMA_MASK, or dma on the same tag
gUseEpa &&
Definition at line 1029 of file SpuGatheringCollisionTask.cpp.
| void ProcessConvexConcaveSpuCollision | ( | SpuCollisionPairInput * | wuInput, | |
| CollisionTask_LocalStoreMemory * | lsMemPtr, | |||
| SpuContactResult & | spuContacts | |||
| ) |
Convex versus Concave triangle mesh collision detection (handles concave triangle mesh versus sphere, box, cylinder, triangle, cone, convex polyhedron etc).
quantize query AABB
DMA in the index info
Definition at line 523 of file SpuGatheringCollisionTask.cpp.
| void ProcessConvexPlaneSpuCollision | ( | SpuCollisionPairInput * | wuInput, | |
| CollisionTask_LocalStoreMemory * | lsMemPtr, | |||
| SpuContactResult & | spuContacts | |||
| ) |
DMA in the vertices for convex shapes
Definition at line 413 of file SpuGatheringCollisionTask.cpp.
| void ProcessSpuConvexConvexCollision | ( | SpuCollisionPairInput * | wuInput, | |
| CollisionTask_LocalStoreMemory * | lsMemPtr, | |||
| SpuContactResult & | spuContacts | |||
| ) |
Convex versus Convex collision detection (handles collision between sphere, box, cylinder, triangle, cone, convex polyhedron etc).
DMA in the vertices for convex shapes
Definition at line 631 of file SpuGatheringCollisionTask.cpp.
| SIMD_FORCE_INLINE void small_cache_read | ( | void * | buffer, | |
| ppu_address_t | ea, | |||
| size_t | size | |||
| ) |
Definition at line 204 of file SpuGatheringCollisionTask.cpp.
| SIMD_FORCE_INLINE void small_cache_read_triple | ( | void * | ls0, | |
| ppu_address_t | ea0, | |||
| void * | ls1, | |||
| ppu_address_t | ea1, | |||
| void * | ls2, | |||
| ppu_address_t | ea2, | |||
| size_t | size | |||
| ) |
make sure last 4 bits are the same, for cellDmaSmallGet
Definition at line 218 of file SpuGatheringCollisionTask.cpp.
| int degenerateStats[11] = {0,0,0,0,0,0,0,0,0,0,0} |
Definition at line 625 of file SpuGatheringCollisionTask.cpp.
| int gProcessedCol = 0 |
Definition at line 60 of file SpuGatheringCollisionTask.cpp.
| int gSkippedCol = 0 |
Definition at line 59 of file SpuGatheringCollisionTask.cpp.
| bool gUseEpa = false |
software caching
Definition at line 109 of file SpuGatheringCollisionTask.cpp.
| int stats[11] = {0,0,0,0,0,0,0,0,0,0,0} |
Definition at line 624 of file SpuGatheringCollisionTask.cpp.
1.6.1