Skip to content

Commit eaa9332

Browse files
committed
Invert the dependency between MapViewerRenderer and WebGLMapRenderer.
1 parent 9e68e74 commit eaa9332

File tree

3 files changed

+25
-40
lines changed

3 files changed

+25
-40
lines changed

src/mapviewer/MapViewer.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ export class MapViewer {
7272
) {
7373
this.loadedCache = cache;
7474
this.cacheLoaders = new CacheLoaders(cache);
75-
this.renderer = new WebGLMapRenderer(this, this.cacheLoaders, this.inputManager, workerPool,
76-
this.renderDistance, this.unloadDistance, this.lodDistance,
77-
this.camera, this.pathfinder);
75+
this.renderer = new MapViewerRenderer(this);
7876
this.initCache(cache);
7977
}
8078

src/mapviewer/MapViewerRenderer.ts

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,39 @@
11
import { Schema } from "leva/dist/declarations/src/types";
22

3-
import { RendererMainLoop } from "../components/renderer/RendererMainLoop";
43
import { clamp } from "../util/MathUtil";
5-
import { MapManager } from "../renderer/MapManager";
64
import { MapViewer } from "./MapViewer";
75
import { OsrsMenuEntry } from "../components/rs/menu/OsrsMenu";
86
import { InteractType } from "../renderer/InteractType";
97
import { INTERACTION_RADIUS } from "../renderer/Interactions";
108
import { MenuTargetType } from "../rs/MenuEntry";
119
import { isTouchDevice } from "../util/DeviceUtil";
12-
import { InputManager } from "../util/InputManager";
13-
import { WebGLMapSquare } from "../renderer/webgl/WebGLMapSquare";
1410
import { SdMapData } from "../renderer/loader/SdMapData";
1511
import { Pathfinder } from "../rs/pathfinder/Pathfinder";
16-
import { RendererStats } from "../renderer/webgl/RendererStats";
12+
import { WebGLMapRenderer } from "../renderer/webgl/WebGLMapRenderer";
1713

18-
export abstract class MapViewerRenderer extends RendererMainLoop {
19-
inputManager: InputManager;
14+
export class MapViewerRenderer extends WebGLMapRenderer {
2015
pathfinder: Pathfinder;
2116

22-
// Temporary, will be cleaned up in the following commits.
23-
abstract getMapManager(): MapManager<WebGLMapSquare>;
24-
abstract getMapManagerTime(): number;
25-
abstract getRendererStats(): RendererStats;
26-
2717
constructor(public mapViewer: MapViewer) {
28-
super();
29-
this.inputManager = mapViewer.inputManager;
18+
super(mapViewer.cacheLoaders, mapViewer.inputManager, mapViewer.workerPool,
19+
mapViewer.renderDistance, mapViewer.unloadDistance, mapViewer.lodDistance,
20+
mapViewer.camera, mapViewer.pathfinder);
3021
this.pathfinder = mapViewer.pathfinder;
3122
}
3223

3324
override async init() {
3425
this.inputManager.init(this.canvas);
26+
super.init();
3527
}
3628

37-
override cleanUp(): void {
29+
override async cleanUp(): Promise<void> {
3830
this.inputManager.cleanUp();
31+
super.cleanUp();
3932
}
4033

41-
abstract rendererUpdate(): void;
42-
43-
update(time: number, deltaTime: number) {
34+
override update(time: number, deltaTime: number) {
4435
this.handleInput(deltaTime);
45-
this.rendererUpdate();
36+
super.update(time, deltaTime);
4637
}
4738

4839
initCache(): void { }
@@ -51,8 +42,6 @@ export abstract class MapViewerRenderer extends RendererMainLoop {
5142
return {};
5243
}
5344

54-
queueLoadMap(mapX: number, mapY: number): void { }
55-
5645
handleInput(deltaTime: number) {
5746
this.handleKeyInput(deltaTime);
5847
this.handleMouseInput();
@@ -237,7 +226,7 @@ export abstract class MapViewerRenderer extends RendererMainLoop {
237226
// this.mapViewer.debugText = `Frame Time Js: ${this.stats.frameTimeJs.toFixed(3)}`;
238227
}
239228

240-
onMapLoad(mapData: SdMapData) {
229+
override onMapLoad(mapData: SdMapData) {
241230
this.mapViewer.setMapImageUrl(
242231
mapData.mapX,
243232
mapData.mapY,
@@ -247,7 +236,7 @@ export abstract class MapViewerRenderer extends RendererMainLoop {
247236
);
248237
}
249238

250-
checkInteractions(interactReady: boolean, interactBuffer: Float32Array,
239+
override checkInteractions(interactReady: boolean, interactBuffer: Float32Array,
251240
closestInteractIndices: Map<number, number[]>): void {
252241
const frameCount = this.stats.frameCount;
253242

src/renderer/webgl/WebGLMapRenderer.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ import {
1818
import { createTextureArray } from "./PicoTexture";
1919
import { Scene } from "../../rs/scene/Scene";
2020
import { isWebGL2Supported, pixelRatio } from "../../util/DeviceUtil";
21-
import { MapViewer } from "../../mapviewer/MapViewer";
22-
import { MapViewerRenderer } from "../../mapviewer/MapViewerRenderer";
2321
import { DrawRange, NULL_DRAW_RANGE } from "../DrawRange";
2422
import { INTERACTION_RADIUS, INTERACT_BUFFER_COUNT, Interactions } from "../Interactions";
2523
import { WebGLMapSquare } from "./WebGLMapSquare";
@@ -40,6 +38,7 @@ import { SceneBuilder } from "../../rs/scene/SceneBuilder";
4038
import { Camera } from "../Camera";
4139
import { Pathfinder } from "../../rs/pathfinder/Pathfinder";
4240
import { RendererStats } from "./RendererStats";
41+
import { RendererMainLoop } from "../../components/renderer/RendererMainLoop";
4342

4443
const MAX_TEXTURES = 2048;
4544
const TEXTURE_SIZE = 128;
@@ -76,7 +75,7 @@ function getMaxAnisotropy(mode: TextureFilterMode): number {
7675
}
7776
}
7877

79-
export class WebGLMapRenderer extends MapViewerRenderer {
78+
export class WebGLMapRenderer extends RendererMainLoop {
8079
inputManager: InputManager;
8180
workerPool: RenderDataWorkerPool;
8281
dataLoader = new SdMapDataLoader();
@@ -191,11 +190,11 @@ export class WebGLMapRenderer extends MapViewerRenderer {
191190
return this.rendererStats;
192191
}
193192

194-
constructor(public mapViewer: MapViewer, cacheLoaders: CacheLoaders,
193+
constructor(cacheLoaders: CacheLoaders,
195194
inputManager: InputManager, workerPool: RenderDataWorkerPool,
196195
renderDistance: number, unloadDistance: number, lodDistance: number,
197196
camera: Camera, pathfinder: Pathfinder) {
198-
super(mapViewer);
197+
super();
199198
this.cacheLoaders = cacheLoaders;
200199
this.inputManager = inputManager;
201200
this.workerPool = workerPool;
@@ -220,8 +219,6 @@ export class WebGLMapRenderer extends MapViewerRenderer {
220219
}
221220

222221
async init(): Promise<void> {
223-
await super.init();
224-
225222
this.app = PicoGL.createApp(this.canvas);
226223
this.gl = this.app.gl as WebGL2RenderingContext;
227224

@@ -358,9 +355,7 @@ export class WebGLMapRenderer extends MapViewerRenderer {
358355
this.needsFramebufferUpdate = false;
359356
}
360357

361-
override initCache(): void {
362-
super.initCache();
363-
358+
initCache(): void {
364359
const cache = this.cacheLoaders.cache;
365360
this.isNewTextureAnim = cache.info.game === "runescape" && cache.info.revision >= 681;
366361

@@ -682,7 +677,7 @@ export class WebGLMapRenderer extends MapViewerRenderer {
682677
};
683678
}
684679

685-
override async queueLoadMap(mapX: number, mapY: number): Promise<void> {
680+
async queueLoadMap(mapX: number, mapY: number): Promise<void> {
686681
const mapData = await this.workerPool.queueLoad<
687682
SdMapLoaderInput,
688683
SdMapData | undefined,
@@ -707,6 +702,8 @@ export class WebGLMapRenderer extends MapViewerRenderer {
707702
}
708703
}
709704

705+
onMapLoad(mapData: SdMapData) {}
706+
710707
loadMap(
711708
mainProgram: Program,
712709
mainAlphaProgram: Program,
@@ -814,7 +811,7 @@ export class WebGLMapRenderer extends MapViewerRenderer {
814811
this.app.resize(width, height);
815812
}
816813

817-
override rendererUpdate() {
814+
override update(time: number, deltaTime: number) {
818815
this.camera.update(this.app.width, this.app.height);
819816

820817
const renderDistance = this.renderDistance;
@@ -1256,6 +1253,9 @@ export class WebGLMapRenderer extends MapViewerRenderer {
12561253
}
12571254
}
12581255

1256+
checkInteractions(interactReady: boolean, interactBuffer: Float32Array,
1257+
closestInteractIndices: Map<number, number[]>): void {}
1258+
12591259
prepareInteractions(interactions: Interactions): void {
12601260
const interactReady = interactions.check(
12611261
this.gl,
@@ -1274,8 +1274,6 @@ export class WebGLMapRenderer extends MapViewerRenderer {
12741274
}
12751275

12761276
override async cleanUp(): Promise<void> {
1277-
super.cleanUp();
1278-
12791277
this.quadArray?.delete();
12801278
this.quadArray = undefined;
12811279

0 commit comments

Comments
 (0)