@realsee/vreo 2.6.4-alpha.5 → 3.0.0-webgpu-react18.8

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.
Files changed (174) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +6 -6
  3. package/lib/PlayController/createHTMLAudioElement.d.ts +1 -0
  4. package/lib/PlayController/createHTMLAudioElement.d.ts.map +1 -0
  5. package/lib/PlayController/index.d.ts +14 -24
  6. package/lib/PlayController/index.d.ts.map +1 -0
  7. package/lib/PlayController/index.js +74 -210
  8. package/lib/PlayController/index.js.map +1 -0
  9. package/lib/Player/App.d.ts +2 -2
  10. package/lib/Player/App.d.ts.map +1 -0
  11. package/lib/Player/Controller.d.ts +11 -6
  12. package/lib/Player/Controller.d.ts.map +1 -0
  13. package/lib/Player/PlaybackLifecycle.d.ts +1 -0
  14. package/lib/Player/PlaybackLifecycle.d.ts.map +1 -0
  15. package/lib/Player/custom/SpatialScenePanel/index.d.ts +2 -2
  16. package/lib/Player/custom/SpatialScenePanel/index.d.ts.map +1 -0
  17. package/lib/Player/hooks.d.ts +3 -2
  18. package/lib/Player/hooks.d.ts.map +1 -0
  19. package/lib/Player/index.d.ts +3 -2
  20. package/lib/Player/index.d.ts.map +1 -0
  21. package/lib/Player/index.js +1769 -430
  22. package/lib/Player/index.js.map +1 -0
  23. package/lib/Player/modules/Drawer/index.d.ts +2 -2
  24. package/lib/Player/modules/Drawer/index.d.ts.map +1 -0
  25. package/lib/Player/modules/PopUp/index.d.ts +2 -2
  26. package/lib/Player/modules/PopUp/index.d.ts.map +1 -0
  27. package/lib/Player/modules/ResizeObserver/index.d.ts +2 -2
  28. package/lib/Player/modules/ResizeObserver/index.d.ts.map +1 -0
  29. package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +5 -2
  30. package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts.map +1 -0
  31. package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +8 -5
  32. package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts.map +1 -0
  33. package/lib/Player/modules/VideoAgent/index.d.ts +11 -2
  34. package/lib/Player/modules/VideoAgent/index.d.ts.map +1 -0
  35. package/lib/Player/modules/Wave/index.d.ts +2 -2
  36. package/lib/Player/modules/Wave/index.d.ts.map +1 -0
  37. package/lib/Player/modules/keyframes/BgMusic/index.d.ts +2 -2
  38. package/lib/Player/modules/keyframes/BgMusic/index.d.ts.map +1 -0
  39. package/lib/Player/modules/keyframes/CameraMovement/index.d.ts +2 -2
  40. package/lib/Player/modules/keyframes/CameraMovement/index.d.ts.map +1 -0
  41. package/lib/Player/modules/keyframes/InfoPanel/index.d.ts +2 -2
  42. package/lib/Player/modules/keyframes/InfoPanel/index.d.ts.map +1 -0
  43. package/lib/Player/modules/keyframes/ModelVideo/index.d.ts +2 -2
  44. package/lib/Player/modules/keyframes/ModelVideo/index.d.ts.map +1 -0
  45. package/lib/Player/modules/keyframes/PanoEffect/index.d.ts +2 -2
  46. package/lib/Player/modules/keyframes/PanoEffect/index.d.ts.map +1 -0
  47. package/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts +3 -2
  48. package/lib/Player/modules/keyframes/PanoEffect/lineAnime.d.ts.map +1 -0
  49. package/lib/Player/modules/keyframes/PanoTag/index.d.ts +1 -0
  50. package/lib/Player/modules/keyframes/PanoTag/index.d.ts.map +1 -0
  51. package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts +2 -2
  52. package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts.map +1 -0
  53. package/lib/Player/modules/keyframes/Prompter/index.d.ts +2 -2
  54. package/lib/Player/modules/keyframes/Prompter/index.d.ts.map +1 -0
  55. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts +2 -2
  56. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.d.ts.map +1 -0
  57. package/lib/Player/modules/keyframes/VideoEffect/index.d.ts +2 -2
  58. package/lib/Player/modules/keyframes/VideoEffect/index.d.ts.map +1 -0
  59. package/lib/Player/playback-types.d.ts +1 -0
  60. package/lib/Player/playback-types.d.ts.map +1 -0
  61. package/lib/Player/typings.d.ts +2 -1
  62. package/lib/Player/typings.d.ts.map +1 -0
  63. package/lib/chunks/index-BgPSzRSs.js +93 -0
  64. package/lib/chunks/index-BgPSzRSs.js.map +1 -0
  65. package/lib/chunks/index-CunyJn6H.js +51 -0
  66. package/lib/chunks/index-CunyJn6H.js.map +1 -0
  67. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts +2 -1
  68. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts.map +1 -0
  69. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts +5 -6
  70. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts.map +1 -0
  71. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts +1 -0
  72. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts.map +1 -0
  73. package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts +5 -22
  74. package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts.map +1 -0
  75. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts +2 -1
  76. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts.map +1 -0
  77. package/lib/fivePlugins/CameraMovementPlugin/index.d.ts +2 -1
  78. package/lib/fivePlugins/CameraMovementPlugin/index.d.ts.map +1 -0
  79. package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts +2 -1
  80. package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts.map +1 -0
  81. package/lib/fivePlugins/ModelTVVideoPlugin/index.d.ts +2 -1
  82. package/lib/fivePlugins/ModelTVVideoPlugin/index.d.ts.map +1 -0
  83. package/lib/index.d.ts +3 -0
  84. package/lib/index.d.ts.map +1 -0
  85. package/lib/index.js +12 -1
  86. package/lib/index.js.map +1 -0
  87. package/lib/plugins/CSS3DRenderPlugin.js +115 -0
  88. package/lib/plugins/CSS3DRenderPlugin.js.map +1 -0
  89. package/lib/plugins/CameraMovementPlugin.js +6 -0
  90. package/lib/plugins/CameraMovementPlugin.js.map +1 -0
  91. package/lib/plugins/ModelTVVideoPlugin.js +162 -0
  92. package/lib/plugins/ModelTVVideoPlugin.js.map +1 -0
  93. package/lib/react/index.d.ts +5 -4
  94. package/lib/react/index.d.ts.map +1 -0
  95. package/lib/react/index.js +39 -226
  96. package/lib/react/index.js.map +1 -0
  97. package/lib/shared-utils/Audio.d.ts +3 -1
  98. package/lib/shared-utils/Audio.d.ts.map +1 -0
  99. package/lib/shared-utils/AudioLike.d.ts +2 -1
  100. package/lib/shared-utils/AudioLike.d.ts.map +1 -0
  101. package/lib/shared-utils/Preloader.d.ts +1 -0
  102. package/lib/shared-utils/Preloader.d.ts.map +1 -0
  103. package/lib/shared-utils/addResizeListener.d.ts +2 -1
  104. package/lib/shared-utils/addResizeListener.d.ts.map +1 -0
  105. package/lib/shared-utils/animationFrame/BetterTween.d.ts +1 -0
  106. package/lib/shared-utils/animationFrame/BetterTween.d.ts.map +1 -0
  107. package/lib/shared-utils/animationFrame/index.d.ts +5 -14
  108. package/lib/shared-utils/animationFrame/index.d.ts.map +1 -0
  109. package/lib/shared-utils/animationFrame/tween.d.ts +1 -0
  110. package/lib/shared-utils/animationFrame/tween.d.ts.map +1 -0
  111. package/lib/shared-utils/createTransMatrix.d.ts +3 -1
  112. package/lib/shared-utils/createTransMatrix.d.ts.map +1 -0
  113. package/lib/shared-utils/getFileExpandedName.d.ts +1 -0
  114. package/lib/shared-utils/getFileExpandedName.d.ts.map +1 -0
  115. package/lib/shared-utils/getMediaInfo.d.ts +1 -0
  116. package/lib/shared-utils/getMediaInfo.d.ts.map +1 -0
  117. package/lib/shared-utils/setElementDataset.d.ts +1 -0
  118. package/lib/shared-utils/setElementDataset.d.ts.map +1 -0
  119. package/lib/timeline/index.d.ts +18 -0
  120. package/lib/timeline/index.d.ts.map +1 -0
  121. package/lib/types/index.js +10 -0
  122. package/lib/types/index.js.map +1 -0
  123. package/lib/typings/VreoUnit.d.ts +2 -1
  124. package/lib/typings/VreoUnit.d.ts.map +1 -0
  125. package/lib/typings/index.d.ts +1 -0
  126. package/lib/typings/index.d.ts.map +1 -0
  127. package/package.json +51 -71
  128. package/lib/PlayController/createHTMLAudioElement.js +0 -30
  129. package/lib/Player/App.js +0 -52
  130. package/lib/Player/Controller.js +0 -530
  131. package/lib/Player/PlaybackLifecycle.js +0 -117
  132. package/lib/Player/custom/SpatialScenePanel/index.js +0 -263
  133. package/lib/Player/hooks.js +0 -22
  134. package/lib/Player/modules/Drawer/index.js +0 -39
  135. package/lib/Player/modules/PopUp/index.js +0 -23
  136. package/lib/Player/modules/ResizeObserver/index.js +0 -22
  137. package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +0 -445
  138. package/lib/Player/modules/VideoAgent/VideoAgentScene.js +0 -53
  139. package/lib/Player/modules/VideoAgent/index.js +0 -72
  140. package/lib/Player/modules/Wave/index.js +0 -171
  141. package/lib/Player/modules/keyframes/BgMusic/index.js +0 -65
  142. package/lib/Player/modules/keyframes/CameraMovement/index.js +0 -73
  143. package/lib/Player/modules/keyframes/InfoPanel/index.js +0 -170
  144. package/lib/Player/modules/keyframes/ModelVideo/index.js +0 -126
  145. package/lib/Player/modules/keyframes/PanoEffect/index.js +0 -99
  146. package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +0 -30
  147. package/lib/Player/modules/keyframes/PanoTag/index.js +0 -110
  148. package/lib/Player/modules/keyframes/PanoTextLabel/index.js +0 -122
  149. package/lib/Player/modules/keyframes/Prompter/index.js +0 -56
  150. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +0 -98
  151. package/lib/Player/modules/keyframes/VideoEffect/index.js +0 -152
  152. package/lib/Player/playback-types.js +0 -1
  153. package/lib/Player/typings.js +0 -1
  154. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +0 -4
  155. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +0 -25
  156. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +0 -4
  157. package/lib/fivePlugins/CSS3DRenderPlugin/index.js +0 -226
  158. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +0 -8
  159. package/lib/fivePlugins/CameraMovementPlugin/index.js +0 -238
  160. package/lib/fivePlugins/CameraMovementPlugin/typings.js +0 -15
  161. package/lib/fivePlugins/ModelTVVideoPlugin/index.js +0 -347
  162. package/lib/shared-utils/Audio.js +0 -147
  163. package/lib/shared-utils/AudioLike.js +0 -120
  164. package/lib/shared-utils/Preloader.js +0 -37
  165. package/lib/shared-utils/addResizeListener.js +0 -39
  166. package/lib/shared-utils/animationFrame/BetterTween.js +0 -56
  167. package/lib/shared-utils/animationFrame/index.js +0 -52
  168. package/lib/shared-utils/animationFrame/tween.js +0 -56
  169. package/lib/shared-utils/createTransMatrix.js +0 -12
  170. package/lib/shared-utils/getFileExpandedName.js +0 -6
  171. package/lib/shared-utils/getMediaInfo.js +0 -54
  172. package/lib/shared-utils/setElementDataset.js +0 -16
  173. package/lib/typings/VreoUnit.js +0 -171
  174. package/lib/typings/index.js +0 -1
@@ -0,0 +1,115 @@
1
+ import * as D from "three/webgpu";
2
+ import { Vector3 as l, Scene as T } from "three/webgpu";
3
+ import { CSS3DObject as W, CSS3DRenderer as L } from "three/addons/renderers/CSS3DRenderer.js";
4
+ function g(s, t) {
5
+ const r = Math.round(s);
6
+ return r % 2 === 0 ? r : r + (t != null && t.smaller ? -1 : 1);
7
+ }
8
+ function j(s, t) {
9
+ return new l((s.x + t.x) / 2, (s.y + t.y) / 2, (s.z + t.z) / 2);
10
+ }
11
+ const H = ({ x: s, y: t, z: r }) => new l(s, t, r);
12
+ function M(s, t) {
13
+ let r = !1;
14
+ if (!t || typeof ResizeObserver > "u")
15
+ return {
16
+ observe() {
17
+ r || (r = !0, window.addEventListener("resize", s));
18
+ },
19
+ unobserve() {
20
+ r && (r = !1, window.removeEventListener("resize", s));
21
+ },
22
+ disconnect() {
23
+ r && (r = !1, window.removeEventListener("resize", s));
24
+ }
25
+ };
26
+ const E = new ResizeObserver(s);
27
+ return {
28
+ observe() {
29
+ r || (r = !0, E.observe(t));
30
+ },
31
+ unobserve() {
32
+ r && (r = !1, E.unobserve(t));
33
+ },
34
+ disconnect() {
35
+ r = !1, E.disconnect();
36
+ }
37
+ };
38
+ }
39
+ const q = (s) => {
40
+ const t = { disposers: /* @__PURE__ */ new Set() }, r = (i, p) => {
41
+ const e = new T(), d = new L(), u = () => d.setSize(
42
+ g(p.clientWidth, { smaller: !0 }),
43
+ g(p.clientHeight, { smaller: !0 })
44
+ );
45
+ u();
46
+ const v = M(u, p);
47
+ d.domElement.style.position = "absolute", d.domElement.style.top = "0", d.domElement.style.userSelect = "none", d.domElement.style.pointerEvents = "none", i.appendChild(d.domElement);
48
+ let a = !1, m;
49
+ const f = {
50
+ scene: e,
51
+ renderer: d,
52
+ entries: /* @__PURE__ */ new Set(),
53
+ start() {
54
+ if (a) return;
55
+ a = !0, v.observe();
56
+ const b = () => {
57
+ a && (d.render(e, s.camera), m = requestAnimationFrame(b));
58
+ };
59
+ b();
60
+ },
61
+ stop() {
62
+ a && (a = !1, m !== void 0 && cancelAnimationFrame(m), m = void 0, v.unobserve());
63
+ },
64
+ dispose() {
65
+ f.stop(), v.disconnect(), d.domElement.remove();
66
+ }
67
+ };
68
+ return f;
69
+ }, E = (...i) => {
70
+ const p = i[0].map((h) => h instanceof l ? h : H(h)), e = i[1];
71
+ if (p.length < 4) return console.error("points must be equal or greater than 4");
72
+ if (!s.model.loaded) return console.error("five.model.loaded is false");
73
+ const d = s.getElement();
74
+ if (!d) return console.error("five.getElement() is empty");
75
+ const u = (e == null ? void 0 : e.ratio) ?? 216e-5;
76
+ u <= 215e-5 && console.warn("if you need click css3DElement on safari, ratio must be greater than 0.00215");
77
+ const v = (e == null ? void 0 : e.dpr) ?? 1, a = (e == null ? void 0 : e.mode) ?? "front", m = (e == null ? void 0 : e.autoRender) ?? !0, f = (e == null ? void 0 : e.container) ?? document.createElement("div");
78
+ f.classList.add("__Dnalogel-plugin--CSS3DRenderPlugin");
79
+ const { css3DObject: b, mesh: n } = O(p, { ratio: u, dpr: v, container: f, mode: a });
80
+ let o = a === "behind" ? t.behind : t.front;
81
+ if (!o) {
82
+ const h = a === "behind" ? (e == null ? void 0 : e.behindFiveContainer) ?? d.parentElement ?? document.body : d.parentElement ?? document.body;
83
+ o = r(h, d), a === "behind" ? t.behind = o : t.front = o;
84
+ }
85
+ const c = {};
86
+ o.entries.add(c);
87
+ let y = !1, z = !1;
88
+ const x = () => {
89
+ z || y || (y = !0, o.scene.add(b), n && s.scene.add(n), o.start());
90
+ }, S = () => {
91
+ z || (z = !0, t.disposers.delete(S), o.entries.delete(c), y && (o.scene.remove(b), n && s.scene.remove(n)), n == null || n.geometry.dispose(), n == null || n.material.dispose(), o.scene.children.length === 0 && o.stop(), o.entries.size === 0 && (o.dispose(), a === "behind" && t.behind === o && (t.behind = void 0), a === "front" && t.front === o && (t.front = void 0)));
92
+ };
93
+ return t.disposers.add(S), m && x(), { container: f, dispose: S, css3DObject: b, render: m ? void 0 : x };
94
+ }, O = (i, p) => {
95
+ const { ratio: e, dpr: d, container: u, mode: v } = p, a = i[0].distanceTo(i[1]), m = i[1].distanceTo(i[2]), f = g(a / e * d), b = g(m / e * d), n = new W(u);
96
+ n.scale.set(e, e, e), u.style.width = f + "px", u.style.height = b + "px", u.style.pointerEvents = "none";
97
+ const o = j(i[0], i[2]), c = i[1].clone().sub(i[0]), y = i[2].clone().sub(i[1]), z = new l(0, 1, 0).angleTo(new l(0, y.y, y.z)), x = new l(1, 0, 0).angleTo(new l(c.x, 0, c.z)), S = c.angleTo(new l(c.x, 0, c.z)), h = (y.z > 0 ? -1 : 1) * z, R = (c.z < 0 ? 1 : -1) * x, A = (c.x > 0 && c.y < 0 || c.x < 0 && c.y > 0 ? -1 : 1) * S;
98
+ n.rotateOnWorldAxis(new l(1, 0, 0), h), n.rotateOnWorldAxis(new l(0, 1, 0), R), n.rotateOnWorldAxis(new l(0, 0, 1), A), n.position.set(o.x, o.y, o.z);
99
+ let w;
100
+ if (v === "behind") {
101
+ const P = new D.MeshBasicNodeMaterial({ opacity: 0, transparent: !1, side: D.DoubleSide }), C = new D.PlaneGeometry(f, b);
102
+ w = new D.Mesh(C, P), w.name = "CSS3DRenderPlugin-mesh", w.position.copy(n.position), w.rotation.copy(n.rotation), w.scale.copy(n.scale);
103
+ }
104
+ return { css3DObject: n, mesh: w };
105
+ };
106
+ return {
107
+ create3DDomContainer: E,
108
+ disposeAll: () => [...t.disposers].forEach((i) => i())
109
+ };
110
+ };
111
+ export {
112
+ q as CSS3DRenderPlugin,
113
+ q as default
114
+ };
115
+ //# sourceMappingURL=CSS3DRenderPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CSS3DRenderPlugin.js","sources":["../../resources/fivePlugins/CSS3DRenderPlugin/evenNumber.ts","../../resources/fivePlugins/CSS3DRenderPlugin/centerPoint.ts","../../resources/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.ts","../../resources/fivePlugins/CSS3DRenderPlugin/createResizeObserver.ts","../../resources/fivePlugins/CSS3DRenderPlugin/index.ts"],"sourcesContent":["export default function evenNumber(num: number, config?: { smaller?: boolean }): number {\n const roundNum = Math.round(num)\n return roundNum % 2 === 0 ? roundNum : roundNum + Number(config?.smaller ? -1 : 1)\n}\n","import { Vector3 } from 'three/webgpu'\n\nexport default function centerPoint(point1: Vector3, point2: Vector3): Vector3 {\n return new Vector3((point1.x + point2.x) / 2, (point1.y + point2.y) / 2, (point1.z + point2.z) / 2)\n}\n","import { Vector3 } from 'three/webgpu'\n\nconst transformPositionToVector3 = ({ x, y, z }: { x: number; y: number; z: number }) => new Vector3(x, y, z)\n\nexport default transformPositionToVector3\n","export default function createResizeObserver(callback: () => void, element?: HTMLElement) {\n let observing = false\n if (!element || typeof ResizeObserver === 'undefined') {\n return {\n observe() {\n if (observing) return\n observing = true\n window.addEventListener('resize', callback)\n },\n unobserve() {\n if (!observing) return\n observing = false\n window.removeEventListener('resize', callback)\n },\n disconnect() {\n if (!observing) return\n observing = false\n window.removeEventListener('resize', callback)\n },\n }\n }\n\n const observer = new ResizeObserver(callback)\n return {\n observe() {\n if (observing) return\n observing = true\n observer.observe(element)\n },\n unobserve() {\n if (!observing) return\n observing = false\n observer.unobserve(element)\n },\n disconnect() {\n observing = false\n observer.disconnect()\n },\n }\n}\n","import { FivePlugin } from '@realsee/five-webgpu'\nimport * as THREE from 'three/webgpu'\nimport { Scene, Vector3 } from 'three/webgpu'\nimport { CSS3DObject, CSS3DRenderer } from 'three/addons/renderers/CSS3DRenderer.js'\nimport evenNumber from './evenNumber'\nimport centerPoint from './centerPoint'\nimport transformPositionToVector3 from './transformPositionToVector3'\nimport createResizeObserver from './createResizeObserver'\n\nexport interface Vector3Position {\n x: number\n y: number\n z: number\n}\n\nexport type CSS3DRenderPluginParameterType = undefined\nexport interface CSS3DRenderPluginExportType {\n create3DDomContainer: (\n points: Vector3[] | Vector3Position[],\n config?: { ratio?: number; dpr?: number; autoRender?: boolean; container?: HTMLElement; [key: string]: any } & (\n | { mode?: 'front' }\n | { mode: 'behind'; behindFiveContainer: HTMLElement }\n ),\n ) => { container: HTMLElement; dispose: () => void; css3DObject: CSS3DObject; render?: () => void } | void\n disposeAll: () => void\n}\n\ntype CreateContainer = CSS3DRenderPluginExportType['create3DDomContainer']\ntype CreateContainerConfig = NonNullable<Parameters<CreateContainer>[1]>\ninterface RenderLayer {\n scene: Scene\n renderer: CSS3DRenderer\n entries: Set<object>\n start: () => void\n stop: () => void\n dispose: () => void\n}\ninterface CSS3DRenderPluginState {\n disposers: Set<() => void>\n front?: RenderLayer\n behind?: RenderLayer\n}\n\n/** Renders DOM overlays in a Five scene. One renderer is shared by each front/behind layer. */\nexport const CSS3DRenderPlugin: FivePlugin<CSS3DRenderPluginParameterType, CSS3DRenderPluginExportType> = (five) => {\n const state: CSS3DRenderPluginState = { disposers: new Set() }\n\n const createLayer = (wrapper: HTMLElement, fiveElement: HTMLElement): RenderLayer => {\n const scene = new Scene()\n const renderer = new CSS3DRenderer()\n const setSize = () => renderer.setSize(\n evenNumber(fiveElement.clientWidth, { smaller: true }),\n evenNumber(fiveElement.clientHeight, { smaller: true }),\n )\n setSize()\n const resize = createResizeObserver(setSize, fiveElement)\n renderer.domElement.style.position = 'absolute'\n renderer.domElement.style.top = '0'\n renderer.domElement.style.userSelect = 'none'\n renderer.domElement.style.pointerEvents = 'none'\n wrapper.appendChild(renderer.domElement)\n\n let running = false\n let frame: number | undefined\n const layer: RenderLayer = {\n scene,\n renderer,\n entries: new Set(),\n start() {\n if (running) return\n running = true\n resize.observe()\n const render = () => {\n if (!running) return\n renderer.render(scene, five.camera)\n frame = requestAnimationFrame(render)\n }\n render()\n },\n stop() {\n if (!running) return\n running = false\n if (frame !== undefined) cancelAnimationFrame(frame)\n frame = undefined\n resize.unobserve()\n },\n dispose() {\n layer.stop()\n resize.disconnect()\n renderer.domElement.remove()\n },\n }\n return layer\n }\n\n const create3DDomContainer = (...params: Parameters<CreateContainer>): ReturnType<CreateContainer> => {\n const points = params[0].map(point => point instanceof Vector3 ? point : transformPositionToVector3(point))\n const config = params[1]\n if (points.length < 4) return console.error('points must be equal or greater than 4')\n if (!five.model.loaded) return console.error('five.model.loaded is false')\n const fiveElement = five.getElement()\n if (!fiveElement) return console.error('five.getElement() is empty')\n\n const ratio = config?.ratio ?? 0.00216\n if (ratio <= 0.00215) console.warn('if you need click css3DElement on safari, ratio must be greater than 0.00215')\n const dpr = config?.dpr ?? 1\n const mode = config?.mode ?? 'front'\n const autoRender = config?.autoRender ?? true\n const container = config?.container ?? document.createElement('div')\n container.classList.add('__Dnalogel-plugin--CSS3DRenderPlugin')\n const { css3DObject, mesh } = createObject(points, { ratio, dpr, container, mode })\n\n let layer = mode === 'behind' ? state.behind : state.front\n if (!layer) {\n const wrapper = mode === 'behind'\n ? config?.behindFiveContainer ?? fiveElement.parentElement ?? document.body\n : fiveElement.parentElement ?? document.body\n layer = createLayer(wrapper, fiveElement)\n if (mode === 'behind') state.behind = layer\n else state.front = layer\n }\n\n const entry = {}\n layer.entries.add(entry)\n let rendered = false\n let disposed = false\n const render = () => {\n if (disposed || rendered) return\n rendered = true\n layer!.scene.add(css3DObject)\n if (mesh) five.scene.add(mesh)\n layer!.start()\n }\n const dispose = () => {\n if (disposed) return\n disposed = true\n state.disposers.delete(dispose)\n layer!.entries.delete(entry)\n if (rendered) {\n layer!.scene.remove(css3DObject)\n if (mesh) five.scene.remove(mesh)\n }\n mesh?.geometry.dispose()\n mesh?.material.dispose()\n if (layer!.scene.children.length === 0) layer!.stop()\n if (layer!.entries.size === 0) {\n layer!.dispose()\n if (mode === 'behind' && state.behind === layer) state.behind = undefined\n if (mode === 'front' && state.front === layer) state.front = undefined\n }\n }\n state.disposers.add(dispose)\n if (autoRender) render()\n return { container, dispose, css3DObject, render: autoRender ? undefined : render }\n }\n\n const createObject = (\n points: Vector3[],\n config: Required<Pick<CreateContainerConfig, 'ratio' | 'dpr' | 'container'>> & Pick<CreateContainerConfig, 'mode'>,\n ) => {\n const { ratio, dpr, container: element, mode } = config\n const planeWidth = points[0].distanceTo(points[1])\n const planeHeight = points[1].distanceTo(points[2])\n const domWidthPx = evenNumber((planeWidth / ratio) * dpr)\n const domHeightPx = evenNumber((planeHeight / ratio) * dpr)\n const css3DObject = new CSS3DObject(element)\n css3DObject.scale.set(ratio, ratio, ratio)\n element.style.width = domWidthPx + 'px'\n element.style.height = domHeightPx + 'px'\n element.style.pointerEvents = 'none'\n\n const centerPosition = centerPoint(points[0], points[2])\n const vector01 = points[1].clone().sub(points[0])\n const vector12 = points[2].clone().sub(points[1])\n const rotateXAngle = new Vector3(0, 1, 0).angleTo(new Vector3(0, vector12.y, vector12.z))\n const rotateYAngle = new Vector3(1, 0, 0).angleTo(new Vector3(vector01.x, 0, vector01.z))\n const rotateZAngle = vector01.angleTo(new Vector3(vector01.x, 0, vector01.z))\n const rotateX = (vector12.z > 0 ? -1 : 1) * rotateXAngle\n const rotateY = (vector01.z < 0 ? 1 : -1) * rotateYAngle\n const rotateZ = ((vector01.x > 0 && vector01.y < 0) || (vector01.x < 0 && vector01.y > 0) ? -1 : 1) * rotateZAngle\n css3DObject.rotateOnWorldAxis(new Vector3(1, 0, 0), rotateX)\n css3DObject.rotateOnWorldAxis(new Vector3(0, 1, 0), rotateY)\n css3DObject.rotateOnWorldAxis(new Vector3(0, 0, 1), rotateZ)\n css3DObject.position.set(centerPosition.x, centerPosition.y, centerPosition.z)\n\n let mesh: THREE.Mesh<THREE.PlaneGeometry, THREE.MeshBasicNodeMaterial> | undefined\n if (mode === 'behind') {\n const material = new THREE.MeshBasicNodeMaterial({ opacity: 0, transparent: false, side: THREE.DoubleSide })\n const geometry = new THREE.PlaneGeometry(domWidthPx, domHeightPx)\n mesh = new THREE.Mesh(geometry, material)\n mesh.name = 'CSS3DRenderPlugin-mesh'\n mesh.position.copy(css3DObject.position)\n mesh.rotation.copy(css3DObject.rotation)\n mesh.scale.copy(css3DObject.scale)\n }\n return { css3DObject, mesh }\n }\n\n return {\n create3DDomContainer,\n disposeAll: () => [...state.disposers].forEach(dispose => dispose()),\n }\n}\n\nexport default CSS3DRenderPlugin\n"],"names":["evenNumber","num","config","roundNum","centerPoint","point1","point2","Vector3","transformPositionToVector3","x","y","z","createResizeObserver","callback","element","observing","observer","CSS3DRenderPlugin","five","state","createLayer","wrapper","fiveElement","scene","Scene","renderer","CSS3DRenderer","setSize","resize","running","frame","layer","render","create3DDomContainer","params","points","point","ratio","dpr","mode","autoRender","container","css3DObject","mesh","createObject","entry","rendered","disposed","dispose","planeWidth","planeHeight","domWidthPx","domHeightPx","CSS3DObject","centerPosition","vector01","vector12","rotateXAngle","rotateYAngle","rotateZAngle","rotateX","rotateY","rotateZ","material","THREE","geometry"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import "@realsee/five-webgpu";
2
+ import { C as r } from "../chunks/index-BgPSzRSs.js";
3
+ export {
4
+ r as CameraMovementPlugin
5
+ };
6
+ //# sourceMappingURL=CameraMovementPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CameraMovementPlugin.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,162 @@
1
+ import * as u from "three/webgpu";
2
+ const j = (c, { videoElement: A, mediaManager: w }) => {
3
+ const E = [], b = (e, n) => (E.push(() => {
4
+ c.off(e, n);
5
+ }), c.on(e, n));
6
+ let f = 0, h = !1;
7
+ const t = {
8
+ videoMeshes: [],
9
+ videoTextureEnabled: !1,
10
+ videoSource: "",
11
+ rectPoints: [],
12
+ enabled: !1,
13
+ videoElement: A
14
+ };
15
+ let T, x, v;
16
+ const L = () => {
17
+ ++f, v == null || v(), v = void 0, x && (x.muted = !0, x.pause()), x = void 0, T = void 0, t.enabled = !1, t.videoMeshes.forEach((e) => {
18
+ e.geometry.dispose(), e.material.dispose(), c.scene.remove(e);
19
+ }), t.videoMeshes = [], c.needsRender = !0;
20
+ }, m = w == null ? void 0 : w.createController({ label: "vreo-model-video", onCancel: L }), z = (e, n) => {
21
+ var o;
22
+ const d = (o = t.videoTexture) == null ? void 0 : o.image;
23
+ if (!d) return;
24
+ const r = (m == null ? void 0 : m.begin({ userAction: e, audible: n })) ?? void 0;
25
+ if (!(m && !r))
26
+ return T = r, x = r ? r.bind(d) : d;
27
+ }, p = (e, n = !1) => {
28
+ const d = t.enabled, r = e ? x : z(n, !0);
29
+ if (!r) return;
30
+ r.muted = e, d && !t.enabled && (t.enabled = !0, t.videoMeshes = V(), t.videoMeshes.forEach((i) => c.scene.add(i)));
31
+ const o = T, s = f;
32
+ t.enabled && r.play().catch((i) => {
33
+ s === f && !(o != null && o.signal.aborted) && (g(), console.error(i));
34
+ });
35
+ }, F = () => (x == null ? void 0 : x.muted) ?? !0, R = () => {
36
+ if (h || t.enabled || !t.videoTexture) return;
37
+ const e = z(!1, !1);
38
+ if (!e) return;
39
+ const n = f, d = T, r = t.videoTexture.image, o = () => n === f && !h && t.enabled && !(d != null && d.signal.aborted);
40
+ t.enabled = !0, t.videoMeshes = V(), t.videoMeshes.forEach((l) => c.scene.add(l));
41
+ const s = () => {
42
+ r.removeEventListener("timeupdate", s), o() && (t.videoTextureEnabled = !0, t.videoMeshes.forEach((l) => {
43
+ l.material.map = t.videoTexture;
44
+ }), c.needsRender = !0);
45
+ }, i = () => {
46
+ c.off("modelLoaded", i), o() && (r.addEventListener("timeupdate", s), e.play().catch((l) => {
47
+ o() && (g(), console.error(l));
48
+ }));
49
+ };
50
+ v = () => {
51
+ c.off("modelLoaded", i), r.removeEventListener("timeupdate", s);
52
+ }, c.model.loaded ? i() : c.on("modelLoaded", i);
53
+ }, g = () => {
54
+ m == null || m.cancel(), L();
55
+ }, V = () => t.rectPoints.map((e, n) => {
56
+ const d = new u.BufferGeometry(), r = 128, o = [];
57
+ o.push(e[0].x, e[0].y, e[0].z);
58
+ for (let a = 1; a < r; a++)
59
+ o.push(
60
+ e[0].x + (e[1].x - e[0].x) * a / r,
61
+ e[0].y + (e[1].y - e[0].y) * a / r,
62
+ e[0].z + (e[1].z - e[0].z) * a / r
63
+ );
64
+ o.push(e[1].x, e[1].y, e[1].z), o.push(e[2].x, e[2].y, e[2].z);
65
+ for (let a = 1; a < r; a++)
66
+ o.push(
67
+ e[2].x + (e[3].x - e[2].x) * a / r,
68
+ e[2].y + (e[3].y - e[2].y) * a / r,
69
+ e[2].z + (e[3].z - e[2].z) * a / r
70
+ );
71
+ o.push(e[3].x, e[3].y, e[3].z);
72
+ const s = [];
73
+ s.push(0, 1);
74
+ for (let a = 1; a < r; a++)
75
+ s.push(0, 1 - a / r);
76
+ s.push(0, 0), s.push(1, 0);
77
+ for (let a = 1; a < r; a++)
78
+ s.push(1, a / r);
79
+ s.push(1, 1);
80
+ const i = [];
81
+ for (let a = 0; a < r; a++)
82
+ i.push(a, a + 1, r * 2 - a, a, r * 2 - a, r * 2 + 1 - a);
83
+ d.setAttribute("position", new u.BufferAttribute(new Float32Array(o), 3)), d.setAttribute("uv", new u.BufferAttribute(new Float32Array(s), 2)), d.setIndex(new u.BufferAttribute(new Uint32Array(i), 1));
84
+ const l = new u.MeshBasicNodeMaterial({
85
+ map: t.videoTextureEnabled ? t.videoTexture : t.imageTexture,
86
+ side: u.DoubleSide
87
+ }), y = new u.Mesh(d, l);
88
+ return y.renderOrder = 1, y.name = `video-${n}-${performance.now()}`, y;
89
+ }), O = (e) => {
90
+ const n = new u.TextureLoader().load(e);
91
+ return n.minFilter = u.LinearFilter, n.magFilter = u.LinearFilter, n;
92
+ }, U = (e, n, d = () => !0) => new Promise((r, o) => {
93
+ const s = new XMLHttpRequest();
94
+ s.onreadystatechange = () => {
95
+ if (s.readyState == 4) {
96
+ if (!d()) {
97
+ o(new DOMException("Playback cancelled", "AbortError"));
98
+ return;
99
+ }
100
+ if (s.status == 200) {
101
+ const i = window.URL || window.webkitURL;
102
+ n = n || document.createElement("video"), n.crossOrigin = "anonymous", n.autoplay = !1, n.muted = !0, n.loop = !0, n.playsInline = !0, n.src = i.createObjectURL(s.response);
103
+ const l = new u.VideoTexture(n);
104
+ l.colorSpace = u.SRGBColorSpace, l.minFilter = u.LinearFilter, l.magFilter = u.LinearFilter, r(Object.assign(l, { videoSource: e }));
105
+ } else
106
+ o(new Error("Video download Error: " + s.status));
107
+ }
108
+ }, s.onerror = (i) => o(i), s.open("GET", e), s.responseType = "blob", s.send();
109
+ }), M = async (e, n) => {
110
+ const d = ++f, { video_src: r, video_poster_src: o, points: s } = e;
111
+ t.videoSource = r, t.rectPoints = s.map((l) => l.map(({ x: y, y: a, z: P }) => new u.Vector3(y, a, P))), t.imageTexture = O(o), n && (t.videoElement = n);
112
+ const i = await U(t.videoSource, t.videoElement, () => !h && d === f);
113
+ if (h || d !== f) {
114
+ i.image.muted = !0, i.image.pause(), URL.revokeObjectURL(i.image.src), i.dispose();
115
+ return;
116
+ }
117
+ t.videoTexture && (t.videoTexture.image.pause(), URL.revokeObjectURL(t.videoTexture.image.src), t.videoTexture.dispose()), t.videoTexture = i, e.enable && R();
118
+ };
119
+ return b("modeChange", () => p(!0)), b("wantsTapGesture", (e) => {
120
+ if (!t.enabled) return;
121
+ const [n] = e.intersectObjects(c.scene.children, !0);
122
+ if (n && /^video/.test(n.object.name))
123
+ return t.videoTexture && p(!t.videoTexture.image.muted, !0), !1;
124
+ }), b("panoArrived", () => {
125
+ if (!t.enabled || F()) return;
126
+ const e = c.camera.position;
127
+ t.rectPoints.find((d) => {
128
+ const r = d.reduce(
129
+ (o, s) => new u.Vector3(
130
+ o.x + s.x / d.length,
131
+ o.y + s.y / d.length,
132
+ o.z + s.z / d.length
133
+ ),
134
+ new u.Vector3()
135
+ );
136
+ return d.map(
137
+ (o) => new u.Vector3(
138
+ (o.x + r.x) / 2,
139
+ (o.y + r.y) / 2,
140
+ (o.z + r.z) / 2
141
+ )
142
+ ).filter((o) => {
143
+ o = o.clone().sub(e).normalize();
144
+ const s = new u.Raycaster(e, o), [i] = s.intersectObjects(c.scene.children, !0);
145
+ return !!i && /^video/.test(i.object.name);
146
+ }).length >= 2;
147
+ }) || p(!0);
148
+ }), b("renderFrame", () => {
149
+ t.videoMeshes.forEach((e) => {
150
+ e && (e.needsRender = !0);
151
+ });
152
+ }), b("load", (e) => {
153
+ e.modelTVVideoData && M(e.modelTVVideoData);
154
+ }), { enable: R, disable: g, load: M, dispose: () => {
155
+ var e;
156
+ h = !0, ++f, g(), m == null || m.dispose(), E.splice(0).forEach((n) => n()), (e = t.imageTexture) == null || e.dispose(), t.videoTexture && (URL.revokeObjectURL(t.videoTexture.image.src), t.videoTexture.dispose());
157
+ } };
158
+ };
159
+ export {
160
+ j as ModelTVVideoPlugin
161
+ };
162
+ //# sourceMappingURL=ModelTVVideoPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelTVVideoPlugin.js","sources":["../../resources/fivePlugins/ModelTVVideoPlugin/index.ts"],"sourcesContent":["import * as THREE from 'three/webgpu'\nimport type { FivePlugin } from '@realsee/five-webgpu'\nimport type { PlaybackManager, PlaybackSession, MediaOperations } from '../../Player/playback-types'\n\nexport interface ModelTVVideoPluginData {\n enable?: boolean\n video_src: string\n video_poster_src: string\n points: { x: number; y: number; z: number }[][]\n}\n\nexport interface ModelTVVideoPluginParameterType {\n videoElement?: HTMLVideoElement\n mediaManager?: PlaybackManager\n}\nexport interface ModelTVVideoPluginExportType {\n enable: () => void\n disable: () => void\n dispose: () => void\n load: (data: ModelTVVideoPluginData, videoElement?: HTMLVideoElement) => Promise<void>\n}\n\ntype ModelTVVideoPluginPoints = THREE.Vector3[][]\n\ntype ModelTVVideoPluginState = {\n videoMeshes: THREE.Mesh<THREE.BufferGeometry, THREE.MeshBasicNodeMaterial>[]\n videoTextureEnabled: boolean\n videoSource: string\n rectPoints: ModelTVVideoPluginPoints\n enabled: boolean\n imageTexture?: THREE.Texture\n videoTexture?: THREE.VideoTexture\n videoElement?: HTMLVideoElement\n}\n\nexport const ModelTVVideoPlugin: FivePlugin<ModelTVVideoPluginParameterType, ModelTVVideoPluginExportType> = (\n five,\n { videoElement, mediaManager },\n) => {\n const listeners: (() => void)[] = []\n const on: typeof five.on = (name, callback) => {\n listeners.push(() => { five.off(name, callback) })\n return five.on(name, callback)\n }\n let generation = 0\n let disposed = false\n const state: ModelTVVideoPluginState = {\n videoMeshes: [],\n videoTextureEnabled: false,\n videoSource: '',\n rectPoints: [],\n enabled: false,\n videoElement: videoElement,\n }\n\n let session: PlaybackSession | undefined\n let output: MediaOperations | undefined\n let removeReady: (() => void) | undefined\n const stop = () => {\n ++generation\n removeReady?.()\n removeReady = undefined\n if (output) { output.muted = true; output.pause() }\n output = undefined\n session = undefined\n state.enabled = false\n state.videoMeshes.forEach(mesh => {\n mesh.geometry.dispose()\n mesh.material.dispose()\n five.scene.remove(mesh)\n })\n state.videoMeshes = []\n five.needsRender = true\n }\n const controller = mediaManager?.createController({ label: 'vreo-model-video', onCancel: stop })\n const bind = (userAction: boolean, audible: boolean) => {\n const element = state.videoTexture?.image as HTMLVideoElement | undefined\n if (!element) return undefined\n const next = controller?.begin({ userAction, audible }) ?? undefined\n if (controller && !next) return undefined\n session = next\n return output = next ? next.bind(element) : element\n }\n const setMuted = (muted: boolean, userAction = false) => {\n const wasEnabled = state.enabled\n const media = !muted ? bind(userAction, true) : output\n if (!media) return\n media.muted = muted\n if (wasEnabled && !state.enabled) {\n state.enabled = true\n state.videoMeshes = createPanoVideoMeshes()\n state.videoMeshes.forEach(mesh => five.scene.add(mesh))\n }\n const run = session\n const current = generation\n if (state.enabled) void media.play().catch(error => { if (current === generation && !run?.signal.aborted) { disable(); console.error(error) } })\n }\n const getMuted = () => output?.muted ?? true\n const enable = () => {\n if (disposed || state.enabled || !state.videoTexture) return\n const media = bind(false, false)\n if (!media) return\n const current = generation\n const run = session\n const element = state.videoTexture.image as HTMLVideoElement\n const valid = () => current === generation && !disposed && state.enabled && !run?.signal.aborted\n state.enabled = true\n state.videoMeshes = createPanoVideoMeshes()\n state.videoMeshes.forEach(mesh => five.scene.add(mesh))\n const timeupdate = () => {\n element.removeEventListener('timeupdate', timeupdate)\n if (!valid()) return\n state.videoTextureEnabled = true\n state.videoMeshes.forEach(mesh => { mesh.material.map = state.videoTexture! })\n five.needsRender = true\n }\n const play = () => {\n five.off('modelLoaded', play)\n if (!valid()) return\n element.addEventListener('timeupdate', timeupdate)\n void media.play().catch(error => { if (valid()) { disable(); console.error(error) } })\n }\n removeReady = () => { five.off('modelLoaded', play); element.removeEventListener('timeupdate', timeupdate) }\n if (five.model.loaded) play()\n else five.on('modelLoaded', play)\n }\n const disable = () => { controller?.cancel(); stop() }\n\n const createPanoVideoMeshes = () => {\n return state.rectPoints.map((points, index) => {\n const geometry = new THREE.BufferGeometry()\n const segments = 128\n\n const verticesArray: number[] = []\n verticesArray.push(points[0].x, points[0].y, points[0].z)\n for (let i = 1; i < segments; i++) {\n verticesArray.push(\n points[0].x + ((points[1].x - points[0].x) * i) / segments,\n points[0].y + ((points[1].y - points[0].y) * i) / segments,\n points[0].z + ((points[1].z - points[0].z) * i) / segments,\n )\n }\n verticesArray.push(points[1].x, points[1].y, points[1].z)\n verticesArray.push(points[2].x, points[2].y, points[2].z)\n for (let i = 1; i < segments; i++) {\n verticesArray.push(\n points[2].x + ((points[3].x - points[2].x) * i) / segments,\n points[2].y + ((points[3].y - points[2].y) * i) / segments,\n points[2].z + ((points[3].z - points[2].z) * i) / segments,\n )\n }\n verticesArray.push(points[3].x, points[3].y, points[3].z)\n\n const uvArray: number[] = []\n uvArray.push(0, 1)\n for (let i = 1; i < segments; i++) {\n uvArray.push(0, 1 - i / segments)\n }\n uvArray.push(0, 0)\n uvArray.push(1, 0)\n for (let i = 1; i < segments; i++) {\n uvArray.push(1, i / segments)\n }\n uvArray.push(1, 1)\n\n const indicesArray: number[] = []\n for (let i = 0; i < segments; i++) {\n indicesArray.push(i, i + 1, segments * 2 - i, i, segments * 2 - i, segments * 2 + 1 - i)\n }\n geometry.setAttribute('position', new THREE.BufferAttribute(new Float32Array(verticesArray), 3))\n geometry.setAttribute('uv', new THREE.BufferAttribute(new Float32Array(uvArray), 2))\n geometry.setIndex(new THREE.BufferAttribute(new Uint32Array(indicesArray), 1))\n const material = new THREE.MeshBasicNodeMaterial({\n map: state.videoTextureEnabled ? state.videoTexture : state.imageTexture,\n side: THREE.DoubleSide,\n })\n const mesh = new THREE.Mesh(geometry, material)\n mesh.renderOrder = 1\n mesh.name = `video-${index}-${performance.now()}`\n return mesh\n })\n }\n\n const getImageTexture = (source: string) => {\n const texture = new THREE.TextureLoader().load(source)\n texture.minFilter = THREE.LinearFilter\n texture.magFilter = THREE.LinearFilter\n return texture\n }\n\n const getVideoTexture = (\n source: string,\n video?: HTMLVideoElement,\n valid = () => true,\n ): Promise<THREE.VideoTexture & { videoSource: string }> => {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onreadystatechange = () => {\n if (xhr.readyState == 4) {\n if (!valid()) { reject(new DOMException('Playback cancelled', 'AbortError')); return }\n if (xhr.status == 200) {\n const url = window.URL || window.webkitURL\n video = video || document.createElement('video')\n video.crossOrigin = 'anonymous'\n video.autoplay = false\n video.muted = true\n video.loop = true\n video.playsInline = true\n video.src = url.createObjectURL(xhr.response)\n const texture = new THREE.VideoTexture(video)\n texture.colorSpace = THREE.SRGBColorSpace\n texture.minFilter = THREE.LinearFilter\n texture.magFilter = THREE.LinearFilter\n resolve(Object.assign(texture, { videoSource: source }))\n } else {\n reject(new Error('Video download Error: ' + xhr.status))\n }\n }\n }\n xhr.onerror = (error) => reject(error)\n xhr.open('GET', source)\n xhr.responseType = 'blob'\n xhr.send()\n })\n }\n\n const load = async (data: ModelTVVideoPluginData, videoElement?: HTMLVideoElement) => {\n const current = ++generation\n const { video_src, video_poster_src, points } = data\n state.videoSource = video_src\n state.rectPoints = points.map((items) => items.map(({ x, y, z }) => new THREE.Vector3(x, y, z)))\n state.imageTexture = getImageTexture(video_poster_src)\n\n if (videoElement) {\n state.videoElement = videoElement\n }\n\n const texture = await getVideoTexture(state.videoSource, state.videoElement, () => !disposed && current === generation)\n if (disposed || current !== generation) {\n texture.image.muted = true\n texture.image.pause()\n URL.revokeObjectURL(texture.image.src)\n texture.dispose()\n return\n }\n if (state.videoTexture) {\n state.videoTexture.image.pause()\n URL.revokeObjectURL(state.videoTexture.image.src)\n state.videoTexture.dispose()\n }\n state.videoTexture = texture\n\n if (data.enable) enable()\n }\n\n on('modeChange', () => setMuted(true))\n\n on('wantsTapGesture', (raycaster) => {\n if (!state.enabled) return\n const [intersect] = raycaster.intersectObjects(five.scene.children, true)\n if (!!intersect && /^video/.test(intersect.object.name)) {\n if (state.videoTexture) setMuted(!state.videoTexture.image.muted, true)\n return false\n }\n })\n\n on('panoArrived', () => {\n if (!state.enabled) return\n if (getMuted()) return\n const cameraPosition = five.camera.position\n\n const visible = state.rectPoints.find((points) => {\n const centerVector = points.reduce(\n (total, curr) =>\n new THREE.Vector3(\n total.x + curr.x / points.length,\n total.y + curr.y / points.length,\n total.z + curr.z / points.length,\n ),\n new THREE.Vector3(),\n )\n\n return (\n points\n .map(\n (point) =>\n new THREE.Vector3(\n (point.x + centerVector.x) / 2,\n (point.y + centerVector.y) / 2,\n (point.z + centerVector.z) / 2,\n ),\n )\n .filter((vector) => {\n vector = vector.clone().sub(cameraPosition).normalize()\n const raycaster = new THREE.Raycaster(cameraPosition, vector)\n const [intersect] = raycaster.intersectObjects(five.scene.children, true)\n return !!intersect && /^video/.test(intersect.object.name)\n }).length >= 2\n )\n })\n if (!visible) setMuted(true)\n })\n\n on('renderFrame', () => {\n state.videoMeshes.forEach((meshes) => {\n if (meshes)\n //@ts-ignore\n meshes.needsRender = true\n })\n })\n\n on('load', (input) => {\n if (input.modelTVVideoData) {\n load(input.modelTVVideoData)\n }\n })\n\n const dispose = () => {\n disposed = true\n ++generation\n disable()\n controller?.dispose()\n listeners.splice(0).forEach(remove => remove())\n state.imageTexture?.dispose()\n if (state.videoTexture) {\n URL.revokeObjectURL(state.videoTexture.image.src)\n state.videoTexture.dispose()\n }\n }\n return { enable, disable, load, dispose }\n}\n"],"names":["ModelTVVideoPlugin","five","videoElement","mediaManager","listeners","on","name","callback","generation","disposed","state","session","output","removeReady","stop","mesh","controller","bind","userAction","audible","element","_a","next","setMuted","muted","wasEnabled","media","createPanoVideoMeshes","run","current","error","disable","getMuted","enable","valid","timeupdate","play","points","index","geometry","THREE","segments","verticesArray","i","uvArray","indicesArray","material","getImageTexture","source","texture","getVideoTexture","video","resolve","reject","xhr","url","load","data","video_src","video_poster_src","items","x","y","z","raycaster","intersect","cameraPosition","centerVector","total","curr","point","vector","meshes","input","remove"],"mappings":"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"}
@@ -40,11 +40,11 @@ export interface VreoActionCallbacks {
40
40
  * @param preload 是否开启预载
41
41
  * @param force 是否强制载入
42
42
  */
43
- load: (vreoUnit: VreoUnit, currentTime?: number, preload?: boolean, force?: boolean) => Promise<boolean>;
43
+ load: (vreoUnit: VreoUnit, currentTime?: number, preload?: boolean, force?: boolean, userAction?: boolean) => Promise<boolean>;
44
44
  /**
45
45
  * 播放。
46
46
  */
47
- play: (currentTime?: number) => void;
47
+ play: (currentTime?: number, userAction?: boolean) => boolean;
48
48
  /**
49
49
  * 暂停。
50
50
  */
@@ -92,10 +92,10 @@ export interface VreoActionCallbacks {
92
92
  * ```
93
93
  */
94
94
  export declare function useVreoAction(): {
95
- load: (vreoUnit: VreoUnit, currentTime?: number) => Promise<boolean>;
95
+ load: (vreoUnit: VreoUnit, currentTime?: number, preload?: boolean, force?: boolean, userAction?: boolean) => Promise<boolean>;
96
96
  pause: () => void;
97
97
  show: () => void;
98
- play: (currentTime?: number) => boolean;
98
+ play: (currentTime?: number, userAction?: boolean) => boolean;
99
99
  hide: () => void;
100
100
  dispose: () => void;
101
101
  };
@@ -160,3 +160,4 @@ export declare function useVreoEventCallback<T extends keyof VreoKeyframeEvent>(
160
160
  * ```
161
161
  */
162
162
  export declare function useVreoPausedState(): boolean;
163
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../resources/react/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAIjE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc;IACd,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IAChC,UAAU;IACV,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoBpD,CAAA;AAiCD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9H;;OAEG;IACH,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;IAC7D;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa;qBAId,QAAQ,gBAAgB,MAAM,YAAY,OAAO,UAAU,OAAO,eAAe,OAAO;;;yBAKvD,MAAM,eAAe,OAAO;;;EAO3E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACpE,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,SAAS,QAexC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,YAQjC"}