aptechka 0.1.1 → 0.1.3
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.
- package/lib/Damped-DdPj4Sho.cjs +1 -0
- package/lib/Damped-H3PuZwKV.js +152 -0
- package/lib/SourceManager-tmQlXkSD.cjs +1 -0
- package/lib/SourceManager-vXInLlh_.js +108 -0
- package/lib/Store-qq7IjRLE.js +136 -0
- package/lib/Store-txkR3wXU.cjs +1 -0
- package/lib/WheelControls-9ZQKSYYq.js +83 -0
- package/lib/WheelControls-TYhGU6oA.cjs +1 -0
- package/lib/accordion/AccordionElement.d.ts +7 -0
- package/lib/accordion/index.d.ts +1 -0
- package/lib/animation/Animated.d.ts +41 -0
- package/lib/animation/Damped.d.ts +11 -0
- package/lib/animation/Tweened.d.ts +16 -0
- package/lib/animation/index.cjs +1 -0
- package/lib/animation/index.d.ts +3 -0
- package/lib/animation/index.js +56 -0
- package/lib/attribute/index.cjs +1 -0
- package/lib/attribute/index.d.ts +8 -0
- package/lib/attribute/index.js +47 -0
- package/lib/attributes-_2U65GDl.cjs +1 -0
- package/lib/attributes-w0u-KiIb.js +10 -0
- package/lib/browser-QbF6EW-w.cjs +1 -0
- package/lib/browser-S4eq8AeN.js +4 -0
- package/lib/canvas-2d/index.cjs +5 -0
- package/lib/canvas-2d/index.d.ts +30 -0
- package/lib/canvas-2d/index.js +90 -0
- package/lib/controls/Controls.d.ts +9 -0
- package/lib/controls/KeyboardControls.d.ts +10 -0
- package/lib/controls/LinearControls.d.ts +11 -0
- package/lib/controls/WheelControls.d.ts +17 -0
- package/lib/controls/index.cjs +1 -0
- package/lib/controls/index.d.ts +4 -0
- package/lib/controls/index.js +42 -0
- package/lib/css-unit-parser/index.cjs +8 -0
- package/lib/css-unit-parser/index.d.ts +6 -0
- package/lib/css-unit-parser/index.js +36 -0
- package/lib/custom-element/index.cjs +1 -0
- package/lib/custom-element/index.d.ts +8 -0
- package/lib/custom-element/index.js +16 -0
- package/lib/device/Device.d.ts +17 -0
- package/lib/device/Viewport.d.ts +27 -0
- package/lib/device/index.cjs +1 -0
- package/lib/device/index.d.ts +2 -0
- package/lib/device/index.js +123 -0
- package/lib/dom-QhWsdQS2.cjs +1 -0
- package/lib/dom-bHEwc_xV.js +24 -0
- package/lib/easings-_wFs9ZWc.cjs +1 -0
- package/lib/easings-uF-tgahf.js +19 -0
- package/lib/element-constructor/ElementConstructor.d.ts +76 -0
- package/lib/element-constructor/htmlTags.d.ts +113 -0
- package/lib/element-constructor/index.cjs +1 -0
- package/lib/element-constructor/index.d.ts +4 -0
- package/lib/element-constructor/index.js +1390 -0
- package/lib/element-constructor/specialObjects.d.ts +2 -0
- package/lib/element-constructor/svgTags.d.ts +64 -0
- package/lib/en3/attachments/En3SourceManager.d.ts +30 -0
- package/lib/en3/core/en3.d.ts +55 -0
- package/lib/en3/index.cjs +28 -0
- package/lib/en3/index.d.ts +18 -0
- package/lib/en3/index.js +3249 -0
- package/lib/en3/instances/en3LazyLoader.d.ts +7 -0
- package/lib/en3/libs/MeshoptDecoder.d.ts +1 -0
- package/lib/en3/loaders/en3GLTFLoader.d.ts +16 -0
- package/lib/en3/loaders/en3TextureLoader.d.ts +2 -0
- package/lib/en3/objects/En3Clip.d.ts +10 -0
- package/lib/en3/objects/En3ClipHelpers.d.ts +5 -0
- package/lib/en3/objects/En3GLTF.d.ts +9 -0
- package/lib/en3/objects/En3Image.d.ts +7 -0
- package/lib/en3/objects/En3ImageLike.d.ts +22 -0
- package/{src/packages/en3/objects/En3SourceConsumer.ts → lib/en3/objects/En3SourceConsumer.d.ts} +2 -3
- package/lib/en3/objects/En3Video.d.ts +12 -0
- package/lib/en3/test/En3HTML.d.ts +9 -0
- package/lib/en3/test/En3ModifiedMaterial.d.ts +32 -0
- package/lib/en3/test/En3Raycaster.d.ts +19 -0
- package/lib/en3/utils/coverTexture.d.ts +6 -0
- package/lib/en3/utils/dispose.d.ts +2 -0
- package/lib/en3/utils/traverseMaterials.d.ts +2 -0
- package/lib/en3/utils/traverseMeshes.d.ts +2 -0
- package/lib/function-QP7IreXR.cjs +1 -0
- package/lib/function-zwSFehNd.js +17 -0
- package/lib/image/index.cjs +1 -0
- package/lib/image/index.d.ts +10 -0
- package/lib/image/index.js +30 -0
- package/lib/intersector/index.cjs +1 -0
- package/lib/intersector/index.d.ts +8 -0
- package/lib/intersector/index.js +55 -0
- package/lib/ladder/index.cjs +1 -0
- package/lib/ladder/index.d.ts +21 -0
- package/lib/ladder/index.js +97 -0
- package/lib/layout-5SJlcXTY.js +12 -0
- package/lib/layout-box/index.cjs +1 -0
- package/lib/layout-box/index.d.ts +78 -0
- package/lib/layout-box/index.js +235 -0
- package/lib/layout-rZzbsLPd.cjs +1 -0
- package/lib/loading/index.cjs +1 -0
- package/lib/loading/index.d.ts +38 -0
- package/lib/loading/index.js +99 -0
- package/lib/math-FNUBmQPK.cjs +1 -0
- package/lib/math-_a3IpKOc.js +45 -0
- package/lib/measurer/CumulativeOffsetLeft.d.ts +4 -0
- package/lib/measurer/CumulativeOffsetTop.d.ts +4 -0
- package/lib/measurer/Meaurer.d.ts +8 -0
- package/lib/measurer/index.cjs +1 -0
- package/lib/measurer/index.d.ts +3 -0
- package/lib/measurer/index.js +48 -0
- package/lib/media/index.cjs +1 -0
- package/lib/media/index.d.ts +11 -0
- package/lib/media/index.js +33 -0
- package/lib/morph/Link.d.ts +6 -0
- package/lib/morph/Morph.d.ts +26 -0
- package/lib/morph/index.cjs +1 -0
- package/lib/morph/index.d.ts +1 -0
- package/lib/morph/index.js +182 -0
- package/lib/notifier/index.cjs +1 -0
- package/lib/notifier/index.d.ts +8 -0
- package/lib/notifier/index.js +38 -0
- package/lib/number-2bR0KBcX.cjs +1 -0
- package/lib/number-bCHB2GAD.js +31 -0
- package/lib/order/index.cjs +1 -0
- package/lib/order/index.d.ts +13 -0
- package/lib/order/index.js +5 -0
- package/lib/resizer/index.cjs +1 -0
- package/lib/resizer/index.d.ts +10 -0
- package/lib/resizer/index.js +45 -0
- package/lib/router/Link.d.ts +6 -0
- package/lib/router/Route.d.ts +15 -0
- package/lib/router/RouteElement.d.ts +14 -0
- package/lib/router/Router.d.ts +33 -0
- package/lib/router/index.cjs +1 -0
- package/lib/router/index.d.ts +3 -0
- package/lib/router/index.js +266 -0
- package/lib/scroll/ScrollElement.d.ts +40 -0
- package/lib/scroll/ScrollUserElement.d.ts +7 -0
- package/lib/scroll/ScrollbarElement.d.ts +13 -0
- package/lib/scroll/index.cjs +71 -0
- package/lib/scroll/index.d.ts +2 -0
- package/lib/scroll/index.js +444 -0
- package/lib/scroll-entries/index.cjs +1 -0
- package/lib/scroll-entries/index.d.ts +17 -0
- package/lib/scroll-entries/index.js +56 -0
- package/lib/source/SourceClass.d.ts +11 -0
- package/lib/source/SourceElement.d.ts +16 -0
- package/lib/source/SourceManager.d.ts +13 -0
- package/lib/source/SourceSet.d.ts +8 -0
- package/lib/source/index.cjs +5 -0
- package/lib/source/index.d.ts +4 -0
- package/lib/source/index.js +95 -0
- package/lib/store/Composed.d.ts +7 -0
- package/lib/store/CumulativeResource.d.ts +12 -0
- package/lib/store/Derived.d.ts +7 -0
- package/lib/store/DerivedArray.d.ts +7 -0
- package/lib/store/Resource.d.ts +14 -0
- package/lib/store/Store.d.ts +33 -0
- package/lib/store/StoreRegistry.d.ts +22 -0
- package/lib/store/index.cjs +1 -0
- package/lib/store/index.d.ts +6 -0
- package/lib/store/index.js +99 -0
- package/lib/string-GmxZA5Nq.js +31 -0
- package/lib/string-WmNOGq16.cjs +1 -0
- package/lib/studio/StudioElement.d.ts +9 -0
- package/lib/studio/index.d.ts +1 -0
- package/lib/ticker/index.cjs +1 -0
- package/lib/ticker/index.d.ts +19 -0
- package/lib/ticker/index.js +107 -0
- package/lib/utils/array.d.ts +1 -0
- package/lib/utils/attributes.d.ts +2 -0
- package/lib/utils/browser.d.ts +1 -0
- package/lib/utils/canvas.d.ts +6 -0
- package/lib/utils/collisions.d.ts +3 -0
- package/lib/utils/coordinates.d.ts +13 -0
- package/lib/utils/decoding.d.ts +2 -0
- package/lib/utils/dev.d.ts +3 -0
- package/lib/utils/dom.d.ts +4 -0
- package/lib/utils/easings.d.ts +17 -0
- package/lib/utils/file.d.ts +1 -0
- package/lib/utils/function.d.ts +2 -0
- package/lib/utils/index.cjs +1 -0
- package/lib/utils/index.d.ts +19 -0
- package/lib/utils/index.js +203 -0
- package/lib/utils/layout.d.ts +3 -0
- package/lib/utils/math.d.ts +11 -0
- package/lib/utils/number.d.ts +3 -0
- package/lib/utils/object.d.ts +7 -0
- package/lib/utils/string.d.ts +5 -0
- package/lib/utils/ts-shape.d.ts +19 -0
- package/lib/utils/ts-utility.d.ts +19 -0
- package/lib/video/index.cjs +1 -0
- package/lib/video/index.d.ts +11 -0
- package/lib/video/index.js +37 -0
- package/package.json +7 -7
- package/.github/workflows/publish.yml +0 -20
- package/.prettierignore +0 -16
- package/.prettierrc +0 -9
- package/index.html +0 -32
- package/public/vite.svg +0 -1
- package/src/packages/animation/Animated.ts +0 -189
- package/src/packages/animation/Damped.ts +0 -39
- package/src/packages/animation/Tweened.ts +0 -51
- package/src/packages/animation/index.ts +0 -10
- package/src/packages/attribute/index.ts +0 -59
- package/src/packages/canvas-2d/index.ts +0 -137
- package/src/packages/controls/Controls.ts +0 -15
- package/src/packages/controls/KeyboardControls.ts +0 -63
- package/src/packages/controls/LinearControls.ts +0 -27
- package/src/packages/controls/User.ts +0 -20
- package/src/packages/controls/WheelControls.ts +0 -92
- package/src/packages/controls/index.ts +0 -5
- package/src/packages/css-unit-parser/index.ts +0 -32
- package/src/packages/custom-element/index.ts +0 -19
- package/src/packages/device/Device.ts +0 -113
- package/src/packages/device/Viewport.ts +0 -67
- package/src/packages/device/index.ts +0 -2
- package/src/packages/element-constructor/ElementConstructor.ts +0 -577
- package/src/packages/element-constructor/htmlTags.ts +0 -679
- package/src/packages/element-constructor/index.ts +0 -4
- package/src/packages/element-constructor/specialObjects.ts +0 -8
- package/src/packages/element-constructor/svgTags.ts +0 -588
- package/src/packages/en3/attachments/En3SourceManager.ts +0 -116
- package/src/packages/en3/core/en3.ts +0 -306
- package/src/packages/en3/index.ts +0 -52
- package/src/packages/en3/instances/en3LazyLoader.ts +0 -22
- package/src/packages/en3/libs/MeshoptDecoder.js +0 -138
- package/src/packages/en3/loaders/en3GLTFLoader.ts +0 -54
- package/src/packages/en3/loaders/en3TextureLoader.ts +0 -3
- package/src/packages/en3/objects/En3Clip.ts +0 -53
- package/src/packages/en3/objects/En3ClipHelpers.ts +0 -12
- package/src/packages/en3/objects/En3GLTF.ts +0 -35
- package/src/packages/en3/objects/En3Image.ts +0 -18
- package/src/packages/en3/objects/En3ImageLike.ts +0 -101
- package/src/packages/en3/objects/En3Video.ts +0 -88
- package/src/packages/en3/test/En3HTML.ts +0 -55
- package/src/packages/en3/test/En3ModifiedMaterial.ts +0 -221
- package/src/packages/en3/test/En3Raycaster.ts +0 -187
- package/src/packages/en3/utils/coverTexture.ts +0 -29
- package/src/packages/en3/utils/dispose.ts +0 -27
- package/src/packages/en3/utils/traverseMaterials.ts +0 -10
- package/src/packages/en3/utils/traverseMeshes.ts +0 -9
- package/src/packages/image/index.ts +0 -19
- package/src/packages/intersector/index.ts +0 -83
- package/src/packages/ladder/index.ts +0 -112
- package/src/packages/layout-box/index.ts +0 -417
- package/src/packages/loading/index.ts +0 -131
- package/src/packages/measurer/CumulativeOffsetLeft.ts +0 -8
- package/src/packages/measurer/CumulativeOffsetTop.ts +0 -8
- package/src/packages/measurer/Meaurer.ts +0 -38
- package/src/packages/measurer/index.ts +0 -3
- package/src/packages/media/index.ts +0 -38
- package/src/packages/morph/Link.ts +0 -32
- package/src/packages/morph/Morph.ts +0 -246
- package/src/packages/morph/index.ts +0 -10
- package/src/packages/notifier/index.ts +0 -41
- package/src/packages/order/index.ts +0 -14
- package/src/packages/resizer/index.ts +0 -55
- package/src/packages/router/Link.ts +0 -33
- package/src/packages/router/Route.ts +0 -152
- package/src/packages/router/RouteElement.ts +0 -34
- package/src/packages/router/Router.ts +0 -190
- package/src/packages/router/index.ts +0 -13
- package/src/packages/scroll/ScrollElement.ts +0 -618
- package/src/packages/scroll/ScrollUserElement.ts +0 -21
- package/src/packages/scroll/ScrollbarElement.ts +0 -170
- package/src/packages/scroll/index.ts +0 -2
- package/src/packages/scroll-entries/index.ts +0 -74
- package/src/packages/source/SourceClass.ts +0 -77
- package/src/packages/source/SourceElement.ts +0 -177
- package/src/packages/source/SourceManager.ts +0 -61
- package/src/packages/source/SourceSet.ts +0 -52
- package/src/packages/source/index.ts +0 -8
- package/src/packages/store/Composed.ts +0 -33
- package/src/packages/store/Derived.ts +0 -24
- package/src/packages/store/DerivedArray.ts +0 -36
- package/src/packages/store/Resource.ts +0 -38
- package/src/packages/store/Store.ts +0 -144
- package/src/packages/store/StoreRegistry.ts +0 -105
- package/src/packages/store/index.ts +0 -23
- package/src/packages/ticker/index.ts +0 -173
- package/src/packages/utils/array.ts +0 -3
- package/src/packages/utils/attributes.ts +0 -19
- package/src/packages/utils/browser.ts +0 -2
- package/src/packages/utils/canvas.ts +0 -46
- package/src/packages/utils/collisions.ts +0 -12
- package/src/packages/utils/coordinates.ts +0 -40
- package/src/packages/utils/decoding.ts +0 -11
- package/src/packages/utils/dev.ts +0 -5
- package/src/packages/utils/dom.ts +0 -48
- package/src/packages/utils/easings.ts +0 -69
- package/src/packages/utils/file.ts +0 -17
- package/src/packages/utils/function.ts +0 -29
- package/src/packages/utils/index.ts +0 -61
- package/src/packages/utils/layout.ts +0 -22
- package/src/packages/utils/math.ts +0 -74
- package/src/packages/utils/number.ts +0 -26
- package/src/packages/utils/object.ts +0 -108
- package/src/packages/utils/string.ts +0 -49
- package/src/packages/utils/ts-shape.ts +0 -25
- package/src/packages/utils/ts-utility.ts +0 -47
- package/src/packages/video/index.ts +0 -39
- package/src/playground/index.ts +0 -0
- package/tsconfig.json +0 -31
- package/vite.config.ts +0 -78
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Group } from 'three'
|
|
2
|
-
import type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js'
|
|
3
|
-
import { dispose } from '../utils/dispose'
|
|
4
|
-
import { en3GLTFLoader } from '../loaders/en3GLTFLoader'
|
|
5
|
-
import { En3SourceConsumer } from './En3SourceConsumer'
|
|
6
|
-
import { En3SourceManager, En3SourceManagerParameters } from '../attachments/En3SourceManager'
|
|
7
|
-
|
|
8
|
-
export class En3GLTF extends Group implements En3SourceConsumer<GLTF> {
|
|
9
|
-
#sourceManager: En3SourceManager<GLTF>
|
|
10
|
-
|
|
11
|
-
constructor(parameters: En3SourceManagerParameters<GLTF>) {
|
|
12
|
-
super()
|
|
13
|
-
|
|
14
|
-
this.#sourceManager = new En3SourceManager({
|
|
15
|
-
loader: en3GLTFLoader,
|
|
16
|
-
consumer: this,
|
|
17
|
-
...parameters,
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
this.#sourceManager.data.subscribe((detail) => {
|
|
21
|
-
if (!detail.current) {
|
|
22
|
-
this.children.forEach((child) => {
|
|
23
|
-
this.remove(child)
|
|
24
|
-
dispose(child)
|
|
25
|
-
})
|
|
26
|
-
} else {
|
|
27
|
-
this.add(...detail.current.scene.children)
|
|
28
|
-
}
|
|
29
|
-
})
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public get sourceManager() {
|
|
33
|
-
return this.#sourceManager
|
|
34
|
-
}
|
|
35
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Texture } from 'three'
|
|
2
|
-
import { En3ImageLike, En3ImageLikeMaterial, En3ImageLikeParameters } from './En3ImageLike'
|
|
3
|
-
import { en3TextureLoader } from '../loaders/en3TextureLoader'
|
|
4
|
-
|
|
5
|
-
export interface En3ImageParameters<TMaterial extends En3ImageLikeMaterial<Texture>>
|
|
6
|
-
extends Omit<En3ImageLikeParameters<Texture, TMaterial>, 'loader'> {}
|
|
7
|
-
|
|
8
|
-
export class En3Image<TMaterial extends En3ImageLikeMaterial<Texture>> extends En3ImageLike<
|
|
9
|
-
Texture,
|
|
10
|
-
TMaterial
|
|
11
|
-
> {
|
|
12
|
-
constructor(parameters: En3ImageParameters<TMaterial>) {
|
|
13
|
-
super({
|
|
14
|
-
...parameters,
|
|
15
|
-
loader: en3TextureLoader,
|
|
16
|
-
})
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { Material, Mesh, PlaneGeometry, SRGBColorSpace, Texture } from 'three'
|
|
2
|
-
import { coverTexture } from '../utils/coverTexture'
|
|
3
|
-
import {
|
|
4
|
-
En3SourceManager,
|
|
5
|
-
En3SourceManagerLoader,
|
|
6
|
-
En3SourceManagerParameters,
|
|
7
|
-
} from '../attachments/En3SourceManager'
|
|
8
|
-
import { En3SourceConsumer } from './En3SourceConsumer'
|
|
9
|
-
import { resizer } from '$packages/resizer'
|
|
10
|
-
|
|
11
|
-
export type En3ImageLikeMaterial<TTexture extends Texture> = Material & { map: TTexture | null }
|
|
12
|
-
|
|
13
|
-
export interface En3ImageLikeParameters<
|
|
14
|
-
TTexture extends Texture,
|
|
15
|
-
TMaterial extends En3ImageLikeMaterial<TTexture>
|
|
16
|
-
> extends En3SourceManagerParameters<TTexture> {
|
|
17
|
-
width?: number
|
|
18
|
-
height?: number
|
|
19
|
-
widthSegments?: number
|
|
20
|
-
heightSegments?: number
|
|
21
|
-
material?: TMaterial
|
|
22
|
-
cover?: boolean
|
|
23
|
-
loader: En3SourceManagerLoader<TTexture>
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export class En3ImageLike<
|
|
27
|
-
TTexture extends Texture,
|
|
28
|
-
TMaterial extends En3ImageLikeMaterial<TTexture>
|
|
29
|
-
>
|
|
30
|
-
extends Mesh<PlaneGeometry, TMaterial>
|
|
31
|
-
implements En3SourceConsumer<TTexture>
|
|
32
|
-
{
|
|
33
|
-
#sourceManager: En3SourceManager<TTexture>
|
|
34
|
-
#isCover: boolean
|
|
35
|
-
|
|
36
|
-
constructor(parameters: En3ImageLikeParameters<TTexture, TMaterial>) {
|
|
37
|
-
super(
|
|
38
|
-
new PlaneGeometry(
|
|
39
|
-
parameters.width,
|
|
40
|
-
parameters.height,
|
|
41
|
-
parameters.widthSegments,
|
|
42
|
-
parameters.heightSegments
|
|
43
|
-
),
|
|
44
|
-
parameters.material
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
this.#sourceManager = new En3SourceManager<TTexture>({
|
|
48
|
-
consumer: this,
|
|
49
|
-
...parameters,
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
this.#isCover = parameters.cover || false
|
|
53
|
-
|
|
54
|
-
this.addEventListener('added', () => {
|
|
55
|
-
resizer.subscribe(this.#resizeListener)
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
this.addEventListener('removed', () => {
|
|
59
|
-
resizer.unsubscribe(this.#resizeListener)
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
this.#sourceManager.data.subscribe((detail) => {
|
|
63
|
-
if (!detail.current && detail.previous) {
|
|
64
|
-
detail.previous.dispose()
|
|
65
|
-
} else if (detail.current) {
|
|
66
|
-
if (this.material) {
|
|
67
|
-
if (this.#isCover) {
|
|
68
|
-
detail.current.matrixAutoUpdate = false
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
detail.current.colorSpace = SRGBColorSpace
|
|
72
|
-
detail.current.center.set(0.5, 0.5)
|
|
73
|
-
this.material.map = detail.current
|
|
74
|
-
this.material.needsUpdate = true
|
|
75
|
-
this.#resizeListener()
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
})
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
public get sourceManager() {
|
|
82
|
-
return this.#sourceManager
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
public updateTexture() {
|
|
86
|
-
this.#resizeListener()
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
protected onCoverResize(texture: TTexture) {
|
|
90
|
-
coverTexture(texture, {
|
|
91
|
-
x: this.scale.x,
|
|
92
|
-
y: this.scale.y,
|
|
93
|
-
})
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
#resizeListener = () => {
|
|
97
|
-
if (this.#sourceManager.data.current && this.#isCover) {
|
|
98
|
-
this.onCoverResize(this.#sourceManager.data.current)
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { Loader, VideoTexture } from 'three'
|
|
2
|
-
import { En3ImageLike, En3ImageLikeMaterial, En3ImageLikeParameters } from './En3ImageLike'
|
|
3
|
-
import { coverTexture } from '../utils/coverTexture'
|
|
4
|
-
|
|
5
|
-
class En3VideoLoader<
|
|
6
|
-
P extends Parameters<Loader<VideoTexture>['load']> = Parameters<Loader<VideoTexture>['load']>
|
|
7
|
-
> {
|
|
8
|
-
public load(...parameters: P) {
|
|
9
|
-
const url = parameters[0]
|
|
10
|
-
const onLoad = parameters[1]
|
|
11
|
-
const onError = parameters[3]
|
|
12
|
-
|
|
13
|
-
const videoElement = document.createElement('video')
|
|
14
|
-
videoElement.src = url
|
|
15
|
-
|
|
16
|
-
videoElement.onloadeddata = () => {
|
|
17
|
-
onLoad(new VideoTexture(videoElement))
|
|
18
|
-
|
|
19
|
-
videoElement.onerror = null
|
|
20
|
-
videoElement.onloadeddata = null
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
videoElement.onerror = () => {
|
|
24
|
-
onError?.(url)
|
|
25
|
-
|
|
26
|
-
videoElement.onerror = null
|
|
27
|
-
videoElement.onloadeddata = null
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface En3VideoParameters<TMaterial extends En3ImageLikeMaterial<VideoTexture>>
|
|
33
|
-
extends Omit<En3ImageLikeParameters<VideoTexture, TMaterial>, 'loader'> {
|
|
34
|
-
autoplay?: boolean
|
|
35
|
-
muted?: boolean
|
|
36
|
-
loop?: boolean
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export class En3Video<TMaterial extends En3ImageLikeMaterial<VideoTexture>> extends En3ImageLike<
|
|
40
|
-
VideoTexture,
|
|
41
|
-
TMaterial
|
|
42
|
-
> {
|
|
43
|
-
#isAutoplay: boolean
|
|
44
|
-
#isMuted: boolean
|
|
45
|
-
#isLoop: boolean
|
|
46
|
-
|
|
47
|
-
constructor(parameters: En3VideoParameters<TMaterial>) {
|
|
48
|
-
super({
|
|
49
|
-
...parameters,
|
|
50
|
-
loader: new En3VideoLoader(),
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
this.#isAutoplay = parameters.autoplay || false
|
|
54
|
-
this.#isMuted = parameters.muted || false
|
|
55
|
-
this.#isLoop = parameters.loop || false
|
|
56
|
-
|
|
57
|
-
this.sourceManager.data.subscribe((v) => {
|
|
58
|
-
if (v.current) {
|
|
59
|
-
const video = v.current.image as HTMLVideoElement
|
|
60
|
-
|
|
61
|
-
if (this.#isMuted) {
|
|
62
|
-
video.muted = true
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (this.#isLoop) {
|
|
66
|
-
video.loop = true
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if (this.#isAutoplay) {
|
|
70
|
-
video.play()
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
})
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
protected override onCoverResize(texture: VideoTexture) {
|
|
77
|
-
const video = texture.image as HTMLVideoElement
|
|
78
|
-
|
|
79
|
-
coverTexture(
|
|
80
|
-
texture,
|
|
81
|
-
{
|
|
82
|
-
x: this.scale.x,
|
|
83
|
-
y: this.scale.y,
|
|
84
|
-
},
|
|
85
|
-
video.videoWidth / video.videoHeight
|
|
86
|
-
)
|
|
87
|
-
}
|
|
88
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { CSS3DObject, CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer.js'
|
|
2
|
-
import { RESIZE_ORDER, TICK_ORDER } from '$packages/order'
|
|
3
|
-
import { resizer } from '$packages/resizer'
|
|
4
|
-
import { ticker } from '$packages/ticker'
|
|
5
|
-
import { en3 } from '../core/en3'
|
|
6
|
-
|
|
7
|
-
export interface En3HTMLParameters {
|
|
8
|
-
element: HTMLElement
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export class En3HTML extends CSS3DObject {
|
|
12
|
-
static #cssRenderer: CSS3DRenderer = null!
|
|
13
|
-
|
|
14
|
-
static #createRenderer() {
|
|
15
|
-
En3HTML.#cssRenderer = new CSS3DRenderer()
|
|
16
|
-
En3HTML.#cssRenderer.domElement.style.cssText = `
|
|
17
|
-
position: fixed;
|
|
18
|
-
left: 0;
|
|
19
|
-
top: 0;
|
|
20
|
-
width: 100%;
|
|
21
|
-
height: 100%;
|
|
22
|
-
z-index: 1;
|
|
23
|
-
pointer-events: none;
|
|
24
|
-
overflow: hidden;
|
|
25
|
-
`
|
|
26
|
-
|
|
27
|
-
en3.containerElement.prepend(En3HTML.#cssRenderer.domElement)
|
|
28
|
-
|
|
29
|
-
resizer.subscribe(this.#resizeListener, RESIZE_ORDER.EN3 + 1)
|
|
30
|
-
ticker.subscribe(this.#tickListener, { order: TICK_ORDER.EN3 + 1 })
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public static destroy() {
|
|
34
|
-
resizer.unsubscribe(this.#resizeListener)
|
|
35
|
-
ticker.unsubscribe(this.#tickListener)
|
|
36
|
-
|
|
37
|
-
this.#cssRenderer = null!
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
static #tickListener = () => {
|
|
41
|
-
this.#cssRenderer.render(en3.scene, en3.camera)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
static #resizeListener = () => {
|
|
45
|
-
this.#cssRenderer.setSize(en3.width, en3.height)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
constructor(parameters: En3HTMLParameters) {
|
|
49
|
-
super(parameters.element)
|
|
50
|
-
|
|
51
|
-
if (!En3HTML.#cssRenderer) {
|
|
52
|
-
En3HTML.#createRenderer()
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { Material, WebGLProgramParametersWithUniforms } from 'three'
|
|
2
|
-
|
|
3
|
-
export type En3VertexChunk =
|
|
4
|
-
| 'begin_vertex'
|
|
5
|
-
| 'beginnormal_vertex'
|
|
6
|
-
| 'clipping_planes_pars_vertex'
|
|
7
|
-
| 'clipping_planes_vertex'
|
|
8
|
-
| 'color_pars_vertex'
|
|
9
|
-
| 'color_vertex'
|
|
10
|
-
| 'default_vertex'
|
|
11
|
-
| 'defaultnormal_vertex'
|
|
12
|
-
| 'displacementmap_pars_vertex'
|
|
13
|
-
| 'displacementmap_vertex'
|
|
14
|
-
| 'envmap_pars_vertex'
|
|
15
|
-
| 'envmap_vertex'
|
|
16
|
-
| 'fog_pars_vertex'
|
|
17
|
-
| 'fog_vertex'
|
|
18
|
-
| 'lights_pars_begin'
|
|
19
|
-
| 'logdepthbuf_pars_vertex'
|
|
20
|
-
| 'logdepthbuf_vertex'
|
|
21
|
-
| 'morphcolor_vertex'
|
|
22
|
-
| 'morphnormal_vertex'
|
|
23
|
-
| 'morphtarget_pars_vertex'
|
|
24
|
-
| 'morphtarget_vertex'
|
|
25
|
-
| 'normal_pars_vertex'
|
|
26
|
-
| 'normal_vertex'
|
|
27
|
-
| 'project_vertex'
|
|
28
|
-
| 'shadowmap_pars_vertex'
|
|
29
|
-
| 'shadowmap_vertex'
|
|
30
|
-
| 'skinbase_vertex'
|
|
31
|
-
| 'skinning_pars_vertex'
|
|
32
|
-
| 'skinning_vertex'
|
|
33
|
-
| 'skinnormal_vertex'
|
|
34
|
-
| 'uv_pars_vertex'
|
|
35
|
-
| 'uv_vertex'
|
|
36
|
-
| 'worldpos_vertex'
|
|
37
|
-
|
|
38
|
-
export type En3FragmentChunk =
|
|
39
|
-
| 'alphahash_fragment'
|
|
40
|
-
| 'alphahash_pars_fragment'
|
|
41
|
-
| 'alphamap_fragment'
|
|
42
|
-
| 'alphamap_pars_fragment'
|
|
43
|
-
| 'alphatest_fragment'
|
|
44
|
-
| 'alphatest_pars_fragment'
|
|
45
|
-
| 'aomap_fragment'
|
|
46
|
-
| 'aomap_pars_fragment'
|
|
47
|
-
| 'bumpmap_pars_fragment'
|
|
48
|
-
| 'clearcoat_normal_fragment_begin'
|
|
49
|
-
| 'clearcoat_normal_fragment_maps'
|
|
50
|
-
| 'clearcoat_pars_fragment'
|
|
51
|
-
| 'clipping_planes_fragment'
|
|
52
|
-
| 'clipping_planes_pars_fragment'
|
|
53
|
-
| 'color_fragment'
|
|
54
|
-
| 'color_pars_fragment'
|
|
55
|
-
| 'colorspace_fragment'
|
|
56
|
-
| 'colorspace_pars_fragment'
|
|
57
|
-
| 'cube_uv_reflection_fragment'
|
|
58
|
-
| 'default_fragment'
|
|
59
|
-
| 'dithering_fragment'
|
|
60
|
-
| 'dithering_pars_fragment'
|
|
61
|
-
| 'emissivemap_fragment'
|
|
62
|
-
| 'emissivemap_pars_fragment'
|
|
63
|
-
| 'envmap_common_pars_fragment'
|
|
64
|
-
| 'envmap_fragment'
|
|
65
|
-
| 'envmap_pars_fragment'
|
|
66
|
-
| 'envmap_physical_pars_fragment'
|
|
67
|
-
| 'fog_fragment'
|
|
68
|
-
| 'fog_pars_fragment'
|
|
69
|
-
| 'gradientmap_pars_fragment'
|
|
70
|
-
| 'iridescence_fragment'
|
|
71
|
-
| 'iridescence_pars_fragment'
|
|
72
|
-
| 'lightmap_fragment'
|
|
73
|
-
| 'lightmap_pars_fragment'
|
|
74
|
-
| 'lights_fragment_begin'
|
|
75
|
-
| 'lights_fragment_end'
|
|
76
|
-
| 'lights_fragment_maps'
|
|
77
|
-
| 'lights_lambert_fragment'
|
|
78
|
-
| 'lights_lambert_pars_fragment'
|
|
79
|
-
| 'lights_phong_fragment'
|
|
80
|
-
| 'lights_phong_pars_fragment'
|
|
81
|
-
| 'lights_physical_fragment'
|
|
82
|
-
| 'lights_physical_pars_fragment'
|
|
83
|
-
| 'lights_toon_fragment'
|
|
84
|
-
| 'lights_toon_pars_fragment'
|
|
85
|
-
| 'logdepthbuf_fragment'
|
|
86
|
-
| 'logdepthbuf_pars_fragment'
|
|
87
|
-
| 'map_fragment'
|
|
88
|
-
| 'map_pars_fragment'
|
|
89
|
-
| 'map_particle_fragment'
|
|
90
|
-
| 'map_particle_pars_fragment'
|
|
91
|
-
| 'metalnessmap_fragment'
|
|
92
|
-
| 'metalnessmap_pars_fragment'
|
|
93
|
-
| 'normal_fragment_begin'
|
|
94
|
-
| 'normal_fragment_maps'
|
|
95
|
-
| 'normal_pars_fragment'
|
|
96
|
-
| 'normalmap_pars_fragment'
|
|
97
|
-
| 'opaque_fragment'
|
|
98
|
-
| 'premultiplied_alpha_fragment'
|
|
99
|
-
| 'roughnessmap_fragment'
|
|
100
|
-
| 'roughnessmap_pars_fragment'
|
|
101
|
-
| 'shadowmap_pars_fragment'
|
|
102
|
-
| 'shadowmask_pars_fragment'
|
|
103
|
-
| 'specularmap_fragment'
|
|
104
|
-
| 'specularmap_pars_fragment'
|
|
105
|
-
| 'tonemapping_fragment'
|
|
106
|
-
| 'tonemapping_pars_fragment'
|
|
107
|
-
| 'transmission_fragment'
|
|
108
|
-
| 'transmission_pars_fragment'
|
|
109
|
-
| 'uv_pars_fragment'
|
|
110
|
-
|
|
111
|
-
export type En3ModifiedMaterialUniforms = { [key: string]: { value: any } }
|
|
112
|
-
|
|
113
|
-
export interface En3ModifiedMaterialParameters<
|
|
114
|
-
TMaterial extends Material,
|
|
115
|
-
Uniforms extends En3ModifiedMaterialUniforms = {}
|
|
116
|
-
> {
|
|
117
|
-
material: TMaterial
|
|
118
|
-
uniforms?: Uniforms
|
|
119
|
-
vertextDeclarations?: string
|
|
120
|
-
fragmentDeclarations?: string
|
|
121
|
-
vertexChunk?: {
|
|
122
|
-
update?: En3VertexChunk
|
|
123
|
-
replace?: En3VertexChunk
|
|
124
|
-
content: string
|
|
125
|
-
}
|
|
126
|
-
fragmentChunk?: {
|
|
127
|
-
update?: En3FragmentChunk
|
|
128
|
-
replace?: En3FragmentChunk
|
|
129
|
-
content: string
|
|
130
|
-
}
|
|
131
|
-
log?: boolean
|
|
132
|
-
onReady?: (modifiedMaterial: En3ModifiedMaterial<TMaterial, Uniforms>) => Function | void
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export class En3ModifiedMaterial<
|
|
136
|
-
TMaterial extends Material,
|
|
137
|
-
Uniforms extends En3ModifiedMaterialUniforms = {}
|
|
138
|
-
> {
|
|
139
|
-
#material: TMaterial
|
|
140
|
-
#uniforms: Uniforms
|
|
141
|
-
|
|
142
|
-
constructor(parameters: En3ModifiedMaterialParameters<TMaterial, Uniforms>) {
|
|
143
|
-
this.#material = parameters.material
|
|
144
|
-
this.#uniforms = (parameters.uniforms || {}) as Uniforms
|
|
145
|
-
this.#material.userData.uniforms = this.#uniforms
|
|
146
|
-
|
|
147
|
-
let destroy: Function | void
|
|
148
|
-
|
|
149
|
-
const dispose = () => {
|
|
150
|
-
destroy?.()
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
this.#material.addEventListener('dispose', dispose)
|
|
154
|
-
|
|
155
|
-
this.#material.onBeforeCompile = (shader) => {
|
|
156
|
-
destroy?.()
|
|
157
|
-
|
|
158
|
-
for (const key in this.#uniforms) {
|
|
159
|
-
shader.uniforms[key] = this.#uniforms[key]
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (parameters.vertextDeclarations) {
|
|
163
|
-
shader.vertexShader = `
|
|
164
|
-
${parameters.vertextDeclarations}
|
|
165
|
-
${shader.vertexShader}
|
|
166
|
-
`
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
if (parameters.fragmentDeclarations) {
|
|
170
|
-
shader.fragmentShader = `
|
|
171
|
-
${parameters.fragmentDeclarations}
|
|
172
|
-
${shader.fragmentShader}
|
|
173
|
-
`
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
this.#chunk(shader, 'vertex', parameters)
|
|
177
|
-
this.#chunk(shader, 'fragment', parameters)
|
|
178
|
-
|
|
179
|
-
destroy = parameters.onReady?.(this)
|
|
180
|
-
|
|
181
|
-
if (parameters.log) {
|
|
182
|
-
console.log('VERTEX SHADER: ', shader.vertexShader)
|
|
183
|
-
console.log('FRAGMENT SHADER: ', shader.fragmentShader)
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
public get material() {
|
|
189
|
-
return this.#material
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
public get uniforms() {
|
|
193
|
-
return this.#uniforms
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
#chunk(
|
|
197
|
-
shader: WebGLProgramParametersWithUniforms,
|
|
198
|
-
type: 'vertex' | 'fragment',
|
|
199
|
-
parameters: En3ModifiedMaterialParameters<TMaterial, Uniforms>
|
|
200
|
-
) {
|
|
201
|
-
const chunkName = type === 'vertex' ? 'vertexChunk' : 'fragmentChunk'
|
|
202
|
-
const shaderName = type === 'vertex' ? 'vertexShader' : 'fragmentShader'
|
|
203
|
-
|
|
204
|
-
if (parameters[chunkName]) {
|
|
205
|
-
if (parameters[chunkName]!.replace) {
|
|
206
|
-
shader[shaderName] = shader[shaderName].replace(
|
|
207
|
-
`#include <${parameters[chunkName]!.replace}>`,
|
|
208
|
-
parameters[chunkName]!.content
|
|
209
|
-
)
|
|
210
|
-
} else if (parameters[chunkName]!.update) {
|
|
211
|
-
shader[shaderName] = shader[shaderName].replace(
|
|
212
|
-
`#include <${parameters[chunkName]!.update}>`,
|
|
213
|
-
`
|
|
214
|
-
#include <${parameters[chunkName]!.update}>
|
|
215
|
-
${parameters[chunkName]!.content}
|
|
216
|
-
`
|
|
217
|
-
)
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { Intersection, Object3D, Raycaster, Vector2 } from 'three'
|
|
2
|
-
import { en3 } from '../core/en3'
|
|
3
|
-
|
|
4
|
-
export type En3RaycasterEventType =
|
|
5
|
-
| 'en3-pointerdown'
|
|
6
|
-
| 'en3-pointerup'
|
|
7
|
-
| 'en3-pointermove'
|
|
8
|
-
| 'en3-pointerleave'
|
|
9
|
-
| 'en3-pointerenter'
|
|
10
|
-
| 'en3-pointermove'
|
|
11
|
-
|
|
12
|
-
export type En3RaycasterEvent = {
|
|
13
|
-
type: En3RaycasterEventType
|
|
14
|
-
originalEvent: PointerEvent
|
|
15
|
-
} & Intersection<Object3D>
|
|
16
|
-
|
|
17
|
-
export interface En3RaycasterOptions {
|
|
18
|
-
targetName?: string
|
|
19
|
-
eventDispatcher?: Object3D
|
|
20
|
-
propagation?: boolean
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
interface En3RaycasterTargetParameters extends En3RaycasterOptions {
|
|
24
|
-
object3D: Object3D
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export type En3RaycasterCallback = (event: En3RaycasterEvent) => void
|
|
28
|
-
|
|
29
|
-
class En3RaycasterTarget {
|
|
30
|
-
#targetName: string | undefined
|
|
31
|
-
#eventDispatcher: Object3D
|
|
32
|
-
#propagation: boolean
|
|
33
|
-
#object3D: Object3D
|
|
34
|
-
#target: () => Object3D
|
|
35
|
-
|
|
36
|
-
public intersection: Intersection<Object3D> | undefined
|
|
37
|
-
|
|
38
|
-
constructor(parameters: En3RaycasterTargetParameters) {
|
|
39
|
-
this.#targetName = parameters.targetName || undefined
|
|
40
|
-
this.#eventDispatcher = parameters.eventDispatcher || parameters.object3D
|
|
41
|
-
this.#propagation = parameters.propagation || false
|
|
42
|
-
this.#object3D = parameters.object3D
|
|
43
|
-
|
|
44
|
-
this.#target = !this.#targetName
|
|
45
|
-
? () => this.#object3D
|
|
46
|
-
: () => this.#object3D.getObjectByName(this.#targetName!) || this.#object3D
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public get object3D() {
|
|
50
|
-
return this.#object3D
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public get eventDispatcher() {
|
|
54
|
-
return this.#eventDispatcher
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
public get propagation() {
|
|
58
|
-
return this.#propagation
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public get target() {
|
|
62
|
-
return this.#target()
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
public dispatch(type: En3RaycasterEventType, originalEvent: PointerEvent) {
|
|
66
|
-
this.eventDispatcher.dispatchEvent<any>({
|
|
67
|
-
originalEvent,
|
|
68
|
-
type,
|
|
69
|
-
...this.intersection,
|
|
70
|
-
})
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export class En3Raycaster {
|
|
75
|
-
static #instance: En3Raycaster | undefined
|
|
76
|
-
|
|
77
|
-
#targets: Array<En3RaycasterTarget> = []
|
|
78
|
-
#hits: Array<En3RaycasterTarget> = []
|
|
79
|
-
|
|
80
|
-
#pointer = new Vector2()
|
|
81
|
-
#raycaster = new Raycaster()
|
|
82
|
-
|
|
83
|
-
constructor() {
|
|
84
|
-
if (En3Raycaster.#instance) {
|
|
85
|
-
return En3Raycaster.#instance
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
En3Raycaster.#instance = this
|
|
89
|
-
|
|
90
|
-
en3.containerElement.addEventListener('pointerdown', this.#pointerdownListener)
|
|
91
|
-
en3.containerElement.addEventListener('pointerup', this.#pointerupListener)
|
|
92
|
-
en3.containerElement.addEventListener('pointermove', this.#pointermoveListener)
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
public destroy() {
|
|
96
|
-
en3.containerElement.removeEventListener('pointerdown', this.#pointerdownListener)
|
|
97
|
-
en3.containerElement.removeEventListener('pointerup', this.#pointerupListener)
|
|
98
|
-
en3.containerElement.removeEventListener('pointermove', this.#pointermoveListener)
|
|
99
|
-
En3Raycaster.#instance = undefined
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
public add(object3D: Object3D, options?: En3RaycasterOptions) {
|
|
103
|
-
if (this.#targets.find((t) => t.object3D.uuid === object3D.uuid)) {
|
|
104
|
-
return
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const target = new En3RaycasterTarget({
|
|
108
|
-
object3D,
|
|
109
|
-
...options,
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
this.#targets.push(target)
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
public remove(object3D: Object3D) {
|
|
116
|
-
this.#targets = this.#targets.filter((t) => t.object3D.uuid !== object3D.uuid)
|
|
117
|
-
this.#hits = this.#hits.filter((h) => h.object3D.uuid !== object3D.uuid)
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
#pointerdownListener = (event: PointerEvent) => {
|
|
121
|
-
for (let index = 0; index < this.#hits.length; index++) {
|
|
122
|
-
this.#hits[index].dispatch('en3-pointerdown', event)
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
#pointerupListener = (event: PointerEvent) => {
|
|
127
|
-
for (let index = 0; index < this.#hits.length; index++) {
|
|
128
|
-
this.#hits[index].dispatch('en3-pointerup', event)
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
#pointermoveListener = (event: PointerEvent) => {
|
|
133
|
-
this.#pointer.x = (event.clientX / en3.width) * 2 - 1
|
|
134
|
-
this.#pointer.y = -(event.clientY / en3.height) * 2 + 1
|
|
135
|
-
|
|
136
|
-
if (en3.camera) {
|
|
137
|
-
this.#raycaster.setFromCamera(this.#pointer, en3.camera)
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
const hits: Array<En3RaycasterTarget> = []
|
|
141
|
-
|
|
142
|
-
for (const target of this.#targets) {
|
|
143
|
-
const intersection = this.#raycaster.intersectObject(target.target)
|
|
144
|
-
|
|
145
|
-
if (intersection.length) {
|
|
146
|
-
target.intersection = intersection[0]
|
|
147
|
-
hits.push(target)
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
let isStopPropagation = false
|
|
152
|
-
|
|
153
|
-
const leaveHits = this.#hits.filter(
|
|
154
|
-
(s) => !hits.find((h) => h.object3D.uuid === s.object3D.uuid)
|
|
155
|
-
)
|
|
156
|
-
|
|
157
|
-
const finalHits = hits
|
|
158
|
-
.sort((a, b) => b.object3D.position.z - a.object3D.position.z)
|
|
159
|
-
.filter((h) => {
|
|
160
|
-
if (isStopPropagation) {
|
|
161
|
-
return false
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
isStopPropagation = !h.propagation
|
|
165
|
-
|
|
166
|
-
return true
|
|
167
|
-
})
|
|
168
|
-
|
|
169
|
-
const enterHits = finalHits.filter(
|
|
170
|
-
(s) => !this.#hits.find((h) => h.object3D.uuid === s.object3D.uuid)
|
|
171
|
-
)
|
|
172
|
-
|
|
173
|
-
for (let index = 0; index < leaveHits.length; index++) {
|
|
174
|
-
leaveHits[index].dispatch('en3-pointerleave', event)
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
for (let index = 0; index < enterHits.length; index++) {
|
|
178
|
-
enterHits[index].dispatch('en3-pointerenter', event)
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
this.#hits = finalHits
|
|
182
|
-
|
|
183
|
-
for (let index = 0; index < this.#hits.length; index++) {
|
|
184
|
-
this.#hits[index].dispatch('en3-pointermove', event)
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|