# HBhvInterpolatorQuatSquad

## Functions

| `HBhvInterpolatorQuatSquad`
const char * | `GetType`
HBhvInterpolator * | `CreateInstance`
void | `Insert`
void | `InsertLinear`
void | `Replace`
void | `ReplaceLinear`
void | `AdjustQuaternions`
void | `Serialize`
void | `Interpolate`
void | `Evaluate`
void | `CalculateQuat`
void * | `XMLCallback`

## Detailed Description

class HBhvInterpolatorQuatSquad : public HBhvInterpolator

  The HBhvInterpolatorQuatSquad class controls quaternion based rotation. This class can be used for camera interpolation as well other targets.

  Public Functions

  HBhvInterpolatorQuatSquad(HBhvAnimation *animation = 0, const char *name = 0)

    Constructs an HBhvInterpolatorQuatSquad object.

    Parameters

      - animation – Animation that this interpolator belongs to

      - name – Name of Interpolator

  virtual const char *GetType()
    Returns

      The type of the interpolator which is ‘QuatRot’.

  virtual HBhvInterpolator *CreateInstance(HBhvAnimation *ainst)

    In special cases, you may want an interpolator that references this interpolator without changing it. Use this method to create the new interpolator passing a pointer to the animation that you want it to be associated with.

    Parameters

      ainst – The animation instance that this interpolator is associated with.

    Returns

      The newly created interpolator that references this interpolator.

  inline void Insert(HQuat q, int l = 0)

    This method creates a new quaternion rotation keyframe with the passed q value and then inserts it after the passed position l into the keyframe array.

    Parameters

      - q – The quaternion to use for new keyframe.

      - l – The array position to insert item after.

  inline void InsertLinear(HQuat q, int l = 0)

    This method creates a new linear quaternion rotation keyframe with the passed q value and then inserts it after the passed position l into the keyframe array.

    Parameters

      - q – The quaternion to use for new keyframe.

      - l – The array position to insert item after.

  inline void Replace(HQuat q, int l)

    Replaces the item at the given position in the keyframe array with a new quaternion rotation keyframe that was created with the passed q value.

    Parameters

      - q – The quaternion to use for the replace keyframe

      - l – The array position to replace.

  inline void ReplaceLinear(HQuat q, int l)

    Replaces the item at the given position in the keyframe array with a new linear quaternion rotation keyframe that was created with the passed q value.

    Parameters

      - q – The quaternion to use for the replace keyframe

      - l – The array position to replace.

  void AdjustQuaternions()

    Recalculates the quaternion array to ensure shortest rotation path.

  virtual void Serialize(HUtilityXMLGenerator *xmlgen)

    Writes XML data to a buffer using the passed XML generator.

  virtual void Interpolate(int keyframe, float fraction)

    Performs an interpolation on the animation target.

    Parameters

      - keyframe – The reference keyframe for this interpolation.

      - fraction – The fraction value from the specified keyframe to the next keyframe. The value is from 0 to 1.

  virtual void Evaluate(int keyframe, float fraction, bool &hasPos, HPoint &pos, bool &hasQuat, HQuat &quat, bool &hasScale, HPoint &scale)
  virtual void CalculateQuat(int keyframe, float fraction, HQuat &res)

    Calculates the quaternion interpolation given a reference keyframe and a fraction.

    Parameters

      - keyframe – The reference keyframe for this interpolation.

      - fraction – The fraction value from the specified keyframe to the next keyframe. The value is from 0 to 1.

      - res – Returns the result of the calculation.

  Public Static Functions

  static void *XMLCallback(HUtilityXMLTag *xt, bool open, void *m_pExtraData)

    This is XML read callback which parses XML data and then populates the member variables with the associated values.