#ifndef D_THROW_ANIM_EFFECT
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
void fn_vDoAnimEffect(
  MS_tdxHandleToAnimEffect _hAnimEffect,
  HIE_tdxHandleToSuperObject _p_stActorSuperObject,
  unsigned long _ulChannelId,
  HIE_tdxHandleToSuperObject _hModuleSuperObject
)
{
  {
    MTH3D_tdstVector stShift, stPosition, stShiftPhase, stShiftPlus, stShiftMax;
    MTH_tdxReal xCurrentTime = (MTH_tdxReal) (g_stEngineStructure.stEngineTimer.ulCurrentTimerCount / 1000.0);
    GEO_tdxHandleToMatrix hModuleLocalMatrix = HIE_fn_hGetSuperObjectMatrix(_hModuleSuperObject);
 
    /*get the sinus phase: a phase for the time, plus an offset for each channel in the anim, all ponderated by the user coefs*/
    stShiftPhase = fn_stAnimEffectGetShiftPhase(_hAnimEffect);
    stShiftPlus = fn_stAnimEffectGetShiftPlus(_hAnimEffect);
    MTH3D_M_vSetXofVector(&stShift, MTH_C_2Pi * (xCurrentTime / MTH3D_M_xGetXofVector(&stShiftPhase) + _ulChannelId / MTH3D_M_xGetXofVector(&stShiftPlus)));
    MTH3D_M_vSetYofVector(&stShift, MTH_C_2Pi * (xCurrentTime / MTH3D_M_xGetYofVector(&stShiftPhase) + _ulChannelId / MTH3D_M_xGetYofVector(&stShiftPlus)));
    MTH3D_M_vSetZofVector(&stShift, MTH_C_2Pi * (xCurrentTime / MTH3D_M_xGetZofVector(&stShiftPhase) + _ulChannelId / MTH3D_M_xGetZofVector(&stShiftPlus)));
    /*now compute the displacement, ponderated by the user coefs. It is expressed in the actor's local coordinates*/
    stShiftMax = fn_stAnimEffectGetShiftMax(_hAnimEffect);
    MTH3D_M_vSetXofVector(&stShift, MTH_M_xSin(MTH3D_M_xGetXofVector(&stShift)) * MTH3D_M_xGetXofVector(&stShiftMax));
    MTH3D_M_vSetYofVector(&stShift, MTH_M_xSin(MTH3D_M_xGetYofVector(&stShift)) * MTH3D_M_xGetYofVector(&stShiftMax));
    MTH3D_M_vSetZofVector(&stShift, MTH_M_xSin(MTH3D_M_xGetZofVector(&stShift)) * MTH3D_M_xGetZofVector(&stShiftMax));
    /*now move the object: modify the global translation matrix of the module*/
    POS_fn_vGetTranslationVector(hModuleLocalMatrix, &stPosition);
    MTH3D_M_vAddVector(&stPosition, &stPosition, &stShift);
    POS_fn_vSetTranslationVector(hModuleLocalMatrix, &stPosition);
  }
}
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
#endif /* D_THROW_ANIM_EFFECT */
