diff --git a/sunpy/canvas/entity.js b/sunpy/canvas/entity.js new file mode 100644 index 0000000..7cc2d03 --- /dev/null +++ b/sunpy/canvas/entity.js @@ -0,0 +1,12 @@ +export class Entity { + constructor() {} + async render(renderNode) {} + async update(renderNode) {} +} + +export class Sprite extends Entity { + constructor(image) { + if (!(image instanceof Image)) + throw TypeError("Image has to be instance of `Image`"); + } +} \ No newline at end of file diff --git a/sunpy/canvas/renderer.js b/sunpy/canvas/renderer.js index 0d74f75..e200426 100644 --- a/sunpy/canvas/renderer.js +++ b/sunpy/canvas/renderer.js @@ -3,6 +3,7 @@ import { PropertyNode } from "../node/nodes/propertynode.js"; import { PropertyReader, Property } from "../node/propertyreader.js"; import { sleep } from "../core/utils.js"; import { Vector } from "../core/vector.js"; +import { Entity } from "./entity.js"; register("canvas", initRenderNode); @@ -31,7 +32,7 @@ export class RenderNode extends PropertyNode { this.gl.depthFunc(this.gl.LEQUAL); this.fps = 0; - this.objects = []; + this.entities = []; this.running = false; } @@ -52,11 +53,11 @@ export class RenderNode extends PropertyNode { this.running = false; } - add(object) { - if (!(object instanceof Renderable)) - throw TypeError("Object must be instance of Renderable"); + add(entity) { + if (!(entity instanceof Entity)) + throw TypeError("entity must be instance of `Entity`"); - this.objects.push(object); + this.entities.push(entity); } async loop() { // TODO: Fix all variables @@ -83,22 +84,11 @@ export class RenderNode extends PropertyNode { } async render() { - this.gl.clearColor(0.0, 0.0, 0.0, 1.0); this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT); - for (const object of this.objects) { - await object.render(this); + for (const entity of this.entities) { + await entity.render(this); } } -} - -export class Renderable { - constructor() { - - } - - async render(renderNode) { - - } } \ No newline at end of file diff --git a/sunpy/node/nodes/propertynode.js b/sunpy/node/nodes/propertynode.js index 051b71f..4b4bc5e 100644 --- a/sunpy/node/nodes/propertynode.js +++ b/sunpy/node/nodes/propertynode.js @@ -6,7 +6,7 @@ export class PropertyNode extends SwapNode { super(node, swapNode); if (!(propertyReader instanceof PropertyReader)) - throw TypeError("propertyReader must be an instance of PropertyReader"); + throw TypeError("propertyReader must be an instance of `PropertyReader`"); this.propertyReader = propertyReader; diff --git a/sunpy/node/nodes/swapnode.js b/sunpy/node/nodes/swapnode.js index 82aa5c8..a7b8311 100644 --- a/sunpy/node/nodes/swapnode.js +++ b/sunpy/node/nodes/swapnode.js @@ -5,7 +5,7 @@ export class SwapNode extends BaseNode { super(node); if (!(swapNode instanceof Node)) - throw TypeError("swapNode must be instance of Node"); + throw TypeError("swapNode must be instance of `Node`"); this.swapNode = swapNode;