nuclear@0: #ifndef SIMWORLD_H_ nuclear@0: #define SIMWORLD_H_ nuclear@0: nuclear@0: #include nuclear@0: #include "particle.h" nuclear@0: #include "vmath/vmath.h" nuclear@2: #include "object.h" nuclear@0: nuclear@0: struct Collision { nuclear@2: float dist; nuclear@0: Vector3 pos; nuclear@0: Vector3 normal; nuclear@0: float elast; nuclear@0: }; nuclear@0: nuclear@0: class SimWorld { nuclear@0: private: nuclear@0: std::vector objects; nuclear@0: std::vector part; nuclear@0: Vector3 grav; nuclear@0: float damping; nuclear@0: nuclear@0: public: nuclear@0: SimWorld(); nuclear@0: nuclear@0: void set_gravity(const Vector3 &f); nuclear@0: nuclear@0: void add_particle(Particle *p); nuclear@0: nuclear@0: bool collision(const Ray &ray, float rad, Collision *col) const; nuclear@0: nuclear@0: void step(float dt); nuclear@0: nuclear@0: void draw_particles() const; nuclear@0: nuclear@0: friend class Particle; nuclear@0: }; nuclear@0: nuclear@0: #endif // SIMWORLD_H_