home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / XenonSource.exe / gamesystem / includes / gs_collisionlist.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-31  |  1.9 KB  |  81 lines

  1. //-------------------------------------------------------------
  2. //
  3. // Class:    gsCCollisionList
  4. //
  5. // Author:    John M Phillips
  6. //
  7. // Started:    06/05/00
  8. //
  9. // Base:    None
  10. //
  11. // Derived:    None
  12. //
  13. //-------------------------------------------------------------
  14.  
  15. #ifndef _INCLUDE_GS_COLLISIONLIST_H
  16. #define _INCLUDE_GS_COLLISIONLIST_H
  17.  
  18. #include "gs_object.h"
  19. #include "gs_list.h"
  20. #include "gs_point.h"
  21. #include "gs_rect.h"
  22.  
  23. //-------------------------------------------------------------
  24. // A generic collider
  25.  
  26. class gsCCollider
  27. {
  28.     public:
  29.         void *m_object;            // object pointer
  30.         gsCRect m_rect;            // screen rectangle
  31.         int m_uid;                // unique id number
  32.         gsUDWORD m_object_mask;    // bitmask of object type
  33.         gsUDWORD m_target_mask;    // bitmask of type of objects it can hit
  34.  
  35.         gsCCollider();
  36.         gsCCollider(void *object,const gsCRect& rect,gsUDWORD object_mask,gsUDWORD target_mask,int uid);
  37.         gsCCollider(const gsCCollider& collider);
  38. };
  39.  
  40. //-------------------------------------------------------------
  41. // A list of colliders
  42.  
  43. typedef gsCList<gsCCollider *> gsColliderList;
  44.  
  45. //-------------------------------------------------------------
  46. // Callback function for user to do collision test
  47.  
  48. typedef void (gsCollisionCallback)(void *object1,void *object2);
  49.  
  50. //-------------------------------------------------------------
  51. // Collision Map class
  52.  
  53. class gsCCollisionList
  54. {
  55.     private:
  56.         gsCPoint m_pixel_size;
  57.         gsCPoint m_zones;
  58.         gsCPoint m_zone_size;
  59.  
  60.         gsCList<gsCCollider *> m_collider_list;
  61.  
  62.         gsColliderList *m_zone;
  63.  
  64.         void destroy();
  65.  
  66.     public:
  67.         gsCCollisionList();
  68.         ~gsCCollisionList();
  69.  
  70.         void setSize(const gsCPoint& pixel_size,const gsCPoint& zones);
  71.  
  72.         void clear();
  73.         void addObject(void *object,const gsCRect& rect,gsUDWORD object_mask = 0xFFFFFFFF,gsUDWORD target_mask = 0xFFFFFFFF);
  74.  
  75.         void scan(gsCollisionCallback *callback);
  76. };
  77.  
  78. //-------------------------------------------------------------
  79.  
  80. #endif
  81.