@metacell/geppetto-meta-ui
Version:
React components from geppetto-meta to create neuroscience applications and visualize data.
188 lines (187 loc) • 5.65 kB
TypeScript
export default class ThreeDEngine {
constructor(containerRef: any, cameraOptions: any, cameraHandler: any, setColorHandler: any, backgroundColor: any, pickingEnabled: any, linesThreshold: any, renderingThreshold: any, onSelection: any, selectionStrategy: any, onHoverListeners: any, onEmptyHoverListener: any, preserveDrawingBuffer: any, dracoDecoderPath: any);
scene: THREE.Scene;
cameraManager: CameraManager;
cameraOptions: any;
onSelection: any;
renderer: THREE.WebGLRenderer;
controls: TrackballControls;
mouse: {
x: number;
y: number;
};
mouseContainer: {
x: number;
y: number;
};
frameId: number;
meshFactory: MeshFactory;
pickingEnabled: any;
onHoverListeners: any;
onEmptyHoverListener: any;
cameraHandler: any;
setColorHandler: any;
selectionStrategy: any;
containerRef: any;
width: any;
height: any;
lastRequestFrame: number;
lastRenderTimer: Date;
instancesMap: Map<any, any>;
externalThreeDObjectsUUIDs: Set<any>;
updateInstances(proxyInstances: any): Promise<void>;
updateCamera(cameraOptions: any): void;
stop(): void;
animate(): void;
renderScene(): void;
resize(): void;
requestFrame(): void;
mouseDownEventListener: (event: any) => void;
mouseUpEventListener: (event: any) => void;
mouseMoveEventListener: (event: any) => void;
/**
* Setups the renderer
* @param containerRef
*/
setupRenderer(containerRef: any, options: any): void;
/**
* Set up the listeners use to detect mouse movement and window resizing
*/
setupListeners: () => void;
/**
* Sets onHoverListeners
*/
setOnHoverListeners(onHoverListeners: any): void;
setOnEmptyHoverListener(onEmptyHoverListener: any): void;
/**
* Setups the camera
* @param cameraOptions
* @param aspect
*/
setupCamera(cameraOptions: any, aspect: any): void;
/**
*
* @param shaders
*/
configureRenderer(shaders: any): void;
composer: EffectComposer;
/**
* Setups the lights
*/
setupLights(): void;
setupControls(): void;
clientX: any;
clientY: any;
updateExternalThreeDObjects(threeDObjects: any): void;
/**
* Adds instances to the ThreeJS Scene
* @param proxyInstances
*/
addInstancesToScene(proxyInstances: any): Promise<void>;
addToScene(obj: any): void;
clearScene(proxyInstances: any): Promise<any>;
traverseInstance(proxyInstance: any, geppettoInstance: any): void;
/**
* Returns intersected objects from mouse click
*
* @returns {Array} a list of objects intersected by the current mouse coordinates
*/
getIntersectedObjects(): any[];
updateVisibleChildren(): void;
visibleChildren: any[];
/**
* Check that the material for the already present instance did not change.
* return true if the color changed, otherwise false.
*/
checkMaterial(mesh: any, instance: any): boolean;
updateInstanceMaterial(mesh: any, instance: any): void;
setInstanceMaterial(mesh: any, instance: any): void;
updateInstancesColor(proxyInstances: any): void;
/**
* Sets the color of the instances
*
* @param path
* @param color
*/
setInstanceColor(path: any, color: any): void;
/**
*
* @param instancePath
* @param visualGroups
*/
setSplitGroupsColor(instancePath: any, visualGroups: any): void;
updateGroupMeshes(proxyInstances: any): void;
getVisualElements(instance: any, visualGroups: any): {};
/**
* Show connection lines for this instance.
*
* @param instancePath
* @param {boolean} mode - Show or hide connection lines
*/
showConnectionLines(instancePath: any, mode: boolean): void;
/**
*
*
* @param instance
*/
showConnectionLinesForInstance(instance: any): void;
updateInstancesConnectionLines(proxyInstances: any): void;
/**
* Removes connection lines, all if nothing is passed in or just the ones passed in.
*
* @param instance - optional, instance for which we want to remove the connections
*/
removeConnectionLines(instance: any): void;
/**
* Sets whether to use wireframe for the materials of the meshes
* @param wireframe
*/
setWireframe(wireframe: any): void;
wireframe: any;
setBackgroundColor(color: any): void;
updateControls(): void;
/**
* Returns the scene renderer
* @returns renderer
*/
getRenderer(): THREE.WebGLRenderer;
/**
* Returns the scene
* @returns scene
*/
getScene(): THREE.Scene;
/**
* Returns the wireframe flag
* @returns wireframe
*/
getWireframe(): any;
/**
* Sets selectionStrategy
*/
setSelectionStrategy(selectionStrategy: any): void;
/**
* Sets onSelection
*/
setOnSelection(onSelection: any): void;
/**
* Sets linesThreshold
*/
setLinesThreshold(linesThreshold: any): void;
/**
* Sets pickingEnabled
*/
setPickingEnabled(pickingEnabled: any): void;
/**
* Sets cameraHandler
*/
seCameraHandler(cameraHandler: any): void;
/**
* Sets setColorHandler
*/
setSetColorHandler(setColorHandler: any): void;
}
import * as THREE from "three";
import CameraManager from "./CameraManager";
import { TrackballControls } from "./TrackballControls";
import MeshFactory from "./MeshFactory";
import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";