core/vibration.js

/**
 * Creates vibrations.
 *
 * @example
 *
 * const vibration = new Vibration({
 *
 *     $duration: 200,
 *     $intensityFrequencyHigh: 0.8,
 *     $intensityFrequencyLow: 0.2
 * });
 */
class Vibration {

    /**
     * Stores the duration.
     * @type {number}
     * @private
     */
    $duration;

    /**
     * Stores the intensity of the high-frequency (weak) rumble motors.
     * @type {number}
     * @private
     */
    $intensityFrequencyHigh;

    /**
     * Stores the intensity of the low-frequency (strong) rumble motors.
     * @type {number}
     * @private
     */
    $intensityFrequencyLow;

    /**
     * Gets the duration (in ms).
     * @type {number}
     * @public
     */
    get duration() {

        return this.$duration;
    }

    /**
     * Gets the intensity of the high-frequency (weak) rumble motors (with value in [0, 1] range).
     * @type {number}
     * @public
     */
    get intensityFrequencyHigh() {

        return this.$intensityFrequencyHigh;
    }

    /**
     * Gets the intensity of the low-frequency (strong) rumble motors (with value in [0, 1] range).
     * @type {number}
     * @public
     */
    get intensityFrequencyLow() {

        return this.$intensityFrequencyLow;
    }

    /**
     * Creates a new vibration.
     * @param {Object} $parameters The given parameters.
     * @param {number} $parameters.$duration The duration (in ms).
     * @param {number} $parameters.$intensityFrequencyHigh The intensity of the high-frequency (weak) rumble motors (with value in [0, 1] range).
     * @param {number} $parameters.$intensityFrequencyLow The intensity of the low-frequency (strong) rumble motors (with value in [0, 1] range).
     */
    constructor({$duration, $intensityFrequencyHigh, $intensityFrequencyLow}) {

        this.$duration = $duration;
        this.$intensityFrequencyHigh = $intensityFrequencyHigh;
        this.$intensityFrequencyLow = $intensityFrequencyLow;
    }
}

export {

    Vibration
};

export default Vibration;