feat: improved visualisation and x4 data import
This commit is contained in:
@@ -28,19 +28,12 @@ import { SystemLayer } from "./viewerSystemLayer";
|
||||
import { LocalLayer } from "./viewerLocalLayer";
|
||||
import type { FactionSnapshot } from "./contracts";
|
||||
import type {
|
||||
CelestialVisual,
|
||||
CameraMode,
|
||||
ClaimVisual,
|
||||
ConstructionSiteVisual,
|
||||
DragMode,
|
||||
HistoryWindowState,
|
||||
NetworkStats,
|
||||
NodeVisual,
|
||||
OrbitLineVisual,
|
||||
PerformanceStats,
|
||||
Selectable,
|
||||
ShipVisual,
|
||||
StructureVisual,
|
||||
SystemVisual,
|
||||
WorldState,
|
||||
PovLevel,
|
||||
@@ -51,10 +44,10 @@ export class ViewerAppController {
|
||||
private readonly renderer = new THREE.WebGLRenderer({ antialias: true });
|
||||
|
||||
// ── Three independent rendering layers ───────────────────────────────────
|
||||
private readonly universeLayer = new UniverseLayer();
|
||||
private readonly galaxyLayer = new GalaxyLayer();
|
||||
private readonly systemLayer = new SystemLayer();
|
||||
private readonly localLayer = new LocalLayer();
|
||||
readonly universeLayer = new UniverseLayer();
|
||||
readonly galaxyLayer = new GalaxyLayer();
|
||||
readonly systemLayer = new SystemLayer();
|
||||
readonly localLayer = new LocalLayer();
|
||||
|
||||
private readonly clock = new THREE.Clock();
|
||||
private readonly raycaster = new THREE.Raycaster();
|
||||
@@ -70,16 +63,6 @@ export class ViewerAppController {
|
||||
|
||||
private readonly gamePanelEl: HTMLDivElement;
|
||||
|
||||
private readonly celestialVisuals = new Map<string, CelestialVisual>();
|
||||
private readonly stationVisuals = new Map<string, StructureVisual>();
|
||||
private readonly claimVisuals = new Map<string, ClaimVisual>();
|
||||
private readonly constructionSiteVisuals = new Map<string, ConstructionSiteVisual>();
|
||||
private readonly shipVisuals = new Map<string, ShipVisual>();
|
||||
private readonly systemVisuals = new Map<string, SystemVisual>();
|
||||
private readonly nodeVisuals = new Map<string, NodeVisual>();
|
||||
private readonly planetVisuals: any[] = [];
|
||||
private readonly orbitLines: OrbitLineVisual[] = [];
|
||||
|
||||
private readonly statusEl: HTMLDivElement;
|
||||
private readonly gameSummaryEl: HTMLSpanElement;
|
||||
private readonly systemPanelEl: HTMLDivElement;
|
||||
@@ -98,6 +81,7 @@ export class ViewerAppController {
|
||||
private readonly historyLayerEl: HTMLDivElement;
|
||||
private readonly marqueeEl: HTMLDivElement;
|
||||
private readonly hoverLabelEl: HTMLDivElement;
|
||||
private readonly hoverConnectorLineEl: SVGLineElement;
|
||||
|
||||
private world?: WorldState;
|
||||
private worldTimeSyncMs = performance.now();
|
||||
@@ -165,6 +149,7 @@ export class ViewerAppController {
|
||||
this.historyLayerEl = hud.historyLayerEl;
|
||||
this.marqueeEl = hud.marqueeEl;
|
||||
this.hoverLabelEl = hud.hoverLabelEl;
|
||||
this.hoverConnectorLineEl = hud.hoverConnectorLineEl;
|
||||
({
|
||||
sceneDataController: this.sceneDataController,
|
||||
navigationController: this.navigationController,
|
||||
@@ -231,13 +216,10 @@ export class ViewerAppController {
|
||||
renderFrame({
|
||||
clock: this.clock,
|
||||
renderer: this.renderer,
|
||||
universeScene: this.universeLayer.scene,
|
||||
galaxyScene: this.galaxyLayer.scene,
|
||||
galaxyCamera: this.galaxyLayer.camera,
|
||||
systemScene: this.systemLayer.scene,
|
||||
systemCamera: this.systemLayer.camera,
|
||||
localScene: this.localLayer.scene,
|
||||
localCamera: this.localLayer.camera,
|
||||
universeLayer: this.universeLayer,
|
||||
galaxyLayer: this.galaxyLayer,
|
||||
systemLayer: this.systemLayer,
|
||||
localLayer: this.localLayer,
|
||||
getPovLevel: () => this.povLevel,
|
||||
updateCamera: (delta) => this.updateCamera(delta),
|
||||
updateAmbience: (delta) => this.presentationController.updateAmbience(delta),
|
||||
@@ -294,7 +276,7 @@ export class ViewerAppController {
|
||||
|
||||
// Update star dot scales in galaxy scene
|
||||
updateSystemStarPresentation(
|
||||
this.systemVisuals,
|
||||
this.galaxyLayer.systemVisuals,
|
||||
this.activeSystemId,
|
||||
this.galaxyLayer.camera,
|
||||
(sprite, opacity) => this.setShellReticleOpacity(sprite, opacity),
|
||||
@@ -343,9 +325,9 @@ export class ViewerAppController {
|
||||
private onResize = () => {
|
||||
resizeViewer({
|
||||
renderer: this.renderer,
|
||||
galaxyCamera: this.galaxyLayer.camera,
|
||||
systemCamera: this.systemLayer.camera,
|
||||
localCamera: this.localLayer.camera,
|
||||
galaxyLayer: this.galaxyLayer,
|
||||
systemLayer: this.systemLayer,
|
||||
localLayer: this.localLayer,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -354,7 +336,7 @@ export class ViewerAppController {
|
||||
}
|
||||
|
||||
private describeSelectionParent(selection: Selectable) {
|
||||
return describeSelectionParent(this.world, selection, this.stationVisuals, this.nodeVisuals);
|
||||
return describeSelectionParent(this.world, selection, this.systemLayer.stationVisuals, this.systemLayer.nodeVisuals);
|
||||
}
|
||||
|
||||
private toDisplayLocalPosition(localPosition: THREE.Vector3, systemId?: string) {
|
||||
|
||||
Reference in New Issue
Block a user