Architecture: list what is new since round 11, Home links Videos (#85)
Round 12 of the clean-up checked every page against the code. The paths the wiki names all exist, but Architecture had gaps. - Architecture names the folders and files added since round 11, among them core/recording/ and editor/composition/, and the new shared parts deviceParts, DeviceFace, TextPool, clipStrip and core/util/bytes. - Home links the Videos page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent
e33da8932d
commit
9a28ec8e2e
2 files changed
+75
-32
No files matched your search
+73
-31
@@ -130,10 +130,10 @@ web/index.html Vite source page (dev) index.html built page
|
|||||||
web/play.html a released game (#266) play.html built page (generated, served)
|
web/play.html a released game (#266) play.html built page (generated, served)
|
||||||
src/main.ts, play.ts the two entries; page.ts is the canvas both are (the WebGL context, root, resize)
|
src/main.ts, play.ts the two entries; page.ts is the canvas both are (the WebGL context, root, resize)
|
||||||
src/core/model/ Project (object holders), Asset + AssetTypes, SceneObject (and what a list calls one:
|
src/core/model/ Project (object holders), Asset + AssetTypes, SceneObject (and what a list calls one:
|
||||||
`objectName`, `groupName`), Properties (value types, and the walks over a nested value: `mapNested`, a struct field taken out or renamed), hierarchy, walk (generic parent/child walks), instance (container content resolved from its template), usages (where an asset is used), container (the cycle guard), placement (what may be dropped where), texture (frames, the slice grid, a frame's collision outlines, and the nine-slice and sort line of any picture, #308), cutTarget (which picture a nine-slice or sort line is set on: a texture frame, or pixel art and vector art as a whole, #308), frameOutline (#193: a frame's outlines as a collider wears them, centred, a pixel to a unit, cut into pieces once per drawn list), traceCollision (#161: a frame's outlines read off its picture — the pixels from an alpha threshold on are solid, each 4-connected island is walked round along the pixel edges and cut down to a few corners without ever crossing itself; crumbs below 1 % of the frame drop out), generated (pictures that are drawn rather than uploaded, #185: the key `gen:<assetId>@<revision>`, the register of readers that tell the picture path an asset's canvas size and revision, and the `fingerprint` pixel art and vector art make their revision with), vectorart (#129: the canvas as a property, which ring is worth drawing, and the revision as a fingerprint of the drawing rather than a counter, a texture fill's picture included) + vectorPath (what a shape draws, as plain commands: closed rings fill, every ring strokes, a segment is a line while neither of its ends carries a handle; a paint resolved to sorted stops or the picture it names) + vectorPaint (#186: gradients and texture fills — where a paint lies when it is switched on, the colour between two stops, adding, moving and removing a stop, a paint moved with its shape, and the rule that a texture fill takes uploaded pictures only) + vectorBoolean (#187: union, subtract, intersect and exclude on the sampled outlines, each shape read by the even-odd rule; the result rings in the order Pixi's hole detection needs, every outline followed by its holes and preceded by the islands inside them) + vectorCurves (#208: every sampled point remembers its cubic and its `t`, so a run of result points along one cubic becomes that cubic again, cut with de Casteljau), pixelart (#130: the palette a picture is painted in, how the layers of a frame come together, the sheet of all frames, a frame id read as a cut of it, and the revision) + pixelCel (the file of one layer on one frame, and its SHA-256 name worked out in the browser) + pixelDraw (what the tools do to the indices: brush, line, rectangle, ellipse, fill, resize about an anchor, merge, a palette colour taken out) + pixelEdit (every edit of layers, frames and cels as a function from one state to the next), polygon (an outline checked, cut into convex pieces and clipped to a rectangle), tile (the three kinds and their block shapes, reading a tile's pictures, the animation step), autotile (which quarter tile a neighbourhood asks for, the 47/16 tiles a block produces, 1 for a plain tile), tilemap (the cells of a layer, which neighbours a cell is joined to, the cells a stroke or a rectangle covers), tilemapCollision (the solid cells of a map, drawn in or out by their tile's collision scale and merged into rectangles, one group per one-way angle and per surface (`tileMaterials`, #193), the outlined cells as polygons — an autotile's outlines cut into its quarters and pieced together per cell like its picture —, where one sits in the world, and which cells of a placed map a world rectangle can reach, in cells (`cellsWithin`, #184)), tilemapMemo (what a map's cells work out to, kept while they hold the same: a version per cell map compared cell by cell, since strokes paint in place), animation (which frame at time t, a row's value there, what a row may aim at, the players on an object; KeyRef and its lookups) + animationPreview (the root at a frame, written into copies), curve (#247: a drawn easing evaluated at t — each segment a cubic solved for t by bisection, held to its rules by `sanitizedCurve`: ends at 0 and 1, no point overtaking another, no handle past its neighbour — and which keys and `Lerp` nodes use one) + curvePresets (the built-in eases traced as curves, a segment halved only where it strays), graphLookup (what a graph sees of the project: behaviors to run, state machines to read, curves to ease along), structTypes (#253: Struct assets as types — every typed struct variable, struct field and `Pack`/`Expand` found and brought in line with its asset, a renamed field carried through every value first, the cycle rule), Scope (how long a shared value lives: per instance, one for the run, or one per scene and rebuilt with every scene that loads, #164 — for a state machine's current state and for the values of a Variables asset), video (#402: a video or a clip of it by id, the stretch a clip Line truncated
|
`objectName`, `groupName`), Properties (value types, and the walks over a nested value: `mapNested`, a struct field taken out or renamed), hierarchy, walk (generic parent/child walks), instance (container content resolved from its template), usages (where an asset is used), container (the cycle guard), placement (what may be dropped where), texture (frames, the slice grid, a frame's collision outlines, and the nine-slice and sort line of any picture, #308), cutTarget (which picture a nine-slice or sort line is set on: a texture frame, or pixel art and vector art as a whole, #308), frameOutline (#193: a frame's outlines as a collider wears them, centred, a pixel to a unit, cut into pieces once per drawn list), traceCollision (#161: a frame's outlines read off its picture — the pixels from an alpha threshold on are solid, each 4-connected island is walked round along the pixel edges and cut down to a few corners without ever crossing itself; crumbs below 1 % of the frame drop out), generated (pictures that are drawn rather than uploaded, #185: the key `gen:<assetId>@<revision>`, the register of readers that tell the picture path an asset's canvas size and revision, and the `fingerprint` pixel art and vector art make their revision with), vectorart (#129: the canvas as a property, which ring is worth drawing, and the revision as a fingerprint of the drawing rather than a counter, a texture fill's picture included) + vectorPath (what a shape draws, as plain commands: closed rings fill, every ring strokes, a segment is a line while neither of its ends carries a handle; a paint resolved to sorted stops or the picture it names) + vectorPaint (#186: gradients and texture fills — where a paint lies when it is switched on, the colour between two stops, adding, moving and removing a stop, a paint moved with its shape, and the rule that a texture fill takes uploaded pictures only) + vectorBoolean (#187: union, subtract, intersect and exclude on the sampled outlines, each shape read by the even-odd rule; the result rings in the order Pixi's hole detection needs, every outline followed by its holes and preceded by the islands inside them) + vectorCurves (#208: every sampled point remembers its cubic and its `t`, so a run of result points along one cubic becomes that cubic again, cut with de Casteljau), pixelart (#130: the palette a picture is painted in, how the layers of a frame come together, the sheet of all frames, a frame id read as a cut of it, and the revision) + pixelCel (the file of one layer on one frame, and its SHA-256 name worked out in the browser) + pixelDraw (what the tools do to the indices: brush, line, rectangle, ellipse, fill, resize about an anchor, merge, a palette colour taken out) + pixelEdit (every edit of layers, frames and cels as a function from one state to the next), polygon (an outline checked, cut into convex pieces and clipped to a rectangle), tile (the three kinds and their block shapes, reading a tile's pictures, the animation step), autotile (which quarter tile a neighbourhood asks for, the 47/16 tiles a block produces, 1 for a plain tile), tilemap (the cells of a layer, which neighbours a cell is joined to, the cells a stroke or a rectangle covers), tilemapCollision (the solid cells of a map, drawn in or out by their tile's collision scale and merged into rectangles, one group per one-way angle and per surface (`tileMaterials`, #193), the outlined cells as polygons — an autotile's outlines cut into its quarters and pieced together per cell like its picture —, where one sits in the world, and which cells of a placed map a world rectangle can reach, in cells (`cellsWithin`, #184)), tilemapMemo (what a map's cells work out to, kept while they hold the same: a version per cell map compared cell by cell, since strokes paint in place), animation (which frame at time t, a row's value there, what a row may aim at, the players on an object; KeyRef and its lookups) + animationPreview (the root at a frame, written into copies), curve (#247: a drawn easing evaluated at t — each segment a cubic solved for t by bisection, held to its rules by `sanitizedCurve`: ends at 0 and 1, no point overtaking another, no handle past its neighbour — and which keys and `Lerp` nodes use one) + curvePresets (the built-in eases traced as curves, a segment halved only where it strays), graphLookup (what a graph sees of the project: behaviors to run, state machines to read, curves to ease along), structTypes (#253: Struct assets as types — every typed struct variable, struct field and `Pack`/`Expand` found and brought in line with its asset, a renamed field carried through every value first, the cycle rule), Scope (how long a shared value lives: per instance, one for the run, or one per scene and rebuilt with every scene that loads, #164 — for a state machine's current state and for the values of a Variables asset), video (#402: a video or a clip of it by id, the stretch a clip Line truncated
|
||||||
src/core/properties/ PropertySchema, kinds (one row per value kind), listItems (an item's kind, read off its value), resolve (the only override merge), deviation (what is gold), collider/camera/bounds geometry, clip (the region clip areas cut each object to, a convex polygon, #260) (with the side a one-way collider blocks from, and the rectangle around a shape a broad phase looks at first, #184), convex (capsules and polygons: rounded convex pieces against each other), ray (where a ray meets a shape, in double precision), rigidbody (what the engine reads off a rigidbody, a collider's material and the scene), joint (what it reads off a joint: its settings, where its far end is, its length and a hinge's limits, #154), aspect, enabled, editorRun, assetRef/textureRef (how a reference reads), declaredRows (the row a Property node declares in a shader or particle graph, and the params that node has in both)
|
src/core/properties/ PropertySchema, kinds (one row per value kind), listItems (an item's kind, read off its value), resolve (the only override merge), deviation (what is gold), collider/camera/bounds geometry, clip (the region clip areas cut each object to, a convex polygon, #260) (with the side a one-way collider blocks from, and the rectangle around a shape a broad phase looks at first, #184), convex (capsules and polygons: rounded convex pieces against each other), ray (where a ray meets a shape, in double precision), rigidbody (what the engine reads off a rigidbody, a collider's material and the scene), joint (what it reads off a joint: its settings, where its far end is, its length and a hinge's limits, #154), aspect, enabled, editorRun, assetRef/textureRef (how a reference reads), videos (#402/#404: a video's rows and a sprite's Video clock, time and volume), compositions (#417: a composition's rows, apart from its model), declaredRows (the row a Property node declares in a shader or particle graph, and the params that node has in both)
|
||||||
src/core/util/ list (take out, put back and move an item — what a command's undo is made of), vec (dot, the closest point on a segment — shared by the collider maths, the outline hit area and the polygon grips; a cubic Bezier at `t` and cut in two at `t` — shared by vector art, its Boolean operations and the curve grips), color (`mixColor`, channel by channel — keys of an animation, stops of a gradient, the particles' Mix colour), recorder (#253: assignments taken back last first — the undo of an edit whose reach is not known in advance)
|
src/core/util/ list (take out, put back and move an item — what a command's undo is made of), vec (dot, the closest point on a segment — shared by the collider maths, the outline hit area and the polygon grips; a cubic Bezier at `t` and cut in two at `t` — shared by vector art, its Boolean operations and the curve grips), color (`mixColor`, channel by channel — keys of an animation, stops of a gradient, the particles' Mix colour), recorder (#253: assignments taken back last first — the undo of an edit whose reach is not known in advance), bytes (`concatBytes`, shared by the Ogg and Matroska writers)
|
||||||
src/core/commands/ undoable commands (pixelArtCommands: one command runs any pixel art edit and keeps the state before it, #130), CommandStack, SetBagValueCommand base, RenameCommand base (undone by renaming back: variable, struct field, port), MoveCommand base (undone by moving back: tile picture, tilemap layer, vector shape), vectorArtCommands (#129: the shapes of a drawing, one gesture one command), one import command shape for texture/font/sound, require.ts (validated lookups, and what an instance may not change), naming.ts
|
src/core/commands/ undoable commands (pixelArtCommands: one command runs any pixel art edit and keeps the state before it, #130), CommandStack, SetBagValueCommand base, RenameCommand base (undone by renaming back: variable, struct field, port), MoveCommand base (undone by moving back: tile picture, tilemap layer, vector shape), vectorArtCommands (#129: the shapes of a drawing, one gesture one command), compositionCommands (#417: tracks, items and clips written whole once the pointer lets go, an item together with its object) + compositionSprites (#419: the sprites a composition keeps to itself, held to that after every edit), one import command shape for texture/font/sound, require.ts (validated lookups, and what an instance may not change), naming.ts
|
||||||
src/core/graph/ graph model, NodeRegistry/NodeContext/values (a travelling list may hold live objects, #157;
|
src/core/graph/ graph model, NodeRegistry/NodeContext/values (a travelling list may hold live objects, #157;
|
||||||
liveObjects' `withoutObjects` empties them on every way out of the run, #238), interpreter, dropTarget, nested (behaviors as nodes),
|
liveObjects' `withoutObjects` empties them on every way out of the run, #238), interpreter, dropTarget, nested (behaviors as nodes),
|
||||||
emitGraph (the walk both graph compilers share: each node once, in dependency order; cycles and property names reported),
|
emitGraph (the walk both graph compilers share: each node once, in dependency order; cycles and property names reported),
|
||||||
@@ -180,16 +180,29 @@ src/core/music/ time (ticks, 480 to the quarter, tempo and meter, a posit
|
|||||||
ogg (#340: Opus in Ogg, the pages around an encoder's packets and back, also read as
|
ogg (#340: Opus in Ogg, the pages around an encoder's packets and back, also read as
|
||||||
the bytes come in, #349), streams (#349: which names stream from which copy, which
|
the bytes come in, #349), streams (#349: which names stream from which copy, which
|
||||||
clips decode from their own, what copies are missing, how a played sound walks its copy) + streamQueue (#349: the
|
clips decode from their own, what copies are missing, how a played sound walks its copy) + streamQueue (#349: the
|
||||||
samples a streamed sound plays from on the worklet, read at the rate of the context)
|
samples a streamed sound plays from on the worklet, read at the rate of the context),
|
||||||
|
compositionAudio (#418: the audio items of a composition as sequences on the audio
|
||||||
|
clock, each on a bus of its own, its fades ramps of that bus' level)
|
||||||
|
src/core/recording/ recording (#405: what Start recording asks for and the rules a recording is made by —
|
||||||
|
size, name, H.264 profile, when a frame is taken, the steady pace of one not in real
|
||||||
|
time, #423), matroska (the `.mkv` writer: the encoders' frames and Opus packets in
|
||||||
|
clusters as they come, the head at the end) + avcColour (the colour written into
|
||||||
|
the stream's SPS, where a player that reads only the stream finds it),
|
||||||
|
editorRecording (main menu → Start recording…: what the dialog offers and the size
|
||||||
|
and sharpness a choice comes out at), cursors + cursors/ (the mouse pointer an editor
|
||||||
|
recording draws, one SVG per shape with its hot spot)
|
||||||
|
src/core/site.ts the path the site is served under (`/feuerwerk/`, #422) and the data paths built from it
|
||||||
src/core/soundfx/ the sound FX graph (#311): nodes (every effect and what it adds to a plan), compile (the
|
src/core/soundfx/ the sound FX graph (#311): nodes (every effect and what it adds to a plan), compile (the
|
||||||
graph walked back from the Output to a plan; a parameter stays open until a voice
|
graph walked back from the Output to a plan; a parameter stays open until a voice
|
||||||
starts; a tapped node gets a `tap` in front and behind, #374), parametricEq (#367:
|
starts; a tapped node gets a `tap` in front and behind, #374), parametricEq (#367:
|
||||||
the bands, the curve Web Audio plays of them, and its axes); the
|
the bands, the curve Web Audio plays of them, and its axes); the
|
||||||
effects the FX worklet runs, plain classes tested in Node: pitchPlayer (#317/#346, a
|
effects the FX worklet runs, plain classes tested in Node: pitchPlayer (#317/#346, a
|
||||||
phase vocoder), chip (#329), crusher (#322), phaser (#341: Phaser and Flanger),
|
phase vocoder), chip (#329), crusher (#322), phaser (#341: Phaser and Flanger),
|
||||||
dynamics (#326), lfo (#320: Tremolo and Vibrato); reverb (#328) and saturation (#323)
|
dynamics (#326), lfo (#320: Tremolo and Vibrato), acid (#421: the
|
||||||
|
Acid's saw or square through a resonant low-pass, sample by sample); reverb (#328) and saturation (#323)
|
||||||
for the Web Audio nodes that do theirs
|
for the Web Audio nodes that do theirs
|
||||||
src/core/instrument/ the instrument graph (#331): nodes (Notes, Sample, Parameters, Sound FX, Envelope),
|
src/core/instrument/ the instrument graph (#331): nodes (Notes, Sample, Parameters, Sound FX, Envelope,
|
||||||
|
Chip, Acid),
|
||||||
compile (one note walked back from the Output, its triggers and sources), notes (MIDI
|
compile (one note walked back from the Output, its triggers and sources), notes (MIDI
|
||||||
numbers and names), envelope (#335), chipPresets (#329: Preset, Randomize and Mutate the
|
numbers and names), envelope (#335), chipPresets (#329: Preset, Randomize and Mutate the
|
||||||
way sfxr makes its sounds)
|
way sfxr makes its sounds)
|
||||||
@@ -203,7 +216,11 @@ src/runtime/ GameRun (one run: start, tick, `Load scene` — shared by
|
|||||||
order, state changes and saves) + behaviorPulses (the pulses one frame's events send into an
|
order, state changes and saves) + behaviorPulses (the pulses one frame's events send into an
|
||||||
instance: keys, timers, collisions, finished animations) + behaviorContext (the `NodeContext`
|
instance: keys, timers, collisions, finished animations) + behaviorContext (the `NodeContext`
|
||||||
a node is handed: world, collisions and rays, physics, sound, the clock),
|
a node is handed: world, collisions and rays, physics, sound, the clock),
|
||||||
Audio (the AudioSink a run plays into — the counterpart of Input on the way out)
|
Audio (the AudioSink a run plays into — the counterpart of Input on the way out),
|
||||||
|
audioSwitch (#423: the run's sound goes to the live sink until a recording not in real
|
||||||
|
time diverts it into its own), CompositionSystem (#417: the compositions playing, the
|
||||||
|
objects of their items and the videos they drive) + compositionSound (#418: the sound
|
||||||
|
of one composition, started again where the picture is after a hitch)
|
||||||
src/runtime/physics/ engine (loads Rapier once, reports its state, converts between pixels and metres),
|
src/runtime/physics/ engine (loads Rapier once, reports its state, converts between pixels and metres),
|
||||||
PhysicsSystem (Play's collisions: one engine body per rigidbody, free collider and tilemap,
|
PhysicsSystem (Play's collisions: one engine body per rigidbody, free collider and tilemap,
|
||||||
the fixed step, the poses handed back, the contact pairs sorted into events and their
|
the fixed step, the poses handed back, the contact pairs sorted into events and their
|
||||||
@@ -217,7 +234,8 @@ src/runtime/physics/ engine (loads Rapier once, reports its state, converts be
|
|||||||
src/ui/ widget toolkit (generic, knows nothing about assets); fonts (the faces the editor ships:
|
src/ui/ widget toolkit (generic, knows nothing about assets); fonts (the faces the editor ships:
|
||||||
Source Sans 3 in 400, 500 and 600, Source Code Pro 400, Latin only, #202/#214/#273), icons +
|
Source Sans 3 in 400, 500 and 600, Source Code Pro 400, Latin only, #202/#214/#273), icons +
|
||||||
Icon (the menu's tick boxes and current-entry dot as SVG files, and a widget that shows one file
|
Icon (the menu's tick boxes and current-entry dot as SVG files, and a widget that shows one file
|
||||||
on its own: a symbol the Latin subset lacks is never written as a character, #214); SortableList + sortable (the layer list of every editor that has one: rows dragged into order, eye, duplicate, cross, rename in place; the index arithmetic of a list shown upside down, of a drop in the tile strip and of blocks of rows of any height, kept apart so it is measured without a canvas); blockDrag (`sortBlocks`: the inspector's own rows dragged into order by a `Grip` (the row's mark, wrapped: dots once it drags, lit under the pointer while the block is washed), a block being every row it covers, #310); Knob + knob (#378: a slider bent into a circle, its name above and a number field below, or a chrome dial of any size, #379; where a value sits on the turn and what a drag or the wheel makes of it, kept apart so it is measured without a canvas)
|
on its own: a symbol the Latin subset lacks is never written as a character, #214); SortableList + sortable (the layer list of every editor that has one: rows dragged into order, eye, duplicate, cross, rename in place; the index arithmetic of a list shown upside down, of a drop in the tile strip and of blocks of rows of any height, kept apart so it is measured without a canvas); blockDrag (`sortBlocks`: the inspector's own rows dragged into order by a `Grip` (the row's mark, wrapped: dots once it drags, lit under the pointer while the block is washed), a block being every row it covers, #310); TextPool (the texts of a ruler or a row of names: made as they are wanted, a text that
|
||||||
|
already shows a string keeps it, #360), download; Knob + knob (#378: a slider bent into a circle, its name above and a number field below, or a chrome dial of any size, #379; where a value sits on the turn and what a drag or the wheel makes of it, kept apart so it is measured without a canvas)
|
||||||
src/viewport/ WorldViewport (the drawing of a world or a holder, the base of every view; it draws from
|
src/viewport/ WorldViewport (the drawing of a world or a holder, the base of every view; it draws from
|
||||||
a `ViewSource` — the project and word of a change — so a released game draws without the
|
a `ViewSource` — the project and word of a change — so a released game draws without the
|
||||||
editor, #266; a view through a camera keeps only what that camera `Sees` and lays one
|
editor, #266; a view through a camera keeps only what that camera `Sees` and lays one
|
||||||
@@ -247,6 +265,14 @@ src/viewport/ WorldViewport (the drawing of a world or a holder, the ba
|
|||||||
the video has shown its first frame (`openVideo`), a clip sent back to its start at
|
the video has shown its first frame (`openVideo`), a clip sent back to its start at
|
||||||
its end, a run that starts every player over and hears it through the master, a
|
its end, a run that starts every player over and hears it through the master, a
|
||||||
player nobody asked for in 2 s let go) + the poster library of the video picker,
|
player nobody asked for in 2 s let go) + the poster library of the video picker,
|
||||||
|
videoFollow (#404: how a driven video keeps up with the time its wearer asks for, playing
|
||||||
|
at that speed and nudged, holding and seeking only where it stands or jumps) + videoSeek
|
||||||
|
(only the newest wish waits while a seek runs),
|
||||||
|
GameRecorder (#405: the game view recorded by a behavior — the picture read back from
|
||||||
|
the GPU, `PictureReader`, encoded in a `RecordingTake`, the sound from a tap of the
|
||||||
|
master or, not in real time, from `SteadySound` on an offline context, #423) +
|
||||||
|
backgroundBeat + backgroundTimers + timerWorker (a recording goes on behind another
|
||||||
|
tab: a worker's beat ticks the editor and a worker's timers keep their pace),
|
||||||
PixelCels (the pixels of pixel art in memory: a painted cel is named at once, the ones the
|
PixelCels (the pixels of pixel art in memory: a painted cel is named at once, the ones the
|
||||||
server lacks are uploaded before a save, #130) + pixelArtPicture (every frame composed on the
|
server lacks are uploaded before a save, #130) + pixelArtPicture (every frame composed on the
|
||||||
CPU and laid side by side onto one canvas, so a frame is cut out like a texture frame),
|
CPU and laid side by side onto one canvas, so a frame is cut out like a texture frame),
|
||||||
@@ -304,7 +330,7 @@ src/editor/ App → Editor (layout + ticker), PlaySession (the run),
|
|||||||
the commands are `core/commands/groupCommands`),
|
the commands are `core/commands/groupCommands`),
|
||||||
debugHook (installs `window.__gm`;
|
debugHook (installs `window.__gm`;
|
||||||
the hooks are grouped by area in debug/: ui, scene, graph, documents, pixel art, vector art,
|
the hooks are grouped by area in debug/: ui, scene, graph, documents, pixel art, vector art,
|
||||||
render — `tools/` sees one flat object as before),
|
render, sound, pattern, song, routing, bake, video, curve — `tools/` sees one flat object),
|
||||||
textProbe (finding widgets by their text — the ground floor of the test hook, shared with the sign-in screen),
|
textProbe (finding widgets by their text — the ground floor of the test hook, shared with the sign-in screen),
|
||||||
auth/LoginScreen + auth/PasswordDialog + auth/loginRules + auth/FormStatus (the sign-in screen and the change-password dialog in the canvas, what either may complain about, and the warning line and busy state both show, #177/#182), autosave,
|
auth/LoginScreen + auth/PasswordDialog + auth/loginRules + auth/FormStatus (the sign-in screen and the change-password dialog in the canvas, what either may complain about, and the warning line and busy state both show, #177/#182), autosave,
|
||||||
polygonEdit (points of an outline: what is under the pointer, whether a point is inside,
|
polygonEdit (points of an outline: what is under the pointer, whether a point is inside,
|
||||||
@@ -318,6 +344,10 @@ src/editor/ App → Editor (layout + ticker), PlaySession (the run),
|
|||||||
the video one shows a conversion on its way and asks again until it is done, #402),
|
the video one shows a conversion on its way and asks again until it is done, #402),
|
||||||
video/ (#402: VideoEditor + VideoCanvas, the Video tab — preview, ruler, clip strip and
|
video/ (#402: VideoEditor + VideoCanvas, the Video tab — preview, ruler, clip strip and
|
||||||
track on the time axis of the Sound tab's `waveView`; videoInfo, what a video is in words),
|
track on the time axis of the Sound tab's `waveView`; videoInfo, what a video is in words),
|
||||||
|
EditorRecorder + EditorRecordingDialog + editorRecordingSettings + recordingUploads
|
||||||
|
(main menu → Start recording…: the whole editor recorded with the pointer drawn in,
|
||||||
|
the last choice kept in the browser, the file's way into the project),
|
||||||
|
editorCursors (the editor's pointer from the files a recording draws),
|
||||||
framing (fit/marquee/snap maths), FormDialog (the small modal forms: label column, Cancel + confirm, one open at a time; `dialogButtons` is the closing row every dialog shares, the pickers' included), AssetTabEditor (the shared shell of the asset tabs), TabHeader (the bar across the top of a tab — asset tabs, the plugins and accounts lists, NodeBoard; drawn by `drawHeaderBar` like the toolbar and the breadcrumb),
|
framing (fit/marquee/snap maths), FormDialog (the small modal forms: label column, Cancel + confirm, one open at a time; `dialogButtons` is the closing row every dialog shares, the pickers' included), AssetTabEditor (the shared shell of the asset tabs), TabHeader (the bar across the top of a tab — asset tabs, the plugins and accounts lists, NodeBoard; drawn by `drawHeaderBar` like the toolbar and the breadcrumb),
|
||||||
TabStrip + tabRow (the tab row and what it does when the tabs outgrow it; plugin tabs are inserted at run time),
|
TabStrip + tabRow (the tab row and what it does when the tabs outgrow it; plugin tabs are inserted at run time),
|
||||||
assetTabs (which asset kind opens into which tab, and so which kind has an editor at all),
|
assetTabs (which asset kind opens into which tab, and so which kind has an editor at all),
|
||||||
@@ -360,7 +390,7 @@ src/editor/inspector/ Inspector panel, host (what a section builds into, and `e
|
|||||||
every variable), shapeSection (the shapes of a vector drawing: the list, the four order
|
every variable), shapeSection (the shapes of a vector drawing: the list, the four order
|
||||||
buttons and the style of the picked one, #129; Fill type and Line type with the stop bar,
|
buttons and the style of the picked one, #129; Fill type and Line type with the stop bar,
|
||||||
the picked stop's rows or the texture, #186), portSection, aspectAction,
|
the picked stop's rows or the texture, #186), portSection, aspectAction,
|
||||||
objectQueries/vectorRows/parentRow, cutSection (the Nine-slice and Sorting rows, shared by the frame and the drawing inspectors, #308),
|
objectQueries/vectorRows/parentRow, cutSection (the Nine-slice and Sorting rows, shared by the frame and the drawing inspectors, #308), compositionSection (#417: a track, an item with its timing and audio, a clip),
|
||||||
SpritePreview (a sprite as `syncSpriteMesh` draws it in the scene) + previewFit (whole device
|
SpritePreview (a sprite as `syncSpriteMesh` draws it in the scene) + previewFit (whole device
|
||||||
pixels per unit, the corner on one)
|
pixels per unit, the corner on one)
|
||||||
src/editor/panels/ AssetPanel, assetGroups (the categories, the type groups in them and their order, #176), assetIcons (one SVG per
|
src/editor/panels/ AssetPanel, assetGroups (the categories, the type groups in them and their order, #176), assetIcons (one SVG per
|
||||||
@@ -404,6 +434,11 @@ src/editor/vectorart/ VectorArtEditor (header: the three tools, the picked poin
|
|||||||
src/editor/animation/ AnimationEditor (header, preview over timeline), PreviewCanvas (the root at the playhead, a FreeViewport
|
src/editor/animation/ AnimationEditor (header, preview over timeline), PreviewCanvas (the root at the playhead, a FreeViewport
|
||||||
over animationPreview.ts), TimelineCanvas (rows, keys, ruler, clipboard), timelineView (its geometry),
|
over animationPreview.ts), TimelineCanvas (rows, keys, ruler, clipboard), timelineView (its geometry),
|
||||||
RowDialog + FramesDialog (FormDialogs)
|
RowDialog + FramesDialog (FormDialogs)
|
||||||
|
src/editor/composition/ CompositionEditor (#417: header with Add track and Play, the picture above the timeline),
|
||||||
|
CompositionCanvas (what is alive at the playhead, drawn and edited like a container's
|
||||||
|
template), CompositionTimeline (heads, ruler, items and clips in one widget, assets
|
||||||
|
dropped in, the gestures and keys) + compositionView (its geometry, the Song tab's with
|
||||||
|
frames for ticks)
|
||||||
src/editor/curve/ CurveEditor (header: Preset, the picked point's type, Preview, #247), CurveCanvas (the curve as a
|
src/editor/curve/ CurveEditor (header: Preset, the picked point's type, Preview, #247), CurveCanvas (the curve as a
|
||||||
graph drawn from curveValue, points and handles edited with the vector art gestures, the
|
graph drawn from curveValue, points and handles edited with the vector art gestures, the
|
||||||
preview dot and its rail) + curveView (the curve laid onto a picture for those gestures and
|
preview dot and its rail) + curveView (the curve laid onto a picture for those gestures and
|
||||||
@@ -414,7 +449,8 @@ src/editor/pattern/ PatternEditor (header: Play, Grid, Bake; plays through th
|
|||||||
src/editor/music/ timeView (the time axis: ticks to pixels, zoom, the lines of bars, beats and grid) + TimeRuler
|
src/editor/music/ timeView (the time axis: ticks to pixels, zoom, the lines of bars, beats and grid) + TimeRuler
|
||||||
(bars, loop, start and playhead) — for the piano roll and the song tab — + transport (one
|
(bars, loop, start and playhead) — for the piano roll and the song tab — + transport (one
|
||||||
piece plays at a time: a song or a pattern, #334) + BakeButton (#340: bakes the pattern
|
piece plays at a time: a song or a pattern, #334) + BakeButton (#340: bakes the pattern
|
||||||
or song shown, lit while its bake holds)
|
or song shown, lit while its bake holds) + dropWhenSaved (a file a bake or a stream copy
|
||||||
|
left behind, deleted once no saved project names it)
|
||||||
src/editor/song/ SongEditor (header: Play, Grid, Bake; plays through the scheduler, sets the tracks' buses and
|
src/editor/song/ SongEditor (header: Play, Grid, Bake; plays through the scheduler, sets the tracks' buses and
|
||||||
follows edits, #334), SongTimeline (heads, ruler and lanes in one widget, dropping assets
|
follows edits, #334), SongTimeline (heads, ruler and lanes in one widget, dropping assets
|
||||||
in, the gestures and keys) + songView (its geometry: tracks, items and their ends, the
|
in, the gestures and keys) + songView (its geometry: tracks, items and their ends, the
|
||||||
@@ -423,7 +459,8 @@ src/editor/song/ SongEditor (header: Play, Grid, Bake; plays through the s
|
|||||||
the level meters of the heads), TakeMeter (#342: the input's level while recording),
|
the level meters of the heads), TakeMeter (#342: the input's level while recording),
|
||||||
ownFx (#355: a sound FX the song keeps for a song, a track or an item)
|
ownFx (#355: a sound FX the song keeps for a song, a track or an item)
|
||||||
src/editor/sound/ SoundEditor (#343: header with Play, the clip's direction and fades), WaveCanvas (the
|
src/editor/sound/ SoundEditor (#343: header with Play, the clip's direction and fades), WaveCanvas (the
|
||||||
waveform, the clips as bands, the cut) + waveView (its time axis), SoundPreview (play
|
waveform, the clips as bands, the cut) + waveView (its time axis) + clipStrip (the
|
||||||
|
clips' names in their bands, shared with the Video tab), SoundPreview (play
|
||||||
and length in the inspector), SoundPicker (the "+ → Sound" rows with their play mark),
|
and length in the inspector), SoundPicker (the "+ → Sound" rows with their play mark),
|
||||||
StreamKeeper (#349: the copies streamed sounds and every clip play from, made in the
|
StreamKeeper (#349: the copies streamed sounds and every clip play from, made in the
|
||||||
browser and let go once no longer wanted)
|
browser and let go once no longer wanted)
|
||||||
@@ -439,24 +476,26 @@ src/editor/soundfx/ SoundFxEditor (#311: the graph, a sound to try it on, Pla
|
|||||||
ratio to drag, and the levels in and out tinted where it squeezes), CompressorPanel +
|
ratio to drag, and the levels in and out tinted where it squeezes), CompressorPanel +
|
||||||
hardwareView (#379: the Compressor as a device, its meter, LEDs and plate worked
|
hardwareView (#379: the Compressor as a device, its meter, LEDs and plate worked
|
||||||
out apart from the drawing), CompressorFace + nodeFaces (#380: the panel as what a
|
out apart from the drawing), CompressorFace + nodeFaces (#380: the panel as what a
|
||||||
Compressor node shows in the graph, #381 the EQ's as well), KnobPanel + KnobFace (#384:
|
Compressor node shows in the graph, #381 the EQ's as well), deviceParts (what every
|
||||||
the Gain as an orange plate with one knob, `drawPlate` shared with the Compressor;
|
device is built of: the brushed plate and its engraved names, a row of chrome knobs
|
||||||
#390 the Pitch in green and the Mix in blue with a lever, #392 the Pan in cyan,
|
with their captions, the bezel, lamps, levers and type buttons) + deviceFace (what
|
||||||
each a `KnobDevice`),
|
every face does with its node: finds it, tells what a link feeds, turns a knob as
|
||||||
|
one undo step, hears its tap, loads its sound's picture), KnobPanel + KnobFace (#384:
|
||||||
|
the Gain as an orange plate with one knob; #390 the Pitch in green and the Mix in
|
||||||
|
blue with a lever, #392 the Pan in cyan, each a `KnobDevice`),
|
||||||
ChipPanel + ChipFace + chipView (#386: the Chip of an instrument as a device, its
|
ChipPanel + ChipFace + chipView (#386: the Chip of an instrument as a device, its
|
||||||
wave and its pitch over a note worked out apart from the drawing, the
|
wave and its pitch over a note worked out apart from the drawing), EnvelopePanel +
|
||||||
Compressor's `Lever` for "follow note"), EnvelopePanel + EnvelopeFace + envelopeView
|
EnvelopeFace + envelopeView (#388: the Envelope as a device, its curve over a note
|
||||||
(#388: the Envelope as a device, its curve over a note with squeezed time worked
|
with squeezed time worked out apart from the drawing), ReverbPanel + ReverbFace +
|
||||||
out apart from the drawing), ReverbPanel + ReverbFace + reverbView (#389: the
|
reverbView (#389: the Reverb as a device, its tail as rings on a round screen
|
||||||
Reverb as a device, its tail as rings on a round screen worked out apart from
|
worked out apart from the drawing), DelayPanel + DelayFace + delayView (#393: the
|
||||||
the drawing), DelayPanel + DelayFace + delayView (#393: the Delay as a device,
|
Delay as a device, its echoes as bars on a screen and the light that runs over them
|
||||||
its echoes as bars on a screen and the light that runs over them at their beat
|
at their beat worked out apart from the drawing), SaturationPanel +
|
||||||
worked out apart from the drawing), SaturationPanel + SaturationFace +
|
SaturationFace + saturationView (#396: the Saturation as a device, the wave a sine
|
||||||
saturationView (#396: the Saturation as a device, the wave a sine comes out as
|
comes out as and the heat it glows with worked out apart from the drawing),
|
||||||
and the heat it glows with worked out apart from the drawing; its type buttons
|
LimiterPanel + LimiterFace + limiterView (#397: the Limiter as a device, what it
|
||||||
are the Reverb's `PickButton`), LimiterPanel + LimiterFace + limiterView (#397:
|
takes away read from its taps and caught from the start of a sound, held once it
|
||||||
the Limiter as a device, what it takes away read from its taps and caught from
|
ends, worked out apart from the drawing),
|
||||||
the start of a sound, held once it ends, worked out apart from the drawing),
|
|
||||||
ModulationPanel + ModulationFace + modulationView (#398: the Tremolo, the
|
ModulationPanel + ModulationFace + modulationView (#398: the Tremolo, the
|
||||||
Vibrato, the Phaser and the Flanger as one kind of device, the volume or the
|
Vibrato, the Phaser and the Flanger as one kind of device, the volume or the
|
||||||
pitch over time, or the response with a lane of where it goes, worked out
|
pitch over time, or the response with a lane of where it goes, worked out
|
||||||
@@ -467,7 +506,10 @@ src/editor/soundfx/ SoundFxEditor (#311: the graph, a sound to try it on, Pla
|
|||||||
SamplePanel + SampleFace + sampleView (#400: the Sample as a device, the
|
SamplePanel + SampleFace + sampleView (#400: the Sample as a device, the
|
||||||
waveform of its sound or clip from the library's peaks, cut into what is
|
waveform of its sound or clip from the library's peaks, cut into what is
|
||||||
played once, looped, played after the note and never heard, worked out
|
played once, looped, played after the note and never heard, worked out
|
||||||
apart from the drawing),
|
apart from the drawing), AcidPanel + AcidFace + acidView (#421: the Acid as
|
||||||
|
a device, the filter where it rests and at the top of a note's sweep),
|
||||||
|
`knobGroups` in hardwareView (the row of grouped small knobs the Chip, the Delay
|
||||||
|
and the Acid share),
|
||||||
nodeParamDrag (a knob's drag as one undo step, for the tab and the
|
nodeParamDrag (a knob's drag as one undo step, for the tab and the
|
||||||
node, several settings at once since #389), nodeTabs (which nodes open a tab of
|
node, several settings at once since #389), nodeTabs (which nodes open a tab of
|
||||||
their own)
|
their own)
|
||||||
|
|||||||
+2
-1
@@ -23,9 +23,10 @@ Live: <https://nockal.com/feuerwerk/> · Widget playground: <https://nockal.com/
|
|||||||
| [Pixel art](Pixel-Art) | The pixel art asset and its palette, the tools, layers and frames, onion skin and the preview, resizing, how frames are worn and where the pixels are stored |
|
| [Pixel art](Pixel-Art) | The pixel art asset and its palette, the tools, layers and frames, onion skin and the preview, resizing, how frames are worn and where the pixels are stored |
|
||||||
| [Fonts](Fonts) | Uploading a typeface, what a text wears, what the editor falls back to |
|
| [Fonts](Fonts) | Uploading a typeface, what a text wears, what the editor falls back to |
|
||||||
| [Sounds](Sounds) | Uploading a sound, what the asset says, its tab, the cut and clips, `Play sound` and `Stop sound`, buses, the master and the Master routing, sound FX and their nodes (filters, EQs, delay, reverb, dynamics, modulation, Bitcrusher) and how long a voice rings on, what a pause and a stop do to a voice |
|
| [Sounds](Sounds) | Uploading a sound, what the asset says, its tab, the cut and clips, `Play sound` and `Stop sound`, buses, the master and the Master routing, sound FX and their nodes (filters, EQs, delay, reverb, dynamics, modulation, Bitcrusher) and how long a voice rings on, what a pause and a stop do to a voice |
|
||||||
| [Instruments](Instruments) | The instrument asset: Notes, Sample, Parameters, Sound FX, Envelope and Output, triggers, zones and layers, the keys of the Instrument tab, `Play note` |
|
| [Instruments](Instruments) | The instrument asset: Notes, Sample, Parameters, Sound FX, Envelope, Chip, Acid and Output, triggers, zones and layers, the keys of the Instrument tab, `Play note` |
|
||||||
| [Patterns](Patterns) | The pattern asset and its piano roll: drawing, moving and sizing notes, the grid, the ruler with start and loop, velocities, playing it in a loop |
|
| [Patterns](Patterns) | The pattern asset and its piano roll: drawing, moving and sizing notes, the grid, the ruler with start and loop, velocities, playing it in a loop |
|
||||||
| [Songs](Songs) | The song asset: tracks with volume, pan, mute and solo, pattern and sound items laid out, moved, cut and split, its routing, recording a take, embedded assets, playing it in a loop and from a game |
|
| [Songs](Songs) | The song asset: tracks with volume, pan, mute and solo, pattern and sound items laid out, moved, cut and split, its routing, recording a take, embedded assets, playing it in a loop and from a game |
|
||||||
|
| [Videos](Videos) | Getting a video in and converted, the Video tab and its clips, wearing one on a sprite, an animation driving it, recording the game view and the whole editor |
|
||||||
| [Animations](Animations) | Animation assets, the Animation tab, how they run |
|
| [Animations](Animations) | Animation assets, the Animation tab, how they run |
|
||||||
| [Curves](Curves) | Easings drawn by hand, the Curve tab, using one on a key or a `Lerp` |
|
| [Curves](Curves) | Easings drawn by hand, the Curve tab, using one on a key or a `Lerp` |
|
||||||
| [Tiles](Tiles) | The tile asset, plain tiles and the two autotile kinds, the pictures as animation steps, the Tile tab |
|
| [Tiles](Tiles) | The tile asset, plain tiles and the two autotile kinds, the pictures as animation steps, the Tile tab |
|
||||||
|
|||||||
Reference in new issue
Block a user