forked from zz85/timeliner
-
Notifications
You must be signed in to change notification settings - Fork 6
/
test.html
127 lines (73 loc) · 2.16 KB
/
test.html
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<!doctype html>
<html>
<head>
</head>
<body>
<script src="timeliner_gui.js"></script>
<script>
Controller = function ControllerInterface() {
this._time = 0;
this._timeliner = null;
this._channelKeyTimes = {};
};
Controller.prototype = {
constructor: Controller,
init: function( timeliner ) {
this._timeliner = timeliner;
this._channelKeyTimes[ 'test1' ] = [];
this._channelKeyTimes[ 'test2' ] = [];
},
serialize: function() {
return this._channelKeyTimes;
},
deserialize: function(structs) {
this._channelKeyTimes = structs;
},
setDisplayTime: function( time ) {
//console.log( "setDisplayTime(%f)", time );
this._time = time;
},
setDuration: function( duration ) {
console.log( "setDuration(%f)", duration );
},
getChannelNames: function() {
return Object.keys( this._channelKeyTimes );
},
getChannelKeyTimes: function( channelName ) {
return this._channelKeyTimes[ channelName ];
},
setKeyframe: function( channelName, time ) {
console.log( "setKeyframe('%s',%f)", channelName, time );
var keyTimes = this._channelKeyTimes[ channelName ],
index = Timeliner.binarySearch( keyTimes, time );
if ( index < 0 ) {
// Note: Can use ~index to insert - we simply push & sort
keyTimes.push( time );
keyTimes.sort( Controller._compare );
}
},
delKeyframe: function( channelName, time ) {
console.log( "delKeyframe('%s',%f)", channelName, time );
var keyTimes = this._channelKeyTimes[ channelName ],
index = Timeliner.binarySearch( keyTimes, time );
if ( index >= 0 ) {
keyTimes[ index ] = keyTimes[ keyTimes.length - 1 ];
keyTimes.pop();
keyTimes.sort( Controller._compare );
}
},
moveKeyframe: function( channelName, time, delta, moveRemaining ) {
var keyTimes = this._channelKeyTimes[ channelName ],
index = Timeliner.binarySearch( keyTimes, time );
if ( index >= 0 ) {
var endAt = moveRemaining ? keyTimes.length : index + 1;
while ( index !== endAt ) keyTimes[ index ++ ] += delta;
keyTimes.sort( Controller._compare );
}
}
};
Controller._compare = function( a, b ) { return a - b; };
var timeliner = new Timeliner( new Controller() );
</script>
</body>
</html>