feat: 3 scene rendering setup
This commit is contained in:
@@ -10,7 +10,7 @@ import {
|
||||
import {
|
||||
applyKeyboardControl,
|
||||
toggleCameraMode,
|
||||
zoomFromWheel,
|
||||
navigateFromWheel,
|
||||
} from "./viewerControls";
|
||||
import { ViewerHistoryWindowController } from "./viewerHistoryWindowController";
|
||||
import type {
|
||||
@@ -18,21 +18,23 @@ import type {
|
||||
DragMode,
|
||||
Selectable,
|
||||
WorldState,
|
||||
ZoomLevel,
|
||||
PovLevel,
|
||||
} from "./viewerTypes";
|
||||
|
||||
export interface ViewerInteractionContext {
|
||||
renderer: THREE.WebGLRenderer;
|
||||
raycaster: THREE.Raycaster;
|
||||
mouse: THREE.Vector2;
|
||||
camera: THREE.PerspectiveCamera;
|
||||
selectableTargets: Map<THREE.Object3D, Selectable>;
|
||||
galaxyCamera: THREE.PerspectiveCamera;
|
||||
systemCamera: THREE.PerspectiveCamera;
|
||||
galaxySelectableTargets: Map<THREE.Object3D, Selectable>;
|
||||
systemSelectableTargets: Map<THREE.Object3D, Selectable>;
|
||||
hoverLabelEl: HTMLDivElement;
|
||||
marqueeEl: HTMLDivElement;
|
||||
keyState: Set<string>;
|
||||
getWorld: () => WorldState | undefined;
|
||||
getActiveSystemId: () => string | undefined;
|
||||
getZoomLevel: () => ZoomLevel;
|
||||
getPovLevel: () => PovLevel;
|
||||
getSelectedItems: () => Selectable[];
|
||||
setSelectedItems: (items: Selectable[]) => void;
|
||||
getDragMode: () => DragMode | undefined;
|
||||
@@ -235,7 +237,7 @@ export class ViewerInteractionController {
|
||||
|
||||
readonly onWheel = (event: WheelEvent) => {
|
||||
event.preventDefault();
|
||||
this.context.setDesiredDistance(zoomFromWheel(this.context.getDesiredDistance(), event.deltaY));
|
||||
this.context.setDesiredDistance(navigateFromWheel(this.context.getDesiredDistance(), event.deltaY));
|
||||
this.context.updateGamePanel("Live");
|
||||
};
|
||||
|
||||
@@ -269,10 +271,9 @@ export class ViewerInteractionController {
|
||||
hoverLabelEl: this.context.hoverLabelEl,
|
||||
hoverPick: this.pickSelectableHitAtClientPosition(event.clientX, event.clientY),
|
||||
activeSystemId: this.context.getActiveSystemId(),
|
||||
zoomLevel: this.context.getZoomLevel(),
|
||||
povLevel: this.context.getPovLevel(),
|
||||
world: this.context.getWorld(),
|
||||
point: this.context.screenPointFromClient(event.clientX, event.clientY),
|
||||
camera: this.context.camera,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -300,8 +301,10 @@ export class ViewerInteractionController {
|
||||
this.context.renderer,
|
||||
this.context.raycaster,
|
||||
this.context.mouse,
|
||||
this.context.camera,
|
||||
this.context.selectableTargets,
|
||||
this.context.galaxyCamera,
|
||||
this.context.galaxySelectableTargets,
|
||||
this.context.systemCamera,
|
||||
this.context.systemSelectableTargets,
|
||||
clientX,
|
||||
clientY,
|
||||
);
|
||||
@@ -312,8 +315,10 @@ export class ViewerInteractionController {
|
||||
this.context.renderer,
|
||||
this.context.raycaster,
|
||||
this.context.mouse,
|
||||
this.context.camera,
|
||||
this.context.selectableTargets,
|
||||
this.context.galaxyCamera,
|
||||
this.context.galaxySelectableTargets,
|
||||
this.context.systemCamera,
|
||||
this.context.systemSelectableTargets,
|
||||
clientX,
|
||||
clientY,
|
||||
);
|
||||
@@ -322,10 +327,10 @@ export class ViewerInteractionController {
|
||||
private completeMarqueeSelection() {
|
||||
const selection = completeMarqueeSelection({
|
||||
renderer: this.context.renderer,
|
||||
camera: this.context.camera,
|
||||
systemCamera: this.context.systemCamera,
|
||||
dragStart: this.context.dragStart,
|
||||
dragLast: this.context.dragLast,
|
||||
selectableTargets: this.context.selectableTargets,
|
||||
systemSelectableTargets: this.context.systemSelectableTargets,
|
||||
});
|
||||
this.context.setSelectedItems(selection);
|
||||
this.context.syncFollowStateFromSelection();
|
||||
|
||||
Reference in New Issue
Block a user