Home Reference Source

src/behaviour/Gravity.js

import Force from './Force';
import { getEasingByName } from '../ease';
import { BEHAVIOUR_TYPE_GRAVITY as type } from './types';

/**
 * Behaviour that forces particles down the y axis.
 *
 */
export default class Gravity extends Force {
  /**
   * Constructs a Gravity behaviour instance.
   *
   * @param {number} gravity - the force to pull the particle down the y axis
   * @param {number} life - the life of the particle
   * @param {string} easing - the easing equation to use
   * @param {boolean} [isEnabled=true] - Determines if the behaviour will be applied or not
   * @return void
   */
  constructor(gravity, life, easing, isEnabled = true) {
    super(0, -gravity, 0, life, easing, isEnabled);

    /**
     * @desc The class type.
     * @type {string}
     */
    this.type = type;
  }

  static fromJSON(json) {
    const { gravity, life, easing, isEnabled = true } = json;

    return new Gravity(gravity, life, getEasingByName(easing), isEnabled);
  }
}