|
11 | 11 | * limitations under the License. |
12 | 12 | */ |
13 | 13 |
|
14 | | -import rubiks from './rubiks.js'; |
15 | | -import rubiksModule from './rubiks.wasm'; |
| 14 | +import rubiks from "./rubiks.js"; |
| 15 | +import rubiksModule from "./rubiks.wasm"; |
| 16 | +import * as THREE from "three"; |
| 17 | +import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; |
| 18 | + |
| 19 | +import "./index.css"; |
16 | 20 |
|
17 | 21 | const promise = rubiks({ |
18 | 22 | locateFile(path) { |
19 | | - if(path.endsWith('.wasm')) { |
| 23 | + if (path.endsWith(".wasm")) { |
20 | 24 | return rubiksModule; |
21 | 25 | } |
22 | 26 | return path; |
23 | | - } |
| 27 | + }, |
24 | 28 | }); |
25 | 29 |
|
26 | | -promise.then(module => { |
| 30 | +promise.then((module) => { |
27 | 31 | console.log(module); |
28 | 32 | console.log(JSON.stringify(module._fib(12))); |
29 | 33 | }); |
| 34 | + |
| 35 | +function init() { |
| 36 | + var scene = new THREE.Scene(); |
| 37 | + var camera = new THREE.PerspectiveCamera( |
| 38 | + 75, |
| 39 | + window.innerWidth / window.innerHeight, |
| 40 | + 0.1, |
| 41 | + 1000 |
| 42 | + ); |
| 43 | + |
| 44 | + var renderer = new THREE.WebGLRenderer(); |
| 45 | + renderer.setSize(window.innerWidth, window.innerHeight); |
| 46 | + document.body.appendChild(renderer.domElement); |
| 47 | + |
| 48 | + const makeCube = (color) => { |
| 49 | + var geometry = new THREE.BoxGeometry(); |
| 50 | + var material = new THREE.MeshBasicMaterial({ color }); |
| 51 | + return new THREE.Mesh(geometry, material); |
| 52 | + }; |
| 53 | + |
| 54 | + const cube = new THREE.Group() |
| 55 | + for (var i = 0; i < 3; ++i) { |
| 56 | + for (var j = 0; j < 3; ++j) { |
| 57 | + for (var k = 0; k < 3; ++k) { |
| 58 | + const cube1 = makeCube( ((((i + 1) * 50) * 255) + ((j + 1) * 50)) * 255 + ((k + 1) * 50)); |
| 59 | + cube1.position.set((i-1)*1.05, (j-1)*1.05, (k-1)*1.05) |
| 60 | + cube.add(cube1); |
| 61 | + } |
| 62 | + } |
| 63 | + } |
| 64 | + |
| 65 | + scene.add(cube); |
| 66 | + |
| 67 | + const controls = new OrbitControls(camera, renderer.domElement); |
| 68 | + controls.enableDamping = true |
| 69 | + controls.dampingFactor = 0.25 |
| 70 | + controls.enableZoom = false |
| 71 | + |
| 72 | + camera.position.z = 6; |
| 73 | + |
| 74 | + |
| 75 | + const onWindowResize = () => { |
| 76 | + camera.aspect = window.innerWidth / window.innerHeight; |
| 77 | + camera.updateProjectionMatrix(); |
| 78 | + renderer.setSize( window.innerWidth, window.innerHeight ); |
| 79 | + } |
| 80 | + |
| 81 | + window.addEventListener( 'resize', onWindowResize, false ); |
| 82 | + |
| 83 | + var animate = function () { |
| 84 | + requestAnimationFrame(animate); |
| 85 | + |
| 86 | + cube.rotation.x += 0.01; |
| 87 | + cube.rotation.y += 0.01; |
| 88 | + |
| 89 | + renderer.render(scene, camera); |
| 90 | + }; |
| 91 | + |
| 92 | + animate(); |
| 93 | +} |
| 94 | + |
| 95 | + |
| 96 | + |
| 97 | +init(); |
0 commit comments