Skip to content

Commit 070b340

Browse files
committed
PropertyMixer: Convert to es6 class
1 parent f5eb819 commit 070b340

File tree

1 file changed

+93
-93
lines changed

1 file changed

+93
-93
lines changed

src/animation/PropertyMixer.js

Lines changed: 93 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,81 @@
11
import { Quaternion } from '../math/Quaternion.js';
22

3-
function PropertyMixer( binding, typeName, valueSize ) {
4-
5-
this.binding = binding;
6-
this.valueSize = valueSize;
7-
8-
let mixFunction,
9-
mixFunctionAdditive,
10-
setIdentity;
11-
12-
// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]
13-
//
14-
// interpolators can use .buffer as their .result
15-
// the data then goes to 'incoming'
16-
//
17-
// 'accu0' and 'accu1' are used frame-interleaved for
18-
// the cumulative result and are compared to detect
19-
// changes
20-
//
21-
// 'orig' stores the original state of the property
22-
//
23-
// 'add' is used for additive cumulative results
24-
//
25-
// 'work' is optional and is only present for quaternion types. It is used
26-
// to store intermediate quaternion multiplication results
27-
28-
switch ( typeName ) {
29-
30-
case 'quaternion':
31-
mixFunction = this._slerp;
32-
mixFunctionAdditive = this._slerpAdditive;
33-
setIdentity = this._setAdditiveIdentityQuaternion;
34-
35-
this.buffer = new Float64Array( valueSize * 6 );
36-
this._workIndex = 5;
37-
break;
38-
39-
case 'string':
40-
case 'bool':
41-
mixFunction = this._select;
42-
43-
// Use the regular mix function and for additive on these types,
44-
// additive is not relevant for non-numeric types
45-
mixFunctionAdditive = this._select;
46-
47-
setIdentity = this._setAdditiveIdentityOther;
48-
49-
this.buffer = new Array( valueSize * 5 );
50-
break;
51-
52-
default:
53-
mixFunction = this._lerp;
54-
mixFunctionAdditive = this._lerpAdditive;
55-
setIdentity = this._setAdditiveIdentityNumeric;
56-
57-
this.buffer = new Float64Array( valueSize * 5 );
3+
class PropertyMixer {
4+
5+
constructor( binding, typeName, valueSize ) {
6+
7+
this.binding = binding;
8+
this.valueSize = valueSize;
9+
10+
let mixFunction,
11+
mixFunctionAdditive,
12+
setIdentity;
13+
14+
// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]
15+
//
16+
// interpolators can use .buffer as their .result
17+
// the data then goes to 'incoming'
18+
//
19+
// 'accu0' and 'accu1' are used frame-interleaved for
20+
// the cumulative result and are compared to detect
21+
// changes
22+
//
23+
// 'orig' stores the original state of the property
24+
//
25+
// 'add' is used for additive cumulative results
26+
//
27+
// 'work' is optional and is only present for quaternion types. It is used
28+
// to store intermediate quaternion multiplication results
29+
30+
switch ( typeName ) {
31+
32+
case 'quaternion':
33+
mixFunction = this._slerp;
34+
mixFunctionAdditive = this._slerpAdditive;
35+
setIdentity = this._setAdditiveIdentityQuaternion;
36+
37+
this.buffer = new Float64Array( valueSize * 6 );
38+
this._workIndex = 5;
39+
break;
5840

59-
}
41+
case 'string':
42+
case 'bool':
43+
mixFunction = this._select;
6044

61-
this._mixBufferRegion = mixFunction;
62-
this._mixBufferRegionAdditive = mixFunctionAdditive;
63-
this._setIdentity = setIdentity;
64-
this._origIndex = 3;
65-
this._addIndex = 4;
45+
// Use the regular mix function and for additive on these types,
46+
// additive is not relevant for non-numeric types
47+
mixFunctionAdditive = this._select;
6648

67-
this.cumulativeWeight = 0;
68-
this.cumulativeWeightAdditive = 0;
49+
setIdentity = this._setAdditiveIdentityOther;
6950

70-
this.useCount = 0;
71-
this.referenceCount = 0;
51+
this.buffer = new Array( valueSize * 5 );
52+
break;
7253

73-
}
54+
default:
55+
mixFunction = this._lerp;
56+
mixFunctionAdditive = this._lerpAdditive;
57+
setIdentity = this._setAdditiveIdentityNumeric;
58+
59+
this.buffer = new Float64Array( valueSize * 5 );
60+
61+
}
7462

75-
Object.assign( PropertyMixer.prototype, {
63+
this._mixBufferRegion = mixFunction;
64+
this._mixBufferRegionAdditive = mixFunctionAdditive;
65+
this._setIdentity = setIdentity;
66+
this._origIndex = 3;
67+
this._addIndex = 4;
68+
69+
this.cumulativeWeight = 0;
70+
this.cumulativeWeightAdditive = 0;
71+
72+
this.useCount = 0;
73+
this.referenceCount = 0;
74+
75+
}
7676

7777
// accumulate data in the 'incoming' region into 'accu<i>'
78-
accumulate: function ( accuIndex, weight ) {
78+
accumulate( accuIndex, weight ) {
7979

8080
// note: happily accumulating nothing when weight = 0, the caller knows
8181
// the weight and shouldn't have made the call in the first place
@@ -110,10 +110,10 @@ Object.assign( PropertyMixer.prototype, {
110110

111111
this.cumulativeWeight = currentWeight;
112112

113-
},
113+
}
114114

115115
// accumulate data in the 'incoming' region into 'add'
116-
accumulateAdditive: function ( weight ) {
116+
accumulateAdditive( weight ) {
117117

118118
const buffer = this.buffer,
119119
stride = this.valueSize,
@@ -132,10 +132,10 @@ Object.assign( PropertyMixer.prototype, {
132132
this._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );
133133
this.cumulativeWeightAdditive += weight;
134134

135-
},
135+
}
136136

137137
// apply the state of 'accu<i>' to the binding when accus differ
138-
apply: function ( accuIndex ) {
138+
apply( accuIndex ) {
139139

140140
const stride = this.valueSize,
141141
buffer = this.buffer,
@@ -181,10 +181,10 @@ Object.assign( PropertyMixer.prototype, {
181181

182182
}
183183

184-
},
184+
}
185185

186186
// remember the state of the bound property and copy it to both accus
187-
saveOriginalState: function () {
187+
saveOriginalState() {
188188

189189
const binding = this.binding;
190190

@@ -208,17 +208,17 @@ Object.assign( PropertyMixer.prototype, {
208208
this.cumulativeWeight = 0;
209209
this.cumulativeWeightAdditive = 0;
210210

211-
},
211+
}
212212

213213
// apply the state previously taken via 'saveOriginalState' to the binding
214-
restoreOriginalState: function () {
214+
restoreOriginalState() {
215215

216216
const originalValueOffset = this.valueSize * 3;
217217
this.binding.setValue( this.buffer, originalValueOffset );
218218

219-
},
219+
}
220220

221-
_setAdditiveIdentityNumeric: function () {
221+
_setAdditiveIdentityNumeric() {
222222

223223
const startIndex = this._addIndex * this.valueSize;
224224
const endIndex = startIndex + this.valueSize;
@@ -229,16 +229,16 @@ Object.assign( PropertyMixer.prototype, {
229229

230230
}
231231

232-
},
232+
}
233233

234-
_setAdditiveIdentityQuaternion: function () {
234+
_setAdditiveIdentityQuaternion() {
235235

236236
this._setAdditiveIdentityNumeric();
237237
this.buffer[ this._addIndex * this.valueSize + 3 ] = 1;
238238

239-
},
239+
}
240240

241-
_setAdditiveIdentityOther: function () {
241+
_setAdditiveIdentityOther() {
242242

243243
const startIndex = this._origIndex * this.valueSize;
244244
const targetIndex = this._addIndex * this.valueSize;
@@ -249,12 +249,12 @@ Object.assign( PropertyMixer.prototype, {
249249

250250
}
251251

252-
},
252+
}
253253

254254

255255
// mix functions
256256

257-
_select: function ( buffer, dstOffset, srcOffset, t, stride ) {
257+
_select( buffer, dstOffset, srcOffset, t, stride ) {
258258

259259
if ( t >= 0.5 ) {
260260

@@ -266,15 +266,15 @@ Object.assign( PropertyMixer.prototype, {
266266

267267
}
268268

269-
},
269+
}
270270

271-
_slerp: function ( buffer, dstOffset, srcOffset, t ) {
271+
_slerp( buffer, dstOffset, srcOffset, t ) {
272272

273273
Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );
274274

275-
},
275+
}
276276

277-
_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {
277+
_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {
278278

279279
const workOffset = this._workIndex * stride;
280280

@@ -284,9 +284,9 @@ Object.assign( PropertyMixer.prototype, {
284284
// Slerp to the intermediate result
285285
Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );
286286

287-
},
287+
}
288288

289-
_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {
289+
_lerp( buffer, dstOffset, srcOffset, t, stride ) {
290290

291291
const s = 1 - t;
292292

@@ -298,9 +298,9 @@ Object.assign( PropertyMixer.prototype, {
298298

299299
}
300300

301-
},
301+
}
302302

303-
_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {
303+
_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {
304304

305305
for ( let i = 0; i !== stride; ++ i ) {
306306

@@ -312,7 +312,7 @@ Object.assign( PropertyMixer.prototype, {
312312

313313
}
314314

315-
} );
315+
}
316316

317317

318318
export { PropertyMixer };

0 commit comments

Comments
 (0)