import { Mesh, AmbientLight } from 'three'; import { BasicSceneProps, BasicScene } from '../core/Scene'; import { CylinderSlot } from '../CylinderSlot'; import { CoordinatesShake } from '../CoordinatesShake'; import { TextPainter } from '../TextPainter'; export interface TemplateValue { x: number; y: number; z: number; } export interface TemplatePosition { position: TemplateValue; } export interface TemplateScale { scale: TemplateValue; } export declare type TemplateCylinder = [ TemplatePosition & TemplateScale, TemplatePosition & TemplateScale, TemplatePosition & TemplateScale ]; export interface SceneTemplate { slot: TemplatePosition & TemplateScale; caption: TemplatePosition & TemplateScale; camera: TemplatePosition; spotlight: TemplatePosition; cylinders: TemplateCylinder; } export declare type ValueRange = number | [number, number]; export interface CylinderSpinParams { cycles?: ValueRange; durationSeconds: ValueRange; } declare const enum SpinState { idle = 0, spinning = 1, spinningFinished = 2 } export interface TestSceneProps extends BasicSceneProps { slotTextureURL: string; numbersRollTextureURL: string; caption?: string; font: string; fontSize: string; fillStyle?: string; onSpinFinish?: (spinNumber: number) => void; sceneTemplate?: Partial; } export declare class TestScene extends BasicScene { textPainter: TextPainter; cylinders: CylinderSlot[]; spinConfig: [CylinderSpinParams, CylinderSpinParams, CylinderSpinParams]; sceneTemplate: SceneTemplate; spinState: SpinState; currentSpinNumber: number; onSpinFinish?: TestSceneProps['onSpinFinish']; ambientLight: AmbientLight; ambientLightColor: number; ambientLightIntensity: number; slotMesh: Mesh; captionMesh?: Mesh; isGlitchSpinSlot: boolean; isGlitchSpinCaption: boolean; isCameraShake: boolean; cameraShake: CoordinatesShake; constructor(props: TestSceneProps); spin(number: number): void; divideToThreeDigits(number: number): number[]; setSpinConfig(params: TestScene['spinConfig']): void; checkIsSpinning(): boolean; createCylinder(texureUrl: string): CylinderSlot; setCaption(caption: string): void; getSceneTemplate(template: TestSceneProps['sceneTemplate']): { slot: TemplatePosition & TemplateScale; caption: TemplatePosition & TemplateScale; camera: TemplatePosition; spotlight: TemplatePosition; cylinders: TemplateCylinder; }; resetPositions(): void; resetRotations(): void; setMeshValueFromTemplateValue(meshValue: Mesh['scale'] | Mesh['position'], templateValue: TemplateValue): void; getValueFromRange(valueRange: ValueRange): number; drawCaption(caption: string): void; setGlitchSpinSlot(isEnabled: boolean): void; setGlitchSpinCaption(isEnabled: boolean): void; setCameraShake(isEnabled: boolean): void; update(delta: number): void; updateOnFinish(): void; updateCameraShake(delta: number): void; updateGlitchSpinSlot(): void; updateGlitchSpinCaption(): void; getRandomInt(min: number, max: number): number; } export {};