//#####################################################################
// 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 RIGIDS_EXAMPLE_FORCES_AND_VELOCITIES
//#####################################################################
#ifndef __RIGIDS_EXAMPLE_FORCES_AND_VELOCITIES__
#define __RIGIDS_EXAMPLE_FORCES_AND_VELOCITIES__

#include <Core/Arrays/ARRAYS_FORWARD.h>
#include <functional>
namespace PhysBAM{

template<class TV> class TWIST;
template<class TV> class FRAME;
template<class TV>
class RIGIDS_EXAMPLE_FORCES_AND_VELOCITIES
{
    typedef typename TV::SCALAR T;
    typedef typename TV::SPIN T_SPIN;
public:
    std::function<void(ARRAY_VIEW<FRAME<TV> > frame,T time)> set_external_frames;
    std::function<void(ARRAY_VIEW<TWIST<TV> > twist,T time)> set_external_twists;
    std::function<void(ARRAY_VIEW<TWIST<TV> > wrench,T time)> add_external_wrenches;
    std::function<void(ARRAY_VIEW<TWIST<TV> > twist,T time)> zero_out_enslaved_twists;
//#####################################################################
};
}
#endif
