# panorama/ImageLittlePlanet.js

    import { LittlePlanet } from './LittlePlanet';
    import * as THREE from 'three';

    /**
     * @classdesc Image Little Planet
     * @constructor
     * @param {string} source 		- URL for the image source
     * @param {number} [size=10000] - Size of plane geometry
     * @param {number} [ratio=0.5]  - Ratio of plane geometry's height against width
     */
    function ImageLittlePlanet ( source, size, ratio ) {

        LittlePlanet.call( this, 'image', source, size, ratio );

    }

    ImageLittlePlanet.prototype = Object.assign( Object.create( LittlePlanet.prototype ), {

        constructor: ImageLittlePlanet,

        /**
         * On loaded with texture
         * @param {THREE.Texture} texture
         * @memberOf ImageLittlePlanet
         * @instance
         */
        onLoad: function ( texture ) {

            this.updateTexture( texture );

            LittlePlanet.prototype.onLoad.call( this, texture );

        },

        /**
         * Update texture
         * @param {THREE.Texture} texture
         * @memberOf ImageLittlePlanet
         * @instance
         */
        updateTexture: function ( texture ) {

            texture.minFilter = texture.magFilter = THREE.LinearFilter;

            this.material.uniforms[ 'tDiffuse' ].value = texture;

        },

        /**
         * Dispose
         * @memberOf ImageLittlePlanet
         * @instance
         */
        dispose: function () {

            const tDiffuse = this.material.uniforms[ 'tDiffuse' ];

            if ( tDiffuse && tDiffuse.value ) {

                tDiffuse.value.dispose();

            }

            LittlePlanet.prototype.dispose.call( this );

        }

    } );

    export { ImageLittlePlanet };