Skip to content

Commit 176a8bd

Browse files
committed
Made parameters support more robust.
1 parent 90161d5 commit 176a8bd

File tree

3 files changed

+45
-20
lines changed

3 files changed

+45
-20
lines changed

Frame.js

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,14 @@ function Code( data ) {
257257

258258
}
259259

260+
// Save default parameters
261+
262+
if ( this.program.parameters !== undefined ) {
263+
264+
this.program._parameters = JSON.parse( JSON.stringify( this.program.parameters ) );
265+
266+
}
267+
260268
};
261269

262270
}
@@ -271,8 +279,8 @@ function Animation( data ) {
271279
this.end = data.end;
272280
this.layer = data.layer;
273281
this.effect = data.effect;
274-
this.enabled = data.enabled;
275-
this.parameters = data.parameters || {};
282+
this.enabled = data.enabled ?? true;
283+
this.parameters = data.parameters ?? {};
276284

277285
}
278286

@@ -339,9 +347,21 @@ function Timeline() {
339347

340348
if ( animation.end > time ) {
341349

342-
for ( const key in animation.parameters ) {
350+
const animationParameters = animation.parameters;
351+
const programParameters = animation.effect.program.parameters;
352+
const defaultParameters = animation.effect.program._parameters;
353+
354+
for ( const key in programParameters ) {
355+
356+
if ( animationParameters[ key ] !== undefined ) {
357+
358+
programParameters[ key ].value = animationParameters[ key ];
359+
360+
} else {
361+
362+
programParameters[ key ].value = defaultParameters[ key ].value;
343363

344-
animation.effect.program.parameters[ key ].value = animation.parameters[ key ];
364+
}
345365

346366
}
347367

js/Editor.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,9 @@ Editor.prototype = {
437437
start: animation.start + offset,
438438
end: animation.end + offset,
439439
layer: animation.layer,
440-
effect: animation.effect
440+
effect: animation.effect,
441+
enabled: animation.enabled,
442+
parameters: JSON.parse( JSON.stringify( animation.parameters ) )
441443
} );
442444

443445
this.addAnimation( duplicate );

js/SidebarAnimation.js

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,26 @@ function SidebarAnimation( editor ) {
2020

2121
const parameter = program.parameters[ key ];
2222

23-
if ( animation.parameters[ key ] == undefined ) {
23+
let value = animation.parameters[ key ];
24+
let isDefined = value !== undefined;
2425

25-
// TODO:
26-
// Unset parameters reuse the values from the previous effect usage
27-
// Find a solution for that as it could be very confusing
26+
if ( isDefined === false ) {
2827

2928
console.log( 'TODO: Parameter not defined', key, parameter );
29+
value = program._parameters[ key ].value;
3030

3131
}
3232

3333
var parameterRow = new UIRow();
34-
parameterRow.add( new UIText( parameter.name ).setWidth( '90px' ) );
34+
35+
var name = new UIText( parameter.name ).setWidth( '90px' );
36+
name.setTextDecoration( isDefined ? 'underline' : 'none' );
37+
parameterRow.add( name );
3538

3639
if ( parameter.isBoolean ) {
3740

3841
var parameterValue = new UICheckbox()
39-
.setValue( parameter.value )
42+
.setValue( value )
4043
.onChange( function () {
4144

4245
animation.parameters[ key ] = this.getValue();
@@ -52,7 +55,7 @@ function SidebarAnimation( editor ) {
5255

5356
var parameterValue = new UIInteger()
5457
.setRange( parameter.min, parameter.max )
55-
.setValue( parameter.value )
58+
.setValue( value )
5659
.setWidth( '150px' )
5760
.onChange( function () {
5861

@@ -69,7 +72,7 @@ function SidebarAnimation( editor ) {
6972

7073
var parameterValue = new UINumber()
7174
.setRange( parameter.min, parameter.max )
72-
.setValue( parameter.value )
75+
.setValue( value )
7376
.setWidth( '150px' )
7477
.onChange( function () {
7578

@@ -85,7 +88,7 @@ function SidebarAnimation( editor ) {
8588
} else if ( parameter.isVector2 ) {
8689

8790
var vectorX = new UINumber()
88-
.setValue( parameter.value[ 0 ] )
91+
.setValue( value[ 0 ] )
8992
.setWidth( '50px' )
9093
.onChange( function () {
9194

@@ -95,7 +98,7 @@ function SidebarAnimation( editor ) {
9598
} );
9699

97100
var vectorY = new UINumber()
98-
.setValue( parameter.value[ 1 ] )
101+
.setValue( value[ 1 ] )
99102
.setWidth( '50px' )
100103
.onChange( function () {
101104

@@ -110,7 +113,7 @@ function SidebarAnimation( editor ) {
110113
} else if ( parameter.isVector3 ) {
111114

112115
var vectorX = new UINumber()
113-
.setValue( parameter.value[ 0 ] )
116+
.setValue( value[ 0 ] )
114117
.setWidth( '50px' )
115118
.onChange( function () {
116119

@@ -120,7 +123,7 @@ function SidebarAnimation( editor ) {
120123
} );
121124

122125
var vectorY = new UINumber()
123-
.setValue( parameter.value[ 1 ] )
126+
.setValue( value[ 1 ] )
124127
.setWidth( '50px' )
125128
.onChange( function () {
126129

@@ -130,7 +133,7 @@ function SidebarAnimation( editor ) {
130133
} );
131134

132135
var vectorZ = new UINumber()
133-
.setValue( parameter.value[ 2 ] )
136+
.setValue( value[ 2 ] )
134137
.setWidth( '50px' )
135138
.onChange( function () {
136139

@@ -146,7 +149,7 @@ function SidebarAnimation( editor ) {
146149
} else if ( parameter.isString ) {
147150

148151
var parameterValue = new UIInput()
149-
.setValue( parameter.value )
152+
.setValue( value )
150153
.setWidth( '150px' )
151154
.onKeyUp( function () {
152155

@@ -160,7 +163,7 @@ function SidebarAnimation( editor ) {
160163
} else if ( parameter.isColor ) {
161164

162165
var parameterValue = new UIColor()
163-
.setHexValue( parameter.value )
166+
.setHexValue( value )
164167
.setWidth( '150px' )
165168
.onChange( function () {
166169

0 commit comments

Comments
 (0)