Program Listing for File TimeStep.h

Return to documentation for file (Simulation/TimeStep.h)

#ifndef __TimeStep_h__
#define __TimeStep_h__

#include "Common/Common.h"
#include "SimulationModel.h"
#include "CollisionDetection.h"
#include "ParameterObject.h"

namespace PBD
{
    class TimeStep : public GenParam::ParameterObject
    {
    protected:
        CollisionDetection *m_collisionDetection;

        void clearAccelerations(SimulationModel &model);

        virtual void initParameters();

        static void contactCallbackFunction(const unsigned int contactType,
            const unsigned int bodyIndex1, const unsigned int bodyIndex2,
            const Vector3r &cp1, const Vector3r &cp2,
            const Vector3r &normal, const Real dist,
            const Real restitutionCoeff, const Real frictionCoeff, void *userData);

        static void solidContactCallbackFunction(const unsigned int contactType,
            const unsigned int bodyIndex1, const unsigned int bodyIndex2,
            const unsigned int tetIndex, const Vector3r &bary,
            const Vector3r &cp1, const Vector3r &cp2,
            const Vector3r &normal, const Real dist,
            const Real restitutionCoeff, const Real frictionCoeff, void *userData);

    public:
        TimeStep();
        virtual ~TimeStep(void);

        virtual void step(SimulationModel &model) = 0;
        virtual void reset();

        virtual void init();

        void setCollisionDetection(SimulationModel &model, CollisionDetection *cd);
        CollisionDetection *getCollisionDetection();
    };
}

#endif