ConstructorQuads
Constructor. Generates quad (rectangle) geometry for each particle, producing the visual representation.
Every emitter needs exactly one Constructor block. This is the most common constructor type, rendering each particle as a textured rectangle.
To make an emitter produce no geometry (for example a parent/anchor for attached emitters), set its Emitter Guide geometry mode to None instead of adding a Constructor block.
Properties & inputs:
- Blend mode (property): Blending mode — Normal (standard alpha blending), Add (additive), or Multiply.
- Texture (property): Path to the particle texture file.
- Position (input | property): 3D position of the particle.
- Origin (input | property): Offset of the quad relative to the particle position, in normalized coordinates. {0,0} centers the quad; {0.5, 0.5} places the position at the top-right corner. See Picking the origin visually below.
- Rotation type (property): Faced — always faces the camera (billboard). Free — allows arbitrary 3D rotation.
- Angle (input | property): Rotation angle in degrees (for faced rotation).
- Size type (property): Quad — uniform width and height. Rect — independent width and height.
- Color (input | property): RGB color multiplied with the texture. Components in range [0; 1].
- Alpha (input | property): Transparency. 0 = fully transparent, 1 = fully opaque.
- Texture mapping (property): Whole texture, Grid or Frames. Grid divides the texture into equal cells; Frames takes a list of frames placed anywhere on the texture, possibly rotated — see Texture frames below.
- Columns, Rows (property): Grid dimensions for sprite sheet mode.
- Frames (property): In Frames mode, opens the frame editor.
- tex.index (input): Index of the texture cell in Grid mode [0; Columns × Rows), or of the frame in Frames mode. A fractional index selects the frame below it (15.8 selects frame 15); an index past the last frame is clamped to it.
Texture frames
A sprite sheet made by a packing tool rarely fits the Grid mode: its cells differ in size, and some sprites are stored turned on their side to save space. Frames uses such a sheet as it is. A frame is a rectangle anywhere on the texture, turned at any angle, and the particle's frame index picks which one it shows. Frames are numbered from 0 in the order of the frame editor's list.
In the Emitter Guide, choose Frames in the Texture section and click Edit Frames... (in the scheme, the Frames row of the block does the same). The frame editor shows the texture with the frames over it:
- Draw and drag frames on the canvas, rotate and resize them with the handles, or type exact pixel values for the selected frame. A frame starts moving only once the mouse has travelled a few pixels, so a click never nudges it.
- Slice Grid... cuts the whole texture into equal cells, numbered in the same order as the Grid mode, so switching a grid effect over keeps its animation.
- Rotate Left / Right and Flip H / V turn or mirror what a frame shows without moving the region it covers — the fix for a sprite the packer stored rotated.
- Move Up / Move Down reorder frames; a frame's position in the list is its index.
- A preview shows the selected frame the way a particle will draw it.
Changes show in the effect's preview as soon as you pause. The frame editor has its own undo: Cancel puts everything back, and OK lands the whole session in the effect as a single undoable step. A frame set holds at most 16,384 frames.
On a mirrored (reflected) emitter the frames can be edited too: they become that mirror's own, and discarding the override brings back the original's.
TexturePacker atlases
A TexturePacker atlas (.json, Hash or Array format, inside the textures folder)
can be linked instead of drawing frames by hand. Type or pick it in the
Atlas field of the Texture section, or use Link in the frame editor. The
frames come straight from the file — rotated and trimmed sprites included — and
the texture switches to the atlas image.
The effect then follows the file: repack the atlas and the frames update within about a second. Each sprite keeps its index by name, so an animation does not scramble, and a sprite that disappears from the atlas leaves a marked gap rather than shifting the frames after it. Reload reads the file again on demand. A broken or half-written file is reported and changes nothing. Exporting always uses the atlas as it is on disk, and copying the effect to another project brings the atlas along.
Import Once takes the frames from an atlas without following it, and Convert to Manual stops following a linked atlas while keeping its frames. Clearing the Atlas field also stops following the file.
In the frame editor, picking another atlas with ... on a linked set switches to it straight away. A path typed into the field does nothing until Link or Import Once is pressed; if you press OK with such a path still pending, the editor asks whether to link it, import it once, or discard it.
Export
Frames are exported to JavaScript 1.1 (PIXI, Phaser, Cocos Creator), C# 1.2 (MonoGame, Unity) and GPU33. The older export targets — JavaScript 1.0, C# 1.0 and C# 1.1 — cannot draw Frames: an emitter that uses them is marked with an error that says so (hover the error sign on its row) and left out of that export, rather than exported with the wrong picture.
In MonoGame, Frames are drawn by the WindowsDX package only. The DesktopGL (OpenGL) package refuses to load an effect that uses them, with an error that names the effect; switch the emitter to Whole or Grid and export again if the game must run on DesktopGL.
Picking the origin visually
Setting the origin by typing numbers means guessing where they land on the texture. The Origin picker lets you point at the spot instead: click the small button next to the Origin value — in the block's properties, or in the Origin section of the Emitter Guide — and the texture opens in its own window with a crosshair on the current origin.
Click anywhere on the texture to move the origin there, or drag the crosshair around; the coordinates under the texture update as you go, and the preview follows so you can judge the result on the actual effect. The origin is not confined to the texture — click outside it to push the quad away from the particle's position, and the view zooms out far enough to show a crosshair that already sits outside. The mouse wheel zooms in and out. Ctrl+Z and Ctrl+Y undo and redo your attempts inside the window, and Cancel leaves the origin as it was.
For a texture set up as a sprite sheet (Texture mapping set to Grid), the window shows one cell at a time with arrows underneath to step through the frames, so you can line the origin up against whichever frame reads most clearly.
Snapping
Hold Shift to snap the origin to the notable places on the texture. While the key is held, the window shows what it can snap to:
- The nine points — the four corners, the middle of each edge, and the centre — drawn as small dots. These pin both coordinates at once.
- The X and Y axes — dashed lines through the middle of the texture. These pin one coordinate and leave the other free, so you can slide the origin along the centre line of the quad and stop anywhere on it.
The points take priority where an axis crosses one, so aiming at the centre gives you the exact centre rather than a point merely somewhere on the axis. Release Shift to place the origin freely again.