import { Instance } from "../../../instance-provider"; import { AutoEasingMethod } from "../../../math/auto-easing-method"; import { Vec } from "../../../math/vector"; import { ShaderDeclarationStatements, ShaderIOHeaderInjectionResult } from "../../../shaders/processing/base-shader-io-injection"; import { MetricsProcessing } from "../../../shaders/processing/metrics-processing"; import { ILayerProps, Layer } from "../../../surface/layer"; import { IInstanceAttribute, IUniform, IVertexAttribute, ShaderInjectionTarget } from "../../../types"; import { BaseIOExpansion, ShaderIOExpansion } from "../base-io-expansion"; /** * Make a utility method to make easing attributes easier to understand how to * construct. */ export declare function createEasingAttribute(attr: Omit, "resource" | "childAttributes" | "parentAttribute" | "block" | "blockIndex"> & { easing: AutoEasingMethod; }): Omit, "block" | "resource" | "childAttributes" | "parentAttribute" | "blockIndex"> & { easing: AutoEasingMethod; }; /** * This is an expansion handler for easing attributes. */ export declare class EasingIOExpansion extends BaseIOExpansion { /** This is used to make it easy to remember an easing attribute's original name */ private baseAttributeName; /** * Provides expanded IO for attributes with easing properties. * * Most of this process is hijacking the existing easing attribute to inject it's own * update method to handle calculating current position to animate to a new position * when a value is changed. * * This also provides new child attributes that must be changed when the original attributes * value is changed. */ expand>(layer: Layer, instanceAttributes: IInstanceAttribute[], _vertexAttributes: IVertexAttribute[], _uniforms: IUniform[]): ShaderIOExpansion; /** * Validates the IO about to be expanded. */ validate>(_layer: Layer, instanceAttributes: IInstanceAttribute[], _vertexAttributes: IVertexAttribute[], _uniforms: IUniform[]): boolean; /** * Easing provides some unique destructuring for the packed in vertex * information. */ processAttributeDestructuring(_layer: Layer>, declarations: ShaderDeclarationStatements, _metrics: MetricsProcessing, _vertexAttributes: IVertexAttribute[], instanceAttributes: IInstanceAttribute[], _uniforms: IUniform[]): string; /** * For easing, the header must be populated with the easing method */ processHeaderInjection(target: ShaderInjectionTarget, declarations: ShaderDeclarationStatements, _layer: Layer>, _metrics: MetricsProcessing, _vertexAttributes: IVertexAttribute[], instanceAttributes: IInstanceAttribute[], _uniforms: IUniform[]): ShaderIOHeaderInjectionResult; }