/* See LICENSE file for copyright and license details. */ #include "common.h" void libgamepad_construct_force_feedback_effect__(struct ff_effect *effectp, const struct ff_effect *from, double direction, uint16_t length, uint16_t effect) { if (from) { if (effectp != from) memcpy(effectp, from, sizeof(*effectp)); } else { memset(effectp, 0, sizeof(*effectp)); effectp->id = -1; } direction += (double)1 / 2; fmod(direction, 1); if (direction < 0) direction = 1 - direction; direction *= 0x10000UL; effectp->direction = (uint16_t)direction; effectp->replay.length = length; effectp->type = effect; }