@@ -232,18 +232,30 @@ export class ProjectManager {
232232 Object . keys ( anim . functions ) . forEach ( axis => {
233233 const func = anim . functions [ axis ] ;
234234 // Find the function name by checking parametricFunctions
235- let functionName = null ;
236- for ( const [ name , definition ] of Object . entries ( parametricFunctions ) ) {
237- if ( definition . apply === func . apply ) {
238- functionName = name ;
239- break ;
235+ let functionName = func . functionName ;
236+
237+ // If functionName is not available, try to identify it
238+ if ( ! functionName ) {
239+ for ( const [ name , definition ] of Object . entries ( parametricFunctions ) ) {
240+ if ( definition . apply === func . apply ) {
241+ functionName = name ;
242+ break ;
243+ }
240244 }
241245 }
242246
243247 if ( functionName ) {
248+ // Create a clean copy of parameters to avoid any reference issues
249+ const cleanParams = { } ;
250+ if ( func . params ) {
251+ Object . keys ( func . params ) . forEach ( paramName => {
252+ cleanParams [ paramName ] = func . params [ paramName ] ;
253+ } ) ;
254+ }
255+
244256 serializedAnim . functions [ axis ] = {
245257 type : functionName ,
246- params : { ... func . params }
258+ params : cleanParams
247259 } ;
248260 }
249261 } ) ;
@@ -269,10 +281,23 @@ export class ProjectManager {
269281 Object . keys ( animData . functions ) . forEach ( axis => {
270282 const funcData = animData . functions [ axis ] ;
271283 if ( funcData . type && parametricFunctions [ funcData . type ] ) {
284+ // Create a fresh copy of parameters to avoid reference issues
285+ const freshParams = { } ;
286+
287+ // Copy only the parameters that exist in the saved animation
288+ if ( funcData . params ) {
289+ Object . keys ( funcData . params ) . forEach ( paramName => {
290+ freshParams [ paramName ] = funcData . params [ paramName ] ;
291+ } ) ;
292+ }
293+
272294 reconstructed . functions [ axis ] = {
273295 apply : parametricFunctions [ funcData . type ] . apply ,
274- params : { ...funcData . params }
296+ params : freshParams , // Use the fresh copy
297+ functionName : funcData . type
275298 } ;
299+ } else {
300+ console . error ( `Function "${ funcData . type } " not found in parametricFunctions` ) ;
276301 }
277302 } ) ;
278303 }
0 commit comments