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 #include "collidecharm.decl.h"
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 class collideClient : public Group {
00024 public:
00025 virtual ~collideClient();
00026 virtual void collisions(ArrayElement *src,
00027 int step,CollisionList &colls) =0;
00028 };
00029
00030
00031
00032
00034 typedef void (*CollisionClientFn)(void *param,int nColl,Collision *colls);
00035
00039 CkGroupID CollideSerialClient(CollisionClientFn clientFn,void *clientParam);
00040
00041
00042 typedef CkGroupID CollideHandle;
00043
00046 CollideHandle CollideCreate(const CollideGrid3d &gridMap,
00047 CkGroupID clientGroupID);
00048
00050 void CollideRegister(CollideHandle h,int chunkNo);
00052 void CollideUnregister(CollideHandle h,int chunkNo);
00053
00057 void CollideBoxesPrio(CollideHandle h,int chunkNo,
00058 int nBox,const bbox3d *boxes,const int *prio=NULL);
00059
00060 #endif