UNPKG

phaser

Version:

A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers from the team at Phaser Studio Inc.

86 lines (74 loc) 2.5 kB
/** * @author Richard Davey <rich@phaser.io> * @copyright 2013-2025 Phaser Studio Inc. * @license {@link https://opensource.org/licenses/MIT|MIT License} */ var Class = require('../../../utils/Class'); var Vector2 = require('../../../math/Vector2'); /** * @classdesc * A zone that places particles randomly within a shapes area. * * @class RandomZone * @memberof Phaser.GameObjects.Particles.Zones * @constructor * @since 3.0.0 * * @param {Phaser.Types.GameObjects.Particles.RandomZoneSource} source - An object instance with a `getRandomPoint(point)` method. */ var RandomZone = new Class({ initialize: function RandomZone (source) { /** * An object instance with a `getRandomPoint(point)` method. * * @name Phaser.GameObjects.Particles.Zones.RandomZone#source * @type {Phaser.Types.GameObjects.Particles.RandomZoneSource} * @since 3.0.0 */ this.source = source; /** * Internal calculation vector. * * @name Phaser.GameObjects.Particles.Zones.RandomZone#_tempVec * @type {Phaser.Math.Vector2} * @private * @since 3.0.0 */ this._tempVec = new Vector2(); /** * The total number of particles this zone will emit before the Emitter * transfers control over to the next zone in its emission zone list. * * By default this is -1, meaning it will never pass over from this * zone to another one. You can call the `ParticleEmitter.setEmitZone` * method to change it, or set this value to something else via the * config, or directly at runtime. * * A value of 1 would mean the zones rotate in order, but it can * be set to any integer value. * * @name Phaser.GameObjects.Particles.Zones.RandomZone#total * @type {number} * @since 3.60.0 */ this.total = -1; }, /** * Get the next point in the Zone and set its coordinates on the given Particle. * * @method Phaser.GameObjects.Particles.Zones.RandomZone#getPoint * @since 3.0.0 * * @param {Phaser.GameObjects.Particles.Particle} particle - The Particle. */ getPoint: function (particle) { var vec = this._tempVec; this.source.getRandomPoint(vec); particle.x = vec.x; particle.y = vec.y; } }); module.exports = RandomZone;