sparkar-pftween
Version:
Spark AR library for tweening animation.
238 lines (237 loc) • 12 kB
TypeScript
declare const samplers: {
linear: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInQuad: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutQuad: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutQuad: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInCubic: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutCubic: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutCubic: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInQuart: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutQuart: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutQuart: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInQuint: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutQuint: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutQuint: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInSine: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutSine: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutSine: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInExpo: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutExpo: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutExpo: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInCirc: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutCirc: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutCirc: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInBack: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutBack: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutBack: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInElastic: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutElastic: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutElastic: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInBounce: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeOutBounce: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
easeInOutBounce: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
linearPingPong: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers | RotationSampler;
easePingPong: (begin: number | number[], end: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
punch: (begin: number | number[], amount: number | number[]) => ScalarSampler | ArrayOfScalarSamplers;
};
declare class PFTweenEvent {
private _events;
private _subscription;
constructor();
get events(): ((value: any) => void)[];
invoke(arg: any): void;
invokeOnMonitor(signal: any): void;
invokeOnEvent<T>(eventSource: EventSource<T>): void;
add(callback: (value: any) => void): void;
dispose(): void;
}
declare class PFTweenEvents {
readonly onStart: PFTweenEvent;
readonly onComplete: PFTweenEvent;
readonly onLoop: PFTweenEvent;
readonly onUpdate: PFTweenEvent;
readonly onFinally: PFTweenEvent;
constructor();
dispose(): void;
}
declare class PFTweenClipCancellation {
readonly value: any;
constructor(value: any);
cancel(): void;
}
interface IPFTweenClip {
(value?: any): Promise<{
value: any;
}>;
}
interface ICurveProvider {
evaluate(progress: number | ScalarSampler): number | ScalarSignal;
}
interface IPFTweenProgress {
readonly durationMilliseconds: number;
setProgress(progress: number): void;
setProgress(progress: ScalarSignal): void;
}
declare type PFTweenConfig = {
loopCount: number;
isMirror: boolean;
durationMilliseconds: number;
delayMilliseconds: number;
sampler: ScalarSampler | ArrayOfScalarSamplers;
events: PFTweenEvents;
id: string | symbol;
useCustomCurve: boolean;
curve: ICurveProvider;
begin: number | number[];
end: number | number[];
};
declare type SupportType<T> = T extends number[] ? number[] | Vec2Signal | PointSignal | Vec4Signal : T extends ScalarSignal | number ? ScalarSignal | number : T extends Vec2Signal ? Vec2Signal | number[] : T extends PointSignal ? PointSignal | number[] : T extends Vec4Signal ? Vec4Signal | number[] : never;
declare type UpdateValueType<T> = T extends number[] | PointSignal | Vec2Signal | Vec4Signal ? number[] : T extends ScalarSignal | number ? number : never;
declare class PFTween<T extends Number | Number[] | ScalarSignal | Vec2Signal | PointSignal | Vec4Signal> {
private config;
constructor(begin: T, end: SupportType<T>, durationMilliseconds: number);
static combine(clips: IPFTweenClip[]): IPFTweenClip;
static combine(...clips: IPFTweenClip[]): IPFTweenClip;
static concat(clips: IPFTweenClip[]): IPFTweenClip;
static concat(...clips: IPFTweenClip[]): IPFTweenClip;
static combineProgress(progresses: IPFTweenProgress[]): IPFTweenProgress;
static combineProgress(...progresses: IPFTweenProgress[]): IPFTweenProgress;
/** @deprecated It's typo of 'concatProgress' */
static concatProgerss(progresses: IPFTweenProgress[]): IPFTweenProgress;
/** @deprecated It's typo of 'concatProgress' */
static concatProgerss(...progresses: IPFTweenProgress[]): IPFTweenProgress;
static concatProgress(progresses: IPFTweenProgress[]): IPFTweenProgress;
static concatProgress(...progresses: IPFTweenProgress[]): IPFTweenProgress;
/**
* Stop and unsubscribe all events of the animation.
* @param id The id you set for to your animation.
*/
static kill(id: string | symbol): void;
/**
* Check if the animation of this id exist.
* @param id
* @returns
*/
static hasId(id: string | symbol): boolean;
/**
* Create a cancellation used for interrupt clips.
* @param value The args you want to pass to clip.
* @returns
*/
static newClipCancellation(value?: any): PFTweenClipCancellation;
setEase(ease: (begin: number, end: number) => ScalarSampler): PFTween<T>;
setEase(ease: (begin: number[], end: number[]) => ArrayOfScalarSamplers): PFTween<T>;
setEase(curveProvider: ICurveProvider): PFTween<T>;
setLoops(): PFTween<T>;
setLoops(loopCount: number): PFTween<T>;
setLoops(isMirror: boolean): PFTween<T>;
setLoops(loopCount: number, isMirror: boolean): PFTween<T>;
setMirror(isMirror?: boolean): this;
/**
* Delay to start animation, this will only delay the first time.
*/
setDelay(delayMilliseconds: number): this;
setId(id: string | symbol): this;
setAutoKill(): this;
onStart(callback: (value: PFTweenValue) => void): this;
onComplete(callback: () => void): this;
onUpdate(callback: (v: UpdateValueType<T>) => void): this;
onLoop(callback: (iteration: number) => void): this;
onStartVisible(sceneObject: SceneObjectBase): this;
onAnimatingVisibleOnly(sceneObject: SceneObjectBase): this;
onStartHidden(sceneObject: SceneObjectBase): this;
onCompleteVisible(sceneObject: SceneObjectBase): this;
onCompleteHidden(sceneObject: SceneObjectBase): this;
onCompleteResetPosition(sceneObject: SceneObjectBase): this;
onCompleteResetRotation(sceneObject: SceneObjectBase): this;
onCompleteResetScale(sceneObject: SceneObjectBase): this;
onCompleteResetOpacity(material: MaterialBase): this;
/**
* @deprecated Please use `onStart(callback)` instead. The callback of `onStart` receive the tween value. `bind` is equivalent to `onStart` now.
*/
bind(callback: (value: PFTweenValue) => void): this;
/**
* @deprecated Please use `build()` instead. `apply` is equivalent to `build` now.
*/
apply(autoPlay?: boolean): PFTweener;
build(autoPlay?: boolean): PFTweener;
/**
* Take input numbers and output them in a different order.
* Input values correspond to the swizzle value (xyzw) in the order theyre inputted. For example, an input of (1,2,3) and a swizzle value of (yxz) would output (2,1,3). You can also use 0 and 1. For example, a swizzle value of (x01) would output (1,0,1).
*/
swizzle(specifier: string): any;
/**
* Convert
* @param name
* @returns
*/
patch(name: string): void;
/**
* Get an evaluable animation controller.
* Please note that the `onCompleteEvent`, `onStartEvent`, `onLoopEvent` won't work.
*/
get progress(): PFTweenProgress;
get clip(): IPFTweenClip;
get scalar(): ScalarSignal;
get pack2(): Vec2Signal;
get pack3(): PointSignal;
get pack4(): Vec4Signal;
/**
* @deprecated Please use `pack3` instead. `scale` is equivalent to `pack3` now.
*/
get scale(): PointSignal;
get quaternion(): QuaternionSignal;
get rgba(): RgbaSignal;
/**
* @deprecated Please use `deg2rad` instead. `rotation` is equivalent to `deg2rad` now.
*/
get rotation(): ScalarSignal;
get deg2rad(): ScalarSignal;
get durationMilliseconds(): number;
}
declare class PFTweenValue {
readonly rawValue: ScalarSignal | ArrayOfScalarSignals;
constructor(animate: ScalarSignal | ArrayOfScalarSignals);
/**
* Take input numbers and output them in a different order.
* Input values correspond to the swizzle value (xyzw) in the order theyre inputted. For example, an input of (1,2,3) and a swizzle value of (yxz) would output (2,1,3). You can also use 0 and 1. For example, a swizzle value of (x01) would output (1,0,1).
*/
swizzle(specifier: string): any;
patch(name: string): void;
get scalar(): ScalarSignal;
get pack2(): Vec2Signal;
get pack3(): PointSignal;
/**
* @deprecated Please use `pack3` instead. `scale` is equivalent to `pack3` now.
*/
get scale(): PointSignal;
get pack4(): Vec4Signal;
get quaternion(): QuaternionSignal;
get rgba(): RgbaSignal;
/**
* @deprecated Please use `deg2rad` instead. `rotation` is equivalent to `deg2rad` now.
*/
get rotation(): ScalarSignal;
get deg2rad(): ScalarSignal;
}
declare class PFTweenProgress implements IPFTweenProgress {
readonly durationMilliseconds: number;
private config;
constructor(config: PFTweenConfig);
setProgress(progress: number): void;
setProgress(progress: ScalarSignal): void;
}
declare class PFTweener extends PFTweenValue {
private config;
private driver;
private play;
constructor(config: PFTweenConfig);
start(): void;
replay(): void;
reset(): void;
reverse(): void;
stop(reset?: boolean): void;
get isRunning(): BoolSignal;
}
export { samplers as Ease, PFTween };
export type { PFTweenValue, ICurveProvider, IPFTweenClip, IPFTweenProgress, PFTweener, PFTweenClipCancellation };