UNPKG

2.63 kBJavaScriptView Raw
1import { ViewService } from "./Root";
2
3
4//------------------------------------------------------------------------------------------
5//-- PM_Visible ---------------------------------------------------------------------------
6//------------------------------------------------------------------------------------------
7
8export const PM_Visible = superclass => class extends superclass {
9
10 destroy() {
11 super.destroy();
12 const render = this.service("RenderManager");
13 for (const layerName in render.layers) {
14 const layer = render.layers[layerName];
15 if (layer.has(this)) render.dirtyLayer(layerName);
16 render.layers[layerName].delete(this);
17 }
18 }
19
20 addToLayers(...names) {
21 const render = this.service("RenderManager");
22 names.forEach(name => {
23 if (!render.layers[name]) render.layers[name] = new Set();
24 render.layers[name].add(this);
25 render.dirtyLayer(name);
26 });
27 }
28
29 removeFromLayers(...names) {
30 const render = this.service("RenderManager");
31 names.forEach(name => {
32 if (!render.layers[name]) return;
33 render.layers[name].delete(this);
34 if (render.layers[name].size === 0) {
35 delete render.layers[name];
36 }
37 render.dirtyLayer(name);
38 });
39 }
40
41 layers() {
42 let result = [];
43 const render = this.service("RenderManager");
44 for (const layerName in render.layers) {
45 const layer = render.layers[layerName];
46 if (layer.has(this)) result.push(layerName);
47 }
48 return result;
49 }
50};
51
52//------------------------------------------------------------------------------------------
53//-- PM_Camera -----------------------------------------------------------------------------
54//------------------------------------------------------------------------------------------
55
56export const PM_Camera = superclass => class extends superclass {};
57
58//------------------------------------------------------------------------------------------
59//-- RenderManager -------------------------------------------------------------------------
60//------------------------------------------------------------------------------------------
61
62export class RenderManager extends ViewService {
63 constructor(options = {}, name) {
64 super(name);
65 this.registerViewName("RenderManager"); // Alternate generic name
66 this.layers = {};
67 }
68
69 dirtyLayer(name) {} // Renderer can use this to trigger a rebuild of renderer-specific layer data;
70
71}