Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dust - Particle Effects for Pixi (v3.0.11)

Dust is a quick and easy particle effects engine for Pixi.

(Important! This library targets Pixi v3.0.11, which is the most stable version of Pixi, and is the only version I can recommend using. This library will eventually be upgraded for Pixi v4 when the v4 branch matures.)

Table of contents

Setting up
Making Particles
Using a ParticleContainer
Customizing the particle options
Using a particle emitter

Setting up

To get started with Dust, first link the dust.js file to to your HTML page with a script tag, like this:

<script src="dust.js"></script>

Next, create an instance of Dust at the beginning of your program. Supply the PIXI instance as the constructor argument.

let d = new Dust(PIXI);

Then, very importantly, make sure you call Pixi Dust's update function inside your game loop.

functiongameLoop(){requestAnimationFrame(gameLoop);d.update();}

You're now ready to use Dust to make and animate particles.

Making particles

With Dust all set up and running, you can now make particles using the create method. Here's how to create 50 star sprites on the stage at an x/y position of 128/128. (This code assumes you have a loaded texture called star.png).

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage,//Container for particles50//Number of particles);

The first two arguments are the x/y point where the particles will appear. The third argument is a function that returns the sprite you want to use for each particle. Use any sprite creation method you like. If you use a AnimatedSprite sprite and supply more than one frame texture, Dust will randomly display different frames for each particle. The fourth argument is the container that you want to add the particles to; in this example the particles will be added to the stage. The fifth argument is the number of particles you want to create. The create method returns an array containing references to all the sprites being used as particles, which might be useful if you need to access them for reasons such as doing collision detection.

This is the effect that this code produces:

Making particles

The particles appear at the same point with different random sizes and velocities. They fly away from the center point, randomly changing scale and alpha, until they all fade away and disappear. Many of the properties are randomized, so the effect is different every time. You'll see ahead how you can fine tune each of these properties to produce exactly the effect you need. You can drop this code anywhere in your program to create a single burst of particles, such as a key press or mouse click.

Using a ParticleContainer

In the example code above the particles were all added to the root stage container object (the fourth argument.) However, you can add the particles to any container you like, or to any other sprite. You can use Pixi's ParticleContainer to display a large number of sprites on screen at a high frame rate. If you want to use ParticleContainer for your particles, just add the name of the ParticleContainer object you want to use in the create method's 4th argument. Here's how you could modify the example code above to add the particles to a ParticleContainer called starContainer.

//Create the `ParticleContainer` and add it to the `stage`letstarContainer=newPIXI.ParticleContainer(15000,{alpha: true,scale: true,rotation: true,uvs: true});stage.addChild(starContainer);//Create star particles and add them to the `starContainer`letstars=d.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),starContainer,50);

ParticleContainers are optimized for pushing many thousands of sprites, so, unless you're animating that many particles, you probably won't notice any performance improvement over using ordinary Container objects.

Customizing the particle options

The create method has a total of 19 different parameters you can set to fully customize how the particles behave. Here's the full parameter list, with examples of the kinds of values you could use.

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage//Container for particles50,//Number of particles0.1,//Gravitytrue,//Random spacing0,6.28,//Min/max angle12,24,//Min/max size1,2,//Min/max speed0.005,0.01,//Min/max scale speed 0.005,0.01,//Min/max alpha speed0.05,0.1//Min/max rotation speed);

You can see that most of the parameters describe a range between the minimum and maximum values that should be used to change the sprites’ speed, rotation, scale, or alpha. You can also specify the number of particles that should be created, and add optional gravity. The minimum and maximum angle values are important for defining the circular spread of particles as they radiate out from the origin point. For a completely circular explosion effect, use a minimum angle of 0 and a maximum angle of 6.28.

0,6.28

(These values are radians; the equivalent in degrees is 0 and 360.) 0 starts at the 3 o’clock position, pointing directly to the right. 3.14 is the 9 o’clock position, and 6.28 takes you around back to 0 again. If you want to constrain the particle range to a narrower angle, just supply the minimum and maximum values that describe that angle. Here are values you could use to constrain the angle to a pizza-slice with the crust pointing left.

2.4,3.6

You could use a constrained angle range like this to create a particle stream, like those used to create a fountain or rocket engine flames. (You’ll see exactly how to do this in the example ahead.) The random spacing value (the seventh argument) determines whether the particles should be spaced evenly (false) or randomly (true) within this range. By carefully choosing the sprite for the particle and finely adjusting each parameter, you can use this all-purpose create method to simulate everything from liquid to fire.

Using a particle emitter

The create method produces a single burst of particles, but often you'll need to produce a continuous stream of particles. You can do this with the help of a particle emitter. A particle emitter produces particles at fixed intervals to produce just such a stream effect, and you can create one using Dust's emitter method. The emitter has play and stop methods that let you turn the particle flow on and off and you can define the interval at which particles are created. Here's the general format for using Dust's emitter method. It takes two arguments. The first argument is the interval, in milliseconds, between which burst of particles are created. The second argument is the same create method from the previous examples.

letparticleStream=d.emitter(100,()=>d.create(););

Any interval value of 100 milliseconds or less will make the particles appear to flow in a continuous stream. Here's some code that produces a star fountain effect. The stars appear in the center of the canvas, shoot up, and then cascade down with the pull of gravity.

letparticleStream=pd.emitter(100,()=>particles.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),stage,30,0.1,false,3.14,6.28,16,32,2,5));

This is the effect this code produces:

Starburst

The sixth argument, 0.1, is the force of gravity. Setting gravity to a higher number will pull the particles down faster. (Set gravity to 0 to turn it off.) The angle is between 3.14 and 6.28. That makes the particles appear within a half-moon sized angle above their origin point. Here's how that angle is defined.

Starburst

The stars are created at the center origin point then fly up and out within the upper half of the circle. Gravity is acting on the particles the entire time, however, so they'll eventually fall towards the bottom of the canvas. That's what creates the cascading fountain effect.

You can use the emitter's play and stop methods to turn the particle stream on or off at any time in your code, like this:

particleStream.play();particleStream.stop();

The particle emitter also has a Boolean playing property that will be true when the paricle emitter is playing, and false when it's been stopped. This is all you need to know to start making particle effects with Dust.

About

No description, website, or topics provided.

Resources

Stars

93 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dust - Particle Effects for Pixi (v3.0.11)

Dust is a quick and easy particle effects engine for Pixi.

(Important! This library targets Pixi v3.0.11, which is the most stable version of Pixi, and is the only version I can recommend using. This library will eventually be upgraded for Pixi v4 when the v4 branch matures.)

Table of contents

Setting up
Making Particles
Using a ParticleContainer
Customizing the particle options
Using a particle emitter

Setting up

To get started with Dust, first link the dust.js file to to your HTML page with a script tag, like this:

<script src="dust.js"></script>

Next, create an instance of Dust at the beginning of your program. Supply the PIXI instance as the constructor argument.

let d = new Dust(PIXI);

Then, very importantly, make sure you call Pixi Dust's update function inside your game loop.

functiongameLoop(){requestAnimationFrame(gameLoop);d.update();}

You're now ready to use Dust to make and animate particles.

Making particles

With Dust all set up and running, you can now make particles using the create method. Here's how to create 50 star sprites on the stage at an x/y position of 128/128. (This code assumes you have a loaded texture called star.png).

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage,//Container for particles50//Number of particles);

The first two arguments are the x/y point where the particles will appear. The third argument is a function that returns the sprite you want to use for each particle. Use any sprite creation method you like. If you use a AnimatedSprite sprite and supply more than one frame texture, Dust will randomly display different frames for each particle. The fourth argument is the container that you want to add the particles to; in this example the particles will be added to the stage. The fifth argument is the number of particles you want to create. The create method returns an array containing references to all the sprites being used as particles, which might be useful if you need to access them for reasons such as doing collision detection.

This is the effect that this code produces:

Making particles

The particles appear at the same point with different random sizes and velocities. They fly away from the center point, randomly changing scale and alpha, until they all fade away and disappear. Many of the properties are randomized, so the effect is different every time. You'll see ahead how you can fine tune each of these properties to produce exactly the effect you need. You can drop this code anywhere in your program to create a single burst of particles, such as a key press or mouse click.

Using a ParticleContainer

In the example code above the particles were all added to the root stage container object (the fourth argument.) However, you can add the particles to any container you like, or to any other sprite. You can use Pixi's ParticleContainer to display a large number of sprites on screen at a high frame rate. If you want to use ParticleContainer for your particles, just add the name of the ParticleContainer object you want to use in the create method's 4th argument. Here's how you could modify the example code above to add the particles to a ParticleContainer called starContainer.

//Create the `ParticleContainer` and add it to the `stage`letstarContainer=newPIXI.ParticleContainer(15000,{alpha: true,scale: true,rotation: true,uvs: true});stage.addChild(starContainer);//Create star particles and add them to the `starContainer`letstars=d.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),starContainer,50);

ParticleContainers are optimized for pushing many thousands of sprites, so, unless you're animating that many particles, you probably won't notice any performance improvement over using ordinary Container objects.

Customizing the particle options

The create method has a total of 19 different parameters you can set to fully customize how the particles behave. Here's the full parameter list, with examples of the kinds of values you could use.

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage//Container for particles50,//Number of particles0.1,//Gravitytrue,//Random spacing0,6.28,//Min/max angle12,24,//Min/max size1,2,//Min/max speed0.005,0.01,//Min/max scale speed 0.005,0.01,//Min/max alpha speed0.05,0.1//Min/max rotation speed);

You can see that most of the parameters describe a range between the minimum and maximum values that should be used to change the sprites’ speed, rotation, scale, or alpha. You can also specify the number of particles that should be created, and add optional gravity. The minimum and maximum angle values are important for defining the circular spread of particles as they radiate out from the origin point. For a completely circular explosion effect, use a minimum angle of 0 and a maximum angle of 6.28.

0,6.28

(These values are radians; the equivalent in degrees is 0 and 360.) 0 starts at the 3 o’clock position, pointing directly to the right. 3.14 is the 9 o’clock position, and 6.28 takes you around back to 0 again. If you want to constrain the particle range to a narrower angle, just supply the minimum and maximum values that describe that angle. Here are values you could use to constrain the angle to a pizza-slice with the crust pointing left.

2.4,3.6

You could use a constrained angle range like this to create a particle stream, like those used to create a fountain or rocket engine flames. (You’ll see exactly how to do this in the example ahead.) The random spacing value (the seventh argument) determines whether the particles should be spaced evenly (false) or randomly (true) within this range. By carefully choosing the sprite for the particle and finely adjusting each parameter, you can use this all-purpose create method to simulate everything from liquid to fire.

Using a particle emitter

The create method produces a single burst of particles, but often you'll need to produce a continuous stream of particles. You can do this with the help of a particle emitter. A particle emitter produces particles at fixed intervals to produce just such a stream effect, and you can create one using Dust's emitter method. The emitter has play and stop methods that let you turn the particle flow on and off and you can define the interval at which particles are created. Here's the general format for using Dust's emitter method. It takes two arguments. The first argument is the interval, in milliseconds, between which burst of particles are created. The second argument is the same create method from the previous examples.

letparticleStream=d.emitter(100,()=>d.create(););

Any interval value of 100 milliseconds or less will make the particles appear to flow in a continuous stream. Here's some code that produces a star fountain effect. The stars appear in the center of the canvas, shoot up, and then cascade down with the pull of gravity.

letparticleStream=pd.emitter(100,()=>particles.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),stage,30,0.1,false,3.14,6.28,16,32,2,5));

This is the effect this code produces:

Starburst

The sixth argument, 0.1, is the force of gravity. Setting gravity to a higher number will pull the particles down faster. (Set gravity to 0 to turn it off.) The angle is between 3.14 and 6.28. That makes the particles appear within a half-moon sized angle above their origin point. Here's how that angle is defined.

Starburst

The stars are created at the center origin point then fly up and out within the upper half of the circle. Gravity is acting on the particles the entire time, however, so they'll eventually fall towards the bottom of the canvas. That's what creates the cascading fountain effect.

You can use the emitter's play and stop methods to turn the particle stream on or off at any time in your code, like this:

particleStream.play();particleStream.stop();

The particle emitter also has a Boolean playing property that will be true when the paricle emitter is playing, and false when it's been stopped. This is all you need to know to start making particle effects with Dust.

About

No description, website, or topics provided.

Resources

Stars

93 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dust - Particle Effects for Pixi (v3.0.11)

Dust is a quick and easy particle effects engine for Pixi.

(Important! This library targets Pixi v3.0.11, which is the most stable version of Pixi, and is the only version I can recommend using. This library will eventually be upgraded for Pixi v4 when the v4 branch matures.)

Table of contents

Setting up
Making Particles
Using a ParticleContainer
Customizing the particle options
Using a particle emitter

Setting up

To get started with Dust, first link the dust.js file to to your HTML page with a script tag, like this:

<script src="dust.js"></script>

Next, create an instance of Dust at the beginning of your program. Supply the PIXI instance as the constructor argument.

let d = new Dust(PIXI);

Then, very importantly, make sure you call Pixi Dust's update function inside your game loop.

functiongameLoop(){requestAnimationFrame(gameLoop);d.update();}

You're now ready to use Dust to make and animate particles.

Making particles

With Dust all set up and running, you can now make particles using the create method. Here's how to create 50 star sprites on the stage at an x/y position of 128/128. (This code assumes you have a loaded texture called star.png).

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage,//Container for particles50//Number of particles);

The first two arguments are the x/y point where the particles will appear. The third argument is a function that returns the sprite you want to use for each particle. Use any sprite creation method you like. If you use a AnimatedSprite sprite and supply more than one frame texture, Dust will randomly display different frames for each particle. The fourth argument is the container that you want to add the particles to; in this example the particles will be added to the stage. The fifth argument is the number of particles you want to create. The create method returns an array containing references to all the sprites being used as particles, which might be useful if you need to access them for reasons such as doing collision detection.

This is the effect that this code produces:

Making particles

The particles appear at the same point with different random sizes and velocities. They fly away from the center point, randomly changing scale and alpha, until they all fade away and disappear. Many of the properties are randomized, so the effect is different every time. You'll see ahead how you can fine tune each of these properties to produce exactly the effect you need. You can drop this code anywhere in your program to create a single burst of particles, such as a key press or mouse click.

Using a ParticleContainer

In the example code above the particles were all added to the root stage container object (the fourth argument.) However, you can add the particles to any container you like, or to any other sprite. You can use Pixi's ParticleContainer to display a large number of sprites on screen at a high frame rate. If you want to use ParticleContainer for your particles, just add the name of the ParticleContainer object you want to use in the create method's 4th argument. Here's how you could modify the example code above to add the particles to a ParticleContainer called starContainer.

//Create the `ParticleContainer` and add it to the `stage`letstarContainer=newPIXI.ParticleContainer(15000,{alpha: true,scale: true,rotation: true,uvs: true});stage.addChild(starContainer);//Create star particles and add them to the `starContainer`letstars=d.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),starContainer,50);

ParticleContainers are optimized for pushing many thousands of sprites, so, unless you're animating that many particles, you probably won't notice any performance improvement over using ordinary Container objects.

Customizing the particle options

The create method has a total of 19 different parameters you can set to fully customize how the particles behave. Here's the full parameter list, with examples of the kinds of values you could use.

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage//Container for particles50,//Number of particles0.1,//Gravitytrue,//Random spacing0,6.28,//Min/max angle12,24,//Min/max size1,2,//Min/max speed0.005,0.01,//Min/max scale speed 0.005,0.01,//Min/max alpha speed0.05,0.1//Min/max rotation speed);

You can see that most of the parameters describe a range between the minimum and maximum values that should be used to change the sprites’ speed, rotation, scale, or alpha. You can also specify the number of particles that should be created, and add optional gravity. The minimum and maximum angle values are important for defining the circular spread of particles as they radiate out from the origin point. For a completely circular explosion effect, use a minimum angle of 0 and a maximum angle of 6.28.

0,6.28

(These values are radians; the equivalent in degrees is 0 and 360.) 0 starts at the 3 o’clock position, pointing directly to the right. 3.14 is the 9 o’clock position, and 6.28 takes you around back to 0 again. If you want to constrain the particle range to a narrower angle, just supply the minimum and maximum values that describe that angle. Here are values you could use to constrain the angle to a pizza-slice with the crust pointing left.

2.4,3.6

You could use a constrained angle range like this to create a particle stream, like those used to create a fountain or rocket engine flames. (You’ll see exactly how to do this in the example ahead.) The random spacing value (the seventh argument) determines whether the particles should be spaced evenly (false) or randomly (true) within this range. By carefully choosing the sprite for the particle and finely adjusting each parameter, you can use this all-purpose create method to simulate everything from liquid to fire.

Using a particle emitter

The create method produces a single burst of particles, but often you'll need to produce a continuous stream of particles. You can do this with the help of a particle emitter. A particle emitter produces particles at fixed intervals to produce just such a stream effect, and you can create one using Dust's emitter method. The emitter has play and stop methods that let you turn the particle flow on and off and you can define the interval at which particles are created. Here's the general format for using Dust's emitter method. It takes two arguments. The first argument is the interval, in milliseconds, between which burst of particles are created. The second argument is the same create method from the previous examples.

letparticleStream=d.emitter(100,()=>d.create(););

Any interval value of 100 milliseconds or less will make the particles appear to flow in a continuous stream. Here's some code that produces a star fountain effect. The stars appear in the center of the canvas, shoot up, and then cascade down with the pull of gravity.

letparticleStream=pd.emitter(100,()=>particles.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),stage,30,0.1,false,3.14,6.28,16,32,2,5));

This is the effect this code produces:

Starburst

The sixth argument, 0.1, is the force of gravity. Setting gravity to a higher number will pull the particles down faster. (Set gravity to 0 to turn it off.) The angle is between 3.14 and 6.28. That makes the particles appear within a half-moon sized angle above their origin point. Here's how that angle is defined.

Starburst

The stars are created at the center origin point then fly up and out within the upper half of the circle. Gravity is acting on the particles the entire time, however, so they'll eventually fall towards the bottom of the canvas. That's what creates the cascading fountain effect.

You can use the emitter's play and stop methods to turn the particle stream on or off at any time in your code, like this:

particleStream.play();particleStream.stop();

The particle emitter also has a Boolean playing property that will be true when the paricle emitter is playing, and false when it's been stopped. This is all you need to know to start making particle effects with Dust.

About

No description, website, or topics provided.

Resources

Stars

93 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dust - Particle Effects for Pixi (v3.0.11)

Dust is a quick and easy particle effects engine for Pixi.

(Important! This library targets Pixi v3.0.11, which is the most stable version of Pixi, and is the only version I can recommend using. This library will eventually be upgraded for Pixi v4 when the v4 branch matures.)

Table of contents

Setting up
Making Particles
Using a ParticleContainer
Customizing the particle options
Using a particle emitter

Setting up

To get started with Dust, first link the dust.js file to to your HTML page with a script tag, like this:

<script src="dust.js"></script>

Next, create an instance of Dust at the beginning of your program. Supply the PIXI instance as the constructor argument.

let d = new Dust(PIXI);

Then, very importantly, make sure you call Pixi Dust's update function inside your game loop.

functiongameLoop(){requestAnimationFrame(gameLoop);d.update();}

You're now ready to use Dust to make and animate particles.

Making particles

With Dust all set up and running, you can now make particles using the create method. Here's how to create 50 star sprites on the stage at an x/y position of 128/128. (This code assumes you have a loaded texture called star.png).

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage,//Container for particles50//Number of particles);

The first two arguments are the x/y point where the particles will appear. The third argument is a function that returns the sprite you want to use for each particle. Use any sprite creation method you like. If you use a AnimatedSprite sprite and supply more than one frame texture, Dust will randomly display different frames for each particle. The fourth argument is the container that you want to add the particles to; in this example the particles will be added to the stage. The fifth argument is the number of particles you want to create. The create method returns an array containing references to all the sprites being used as particles, which might be useful if you need to access them for reasons such as doing collision detection.

This is the effect that this code produces:

Making particles

The particles appear at the same point with different random sizes and velocities. They fly away from the center point, randomly changing scale and alpha, until they all fade away and disappear. Many of the properties are randomized, so the effect is different every time. You'll see ahead how you can fine tune each of these properties to produce exactly the effect you need. You can drop this code anywhere in your program to create a single burst of particles, such as a key press or mouse click.

Using a ParticleContainer

In the example code above the particles were all added to the root stage container object (the fourth argument.) However, you can add the particles to any container you like, or to any other sprite. You can use Pixi's ParticleContainer to display a large number of sprites on screen at a high frame rate. If you want to use ParticleContainer for your particles, just add the name of the ParticleContainer object you want to use in the create method's 4th argument. Here's how you could modify the example code above to add the particles to a ParticleContainer called starContainer.

//Create the `ParticleContainer` and add it to the `stage`letstarContainer=newPIXI.ParticleContainer(15000,{alpha: true,scale: true,rotation: true,uvs: true});stage.addChild(starContainer);//Create star particles and add them to the `starContainer`letstars=d.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),starContainer,50);

ParticleContainers are optimized for pushing many thousands of sprites, so, unless you're animating that many particles, you probably won't notice any performance improvement over using ordinary Container objects.

Customizing the particle options

The create method has a total of 19 different parameters you can set to fully customize how the particles behave. Here's the full parameter list, with examples of the kinds of values you could use.

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage//Container for particles50,//Number of particles0.1,//Gravitytrue,//Random spacing0,6.28,//Min/max angle12,24,//Min/max size1,2,//Min/max speed0.005,0.01,//Min/max scale speed 0.005,0.01,//Min/max alpha speed0.05,0.1//Min/max rotation speed);

You can see that most of the parameters describe a range between the minimum and maximum values that should be used to change the sprites’ speed, rotation, scale, or alpha. You can also specify the number of particles that should be created, and add optional gravity. The minimum and maximum angle values are important for defining the circular spread of particles as they radiate out from the origin point. For a completely circular explosion effect, use a minimum angle of 0 and a maximum angle of 6.28.

0,6.28

(These values are radians; the equivalent in degrees is 0 and 360.) 0 starts at the 3 o’clock position, pointing directly to the right. 3.14 is the 9 o’clock position, and 6.28 takes you around back to 0 again. If you want to constrain the particle range to a narrower angle, just supply the minimum and maximum values that describe that angle. Here are values you could use to constrain the angle to a pizza-slice with the crust pointing left.

2.4,3.6

You could use a constrained angle range like this to create a particle stream, like those used to create a fountain or rocket engine flames. (You’ll see exactly how to do this in the example ahead.) The random spacing value (the seventh argument) determines whether the particles should be spaced evenly (false) or randomly (true) within this range. By carefully choosing the sprite for the particle and finely adjusting each parameter, you can use this all-purpose create method to simulate everything from liquid to fire.

Using a particle emitter

The create method produces a single burst of particles, but often you'll need to produce a continuous stream of particles. You can do this with the help of a particle emitter. A particle emitter produces particles at fixed intervals to produce just such a stream effect, and you can create one using Dust's emitter method. The emitter has play and stop methods that let you turn the particle flow on and off and you can define the interval at which particles are created. Here's the general format for using Dust's emitter method. It takes two arguments. The first argument is the interval, in milliseconds, between which burst of particles are created. The second argument is the same create method from the previous examples.

letparticleStream=d.emitter(100,()=>d.create(););

Any interval value of 100 milliseconds or less will make the particles appear to flow in a continuous stream. Here's some code that produces a star fountain effect. The stars appear in the center of the canvas, shoot up, and then cascade down with the pull of gravity.

letparticleStream=pd.emitter(100,()=>particles.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),stage,30,0.1,false,3.14,6.28,16,32,2,5));

This is the effect this code produces:

Starburst

The sixth argument, 0.1, is the force of gravity. Setting gravity to a higher number will pull the particles down faster. (Set gravity to 0 to turn it off.) The angle is between 3.14 and 6.28. That makes the particles appear within a half-moon sized angle above their origin point. Here's how that angle is defined.

Starburst

The stars are created at the center origin point then fly up and out within the upper half of the circle. Gravity is acting on the particles the entire time, however, so they'll eventually fall towards the bottom of the canvas. That's what creates the cascading fountain effect.

You can use the emitter's play and stop methods to turn the particle stream on or off at any time in your code, like this:

particleStream.play();particleStream.stop();

The particle emitter also has a Boolean playing property that will be true when the paricle emitter is playing, and false when it's been stopped. This is all you need to know to start making particle effects with Dust.

About

No description, website, or topics provided.

Resources

Stars

93 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dust - Particle Effects for Pixi (v3.0.11)

Dust is a quick and easy particle effects engine for Pixi.

(Important! This library targets Pixi v3.0.11, which is the most stable version of Pixi, and is the only version I can recommend using. This library will eventually be upgraded for Pixi v4 when the v4 branch matures.)

Table of contents

Setting up
Making Particles
Using a ParticleContainer
Customizing the particle options
Using a particle emitter

Setting up

To get started with Dust, first link the dust.js file to to your HTML page with a script tag, like this:

<script src="dust.js"></script>

Next, create an instance of Dust at the beginning of your program. Supply the PIXI instance as the constructor argument.

let d = new Dust(PIXI);

Then, very importantly, make sure you call Pixi Dust's update function inside your game loop.

functiongameLoop(){requestAnimationFrame(gameLoop);d.update();}

You're now ready to use Dust to make and animate particles.

Making particles

With Dust all set up and running, you can now make particles using the create method. Here's how to create 50 star sprites on the stage at an x/y position of 128/128. (This code assumes you have a loaded texture called star.png).

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage,//Container for particles50//Number of particles);

The first two arguments are the x/y point where the particles will appear. The third argument is a function that returns the sprite you want to use for each particle. Use any sprite creation method you like. If you use a AnimatedSprite sprite and supply more than one frame texture, Dust will randomly display different frames for each particle. The fourth argument is the container that you want to add the particles to; in this example the particles will be added to the stage. The fifth argument is the number of particles you want to create. The create method returns an array containing references to all the sprites being used as particles, which might be useful if you need to access them for reasons such as doing collision detection.

This is the effect that this code produces:

Making particles

The particles appear at the same point with different random sizes and velocities. They fly away from the center point, randomly changing scale and alpha, until they all fade away and disappear. Many of the properties are randomized, so the effect is different every time. You'll see ahead how you can fine tune each of these properties to produce exactly the effect you need. You can drop this code anywhere in your program to create a single burst of particles, such as a key press or mouse click.

Using a ParticleContainer

In the example code above the particles were all added to the root stage container object (the fourth argument.) However, you can add the particles to any container you like, or to any other sprite. You can use Pixi's ParticleContainer to display a large number of sprites on screen at a high frame rate. If you want to use ParticleContainer for your particles, just add the name of the ParticleContainer object you want to use in the create method's 4th argument. Here's how you could modify the example code above to add the particles to a ParticleContainer called starContainer.

//Create the `ParticleContainer` and add it to the `stage`letstarContainer=newPIXI.ParticleContainer(15000,{alpha: true,scale: true,rotation: true,uvs: true});stage.addChild(starContainer);//Create star particles and add them to the `starContainer`letstars=d.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),starContainer,50);

ParticleContainers are optimized for pushing many thousands of sprites, so, unless you're animating that many particles, you probably won't notice any performance improvement over using ordinary Container objects.

Customizing the particle options

The create method has a total of 19 different parameters you can set to fully customize how the particles behave. Here's the full parameter list, with examples of the kinds of values you could use.

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage//Container for particles50,//Number of particles0.1,//Gravitytrue,//Random spacing0,6.28,//Min/max angle12,24,//Min/max size1,2,//Min/max speed0.005,0.01,//Min/max scale speed 0.005,0.01,//Min/max alpha speed0.05,0.1//Min/max rotation speed);

You can see that most of the parameters describe a range between the minimum and maximum values that should be used to change the sprites’ speed, rotation, scale, or alpha. You can also specify the number of particles that should be created, and add optional gravity. The minimum and maximum angle values are important for defining the circular spread of particles as they radiate out from the origin point. For a completely circular explosion effect, use a minimum angle of 0 and a maximum angle of 6.28.

0,6.28

(These values are radians; the equivalent in degrees is 0 and 360.) 0 starts at the 3 o’clock position, pointing directly to the right. 3.14 is the 9 o’clock position, and 6.28 takes you around back to 0 again. If you want to constrain the particle range to a narrower angle, just supply the minimum and maximum values that describe that angle. Here are values you could use to constrain the angle to a pizza-slice with the crust pointing left.

2.4,3.6

You could use a constrained angle range like this to create a particle stream, like those used to create a fountain or rocket engine flames. (You’ll see exactly how to do this in the example ahead.) The random spacing value (the seventh argument) determines whether the particles should be spaced evenly (false) or randomly (true) within this range. By carefully choosing the sprite for the particle and finely adjusting each parameter, you can use this all-purpose create method to simulate everything from liquid to fire.

Using a particle emitter

The create method produces a single burst of particles, but often you'll need to produce a continuous stream of particles. You can do this with the help of a particle emitter. A particle emitter produces particles at fixed intervals to produce just such a stream effect, and you can create one using Dust's emitter method. The emitter has play and stop methods that let you turn the particle flow on and off and you can define the interval at which particles are created. Here's the general format for using Dust's emitter method. It takes two arguments. The first argument is the interval, in milliseconds, between which burst of particles are created. The second argument is the same create method from the previous examples.

letparticleStream=d.emitter(100,()=>d.create(););

Any interval value of 100 milliseconds or less will make the particles appear to flow in a continuous stream. Here's some code that produces a star fountain effect. The stars appear in the center of the canvas, shoot up, and then cascade down with the pull of gravity.

letparticleStream=pd.emitter(100,()=>particles.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),stage,30,0.1,false,3.14,6.28,16,32,2,5));

This is the effect this code produces:

Starburst

The sixth argument, 0.1, is the force of gravity. Setting gravity to a higher number will pull the particles down faster. (Set gravity to 0 to turn it off.) The angle is between 3.14 and 6.28. That makes the particles appear within a half-moon sized angle above their origin point. Here's how that angle is defined.

Starburst

The stars are created at the center origin point then fly up and out within the upper half of the circle. Gravity is acting on the particles the entire time, however, so they'll eventually fall towards the bottom of the canvas. That's what creates the cascading fountain effect.

You can use the emitter's play and stop methods to turn the particle stream on or off at any time in your code, like this:

particleStream.play();particleStream.stop();

The particle emitter also has a Boolean playing property that will be true when the paricle emitter is playing, and false when it's been stopped. This is all you need to know to start making particle effects with Dust.

About

No description, website, or topics provided.

Resources

Stars

93 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dust - Particle Effects for Pixi (v3.0.11)

Dust is a quick and easy particle effects engine for Pixi.

(Important! This library targets Pixi v3.0.11, which is the most stable version of Pixi, and is the only version I can recommend using. This library will eventually be upgraded for Pixi v4 when the v4 branch matures.)

Table of contents

Setting up
Making Particles
Using a ParticleContainer
Customizing the particle options
Using a particle emitter

Setting up

To get started with Dust, first link the dust.js file to to your HTML page with a script tag, like this:

<script src="dust.js"></script>

Next, create an instance of Dust at the beginning of your program. Supply the PIXI instance as the constructor argument.

let d = new Dust(PIXI);

Then, very importantly, make sure you call Pixi Dust's update function inside your game loop.

functiongameLoop(){requestAnimationFrame(gameLoop);d.update();}

You're now ready to use Dust to make and animate particles.

Making particles

With Dust all set up and running, you can now make particles using the create method. Here's how to create 50 star sprites on the stage at an x/y position of 128/128. (This code assumes you have a loaded texture called star.png).

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage,//Container for particles50//Number of particles);

The first two arguments are the x/y point where the particles will appear. The third argument is a function that returns the sprite you want to use for each particle. Use any sprite creation method you like. If you use a AnimatedSprite sprite and supply more than one frame texture, Dust will randomly display different frames for each particle. The fourth argument is the container that you want to add the particles to; in this example the particles will be added to the stage. The fifth argument is the number of particles you want to create. The create method returns an array containing references to all the sprites being used as particles, which might be useful if you need to access them for reasons such as doing collision detection.

This is the effect that this code produces:

Making particles

The particles appear at the same point with different random sizes and velocities. They fly away from the center point, randomly changing scale and alpha, until they all fade away and disappear. Many of the properties are randomized, so the effect is different every time. You'll see ahead how you can fine tune each of these properties to produce exactly the effect you need. You can drop this code anywhere in your program to create a single burst of particles, such as a key press or mouse click.

Using a ParticleContainer

In the example code above the particles were all added to the root stage container object (the fourth argument.) However, you can add the particles to any container you like, or to any other sprite. You can use Pixi's ParticleContainer to display a large number of sprites on screen at a high frame rate. If you want to use ParticleContainer for your particles, just add the name of the ParticleContainer object you want to use in the create method's 4th argument. Here's how you could modify the example code above to add the particles to a ParticleContainer called starContainer.

//Create the `ParticleContainer` and add it to the `stage`letstarContainer=newPIXI.ParticleContainer(15000,{alpha: true,scale: true,rotation: true,uvs: true});stage.addChild(starContainer);//Create star particles and add them to the `starContainer`letstars=d.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),starContainer,50);

ParticleContainers are optimized for pushing many thousands of sprites, so, unless you're animating that many particles, you probably won't notice any performance improvement over using ordinary Container objects.

Customizing the particle options

The create method has a total of 19 different parameters you can set to fully customize how the particles behave. Here's the full parameter list, with examples of the kinds of values you could use.

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage//Container for particles50,//Number of particles0.1,//Gravitytrue,//Random spacing0,6.28,//Min/max angle12,24,//Min/max size1,2,//Min/max speed0.005,0.01,//Min/max scale speed 0.005,0.01,//Min/max alpha speed0.05,0.1//Min/max rotation speed);

You can see that most of the parameters describe a range between the minimum and maximum values that should be used to change the sprites’ speed, rotation, scale, or alpha. You can also specify the number of particles that should be created, and add optional gravity. The minimum and maximum angle values are important for defining the circular spread of particles as they radiate out from the origin point. For a completely circular explosion effect, use a minimum angle of 0 and a maximum angle of 6.28.

0,6.28

(These values are radians; the equivalent in degrees is 0 and 360.) 0 starts at the 3 o’clock position, pointing directly to the right. 3.14 is the 9 o’clock position, and 6.28 takes you around back to 0 again. If you want to constrain the particle range to a narrower angle, just supply the minimum and maximum values that describe that angle. Here are values you could use to constrain the angle to a pizza-slice with the crust pointing left.

2.4,3.6

You could use a constrained angle range like this to create a particle stream, like those used to create a fountain or rocket engine flames. (You’ll see exactly how to do this in the example ahead.) The random spacing value (the seventh argument) determines whether the particles should be spaced evenly (false) or randomly (true) within this range. By carefully choosing the sprite for the particle and finely adjusting each parameter, you can use this all-purpose create method to simulate everything from liquid to fire.

Using a particle emitter

The create method produces a single burst of particles, but often you'll need to produce a continuous stream of particles. You can do this with the help of a particle emitter. A particle emitter produces particles at fixed intervals to produce just such a stream effect, and you can create one using Dust's emitter method. The emitter has play and stop methods that let you turn the particle flow on and off and you can define the interval at which particles are created. Here's the general format for using Dust's emitter method. It takes two arguments. The first argument is the interval, in milliseconds, between which burst of particles are created. The second argument is the same create method from the previous examples.

letparticleStream=d.emitter(100,()=>d.create(););

Any interval value of 100 milliseconds or less will make the particles appear to flow in a continuous stream. Here's some code that produces a star fountain effect. The stars appear in the center of the canvas, shoot up, and then cascade down with the pull of gravity.

letparticleStream=pd.emitter(100,()=>particles.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),stage,30,0.1,false,3.14,6.28,16,32,2,5));

This is the effect this code produces:

Starburst

The sixth argument, 0.1, is the force of gravity. Setting gravity to a higher number will pull the particles down faster. (Set gravity to 0 to turn it off.) The angle is between 3.14 and 6.28. That makes the particles appear within a half-moon sized angle above their origin point. Here's how that angle is defined.

Starburst

The stars are created at the center origin point then fly up and out within the upper half of the circle. Gravity is acting on the particles the entire time, however, so they'll eventually fall towards the bottom of the canvas. That's what creates the cascading fountain effect.

You can use the emitter's play and stop methods to turn the particle stream on or off at any time in your code, like this:

particleStream.play();particleStream.stop();

The particle emitter also has a Boolean playing property that will be true when the paricle emitter is playing, and false when it's been stopped. This is all you need to know to start making particle effects with Dust.

About

No description, website, or topics provided.

Resources

Stars

93 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dust - Particle Effects for Pixi (v3.0.11)

Dust is a quick and easy particle effects engine for Pixi.

(Important! This library targets Pixi v3.0.11, which is the most stable version of Pixi, and is the only version I can recommend using. This library will eventually be upgraded for Pixi v4 when the v4 branch matures.)

Table of contents

Setting up
Making Particles
Using a ParticleContainer
Customizing the particle options
Using a particle emitter

Setting up

To get started with Dust, first link the dust.js file to to your HTML page with a script tag, like this:

<script src="dust.js"></script>

Next, create an instance of Dust at the beginning of your program. Supply the PIXI instance as the constructor argument.

let d = new Dust(PIXI);

Then, very importantly, make sure you call Pixi Dust's update function inside your game loop.

functiongameLoop(){requestAnimationFrame(gameLoop);d.update();}

You're now ready to use Dust to make and animate particles.

Making particles

With Dust all set up and running, you can now make particles using the create method. Here's how to create 50 star sprites on the stage at an x/y position of 128/128. (This code assumes you have a loaded texture called star.png).

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage,//Container for particles50//Number of particles);

The first two arguments are the x/y point where the particles will appear. The third argument is a function that returns the sprite you want to use for each particle. Use any sprite creation method you like. If you use a AnimatedSprite sprite and supply more than one frame texture, Dust will randomly display different frames for each particle. The fourth argument is the container that you want to add the particles to; in this example the particles will be added to the stage. The fifth argument is the number of particles you want to create. The create method returns an array containing references to all the sprites being used as particles, which might be useful if you need to access them for reasons such as doing collision detection.

This is the effect that this code produces:

Making particles

The particles appear at the same point with different random sizes and velocities. They fly away from the center point, randomly changing scale and alpha, until they all fade away and disappear. Many of the properties are randomized, so the effect is different every time. You'll see ahead how you can fine tune each of these properties to produce exactly the effect you need. You can drop this code anywhere in your program to create a single burst of particles, such as a key press or mouse click.

Using a ParticleContainer

In the example code above the particles were all added to the root stage container object (the fourth argument.) However, you can add the particles to any container you like, or to any other sprite. You can use Pixi's ParticleContainer to display a large number of sprites on screen at a high frame rate. If you want to use ParticleContainer for your particles, just add the name of the ParticleContainer object you want to use in the create method's 4th argument. Here's how you could modify the example code above to add the particles to a ParticleContainer called starContainer.

//Create the `ParticleContainer` and add it to the `stage`letstarContainer=newPIXI.ParticleContainer(15000,{alpha: true,scale: true,rotation: true,uvs: true});stage.addChild(starContainer);//Create star particles and add them to the `starContainer`letstars=d.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),starContainer,50);

ParticleContainers are optimized for pushing many thousands of sprites, so, unless you're animating that many particles, you probably won't notice any performance improvement over using ordinary Container objects.

Customizing the particle options

The create method has a total of 19 different parameters you can set to fully customize how the particles behave. Here's the full parameter list, with examples of the kinds of values you could use.

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage//Container for particles50,//Number of particles0.1,//Gravitytrue,//Random spacing0,6.28,//Min/max angle12,24,//Min/max size1,2,//Min/max speed0.005,0.01,//Min/max scale speed 0.005,0.01,//Min/max alpha speed0.05,0.1//Min/max rotation speed);

You can see that most of the parameters describe a range between the minimum and maximum values that should be used to change the sprites’ speed, rotation, scale, or alpha. You can also specify the number of particles that should be created, and add optional gravity. The minimum and maximum angle values are important for defining the circular spread of particles as they radiate out from the origin point. For a completely circular explosion effect, use a minimum angle of 0 and a maximum angle of 6.28.

0,6.28

(These values are radians; the equivalent in degrees is 0 and 360.) 0 starts at the 3 o’clock position, pointing directly to the right. 3.14 is the 9 o’clock position, and 6.28 takes you around back to 0 again. If you want to constrain the particle range to a narrower angle, just supply the minimum and maximum values that describe that angle. Here are values you could use to constrain the angle to a pizza-slice with the crust pointing left.

2.4,3.6

You could use a constrained angle range like this to create a particle stream, like those used to create a fountain or rocket engine flames. (You’ll see exactly how to do this in the example ahead.) The random spacing value (the seventh argument) determines whether the particles should be spaced evenly (false) or randomly (true) within this range. By carefully choosing the sprite for the particle and finely adjusting each parameter, you can use this all-purpose create method to simulate everything from liquid to fire.

Using a particle emitter

The create method produces a single burst of particles, but often you'll need to produce a continuous stream of particles. You can do this with the help of a particle emitter. A particle emitter produces particles at fixed intervals to produce just such a stream effect, and you can create one using Dust's emitter method. The emitter has play and stop methods that let you turn the particle flow on and off and you can define the interval at which particles are created. Here's the general format for using Dust's emitter method. It takes two arguments. The first argument is the interval, in milliseconds, between which burst of particles are created. The second argument is the same create method from the previous examples.

letparticleStream=d.emitter(100,()=>d.create(););

Any interval value of 100 milliseconds or less will make the particles appear to flow in a continuous stream. Here's some code that produces a star fountain effect. The stars appear in the center of the canvas, shoot up, and then cascade down with the pull of gravity.

letparticleStream=pd.emitter(100,()=>particles.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),stage,30,0.1,false,3.14,6.28,16,32,2,5));

This is the effect this code produces:

Starburst

The sixth argument, 0.1, is the force of gravity. Setting gravity to a higher number will pull the particles down faster. (Set gravity to 0 to turn it off.) The angle is between 3.14 and 6.28. That makes the particles appear within a half-moon sized angle above their origin point. Here's how that angle is defined.

Starburst

The stars are created at the center origin point then fly up and out within the upper half of the circle. Gravity is acting on the particles the entire time, however, so they'll eventually fall towards the bottom of the canvas. That's what creates the cascading fountain effect.

You can use the emitter's play and stop methods to turn the particle stream on or off at any time in your code, like this:

particleStream.play();particleStream.stop();

The particle emitter also has a Boolean playing property that will be true when the paricle emitter is playing, and false when it's been stopped. This is all you need to know to start making particle effects with Dust.

About

No description, website, or topics provided.

Resources

Stars

93 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Dust - Particle Effects for Pixi (v3.0.11)

Dust is a quick and easy particle effects engine for Pixi.

(Important! This library targets Pixi v3.0.11, which is the most stable version of Pixi, and is the only version I can recommend using. This library will eventually be upgraded for Pixi v4 when the v4 branch matures.)

Table of contents

Setting up
Making Particles
Using a ParticleContainer
Customizing the particle options
Using a particle emitter

Setting up

To get started with Dust, first link the dust.js file to to your HTML page with a script tag, like this:

<script src="dust.js"></script>

Next, create an instance of Dust at the beginning of your program. Supply the PIXI instance as the constructor argument.

let d = new Dust(PIXI);

Then, very importantly, make sure you call Pixi Dust's update function inside your game loop.

functiongameLoop(){requestAnimationFrame(gameLoop);d.update();}

You're now ready to use Dust to make and animate particles.

Making particles

With Dust all set up and running, you can now make particles using the create method. Here's how to create 50 star sprites on the stage at an x/y position of 128/128. (This code assumes you have a loaded texture called star.png).

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage,//Container for particles50//Number of particles);

The first two arguments are the x/y point where the particles will appear. The third argument is a function that returns the sprite you want to use for each particle. Use any sprite creation method you like. If you use a AnimatedSprite sprite and supply more than one frame texture, Dust will randomly display different frames for each particle. The fourth argument is the container that you want to add the particles to; in this example the particles will be added to the stage. The fifth argument is the number of particles you want to create. The create method returns an array containing references to all the sprites being used as particles, which might be useful if you need to access them for reasons such as doing collision detection.

This is the effect that this code produces:

Making particles

The particles appear at the same point with different random sizes and velocities. They fly away from the center point, randomly changing scale and alpha, until they all fade away and disappear. Many of the properties are randomized, so the effect is different every time. You'll see ahead how you can fine tune each of these properties to produce exactly the effect you need. You can drop this code anywhere in your program to create a single burst of particles, such as a key press or mouse click.

Using a ParticleContainer

In the example code above the particles were all added to the root stage container object (the fourth argument.) However, you can add the particles to any container you like, or to any other sprite. You can use Pixi's ParticleContainer to display a large number of sprites on screen at a high frame rate. If you want to use ParticleContainer for your particles, just add the name of the ParticleContainer object you want to use in the create method's 4th argument. Here's how you could modify the example code above to add the particles to a ParticleContainer called starContainer.

//Create the `ParticleContainer` and add it to the `stage`letstarContainer=newPIXI.ParticleContainer(15000,{alpha: true,scale: true,rotation: true,uvs: true});stage.addChild(starContainer);//Create star particles and add them to the `starContainer`letstars=d.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),starContainer,50);

ParticleContainers are optimized for pushing many thousands of sprites, so, unless you're animating that many particles, you probably won't notice any performance improvement over using ordinary Container objects.

Customizing the particle options

The create method has a total of 19 different parameters you can set to fully customize how the particles behave. Here's the full parameter list, with examples of the kinds of values you could use.

letstars=d.create(128,//x start position128,//y start position()=>newPIXI.Sprite(//Sprite functionPIXI.utils.TextureCache["star.png"]),stage//Container for particles50,//Number of particles0.1,//Gravitytrue,//Random spacing0,6.28,//Min/max angle12,24,//Min/max size1,2,//Min/max speed0.005,0.01,//Min/max scale speed 0.005,0.01,//Min/max alpha speed0.05,0.1//Min/max rotation speed);

You can see that most of the parameters describe a range between the minimum and maximum values that should be used to change the sprites’ speed, rotation, scale, or alpha. You can also specify the number of particles that should be created, and add optional gravity. The minimum and maximum angle values are important for defining the circular spread of particles as they radiate out from the origin point. For a completely circular explosion effect, use a minimum angle of 0 and a maximum angle of 6.28.

0,6.28

(These values are radians; the equivalent in degrees is 0 and 360.) 0 starts at the 3 o’clock position, pointing directly to the right. 3.14 is the 9 o’clock position, and 6.28 takes you around back to 0 again. If you want to constrain the particle range to a narrower angle, just supply the minimum and maximum values that describe that angle. Here are values you could use to constrain the angle to a pizza-slice with the crust pointing left.

2.4,3.6

You could use a constrained angle range like this to create a particle stream, like those used to create a fountain or rocket engine flames. (You’ll see exactly how to do this in the example ahead.) The random spacing value (the seventh argument) determines whether the particles should be spaced evenly (false) or randomly (true) within this range. By carefully choosing the sprite for the particle and finely adjusting each parameter, you can use this all-purpose create method to simulate everything from liquid to fire.

Using a particle emitter

The create method produces a single burst of particles, but often you'll need to produce a continuous stream of particles. You can do this with the help of a particle emitter. A particle emitter produces particles at fixed intervals to produce just such a stream effect, and you can create one using Dust's emitter method. The emitter has play and stop methods that let you turn the particle flow on and off and you can define the interval at which particles are created. Here's the general format for using Dust's emitter method. It takes two arguments. The first argument is the interval, in milliseconds, between which burst of particles are created. The second argument is the same create method from the previous examples.

letparticleStream=d.emitter(100,()=>d.create(););

Any interval value of 100 milliseconds or less will make the particles appear to flow in a continuous stream. Here's some code that produces a star fountain effect. The stars appear in the center of the canvas, shoot up, and then cascade down with the pull of gravity.

letparticleStream=pd.emitter(100,()=>particles.create(128,128,()=>newPIXI.Sprite(PIXI.utils.TextureCache["star.png"]),stage,30,0.1,false,3.14,6.28,16,32,2,5));

This is the effect this code produces:

Starburst

The sixth argument, 0.1, is the force of gravity. Setting gravity to a higher number will pull the particles down faster. (Set gravity to 0 to turn it off.) The angle is between 3.14 and 6.28. That makes the particles appear within a half-moon sized angle above their origin point. Here's how that angle is defined.

Starburst

The stars are created at the center origin point then fly up and out within the upper half of the circle. Gravity is acting on the particles the entire time, however, so they'll eventually fall towards the bottom of the canvas. That's what creates the cascading fountain effect.

You can use the emitter's play and stop methods to turn the particle stream on or off at any time in your code, like this:

particleStream.play();particleStream.stop();

The particle emitter also has a Boolean playing property that will be true when the paricle emitter is playing, and false when it's been stopped. This is all you need to know to start making particle effects with Dust.

About

No description, website, or topics provided.

Resources

Stars

93 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages