@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
TypeScript
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
}