From d504046f1b7ecf44be8525a17d514dbb7339a684 Mon Sep 17 00:00:00 2001 From: Kevin Levron Date: Mon, 28 Sep 2020 21:03:35 +0200 Subject: [PATCH] add slider1 --- src/App.vue | 6 +- src/components/demos/Slider1.vue | 23 ++++ src/components/sliders/Slider1.vue | 151 ++++++++++++++++++++++++++ src/components/sliders/useTextures.js | 28 +++++ src/tools.js | 4 + 5 files changed, 209 insertions(+), 3 deletions(-) create mode 100644 src/components/demos/Slider1.vue create mode 100644 src/components/sliders/Slider1.vue create mode 100644 src/components/sliders/useTextures.js diff --git a/src/App.vue b/src/App.vue index 23476ac..59e46e9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -11,17 +11,17 @@ import Demo1 from './components/demos/Demo1.vue'; import Demo2 from './components/demos/Demo2.vue'; import Demo3 from './components/demos/Demo3.vue'; -import Demo4 from './components/demos/Demo4.vue'; +import Slider1 from './components/demos/Slider1.vue'; import DemoGLTF from './components/demos/DemoGLTF.vue'; export default { name: 'App', components: { - Demo1, Demo2, Demo3, Demo4, DemoGLTF, + Demo1, Demo2, Demo3, Slider1, DemoGLTF, }, data() { return { - tests: ['Demo1', 'Demo2', 'Demo3', 'Demo4', 'DemoGLTF'], + tests: ['Demo1', 'Demo2', 'Demo3', 'Slider1', 'DemoGLTF'], test: 'Demo1', }; }, diff --git a/src/components/demos/Slider1.vue b/src/components/demos/Slider1.vue new file mode 100644 index 0000000..d01e8e0 --- /dev/null +++ b/src/components/demos/Slider1.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/sliders/Slider1.vue b/src/components/sliders/Slider1.vue new file mode 100644 index 0000000..581a7a2 --- /dev/null +++ b/src/components/sliders/Slider1.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/components/sliders/useTextures.js b/src/components/sliders/useTextures.js new file mode 100644 index 0000000..26d0ad5 --- /dev/null +++ b/src/components/sliders/useTextures.js @@ -0,0 +1,28 @@ +import { TextureLoader } from 'three'; + +export default function useTextures() { + const loader = new TextureLoader(); + const textures = []; + + const loadTexture = (img, index) => { + return new Promise(resolve => { + loader.load( + img.src, + texture => { + textures[index] = texture; + resolve(texture); + } + ); + }); + }; + + const loadTextures = (images, cb) => { + textures.splice(0); + Promise.all(images.map(loadTexture)).then(cb); + }; + + return { + textures, + loadTextures, + }; +}; diff --git a/src/tools.js b/src/tools.js index 23efd52..450c3fc 100644 --- a/src/tools.js +++ b/src/tools.js @@ -17,3 +17,7 @@ export function lerpv3(v1, v2, amount) { v1.y = lerp(v1.y, v2.y, amount); v1.z = lerp(v1.z, v2.z, amount); }; + +export function limit(val, min, max) { + return val < min ? min : (val > max ? max : val); +};