/*! \file physics_connection.h \brief Definition of The Physical Connection Class. */ #ifndef _PHYSICS_CONNECTION_H #define _PHYSICS_CONNECTION_H #include "field.h" #include "particle_system.h" #include "i_physics.h" //! An enumerator for different ConnectionTypes typedef enum PCON_Type { PCON_IPhysIPhys = 0, PCON_IPhysField = 1, PCON_ParticlesField = 2 }; // Forward Declaration //! A class that Handles Physical Connection between subjects class PhysicsConnection { public: PhysicsConnection(IPhysics* partnerOne, IPhysics* partnerTwo); PhysicsConnection(IPhysics* subject, Field* field); PhysicsConnection(ParticleSystem* particleSystem, Field* field); virtual ~PhysicsConnection(); void apply(const float& dt) const; private: PCON_Type type; //!< What kind of connection this is. IPhysics* subject; //!< The main Subject of this Connection. IPhysics* partner2; //!< The second partner of this Connection. ParticleSystem* particleSystem; //!< A ParticleSystem in this Connection Field* field; //!< The field to connect either subject of ParticleSystem to. }; #endif /* _PHYSICS_CONNECTION_H */