//#####################################################################
// Copyright 2002-2008, Robert Bridson, Ronald Fedkiw, Geoffrey Irving, Michael Lentine, Neil Molino, Craig Schroeder, Andrew Selle, Tamar Shinar, Eftychios Sifakis, Joseph Teran.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Class EXAMPLE_FORCES_AND_VELOCITIES
//#####################################################################
#ifndef __EXAMPLE_FORCES_AND_VELOCITIES__
#define __EXAMPLE_FORCES_AND_VELOCITIES__

#include <Rigids/Forces_And_Torques/RIGIDS_EXAMPLE_FORCES_AND_VELOCITIES.h>
#include <Deformables/Forces/DEFORMABLES_EXAMPLE_FORCES_AND_VELOCITIES.h>
namespace PhysBAM{

template<class TV>
class EXAMPLE_FORCES_AND_VELOCITIES:public RIGIDS_EXAMPLE_FORCES_AND_VELOCITIES<TV>,public DEFORMABLES_EXAMPLE_FORCES_AND_VELOCITIES<TV>
{
    typedef typename TV::SCALAR T;
public:

    std::function<void(T time)> update_time_varying_material_properties;
    std::function<void(ARRAY_VIEW<TV> V,T time,T dt)> add_external_impulses_before;
    std::function<void(ARRAY_VIEW<TV> V,T time,T dt)> add_external_impulses;
};
}
#endif
