class ARigidbodyAnimationController

#include <RigidbodyAnimationController.h>

class ARigidbodyAnimationController: public AActor
{
public:
    // methods

    virtual void Tick(float DeltaTime);
    virtual void AddRigidBodyAnimation(RigidBodyAnimationBase* r);

    bool DualQuatCast(
        float& QW,
        float& QX,
        float& QY,
        float& QZ,
        float& VX,
        float& VY,
        float& VZ,
        float& dqwReal,
        float& dqxReal,
        float& dqyReal,
        float& dqzReal,
        float& dqwDual,
        float& dqxDual,
        float& dqyDual,
        float& dqzDual
        );

    bool DualQuatLerp(
        float& dqwStartReal,
        float& dqxStartReal,
        float& dqyStartReal,
        float& dqzStartReal,
        float& dqwStartDual,
        float& dqxStartDual,
        float& dqyStartDual,
        float& dqzStartDual,
        float& dqwEndReal,
        float& dqxEndReal,
        float& dqyEndReal,
        float& dqzEndReal,
        float& dqwEndDual,
        float& dqxEndDual,
        float& dqyEndDual,
        float& dqzEndDual,
        float& dqwInterpReal,
        float& dqxInterpReal,
        float& dqyInterpReal,
        float& dqzInterpReal,
        float& dqwInterpDual,
        float& dqxInterpDual,
        float& dqyInterpDual,
        float& dqzInterpDual,
        float factor
        );

    bool QuatVecCast(
        float& dqwReal,
        float& dqxReal,
        float& dqyReal,
        float& dqzReal,
        float& dqwDual,
        float& dqxDual,
        float& dqyDual,
        float& dqzDual,
        float& QW,
        float& QX,
        float& QY,
        float& QZ,
        float& VX,
        float& VY,
        float& VZ
        );

    TArray<RigidBodyAnimationBase*> GetAnimations() const;
};