diff --git a/package.json b/package.json index 2f4e404c..0f064264 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "dependencies": { "@vueuse/core": "^13.8.0", "camera-controls": "^2.9.0", + "maath": "^0.10.8", "stats-gl": "^2.0.1", "stats.js": "^0.17.0", "three-custom-shader-material": "^5.4.0", diff --git a/playground/vue/components.d.ts b/playground/vue/components.d.ts index f3ca96a1..0f4aa421 100644 --- a/playground/vue/components.d.ts +++ b/playground/vue/components.d.ts @@ -8,13 +8,10 @@ export {} /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { - AkuAku: typeof import('./src/components/gltf/BlenderCube.vue')['default'] BlenderCube: typeof import('./src/components/gltf/BlenderCube.vue')['default'] FboCube: typeof import('./src/components/FboCube.vue')['default'] - Gltf: typeof import('./src/components/gltf/index.vue')['default'] GraphPane: typeof import('./src/components/GraphPane.vue')['default'] Jeep: typeof import('./src/components/fbx/Jeep.vue')['default'] - ModelsDemo: typeof import('./src/components/ModelsDemo.vue')['default'] OverlayInfo: typeof import('./src/components/OverlayInfo.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/playground/vue/src/pages/controls/PresentationControlsDemo.vue b/playground/vue/src/pages/controls/PresentationControlsDemo.vue new file mode 100644 index 00000000..c9012653 --- /dev/null +++ b/playground/vue/src/pages/controls/PresentationControlsDemo.vue @@ -0,0 +1,51 @@ + + + diff --git a/playground/vue/src/router/routes/controls.ts b/playground/vue/src/router/routes/controls.ts index baec8bd0..003d2e6e 100644 --- a/playground/vue/src/router/routes/controls.ts +++ b/playground/vue/src/router/routes/controls.ts @@ -34,6 +34,11 @@ export const controlsRoutes = [ name: 'ScrollControls', component: () => import('../../pages/controls/ScrollControlsDemo.vue'), }, + { + path: '/controls/presentation-controls', + name: 'PresentationControls', + component: () => import('../../pages/controls/PresentationControlsDemo.vue'), + }, { path: '/controls/helper', name: 'Helper', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1664973..d260274b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: camera-controls: specifier: ^2.9.0 version: 2.10.1(three@0.180.0) + maath: + specifier: ^0.10.8 + version: 0.10.8(@types/three@0.180.0)(three@0.180.0) stats-gl: specifier: ^2.0.1 version: 2.4.2(@types/three@0.180.0)(three@0.180.0) @@ -3264,6 +3267,12 @@ packages: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} + maath@0.10.8: + resolution: {integrity: sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==} + peerDependencies: + '@types/three': '>=0.134.0' + three: '>=0.134.0' + macos-release@3.3.0: resolution: {integrity: sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7910,6 +7919,11 @@ snapshots: lru-cache@7.18.3: {} + maath@0.10.8(@types/three@0.180.0)(three@0.180.0): + dependencies: + '@types/three': 0.180.0 + three: 0.180.0 + macos-release@3.3.0: {} magic-string@0.30.17: diff --git a/src/core/controls/PresentationControls.vue b/src/core/controls/PresentationControls.vue new file mode 100644 index 00000000..24d29b47 --- /dev/null +++ b/src/core/controls/PresentationControls.vue @@ -0,0 +1,362 @@ + + + diff --git a/src/core/controls/index.ts b/src/core/controls/index.ts index 07887bf4..85c9d03d 100644 --- a/src/core/controls/index.ts +++ b/src/core/controls/index.ts @@ -6,6 +6,7 @@ import OrbitControls from './OrbitControls.vue' import PointerLockControls from './PointerLockControls.vue' import ScrollControls from './ScrollControls.vue' import TransformControls from './TransformControls.vue' +import PresentationControls from './PresentationControls.vue' export { BaseCameraControls, @@ -15,6 +16,7 @@ export { MapControls, OrbitControls, PointerLockControls, + PresentationControls, ScrollControls, TransformControls, }