diff options
Diffstat (limited to '')
-rw-r--r-- | libgamepad_construct_force_feedback_effect__.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libgamepad_construct_force_feedback_effect__.c b/libgamepad_construct_force_feedback_effect__.c new file mode 100644 index 0000000..f84314d --- /dev/null +++ b/libgamepad_construct_force_feedback_effect__.c @@ -0,0 +1,24 @@ +/* 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 += 0.5; + fmod(direction, 1); + if (direction < 0) + direction = 1 - direction; + direction *= 0x10000UL; + effectp->direction = (uint16_t)direction; + effectp->replay.length = length; + effectp->type = effect; +} |