summaryrefslogtreecommitdiff
path: root/manuals/chickadee/Particles.html
diff options
context:
space:
mode:
Diffstat (limited to 'manuals/chickadee/Particles.html')
-rw-r--r--manuals/chickadee/Particles.html252
1 files changed, 0 insertions, 252 deletions
diff --git a/manuals/chickadee/Particles.html b/manuals/chickadee/Particles.html
deleted file mode 100644
index 116e2e6..0000000
--- a/manuals/chickadee/Particles.html
+++ /dev/null
@@ -1,252 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- Copyright (C) 2017-2023 David Thompson dthompson2@worcester.edu
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3
-or any later version published by the Free Software Foundation;
-with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-A copy of the license is included in the section entitled "GNU
-Free Documentation License".
-
-A copy of the license is also available from the Free Software
-Foundation Web site at http://www.gnu.org/licenses/fdl.html.
-
-
-* Chickadee: (chickadee). Game programming toolkit for Guile.
-
-The document was typeset with
-http://www.texinfo.org/ (GNU Texinfo).
- -->
-<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>Particles (The Chickadee Game Toolkit)</title>
-
-<meta name="description" content="Particles (The Chickadee Game Toolkit)" />
-<meta name="keywords" content="Particles (The Chickadee Game Toolkit)" />
-<meta name="resource-type" content="document" />
-<meta name="distribution" content="global" />
-<meta name="Generator" content="makeinfo" />
-<link href="index.html" rel="start" title="Top" />
-<link href="Index.html" rel="index" title="Index" />
-<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents" />
-<link href="Graphics.html" rel="up" title="Graphics" />
-<link href="Tile-Maps.html" rel="next" title="Tile Maps" />
-<link href="Vector-Paths.html" rel="prev" title="Vector Paths" />
-<style type="text/css">
-&lt;!--
-a.summary-letter {text-decoration: none}
-blockquote.indentedblock {margin-right: 0em}
-div.display {margin-left: 3.2em}
-div.example {margin-left: 3.2em}
-div.lisp {margin-left: 3.2em}
-kbd {font-style: oblique}
-pre.display {font-family: inherit}
-pre.format {font-family: inherit}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-span.nolinebreak {white-space: nowrap}
-span.roman {font-family: initial; font-weight: normal}
-span.sansserif {font-family: sans-serif; font-weight: normal}
-ul.no-bullet {list-style: none}
-@media (min-width: 1140px) {
- body {
- margin-left: 14rem;
- margin-right: 4rem;
- max-width: 52rem;
- }
-}
-
-@media (min-width: 800px) and (max-width: 1140px) {
- body {
- margin-left: 6rem;
- margin-right: 4rem;
- max-width: 52rem;
- }
-}
-
-@media (max-width: 800px) {
- body {
- margin: 1rem;
- }
-}
-
---&gt;
-</style>
-<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css" />
-
-
-</head>
-
-<body lang="en">
-<span id="Particles"></span><div class="header">
-<p>
-Next: <a href="Tile-Maps.html" accesskey="n" rel="next">Tile Maps</a>, Previous: <a href="Vector-Paths.html" accesskey="p" rel="prev">Vector Paths</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p>
-</div>
-<hr />
-<span id="Particles-1"></span><h4 class="subsection">5.3.6 Particles</h4>
-
-<p>Effects like smoke, fire, sparks, etc. are often achieved by animating
-lots of little, short-lived sprites known as &ldquo;particles&rdquo;. In fact,
-all of these effects, and more, can be accomplished by turning a few
-configuration knobs in a &ldquo;particle system&rdquo;. A particle system takes
-care of managing the many miniscule moving morsels so the developer
-can quickly produce an effect and move on with their life. The
-<code>(chickadee graphics particles)</code> module provides an API for
-manipulating particle systems.
-</p>
-<p>Below is an example of a very simple particle system that utilizes
-nearly all of the default configuration settings:
-</p>
-<div class="lisp">
-<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">use-modules</span> <span class="syntax-open">(</span><span class="syntax-symbol">chickadee</span> <span class="syntax-symbol">graphics</span> <span class="syntax-symbol">particles</span><span class="syntax-close">)</span><span class="syntax-close">)</span>
-<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">texture</span> <span class="syntax-open">(</span><span class="syntax-symbol">load-image</span> <span class="syntax-string">"particle.png"</span><span class="syntax-close">)</span><span class="syntax-close">)</span>
-<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">particles</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-particles</span> <span class="syntax-symbol">2000</span> <span class="syntax-keyword">#:texture</span> <span class="syntax-symbol">texture</span><span class="syntax-close">)</span><span class="syntax-close">)</span>
-</pre></div>
-
-<p>In order to put particles into a particle system, a particle
-&ldquo;emitter&rdquo; is needed. Emitters know where to spawn new particles,
-how many of them to spawn, and for how long they should do it.
-</p>
-<p>Below is an example of an emitter that spawns 16 particles per frame
-at the coordinates <code>(320, 240)</code>:
-</p>
-<div class="lisp">
-<pre class="lisp"><span class="syntax-open">(</span><span class="syntax-symbol">use-modules</span> <span class="syntax-open">(</span><span class="syntax-symbol">chickadee</span> <span class="syntax-symbol">math</span> <span class="syntax-symbol">rect</span><span class="syntax-close">)</span><span class="syntax-close">)</span>
-<span class="syntax-open">(</span><span class="syntax-special">define</span> <span class="syntax-symbol">emitter</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-particle-emitter</span> <span class="syntax-open">(</span><span class="syntax-symbol">make-rect</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">0.0</span> <span class="syntax-symbol">320.0</span> <span class="syntax-symbol">240.0</span><span class="syntax-close">)</span> <span class="syntax-symbol">16</span><span class="syntax-close">)</span><span class="syntax-close">)</span>
-<span class="syntax-open">(</span><span class="syntax-symbol">add-particle-emitter</span> <span class="syntax-symbol">particles</span> <span class="syntax-symbol">emitter</span><span class="syntax-close">)</span>
-</pre></div>
-
-<p>To see all of the tweakable knobs and switches, read on!
-</p>
-<dl>
-<dt id="index-make_002dparticles">Procedure: <strong>make-particles</strong> <em>capacity [#:blend-mode] [#:color white] [#:end-color transparent] [#:texture] [#:animation-rows 1] [#:animation-columns 1] [#:width] [#:height] [#:speed-range (vec2 0.1 1.0)] [#:acceleration-range (vec2 0.0 0.1)] [#:direction-range (vec2 0 (* 2 pi))] [#:lifetime 30] [#:sort]</em></dt>
-<dd>
-<p>Return a new particle system that may contain up to <var>capacity</var>
-particles. Achieving the desired particle effect involves tweaking
-the following keyword arguments as needed:
-</p>
-<p>- <var>blend-mode</var>: Pixel blending mode. Alpha blending is used by
-default. (see <a href="Render-Settings.html">Render Settings</a> for more about blend modes).
-</p>
-<p>- <var>start-color</var>: The tint color of the particle at the beginning of its
-life. White by default.
-</p>
-<p>- <var>end-color</var>: The tint color of the particle at the end of of its
-life. Completely transparent by default for a fade-out effect. The
-color in the middle of a particle&rsquo;s life will be an interpolation of
-<var>start-color</var> and <var>end-color</var>.
-</p>
-<p>- <var>texture</var>: The texture applied to the particles. The texture
-may be subdivided into many animation frames.
-</p>
-<p>- <var>animation-rows</var>: How many animation frame rows there are in the
-texture. Default is 1.
-</p>
-<p>- <var>animation-columns</var>: How many animation frame columns there are
-in the texture. Default is 1.
-</p>
-<p>- <var>width</var>: The width of each particle. By default, the width of
-an animation frame (in pixels) is used.
-</p>
-<p>- <var>height</var>: The height of each particle. By default, the height
-of an animation frame (in pixels) is used.
-</p>
-<p>- <var>speed-range</var>: A 2D vector containing the min and max particle
-speed. Each particle will have a speed chosen at random from this
-range. By default, speed ranges from 0.1 to 1.0.
-</p>
-<p>- <var>acceleration-range</var>: A 2D vector containing the min and max
-particle acceleration. Each particle will have an acceleration chosen
-at random from this range. By default, acceleration ranges from 0.0
-to 0.1.
-</p>
-<p>- <var>direction-range</var>: A 2D vector containing the min and max
-particle direction as an angle in radians. Each particle will have a
-direction chosen at random from this range. By default, the range
-covers all possible angles.
-</p>
-<p>- <var>lifetime</var>: How long each particle lives, measured in
-updates. 30 by default.
-</p>
-<p>- <var>sort</var>: <code>youngest</code> if youngest particle should be drawn
-last or <code>oldest</code> for the reverse. By default, no sorting is
-applied at all.
-</p></dd></dl>
-
-<dl>
-<dt id="index-particles_003f">Procedure: <strong>particles?</strong> <em>obj</em></dt>
-<dd><p>Return <code>#t</code> if <var>obj</var> is a particle system.
-</p></dd></dl>
-
-<dl>
-<dt id="index-update_002dparticles">Procedure: <strong>update-particles</strong> <em>particles</em></dt>
-<dd><p>Advance the simulation of <var>particles</var>.
-</p></dd></dl>
-
-<dl>
-<dt id="index-draw_002dparticles">Procedure: <strong>draw-particles</strong> <em>particles</em></dt>
-<dd><p>Render <var>particles</var>.
-</p></dd></dl>
-
-<dl>
-<dt id="index-draw_002dparticles_002a">Procedure: <strong>draw-particles*</strong> <em>particles matrix</em></dt>
-<dd><p>Render <var>particles</var> with <var>matrix</var> applied.
-</p></dd></dl>
-
-<dl>
-<dt id="index-make_002dparticle_002demitter">Procedure: <strong>make-particle-emitter</strong> <em>spawn-area rate [duration]</em></dt>
-<dd>
-<p>Return a new particle emitter that spawns <var>rate</var> particles per
-frame within <var>spawn-area</var> (a rectangle or 2D vector) for
-<var>duration</var> frames. If <var>duration</var> is not specified, the
-emitter will spawn particles indefinitely.
-</p></dd></dl>
-
-<dl>
-<dt id="index-particle_002demitter_003f">Procedure: <strong>particle-emitter?</strong> <em>obj</em></dt>
-<dd><p>Return <code>#t</code> if <var>obj</var> is a particle emitter.
-</p></dd></dl>
-
-<dl>
-<dt id="index-particle_002demitter_002dspawn_002darea">Procedure: <strong>particle-emitter-spawn-area</strong> <em>emitter</em></dt>
-<dd><p>Return the spawn area for <var>emitter</var>.
-</p></dd></dl>
-
-<dl>
-<dt id="index-particle_002demitter_002drate">Procedure: <strong>particle-emitter-rate</strong> <em>emitter</em></dt>
-<dd><p>Return the number of particles that <var>emitter</var> will spawn per
-frame.
-</p></dd></dl>
-
-<dl>
-<dt id="index-particle_002demitter_002dlife">Procedure: <strong>particle-emitter-life</strong> <em>emitter</em></dt>
-<dd><p>Return the number of frames remaining in <var>emitter</var>&rsquo;s lifespan.
-</p></dd></dl>
-
-<dl>
-<dt id="index-particle_002demitter_002ddone_003f">Procedure: <strong>particle-emitter-done?</strong> <em>emitter</em></dt>
-<dd><p>Return <code>#t</code> if <var>emitter</var> has finished spawning particlces.
-</p></dd></dl>
-
-<dl>
-<dt id="index-add_002dparticle_002demitter">Procedure: <strong>add-particle-emitter</strong> <em>particles emitter</em></dt>
-<dd><p>Add <var>emitter</var> to <var>particles</var>.
-</p></dd></dl>
-
-<dl>
-<dt id="index-remove_002dparticle_002demitter">Procedure: <strong>remove-particle-emitter</strong> <em>particles emitter</em></dt>
-<dd><p>Remove <var>emitter</var> from <var>particles</var>
-</p></dd></dl>
-
-<hr />
-<div class="header">
-<p>
-Next: <a href="Tile-Maps.html" accesskey="n" rel="next">Tile Maps</a>, Previous: <a href="Vector-Paths.html" accesskey="p" rel="prev">Vector Paths</a>, Up: <a href="Graphics.html" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p>
-</div>
-
-
-
-</body>
-</html>