Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 77 additions & 2 deletions build/three.core.js
Original file line number Diff line number Diff line change
Expand Up @@ -41728,6 +41728,18 @@ function convertArray( array, type ) {

}

/**
* Returns `true` if the given keyframe track settings hold Bezier tangent data.
*
* @param {?Object} settings - The settings of a keyframe track.
* @return {boolean} Whether both tangent arrays are defined or not.
*/
function hasTangents( settings ) {

return settings !== undefined && settings.inTangents !== undefined && settings.outTangents !== undefined;

}

/**
* Returns an array by which times and values can be sorted.
*
Expand Down Expand Up @@ -42110,6 +42122,19 @@ class AnimationUtils {

}

/**
* Returns `true` if the given keyframe track settings hold Bezier tangent data.
*
* @static
* @param {?Object} settings - The settings of a keyframe track.
* @return {boolean} Whether both tangent arrays are defined or not.
*/
static hasTangents( settings ) {

return hasTangents( settings );

}

/**
* Returns an array by which times and values can be sorted.
*
Expand Down Expand Up @@ -42939,6 +42964,15 @@ class KeyframeTrack {

}

if ( hasTangents( track.settings ) ) {

json.settings = {
inTangents: convertArray( track.settings.inTangents, Array ),
outTangents: convertArray( track.settings.outTangents, Array )
};

}

}

json.type = track.ValueTypeName; // mandatory
Expand Down Expand Up @@ -43164,6 +43198,13 @@ class KeyframeTrack {

}

if ( hasTangents( this.settings ) ) {

scaleTangentTimes( this.settings.inTangents, timeScale );
scaleTangentTimes( this.settings.outTangents, timeScale );

}

}

return this;
Expand Down Expand Up @@ -43439,12 +43480,33 @@ class KeyframeTrack {
// Interpolant argument to constructor is not saved, so copy the factory method directly.
track.createInterpolant = this.createInterpolant;

if ( hasTangents( this.settings ) ) {

track.settings = {
inTangents: this.settings.inTangents.slice(),
outTangents: this.settings.outTangents.slice()
};

}

return track;

}

}

function scaleTangentTimes( tangents, timeScale ) {

// tangents are [ time, value ] pairs, so only every second entry is a time

for ( let i = 0, n = tangents.length; i !== n; i += 2 ) {

tangents[ i ] *= timeScale;

}

}

/**
* The value type name.
*
Expand Down Expand Up @@ -44225,18 +44287,31 @@ function parseKeyframeTrack( json ) {

}

let track;

// derived classes can define a static parse method
if ( trackType.parse !== undefined ) {

return trackType.parse( json );
track = trackType.parse( json );

} else {

// by default, we assume a constructor compatible with the base
return new trackType( json.name, json.times, json.values, json.interpolation );
track = new trackType( json.name, json.times, json.values, json.interpolation );

}

if ( hasTangents( json.settings ) ) {

track.settings = {
inTangents: convertArray( json.settings.inTangents, Float32Array ),
outTangents: convertArray( json.settings.outTangents, Float32Array )
};

}

return track;

}

/**
Expand Down
4 changes: 2 additions & 2 deletions build/three.module.js
Original file line number Diff line number Diff line change
Expand Up @@ -17556,9 +17556,9 @@ class WebGLRenderer {
const materialProperties = properties.get( material );
const program = materialProperties.currentProgram;

if ( program.isReady() ) {
if ( program === undefined || program.isReady() ) {

// remove any programs that report they're ready to use from the list
// stop waiting for materials that are ready to use or have been disposed
materials.delete( material );

}
Expand Down
5 changes: 4 additions & 1 deletion build/three.tsl.js

Large diffs are not rendered by default.

Loading
Loading