Skip to content

Commit 254d1a6

Browse files
committed
Add whole-module addon for webgpu, prevent duplicate addon registers
1 parent abe3cd8 commit 254d1a6

File tree

4 files changed

+65
-17
lines changed

4 files changed

+65
-17
lines changed

src/core/main.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,9 +172,16 @@ class p5 {
172172
return this._renderer.drawingContext;
173173
}
174174

175+
static _registeredAddons = new Set();
175176
static registerAddon(addon) {
176177
const lifecycles = {};
177178

179+
// Don't re-register an addon. This allows addons
180+
// to register dependency addons without worrying about
181+
// them getting double-added.
182+
if (p5._registeredAddons.has(addon)) return;
183+
p5._registeredAddons.add(addon);
184+
178185
addon(p5, p5.prototype, lifecycles);
179186

180187
const validLifecycles = Object.keys(p5.lifecycleHooks);

src/webgl/index.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,21 @@ import rendererGL from './p5.RendererGL';
1717
import strands from '../strands/p5.strands';
1818

1919
export default function(p5){
20-
rendererGL(p5, p5.prototype);
21-
primitives3D(p5, p5.prototype);
22-
interaction(p5, p5.prototype);
23-
light(p5, p5.prototype);
24-
loading(p5, p5.prototype);
25-
material(p5, p5.prototype);
26-
text(p5, p5.prototype);
27-
renderBuffer(p5, p5.prototype);
28-
quat(p5, p5.prototype);
29-
matrix(p5, p5.prototype);
30-
geometry(p5, p5.prototype);
31-
camera(p5, p5.prototype);
32-
framebuffer(p5, p5.prototype);
33-
dataArray(p5, p5.prototype);
34-
shader(p5, p5.prototype);
35-
texture(p5, p5.prototype);
36-
strands(p5, p5.prototype);
20+
p5.registerAddon(rendererGL);
21+
p5.registerAddon(primitives3D);
22+
p5.registerAddon(interaction);
23+
p5.registerAddon(light);
24+
p5.registerAddon(loading);
25+
p5.registerAddon(material);
26+
p5.registerAddon(text);
27+
p5.registerAddon(renderBuffer);
28+
p5.registerAddon(quat);
29+
p5.registerAddon(matrix);
30+
p5.registerAddon(geometry);
31+
p5.registerAddon(camera);
32+
p5.registerAddon(framebuffer);
33+
p5.registerAddon(dataArray);
34+
p5.registerAddon(shader);
35+
p5.registerAddon(texture);
36+
p5.registerAddon(strands);
3737
}

src/webgpu/index.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import primitives3D from '../webgl/3d_primitives';
2+
import interaction from '../webgl/interaction';
3+
import light from '../webgl/light';
4+
import loading from '../webgl/loading';
5+
import material from '../webgl/material';
6+
import text from '../webgl/text';
7+
import renderBuffer from '../webgl/p5.RenderBuffer';
8+
import quat from '../webgl/p5.Quat';
9+
import matrix from '../math/p5.Matrix';
10+
import geometry from '../webgl/p5.Geometry';
11+
import framebuffer from '../webgl/p5.Framebuffer';
12+
import dataArray from '../webgl/p5.DataArray';
13+
import shader from '../webgl/p5.Shader';
14+
import camera from '../webgl/p5.Camera';
15+
import texture from '../webgl/p5.Texture';
16+
import rendererGL from '../webgl/p5.RendererGL';
17+
import strands from '../strands/p5.strands';
18+
19+
export default function(p5){
20+
p5.registerAddon(rendererGL);
21+
p5.registerAddon(primitives3D);
22+
p5.registerAddon(interaction);
23+
p5.registerAddon(light);
24+
p5.registerAddon(loading);
25+
p5.registerAddon(material);
26+
p5.registerAddon(text);
27+
p5.registerAddon(renderBuffer);
28+
p5.registerAddon(quat);
29+
p5.registerAddon(matrix);
30+
p5.registerAddon(geometry);
31+
p5.registerAddon(camera);
32+
p5.registerAddon(framebuffer);
33+
p5.registerAddon(dataArray);
34+
p5.registerAddon(shader);
35+
p5.registerAddon(texture);
36+
p5.registerAddon(strands);
37+
}

src/webgpu/p5.RendererWebGPU.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1939,3 +1939,7 @@ function rendererWebGPU(p5, fn) {
19391939

19401940
export default rendererWebGPU;
19411941
export { RendererWebGPU };
1942+
1943+
if (typeof p5 !== "undefined") {
1944+
rendererWebGPU(p5, p5.prototype);
1945+
}

0 commit comments

Comments
 (0)