@tomorrowevening/hermes 0.1.40 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,9 @@
1
- import { Color as g, ColorManagement as l, WebGPURenderer as f, RenderTarget as E, WebGLRenderTarget as S } from "three/webgpu";
2
- import b from "./BaseRemote.js";
3
- import { stripObject as u, getSubItem as C, setItemProps as R, textureFromSrc as m, stripScene as o } from "../../editor/sidePanel/utils.js";
4
- import { clamp as T } from "../../utils/math.js";
5
- import { dispose as v, hierarchyUUID as h, ExportTexture as c, resetThreeObjects as p } from "../../utils/three.js";
6
- var O = /* @__PURE__ */ ((i) => (i.CUSTOM = "ToolEvents::custom", i.SELECT_DROPDOWN = "ToolEvents::selectDropdown", i.DRAG_UPDATE = "ToolEvents::dragUpdate", i.ADD_SCENE = "ToolEvents::addScene", i.REFRESH_SCENE = "ToolEvents::refreshScene", i.REMOVE_SCENE = "ToolEvents::removeScene", i.SET_SCENE = "ToolEvents::setScene", i.SET_OBJECT = "ToolEvents::setObject", i.CLEAR_OBJECT = "ToolEvents::clearObject", i.ADD_CAMERA = "ToolEvents::addCamera", i.REMOVE_CAMERA = "ToolEvents::removeCamera", i.ADD_GROUP = "ToolEvents::addGroup", i.REMOVE_GROUP = "ToolEvents::removeGroup", i.ADD_SPLINE = "ToolEvents::addSpline", i.ADD_RENDERER = "ToolEvents::addRenderer", i.UPDATE_RENDERER = "ToolEvents::updateRenderer", i))(O || {});
7
- class A extends b {
1
+ import { Color as l, ColorManagement as p, WebGPURenderer as g, RenderTarget as v, WebGLRenderTarget as f } from "three/webgpu";
2
+ import E from "./BaseRemote.js";
3
+ import { clamp as S } from "../../utils/math.js";
4
+ import { dispose as u, hierarchyUUID as o, ExportTexture as h, resetThreeObjects as c } from "../../utils/three.js";
5
+ var b = /* @__PURE__ */ ((a) => (a.CUSTOM = "ToolEvents::custom", a.SELECT_DROPDOWN = "ToolEvents::selectDropdown", a.DRAG_UPDATE = "ToolEvents::dragUpdate", a.ADD_SCENE = "ToolEvents::addScene", a.REFRESH_SCENE = "ToolEvents::refreshScene", a.REMOVE_SCENE = "ToolEvents::removeScene", a.SET_SCENE = "ToolEvents::setScene", a.SET_OBJECT = "ToolEvents::setObject", a.CLEAR_OBJECT = "ToolEvents::clearObject", a.ADD_CAMERA = "ToolEvents::addCamera", a.REMOVE_CAMERA = "ToolEvents::removeCamera", a.ADD_GROUP = "ToolEvents::addGroup", a.REMOVE_GROUP = "ToolEvents::removeGroup", a.ADD_SPLINE = "ToolEvents::addSpline", a.ADD_RENDERER = "ToolEvents::addRenderer", a.UPDATE_RENDERER = "ToolEvents::updateRenderer", a))(b || {});
6
+ class O extends E {
8
7
  name;
9
8
  canvas = null;
10
9
  // Canvas or OffscreenCanvas
@@ -18,13 +17,17 @@ class A extends b {
18
17
  renderTargetsResize = /* @__PURE__ */ new Map();
19
18
  groups = /* @__PURE__ */ new Map();
20
19
  _listeners = {};
20
+ editorUtils;
21
21
  constructor(e, t = !1, r = !1) {
22
22
  super("RemoteThree", t, r), this.name = e;
23
23
  }
24
+ setEditorUtils(e) {
25
+ this.editorUtils = e;
26
+ }
24
27
  dispose() {
25
28
  this.scenes.forEach((e) => {
26
- v(e);
27
- }), this.scenes.clear(), this.scene && v(this.scene), this.renderTargets.forEach((e) => {
29
+ u(e);
30
+ }), this.scenes.clear(), this.scene && u(this.scene), this.renderTargets.forEach((e) => {
28
31
  e.dispose();
29
32
  }), this.renderTargets.clear(), this.renderer?.dispose();
30
33
  }
@@ -53,8 +56,8 @@ class A extends b {
53
56
  const r = t[e.type];
54
57
  if (r !== void 0) {
55
58
  const s = { ...e, target: this }, d = r.slice(0);
56
- for (let a = 0, n = d.length; a < n; a++)
57
- d[a].call(this, s);
59
+ for (let i = 0, n = d.length; i < n; i++)
60
+ d[i].call(this, s);
58
61
  }
59
62
  }
60
63
  // Objects
@@ -68,22 +71,27 @@ class A extends b {
68
71
  }
69
72
  getObject(e) {
70
73
  if (!this.debug) return;
71
- this.renderer !== void 0 && (c.renderer = this.renderer);
74
+ this.renderer !== void 0 && (h.renderer = this.renderer);
72
75
  const t = this.getObjectByUUID(e);
73
76
  t && this.setObject(t);
74
77
  }
75
78
  setObject(e) {
76
- this.renderer !== void 0 && (c.renderer = this.renderer);
77
- const t = u(e);
79
+ if (!this.editorUtils) return;
80
+ this.renderer !== void 0 && (h.renderer = this.renderer);
81
+ const t = this.editorUtils.stripObject(e);
78
82
  this.dispatchEvent({ type: "ToolEvents::setObject", value: t });
79
83
  }
80
84
  requestMethod(e, t, r, s) {
81
85
  const d = this.getObjectByUUID(e);
82
86
  if (d)
83
87
  try {
84
- s !== void 0 ? C(d, s)[t](r) : d[t](r);
85
- } catch (a) {
86
- console.log("Hermes - Error requesting method:", e, t, r), console.log(a);
88
+ if (s !== void 0) {
89
+ const i = this.editorUtils?.getSubItem(d, s);
90
+ i !== void 0 && i[t](r);
91
+ } else
92
+ d[t](r);
93
+ } catch (i) {
94
+ console.log("Hermes - Error requesting method:", e, t, r), console.log(i);
87
95
  }
88
96
  }
89
97
  updateObject(e, t, r) {
@@ -112,34 +120,35 @@ class A extends b {
112
120
  }
113
121
  onUpdateObject(e, t, r) {
114
122
  const s = this.getObjectByUUID(e);
115
- s && R(s, t, r);
123
+ s && this.editorUtils?.setItemProps(s, t, r);
116
124
  }
117
125
  onCreateTexture(e, t, r) {
126
+ if (!this.editorUtils) return;
118
127
  const s = this.getObjectByUUID(e);
119
128
  if (s) {
120
- const d = (a) => {
129
+ const d = (i) => {
121
130
  const n = t.split(".");
122
131
  switch (n.length) {
123
132
  case 1:
124
- s[n[0]] = a;
133
+ s[n[0]] = i;
125
134
  break;
126
135
  case 2:
127
- s[n[0]][n[1]] = a;
136
+ s[n[0]][n[1]] = i;
128
137
  break;
129
138
  case 3:
130
- s[n[0]][n[1]][n[2]] = a;
139
+ s[n[0]][n[1]][n[2]] = i;
131
140
  break;
132
141
  case 4:
133
- s[n[0]][n[1]][n[2]][n[3]] = a;
142
+ s[n[0]][n[1]][n[2]][n[3]] = i;
134
143
  break;
135
144
  case 5:
136
- s[n[0]][n[1]][n[2]][n[3]][n[4]] = a;
145
+ s[n[0]][n[1]][n[2]][n[3]][n[4]] = i;
137
146
  break;
138
147
  }
139
148
  s.material.needsUpdate = !0;
140
149
  };
141
- r.src.length > 0 ? m(r.src).then((a) => {
142
- a.offset.set(r.offset[0], r.offset[1]), a.repeat.set(r.repeat[0], r.repeat[1]), d(a);
150
+ r.src.length > 0 ? this.editorUtils.textureFromSrc(r.src).then((i) => {
151
+ i.offset.set(r.offset[0], r.offset[1]), i.repeat.set(r.repeat[0], r.repeat[1]), d(i);
143
152
  }) : d(null);
144
153
  }
145
154
  }
@@ -189,7 +198,7 @@ class A extends b {
189
198
  // Renderer
190
199
  setRenderer(e, t = null) {
191
200
  if (this.renderer = e, this.canvas = e.domElement, this.inputElement = t !== null ? t : this.canvas, !this.debug) return;
192
- const r = `#${e.getClearColor(new g()).getHexString()}`;
201
+ const r = `#${e.getClearColor(new l()).getHexString()}`;
193
202
  this.send({
194
203
  event: "addRenderer",
195
204
  target: "editor",
@@ -198,7 +207,7 @@ class A extends b {
198
207
  outputColorSpace: e.outputColorSpace,
199
208
  clearColor: r,
200
209
  clearAlpha: e.getClearAlpha(),
201
- colorManagement: l.enabled,
210
+ colorManagement: p.enabled,
202
211
  toneMapping: e.toneMapping,
203
212
  toneMappingExposure: e.toneMappingExposure,
204
213
  type: e.isWebGLRenderer ? "WebGLRenderer" : "WebGPURenderer"
@@ -214,9 +223,9 @@ class A extends b {
214
223
  }
215
224
  // Scenes
216
225
  addScene(e) {
217
- if (e === void 0 || (this.scenes.set(e.name, e), !this.debug)) return;
218
- p(), h(e);
219
- const t = o(e);
226
+ if (e === void 0 || (this.scenes.set(e.name, e), !this.debug || !this.editorUtils)) return;
227
+ c(), o(e);
228
+ const t = this.editorUtils.stripScene(e);
220
229
  this.send({
221
230
  event: "addScene",
222
231
  target: "editor",
@@ -224,10 +233,10 @@ class A extends b {
224
233
  });
225
234
  }
226
235
  refreshScene(e) {
227
- if (!this.debug) return;
236
+ if (!this.debug || !this.editorUtils) return;
228
237
  const t = this.scenes.get(e);
229
238
  if (t !== void 0) {
230
- const r = o(t);
239
+ const r = this.editorUtils.stripScene(t);
231
240
  this.send({
232
241
  event: "refreshScene",
233
242
  target: "app",
@@ -236,8 +245,8 @@ class A extends b {
236
245
  }
237
246
  }
238
247
  removeScene(e) {
239
- if (e === void 0 || (this.scenes.delete(e.name), !this.debug)) return;
240
- const t = o(e);
248
+ if (e === void 0 || (this.scenes.delete(e.name), !this.debug || !this.editorUtils)) return;
249
+ const t = this.editorUtils.stripScene(e);
241
250
  this.send({
242
251
  event: "removeScene",
243
252
  target: "editor",
@@ -254,9 +263,9 @@ class A extends b {
254
263
  }), t);
255
264
  }
256
265
  setScene(e) {
257
- if (e === void 0 || (this.scene = e, !this.debug)) return;
258
- this.renderer !== void 0 && (c.renderer = this.renderer), p(), h(e);
259
- const t = o(e);
266
+ if (e === void 0 || (this.scene = e, !this.debug || !this.editorUtils)) return;
267
+ this.renderer !== void 0 && (h.renderer = this.renderer), c(), o(e);
268
+ const t = this.editorUtils.stripScene(e);
260
269
  this.send({
261
270
  event: "setScene",
262
271
  target: "editor",
@@ -283,8 +292,8 @@ class A extends b {
283
292
  }
284
293
  // Cameras
285
294
  addCamera(e) {
286
- if (!this.debug) return;
287
- const t = u(e);
295
+ if (!this.debug || !this.editorUtils) return;
296
+ const t = this.editorUtils.stripObject(e);
288
297
  this.send({
289
298
  event: "addCamera",
290
299
  target: "editor",
@@ -292,8 +301,8 @@ class A extends b {
292
301
  });
293
302
  }
294
303
  removeCamera(e) {
295
- if (!this.debug) return;
296
- const t = u(e);
304
+ if (!this.debug || !this.editorUtils) return;
305
+ const t = this.editorUtils.stripObject(e);
297
306
  this.send({
298
307
  event: "removeCamera",
299
308
  target: "editor",
@@ -303,18 +312,18 @@ class A extends b {
303
312
  handleApp(e) {
304
313
  switch (e.event) {
305
314
  case "refreshScene":
306
- this.send({
315
+ this.editorUtils && this.send({
307
316
  event: "refreshScene",
308
317
  target: "editor",
309
- data: o(this.scenes.get(e.data.name))
318
+ data: this.editorUtils.stripScene(this.scenes.get(e.data.name))
310
319
  });
311
320
  break;
312
321
  case "updateRenderer":
313
- this.renderer && (this.renderer.autoClearColor = e.data.autoClearColor, this.renderer.outputColorSpace = e.data.outputColorSpace, this.renderer.setClearColor(e.data.clearColor, e.data.clearAlpha), this.renderer.toneMapping = e.data.toneMapping, this.renderer.toneMappingExposure = e.data.toneMappingExposure, l.enabled = e.data.colorManagement);
322
+ this.renderer && (this.renderer.autoClearColor = e.data.autoClearColor, this.renderer.outputColorSpace = e.data.outputColorSpace, this.renderer.setClearColor(e.data.clearColor, e.data.clearAlpha), this.renderer.toneMapping = e.data.toneMapping, this.renderer.toneMappingExposure = e.data.toneMappingExposure, p.enabled = e.data.colorManagement);
314
323
  break;
315
324
  case "requestRenderer":
316
325
  if (this.renderer !== void 0) {
317
- const t = `#${this.renderer.getClearColor(new g()).getHexString()}`;
326
+ const t = `#${this.renderer.getClearColor(new l()).getHexString()}`;
318
327
  this.send({
319
328
  event: "addRenderer",
320
329
  target: "editor",
@@ -323,7 +332,7 @@ class A extends b {
323
332
  outputColorSpace: this.renderer.outputColorSpace,
324
333
  clearColor: t,
325
334
  clearAlpha: this.renderer.getClearAlpha(),
326
- colorManagement: l.enabled,
335
+ colorManagement: p.enabled,
327
336
  toneMapping: this.renderer.toneMapping,
328
337
  toneMappingExposure: this.renderer.toneMappingExposure,
329
338
  type: this.renderer.isWebGLRenderer ? "WebGLRenderer" : "WebGPURenderer"
@@ -332,17 +341,17 @@ class A extends b {
332
341
  }
333
342
  break;
334
343
  case "requestScene":
335
- this.scenes.forEach((t) => {
336
- p(), h(t), this.send({
344
+ this.editorUtils && (this.scenes.forEach((t) => {
345
+ c(), o(t), this.send({
337
346
  event: "addScene",
338
347
  target: "editor",
339
- data: o(t)
348
+ data: this.editorUtils.stripScene(t)
340
349
  });
341
- }), this.scene !== void 0 && (this.renderer !== void 0 && (c.renderer = this.renderer), p(), h(this.scene), this.send({
350
+ }), this.scene !== void 0 && (this.renderer !== void 0 && (h.renderer = this.renderer), c(), o(this.scene), this.send({
342
351
  event: "setScene",
343
352
  target: "editor",
344
- data: o(this.scene)
345
- }));
353
+ data: this.editorUtils.stripScene(this.scene)
354
+ })));
346
355
  break;
347
356
  }
348
357
  if (e.event === "updateGroup") {
@@ -410,21 +419,21 @@ class A extends b {
410
419
  addRT(e, t = !0, r) {
411
420
  if (!this.renderer) return;
412
421
  let s;
413
- this.renderer instanceof f ? s = new E(32, 32, r) : s = new S(32, 32, r), s.texture.name = e, this.renderTargets.set(e, s), this.renderTargetsResize.set(e, t);
422
+ this.renderer instanceof g ? s = new v(32, 32, r) : s = new f(32, 32, r), s.texture.name = e, this.renderTargets.set(e, s), this.renderTargetsResize.set(e, t);
414
423
  }
415
424
  removeRT(e) {
416
425
  this.renderTargets.delete(e), this.renderTargetsResize.delete(e);
417
426
  }
418
427
  resize(e, t) {
419
428
  const r = this.dpr;
420
- this.renderTargets.forEach((d, a) => {
421
- this.renderTargetsResize.get(a) && d.setSize(e * r, t * r);
429
+ this.renderTargets.forEach((d, i) => {
430
+ this.renderTargetsResize.get(i) && d.setSize(e * r, t * r);
422
431
  });
423
432
  const s = !(this.renderer?.domElement instanceof OffscreenCanvas);
424
433
  this.renderer?.setSize(e, t, s);
425
434
  }
426
435
  set dpr(e) {
427
- this.renderer?.setPixelRatio(T(1, 2, e));
436
+ this.renderer?.setPixelRatio(S(1, 2, e));
428
437
  }
429
438
  get dpr() {
430
439
  return this.renderer !== void 0 ? this.renderer?.getPixelRatio() : 1;
@@ -437,6 +446,6 @@ class A extends b {
437
446
  }
438
447
  }
439
448
  export {
440
- O as ToolEvents,
441
- A as default
449
+ b as ToolEvents,
450
+ O as default
442
451
  };
@@ -1,11 +1,14 @@
1
- import { jsxs as t, jsx as n } from "react/jsx-runtime";
2
- import r from "./Editor.js";
3
- import i from "./multiView/MultiView.js";
4
- import o from "./sidePanel/SidePanel.js";
5
- function f(e) {
6
- return /* @__PURE__ */ t(r, { children: [
7
- /* @__PURE__ */ n(
8
- i,
1
+ import { jsxs as r, jsx as t } from "react/jsx-runtime";
2
+ import { useEffect as i } from "react";
3
+ import n from "./Editor.js";
4
+ import o from "./multiView/MultiView.js";
5
+ import c from "./sidePanel/SidePanel.js";
6
+ import { textureFromSrc as m, setItemProps as d, getSubItem as s, stripScene as S, stripObject as f } from "./sidePanel/utils.js";
7
+ const h = { stripObject: f, stripScene: S, getSubItem: s, setItemProps: d, textureFromSrc: m };
8
+ function I(e) {
9
+ return i(() => (e.three.setEditorUtils(h), () => e.three.setEditorUtils(void 0)), [e.three]), /* @__PURE__ */ r(n, { children: [
10
+ /* @__PURE__ */ t(
11
+ o,
9
12
  {
10
13
  three: e.three,
11
14
  scenes: e.scenes,
@@ -14,9 +17,9 @@ function f(e) {
14
17
  onSceneUpdate: e.onSceneUpdate
15
18
  }
16
19
  ),
17
- /* @__PURE__ */ n(o, { three: e.three })
20
+ /* @__PURE__ */ t(c, { three: e.three })
18
21
  ] });
19
22
  }
20
23
  export {
21
- f as default
24
+ I as default
22
25
  };