00001
00002
00003
00004
00005 #ifndef __UIUC_CHARM_COLLIDE_H
00006 #define __UIUC_CHARM_COLLIDE_H
00007
00008 #include "charm++.h"
00009 #include "collide_util.h"
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 class collideClient : public Group {
00023 public:
00024 virtual ~collideClient();
00025 virtual void collisions(ArrayElement *src,
00026 int step,CollisionList &colls) =0;
00027 };
00028
00029
00030
00031
00033 typedef void (*CollisionClientFn)(void *param,int nColl,Collision *colls);
00034
00038 CkGroupID CollideSerialClient(CollisionClientFn clientFn,void *clientParam);
00039
00040
00041 typedef CkGroupID CollideHandle;
00042
00045 CollideHandle CollideCreate(const CollideGrid3d &gridMap,
00046 CkGroupID clientGroupID);
00047
00049 void CollideRegister(CollideHandle h,int chunkNo);
00051 void CollideUnregister(CollideHandle h,int chunkNo);
00052
00056 void CollideBoxesPrio(CollideHandle h,int chunkNo,
00057 int nBox,const bbox3d *boxes,const int *prio=NULL);
00058
00059 #endif