/
BaseEntityRenderer.ts
64 lines (51 loc) · 1.66 KB
/
BaseEntityRenderer.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
* Copyright (c) 2017 Oliver Warrings <dev@qhun.de>
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
import { EntityRenderer } from './EntityRenderer';
import { AssetStorage } from '../asset/AssetStorage';
import { Singleton } from '../../shared/helper/Singleton';
import { RenderableEntity } from '../entity';
import { Camera } from '../camera/Camera';
import { WorldRenderer } from './WorldRenderer';
import { Vector2D, EventName, Log } from '../../shared';
/**
* an entity renderer class that handles renderer unspecific things
*/
export abstract class BaseEntityRenderer extends Singleton implements EntityRenderer {
/**
* the current world that is renderes by the world renderer
*/
protected worldRenderer: WorldRenderer;
/**
* the asset storage for entity images
*/
protected assetStorage = AssetStorage.getInstance<AssetStorage>();
/**
* logger instance
*/
private logger: Log = Log.getLogger(BaseEntityRenderer.name);
constructor(
protected drawingDimension: Vector2D
) {
super();
// register resize event
this.on(EventName.WindowResize, (newWindowSize: Vector2D) => {
// apply the new window size to determinate the right
// camera offset and visibillity
this.drawingDimension = newWindowSize;
});
}
/**
* renders the given entity
*/
public abstract renderEntity(entity: RenderableEntity): void;
/**
* set the world renderer
*/
public setWorldRenderer(worldRenderer: WorldRenderer): void {
this.worldRenderer = worldRenderer;
}
}