/*************************************************************************** File: SimScene.h Created: 02/04/2002 Author: Maxim Garber Computer Science Department University of North Carolina - Chapel Hill garber@cs.unc.edu Description: Simulation scene file. ----------------------------------------------------------------------------. Copyright 2001 Maxim Garber UNC Motion Planning Research Group *****************************************************************************/ #include "PBMProjectile.h" #include "PBMWall.h" #include "mat33.hpp" #include "PQP.h" #include "stopwatch.hpp" #include struct CollisionStats { unsigned int numWallCollisionTests; unsigned int numWallCollisions; unsigned int numObjectCollisionTests; unsigned int numObjectCollisions; Stopwatch wallCollisionTimer; Stopwatch objectCollisionTimer; }; class PBMSimScene { public: PBMSimScene(); PBMSimScene(float width, float height); ~PBMSimScene(); /////////////////////////////////////////////////////////////////////////// // Updating object configurations void Update(float timeStep); /////////////////////////////////////////////////////////////////////////// // Drawing the objects void Draw(); /////////////////////////////////////////////////////////////////////////// // Adding Objects void AddProjectile(PBMProjectile* projectile){_projectiles.push_back(projectile);} void AddWall (PBMWall * wall ){_walls.push_back(wall) ;} /////////////////////////////////////////////////////////////////////////// // Collision void EnableCollision(bool value) {_enableCollision=value;} void EnableStats (bool value) {_enableStats=value; } bool GetEnableStats () {return _enableStats; } CollisionStats* GetCollisionStats(){return &_stats; } void ResetStats (); private: // list of objects in simulation std::list _projectiles; std::list _walls; // flag to enable collision detection bool _enableCollision; CollisionStats _stats; bool _enableStats; // scene bounds float _sceneWidth, _sceneHeight; void _ProcessWallCollisions(); void _ProcessObjectCollisions(); };