@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
114 lines (113 loc) • 4.39 kB
TypeScript
import type { Ref } from '@vue/reactivity';
import { Intersection, Material, Object3D } from 'three';
import { ConvertToStrings } from '../../../../../types/GlobalTypes';
import { MouseButton, MouseButtons } from '../../../../../core/MouseButton';
export interface PriorityOptions {
blockObjectsBehind: boolean;
skipIfObjectsInFront: boolean;
}
export interface CPUOptions {
traverseChildren: boolean;
pointsThreshold: number;
lineThreshold: number;
intersectionRef: Ref<Intersection | null>;
}
export interface GPUOptions {
worldPosMaterial: Material | null;
distanceRef: Ref<number>;
}
export interface ObjectOptions {
priority: PriorityOptions;
cpu?: CPUOptions;
gpu?: GPUOptions;
}
export interface EmptyOptions {
}
export declare function hasCPUOptions(optionsList: ObjectOptions[]): boolean;
export declare function hasGPUOptions(optionsList: ObjectOptions[]): boolean;
export declare function GPUOptionsDepthBufferRequired(optionsList: ObjectOptions[]): boolean;
export declare function CPUOptionsEqual(optionsList: ObjectOptions[]): boolean;
export declare function CPUOptionsMax(optionsList: ObjectOptions[], target: CPUOptions): CPUOptions;
export declare enum Status {
REQUIRED = 0,
OPTIONAL = 1,
FORBIDDEN = 2
}
export declare const STATUS_OPTIONS: Status[];
export declare const STATUS_OPTION_LABEL: string[];
export declare const DEFAULT_STATUS_OPTION: number;
export declare const STATUS_MENU_OPTIONS: {
menu: {
entries: {
value: Status;
name: string;
}[];
};
};
export interface ButtonOptions {
left: boolean;
middle: boolean;
right: boolean;
}
export interface ButtonsOptions {
left: Status;
middle: Status;
right: Status;
}
export interface ModifierOptions {
ctrl: Status;
shift: Status;
alt: Status;
}
export interface ButtonAndModifierOptions {
button: ButtonOptions;
modifier: ModifierOptions;
}
export interface ButtonsAndModifierOptions {
button: ButtonsOptions;
modifier: ModifierOptions;
}
export interface OnlyModifierOptions {
modifier: ModifierOptions;
}
export interface ButtonAndModifierOptionsAsString {
button: ConvertToStrings<ButtonOptions>;
modifier: ConvertToStrings<ModifierOptions>;
}
export interface ButtonsAndModifierOptionsAsString {
button: ConvertToStrings<ButtonsOptions>;
modifier: ConvertToStrings<ModifierOptions>;
}
export interface ModifierOptionsAsString {
modifier: ConvertToStrings<ModifierOptions>;
}
interface PropertyWithButtonConfig {
config: ButtonAndModifierOptions;
}
interface PropertyWithButtonsConfig {
config: ButtonsAndModifierOptions;
}
interface PropertyWithModifierConfig {
config: OnlyModifierOptions;
}
export interface ButtonConfig {
button: MouseButton;
ctrl: boolean;
shift: boolean;
alt: boolean;
}
export interface ButtonsConfig {
buttons: MouseButtons;
ctrl: boolean;
shift: boolean;
alt: boolean;
}
export declare function propertyMatchesModifiersConfig(propertyConfig: OnlyModifierOptions, buttonsConfig: ButtonsConfig | ButtonConfig): boolean;
export declare function propertyMatchesButtonConfig(propertyConfig: ButtonAndModifierOptions, buttonConfig: ButtonConfig): boolean;
export declare function propertyMatchesButtonsConfig(propertyConfig: ButtonsAndModifierOptions, buttonsConfig: ButtonsConfig): boolean;
export declare function buttonConfigFromEvent(event: Readonly<PointerEvent | MouseEvent | TouchEvent>, target: ButtonConfig): void;
export declare function buttonsConfigFromEvent(event: Readonly<PointerEvent | MouseEvent | TouchEvent>, target: ButtonsConfig): void;
export declare function filterObjectsWithMatchButtonConfig(event: Readonly<PointerEvent | MouseEvent | TouchEvent>, objects: Object3D[], propertiesListByObject: Map<Object3D, PropertyWithButtonConfig[]>, target: Object3D[]): void;
export declare function filterObjectsWithMatchButtonsConfig(event: Readonly<PointerEvent | MouseEvent | TouchEvent>, objects: Object3D[], propertiesListByObject: Map<Object3D, PropertyWithButtonsConfig[]>, target: Object3D[]): void;
export declare function filterObjectsWithMatchModifiersConfig(event: Readonly<PointerEvent | MouseEvent | TouchEvent>, objects: Object3D[], propertiesListByObject: Map<Object3D, PropertyWithModifierConfig[]>, target: Object3D[]): void;
export {};