aboutsummaryrefslogblamecommitdiffstats
path: root/libgamepad_construct_force_feedback_effect__.c
blob: f84314da2bd76b95f9890a672cd651d3fd49f9b5 (plain) (tree)























                                                                                                     
/* 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;
}