forked from DefinitelyTyped/DefinitelyTyped
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfamous-tests.ts
88 lines (72 loc) · 2.1 KB
/
famous-tests.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/// <reference path="./famous.d.ts" />
import { Node, Size, FamousEngine } from 'famous/core'
import { DOMElement } from 'famous/dom-renderables'
import { PhysicsEngine, Box, RotationalSpring } from 'famous/physics'
import { Vec3, Quaternion } from 'famous/math'
function test_seed() {
FamousEngine.init();
var logo = FamousEngine.createScene().addChild();
new DOMElement(logo, { tagName: 'img' })
.setAttribute('src', './images/famous_logo.png');
logo
.setSizeMode('absolute', 'absolute', 'absolute')
.setAbsoluteSize(250, 250)
.setAlign(0.5, 0.5)
.setMountPoint(0.5, 0.5)
.setOrigin(0.5, 0.5);
var spinner = logo.addComponent({
onUpdate: function(time: number) {
logo.setRotation(0, time / 1000, 0);
logo.requestUpdateOnNextTick(spinner);
}
});
logo.requestUpdate(spinner);
}
function test_physics() {
let button = new Node()
.setSizeMode(Size.ABSOLUTE, Size.ABSOLUTE)
.setAbsoluteSize(120, 40)
.setAlign(.5, .5)
.setMountPoint(.5, .5)
.setOrigin(.5, .4);
button.addUIEvent('mousedown');
button.addUIEvent('touchstart');
button.addUIEvent('mouseup');
button.addUIEvent('touchend');
let engine = new PhysicsEngine();
let box = new Box({
mass: .25,
size: [1, 1, 1]
});
engine.add(box);
let anchor = new Quaternion();
let rotationalSpring = new RotationalSpring(null, box, {
period: 0.5,
dampingRatio: 0.3,
anchor: anchor
});
engine.add(rotationalSpring);
let started = false;
let id = button.addComponent({
onUpdate: (time: number) => {
engine.update(time);
if (box.getAngularVelocity().length() < 1e-7) {
return;
}
let t = engine.getTransform(box);
button.setRotation(t.rotation[0], t.rotation[1], t.rotation[2], t.rotation[3]);
button.requestUpdateOnNextTick(id);
},
onReceive: (event: string) => {
if (event == 'mousedown' || event == 'touchstart') {
anchor.fromEuler(Math.PI, 0, 0);
started = true;
button.requestUpdate(id);
}
if (event == 'mouseup' || event == 'touchend') {
anchor.fromEuler(0, 0, 0);
started = false;
}
}
});
}