Moved to components
This commit is contained in:
parent
ae1ec73418
commit
5e70d3d69a
|
@ -0,0 +1,27 @@
|
|||
import * as THREE from 'three';
|
||||
|
||||
export default class Animation {
|
||||
constructor(obj, clip) {
|
||||
// Scene that the clip will be applied to
|
||||
this.obj = obj;
|
||||
|
||||
// Initialize animation mixer
|
||||
this.mixer = new THREE.AnimationMixer(this.obj);
|
||||
|
||||
// Simple animation player
|
||||
this.playClip(clip);
|
||||
}
|
||||
|
||||
playClip(clip) {
|
||||
this.action = this.mixer.clipAction(clip);
|
||||
|
||||
this.action.play();
|
||||
}
|
||||
|
||||
// Call update in loop
|
||||
update(delta) {
|
||||
if(this.mixer) {
|
||||
this.mixer.update(delta);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
import * as THREE from 'three';
|
||||
|
||||
import Material from './material';
|
||||
import Config from '../../data/config';
|
||||
|
||||
// This helper class can be used to create and then place geometry in the scene
|
||||
export default class Geometry {
|
||||
constructor(scene) {
|
||||
this.scene = scene;
|
||||
this.geo = null;
|
||||
}
|
||||
|
||||
make(type) {
|
||||
if(type === 'plane') {
|
||||
return (width, height, widthSegments = 1, heightSegments = 1) => {
|
||||
this.geo = new THREE.PlaneGeometry(width, height, widthSegments, heightSegments);
|
||||
};
|
||||
}
|
||||
|
||||
if(type === 'sphere') {
|
||||
return (radius, widthSegments = 32, heightSegments = 32) => {
|
||||
this.geo = new THREE.SphereGeometry(radius, widthSegments, heightSegments);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
place(position, rotation) {
|
||||
const material = new Material(0xeeeeee).standard;
|
||||
const mesh = new THREE.Mesh(this.geo, material);
|
||||
|
||||
// Use ES6 spread to set position and rotation from passed in array
|
||||
mesh.position.set(...position);
|
||||
mesh.rotation.set(...rotation);
|
||||
|
||||
if(Config.shadow.enabled) {
|
||||
mesh.receiveShadow = true;
|
||||
}
|
||||
|
||||
this.scene.add(mesh);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
import * as THREE from 'three';
|
||||
|
||||
// USe this class as a helper to set up some default materials
|
||||
export default class Material {
|
||||
constructor(color) {
|
||||
this.basic = new THREE.MeshBasicMaterial({
|
||||
color,
|
||||
side: THREE.DoubleSide
|
||||
});
|
||||
|
||||
this.standard = new THREE.MeshStandardMaterial({
|
||||
color,
|
||||
shading: THREE.FlatShading,
|
||||
roughness: 1,
|
||||
metalness: 0,
|
||||
side: THREE.DoubleSide
|
||||
});
|
||||
|
||||
this.wire = new THREE.MeshBasicMaterial({wireframe: true});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue