Three stores, three importers and three pickers that differ only in their type are one of each (#85)
Refactoring round one: HttpFontStore/HttpSoundStore/HttpTextureStore collapse into a generic HttpFileStore over a FileStore contract; fontImport/soundImport/textureImport share assetImport with an ImportKind per sort; ImagePicker/FontPicker/SoundPicker sit on FilePicker and describe only their row. The group/comment drag logic leaves GraphCanvas for annotationDrag.ts (with its own unit test), declaredRows.ts replaces the duplicated row build in particles.ts and shaders.ts, and dead code in font/sound/compile/emission/transform/actions is gone. README: asset list, check count 958, the two-job CI, the Scenes wiki page. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
15bdfdf07a
commit
cc6db5f350
42 files changed
+1375
-1650
No files matched your search
@@ -38,18 +38,6 @@ export interface ParticlesBuild {
|
||||
reason: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* What the motion depends on and nothing else: node ids, types, params and declared ports, and
|
||||
* which port feeds which. Positions and folding are the editor's, so a moved node does not compile
|
||||
* again – the same rule the shader fingerprint follows (#65).
|
||||
*/
|
||||
export function particlesFingerprint(graph: Graph): string {
|
||||
return JSON.stringify({
|
||||
nodes: graph.nodes.map((n) => [n.id, n.type, n.params, n.ports ?? null]),
|
||||
edges: graph.edges.map((e) => [e.from.node, e.from.port, e.to.node, e.to.port]),
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* A particle graph to one function per output: every node reachable from the Output becomes one
|
||||
* local per output, in dependency order, so a node feeding two others is evaluated once per
|
||||
|
||||
Reference in new issue
Block a user