@luma.gl/engine
Version:
3D Engine Components for luma.gl
45 lines • 1.58 kB
TypeScript
import { Device, Framebuffer } from '@luma.gl/core';
import { ShaderInputs } from "../../shader-inputs.js";
import { pickingUniforms } from "./picking-uniforms.js";
/** Information about picked object */
export type PickInfo = {
batchIndex: number | null;
objectIndex: number | null;
};
export type PickingManagerProps = {
/** Shader Inputs from models to pick */
shaderInputs?: ShaderInputs<{
picking: typeof pickingUniforms.props;
}>;
/** Callback */
onObjectPicked?: (info: PickInfo) => void;
};
/**
* Helper class for using the new picking module
* @todo Port to WebGPU
* @todo Support multiple models
* @todo Switching picking module
*/
export declare class PickingManager {
device: Device;
props: Required<PickingManagerProps>;
/** Info from latest pick operation */
pickInfo: PickInfo;
/** Framebuffer used for picking */
framebuffer: Framebuffer | null;
static defaultProps: Required<PickingManagerProps>;
constructor(device: Device, props: PickingManagerProps);
destroy(): void;
getFramebuffer(): Framebuffer;
/** Clear highlighted / picked object */
clearPickState(): void;
/** Prepare for rendering picking colors */
beginRenderPass(): import("@luma.gl/core").RenderPass;
getPickInfo(mousePosition: [number, number]): PickInfo | null;
/**
* Get pick position in device pixel range
* use the center pixel location in device pixel range
*/
getPickPosition(mousePosition: number[]): [number, number];
}
//# sourceMappingURL=picking-manager.d.ts.map