1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { Texture } from "../Materials/Textures/texture.js";
- import { VideoTexture } from "../Materials/Textures/videoTexture.js";
- import { TextureDome } from "./textureDome.js";
- import { PointerEventTypes } from "../Events/pointerEvents.js";
- /**
- * Display a 360/180 degree video on an approximately spherical surface, useful for VR applications or skyboxes.
- * As a subclass of TransformNode, this allow parenting to the camera or multiple videos with different locations in the scene.
- * This class achieves its effect with a VideoTexture and a correctly configured BackgroundMaterial on an inverted sphere.
- * Potential additions to this helper include zoom and and non-infinite distance rendering effects.
- */
- export class VideoDome extends TextureDome {
- /**
- * Get the video texture associated with this video dome
- */
- get videoTexture() {
- return this._texture;
- }
- /**
- * Get the video mode of this dome
- */
- get videoMode() {
- return this.textureMode;
- }
- /**
- * Set the video mode of this dome.
- * @see textureMode
- */
- set videoMode(value) {
- this.textureMode = value;
- }
- _initTexture(urlsOrElement, scene, options) {
- const tempOptions = { loop: options.loop, autoPlay: options.autoPlay, autoUpdateTexture: true, poster: options.poster };
- const texture = new VideoTexture((this.name || "videoDome") + "_texture", urlsOrElement, scene, options.generateMipMaps, this._useDirectMapping, Texture.TRILINEAR_SAMPLINGMODE, tempOptions);
- // optional configuration
- if (options.clickToPlay) {
- this._pointerObserver = scene.onPointerObservable.add((data) => {
- data.pickInfo?.pickedMesh === this.mesh && this._texture.video.play();
- }, PointerEventTypes.POINTERDOWN);
- }
- this._textureObserver = texture.onLoadObservable.add(() => {
- this.onLoadObservable.notifyObservers();
- });
- return texture;
- }
- /**
- * Releases resources associated with this node.
- * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)
- * @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)
- */
- dispose(doNotRecurse, disposeMaterialAndTextures = false) {
- this._texture.onLoadObservable.remove(this._textureObserver);
- this._scene.onPointerObservable.remove(this._pointerObserver);
- super.dispose(doNotRecurse, disposeMaterialAndTextures);
- }
- }
- /**
- * Define the video source as a Monoscopic panoramic 360 video.
- */
- VideoDome.MODE_MONOSCOPIC = TextureDome.MODE_MONOSCOPIC;
- /**
- * Define the video source as a Stereoscopic TopBottom/OverUnder panoramic 360 video.
- */
- VideoDome.MODE_TOPBOTTOM = TextureDome.MODE_TOPBOTTOM;
- /**
- * Define the video source as a Stereoscopic Side by Side panoramic 360 video.
- */
- VideoDome.MODE_SIDEBYSIDE = TextureDome.MODE_SIDEBYSIDE;
- //# sourceMappingURL=videoDome.js.map
|