src/BilliardPhysics.h

Go to the documentation of this file.
00001 #ifndef BILLIARDPHYSICS_H
00002 #define BILLIARDPHYSICS_H
00003 
00004 
00005 #include <vector>
00006 #include <cassert>
00007 #include <string>
00008 #include <fstream>
00009 
00010 
00011 class Object;
00012 class TableBorder;
00013 class Collision;
00014 
00015 
00020 class BilliardPhysics
00021 {
00022 public:
00025     BilliardPhysics();
00026 
00029     ~BilliardPhysics();
00030 
00033     void add(Object * obj)
00034     {
00035         mObjects.push_back(obj);
00036     }
00037 
00040     void remove(Object * obj);
00041 
00044     void step();
00045 
00050     void dumpToFile(const std::string & file);
00051 
00056     void loadFromFile(const std::string & file);
00057 
00058 private:
00060     std::vector<Object *>       mObjects;
00061 
00063     TableBorder *               mBorders[4];
00064 
00066     std::vector<Collision *>    mCollisions;
00067 
00069     float                       mTime;
00070 
00072     std::string                 mLoadFile;
00073 
00075     std::ifstream               mInFile;
00076 
00078     std::string                 mSaveFile;
00079 
00081     std::ofstream               mOutFile;
00082 
00083 
00086     void createCollisionList();
00087 
00091     bool willCollide(float & time, const Object * o1, const Object * o2) const;
00092 
00096     bool willHitBorder(float & time, const Object * obj, const TableBorder * border) const;
00097 
00103     void updateCollisionList(const std::vector<Collision *> & clsns);
00104 
00107     void dumpCollisions() const;
00108 };
00109 
00110 #endif
00111 

Generated on Fri Feb 1 00:01:42 2008 for Grayfall by  doxygen 1.5.1