import { defineComponent, PropType, watch } from 'vue' import { CubeReflectionMapping, CubeTextureLoader } from 'three' import Texture from './Texture' export default defineComponent({ extends: Texture, props: { name: { type: String, default: 'envMap' }, path: { type: String, required: true }, urls: { type: Array as PropType, default: () => ['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg'], }, props: { type: Object, default: () => ({ mapping: CubeReflectionMapping }) }, }, created() { watch(() => this.path, this.refreshTexture) watch(() => this.urls, this.refreshTexture) }, methods: { createTexture() { return new CubeTextureLoader() .setPath(this.path) .load(this.urls, this.onLoaded, this.onProgress, this.onError) }, }, })