source: js/standard_expdef_demo/js/world/object/arrow.js @ 880

Last change on this file since 880 was 880, checked in by Maciej Komosinski, 5 years ago

A simple javascript demo/animation of the basic behavior of "standard.expdef" experiment definition in Framsticks

File size: 2.0 KB
Line 
1/**
2 * @file Arrow Object
3 * @author Patryk Gliszczynski
4 * @version 1.0
5 */
6
7class Arrow {
8  /**
9   * Class reposnsible for the visualization of the cylindrical pointer.
10   */
11
12  constructor(y_pos) {
13    var geometry = new THREE.ConeGeometry(Config.Arrow.WIDTH,
14                                          Config.Arrow.LENGTH,
15                                          Config.Arrow.FACES);
16
17    let texture = new THREE.TextureLoader().load(Config.Arrow.TEXTURE);
18    texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
19    texture.repeat.set(Config.Arrow.REPEAT, Config.Arrow.REPEAT);
20    texture.anisotropy = Config.Arrow.ANISOTROPY;
21
22    let material = new THREE.MeshLambertMaterial({map: texture});
23    material.opacity = 0;
24    material.blending = THREE.NoBlending;
25
26    this.mesh = new THREE.Mesh(geometry, material);
27    this.mesh.castShadow = Config.Arrow.CAST_SHADOW;
28    this.mesh.receiveShadow = Config.Arrow.RECEIVE_SHADOW;
29    this.mesh.position.set(Config.Arrow.X_POS, y_pos, Config.Arrow.Z_POS)
30    this.mesh.rotation.z += Config.Arrow.Z_ROT;
31    this.mesh.scale.set(0.01, 0.01, 0.01);
32    this.enlarge();
33    this.goRight();
34  }
35
36  enlarge() {
37    let scale = Config.Arrow.Tween.Scale.Up.SIZE;
38    let speed = Config.Arrow.Tween.Scale.Up.SPEED;
39    let tween = new TWEEN.Tween(this.mesh.scale).to({x: scale, y: scale, z: scale}, speed);
40    tween.easing(Config.Arrow.Tween.Scale.Up.EASING);
41    tween.start();
42  }
43
44  goRight() {
45    let tween = new TWEEN.Tween(this.mesh.position).to({x: Config.Arrow.Tween.Move.Right.X_POS},
46                                                       Config.Arrow.Tween.Move.Right.SPEED);
47    tween.easing(Config.Arrow.Tween.Move.Right.EASING);
48    tween.onComplete(this.goLeft.bind(this));
49    tween.start();
50  }
51
52  goLeft() {
53    let tween = new TWEEN.Tween(this.mesh.position).to({x: Config.Arrow.Tween.Move.Left.X_POS},
54                                                       Config.Arrow.Tween.Move.Left.SPEED);
55    tween.easing(Config.Arrow.Tween.Move.Left.EASING);
56    tween.onComplete(this.goRight.bind(this));
57    tween.start();
58  }
59}
Note: See TracBrowser for help on using the repository browser.