UNPKG

@needle-tools/engine

Version:

Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.

191 lines (190 loc) • 7.24 kB
import { Material, Object3D } from "three"; import { Animation } from "../../../../Animation.js"; import { Animator } from "../../../../Animator.js"; import { AudioSource } from "../../../../AudioSource.js"; import { Behaviour, GameObject } from "../../../../Component.js"; import type { IPointerClickHandler, PointerEventData } from "../../../../ui/PointerEvents.js"; import { USDDocument, USDObject, USDZExporterContext } from "../../ThreeUSDZExporter.js"; import { AnimationExtension, RegisteredAnimationInfo, type UsdzAnimation } from "../Animation.js"; import type { BehaviorExtension, UsdzBehaviour } from "./Behaviour.js"; import { EmphasizeActionMotionType, GroupActionModel, Target } from "./BehavioursBuilder.js"; /** * @category Everywhere Actions * @group Components */ export declare class ChangeTransformOnClick extends Behaviour implements IPointerClickHandler, UsdzBehaviour { object?: Object3D; target?: Object3D; duration: number; relativeMotion: boolean; private coroutine; private targetPos; private targetRot; private targetScale; start(): void; onPointerClick(args: PointerEventData): void; private moveToTarget; private moveRelative; beforeCreateDocument(ext: any): void; } /** * @category Everywhere Actions * @group Components */ export declare class ChangeMaterialOnClick extends Behaviour implements IPointerClickHandler, UsdzBehaviour { /** * The material that will be switched to the variant material */ materialToSwitch?: Material; /** * The material that will be switched to */ variantMaterial?: Material; /** * The duration of the fade effect in seconds (USDZ/Quicklook only) * @default 0 */ fadeDuration: number; start(): void; onPointerEnter(_args: PointerEventData): void; onPointerExit(_: PointerEventData): void; onPointerClick(args: PointerEventData): void; private _objectsWithThisMaterial; /** Get all objects in the scene that have the assigned materialToSwitch */ private get objectsWithThisMaterial(); private selfModel; private targetModels; private static _materialTriggersPerId; private static _startHiddenBehaviour; private static _parallelStartHiddenActions; beforeCreateDocument(_ext: BehaviorExtension, _context: any): Promise<void>; createBehaviours(_ext: BehaviorExtension, model: USDObject, _context: any): void; afterCreateDocument(ext: BehaviorExtension, _context: any): void; private createAndAttachBehaviors; private static getMaterialName; static variantSwitchIndex: number; private createVariants; } /** * @category Everywhere Actions * @group Components */ export declare class SetActiveOnClick extends Behaviour implements IPointerClickHandler, UsdzBehaviour { target?: Object3D; toggleOnClick: boolean; targetState: boolean; hideSelf: boolean; start(): void; onPointerClick(args: PointerEventData): void; private selfModel; private selfModelClone; private targetModel?; private toggleModel?; createBehaviours(_: any, model: USDObject, _context: USDZExporterContext): void; private stateBeforeCreatingDocument; private targetStateBeforeCreatingDocument; private static clonedToggleIndex; private static wasVisible; private static toggleClone; private static reverseToggleClone; beforeCreateDocument(): void; afterCreateDocument(ext: BehaviorExtension, context: USDZExporterContext): void; afterSerialize(_ext: BehaviorExtension, _context: USDZExporterContext): void; } /** * @category Everywhere Actions * @group Components */ export declare class HideOnStart extends Behaviour implements UsdzBehaviour { private static _fadeBehaviour?; private static _fadeObjects; static add(target: Target, ext: BehaviorExtension): void; start(): void; createBehaviours(ext: any, model: any, _context: any): void; private wasVisible; beforeCreateDocument(): void; } /** * @category Everywhere Actions * @group Components */ export declare class EmphasizeOnClick extends Behaviour implements UsdzBehaviour { target?: Object3D; duration: number; motionType: EmphasizeActionMotionType; beforeCreateDocument(): void; createBehaviours(ext: any, model: any, _context: any): void; afterCreateDocument(_ext: any, _context: any): void; } /** * @category Everywhere Actions * @group Components */ export declare class PlayAudioOnClick extends Behaviour implements IPointerClickHandler, UsdzBehaviour { target?: AudioSource; clip: string; toggleOnClick: boolean; trigger: "tap" | "start"; start(): void; ensureAudioSource(): void; onPointerClick(args: PointerEventData): void; createBehaviours(ext: BehaviorExtension, model: USDObject, _context: USDZExporterContext): void; } /** * @category Everywhere Actions * @group Components */ export declare class PlayAnimationOnClick extends Behaviour implements IPointerClickHandler, UsdzBehaviour, UsdzAnimation { animator?: Animator; stateName?: string; trigger: "tap" | "start"; animation?: Animation; private get target(); start(): void; onPointerClick(args: PointerEventData): void; private selfModel; private stateAnimationModel; private animationSequence?; private animationLoopAfterSequence?; private randomOffsetNormalized; createBehaviours(_ext: BehaviorExtension, model: USDObject, _context: USDZExporterContext): void; private static animationActions; private static rootsWithExclusivePlayback; afterSerialize(): void; afterCreateDocument(ext: BehaviorExtension, context: USDZExporterContext): void; static getActionForSequences(_document: USDDocument, model: Target, animationSequence?: Array<RegisteredAnimationInfo>, animationLoopAfterSequence?: Array<RegisteredAnimationInfo>, randomOffsetNormalized?: number): GroupActionModel; static getAndRegisterAnimationSequences(ext: AnimationExtension, target: GameObject, stateName?: string): { animationSequence: Array<RegisteredAnimationInfo>; animationLoopAfterSequence: Array<RegisteredAnimationInfo>; randomTimeOffset: number; } | undefined; createAnimation(ext: AnimationExtension, model: USDObject, _context: USDZExporterContext): void; } export declare class PreliminaryAction extends Behaviour { getType(): string | void; target?: Object3D; getDuration(): number | void; } export declare class PreliminaryTrigger extends Behaviour { target?: PreliminaryAction; } /** * @category Everywhere Actions * @group Components */ export declare class VisibilityAction extends PreliminaryAction { type: VisibilityActionType; duration: number; getType(): "show" | "hide"; getDuration(): number; } /** * @category Everywhere Actions * @group Components */ export declare class TapGestureTrigger extends PreliminaryTrigger { } export declare enum VisibilityActionType { Show = 0, Hide = 1 }