UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

48 lines (47 loc) 1.47 kB
"use strict"; import { AnimatedPropertiesRegister } from "../AnimatedPropertiesRegister"; export function animBuilderStartTimeline(options) { const { timelineBuilder, timeline, vars, target, registerableProp, registerproperties } = options; const position = timelineBuilder.position(); const positionParam = position ? position.toParameter() : void 0; const existingTimeline = AnimatedPropertiesRegister.registeredTimelineForProperty(registerableProp); const newTimeline = timeline.to(target, vars, positionParam); const onStart = () => { if (existingTimeline) { if (existingTimeline.stoppable) { existingTimeline.timeline.kill(); AnimatedPropertiesRegister.deRegisterProp(registerableProp); } else { newTimeline.kill(); return; } } if (registerproperties) { AnimatedPropertiesRegister.registerProp(registerableProp, { timeline: newTimeline, stoppable: timelineBuilder.stoppable() }); } }; const onComplete = () => { AnimatedPropertiesRegister.deRegisterProp(registerableProp); }; if (vars.onStart) { const prevOnStart = vars.onStart; vars.onStart = () => { onStart(); prevOnStart(); }; } else { vars.onStart = onStart; } if (vars.onComplete) { const prevOnComplete = vars.onComplete; vars.onComplete = () => { onComplete(); prevOnComplete(); }; } else { vars.onComplete = onComplete; } }