Files
GDevelop/Extensions/TileMap/collision/TileMapCollisionMaskRenderer.ts

59 lines
1.7 KiB
TypeScript

namespace gdjs {
/**
* @category Objects > Tile Map
*/
export namespace TileMap {
/**
* This render is only useful for debugging purposes.
* @see {@link PixiTileMapHelper.updatePixiCollisionMask}, the render used by the GUI.
*/
export class TileMapCollisionMaskRenderer {
_object: gdjs.TileMapCollisionMaskRuntimeObject;
_graphics: PIXI.Graphics;
constructor(
runtimeObject: gdjs.TileMapCollisionMaskRuntimeObject,
instanceContainer: gdjs.RuntimeInstanceContainer
) {
this._object = runtimeObject;
this._graphics = new PIXI.Graphics();
instanceContainer
.getLayer('')
.getRenderer()
.addRendererObject(this._graphics, runtimeObject.getZOrder());
}
redrawCollisionMask() {
this._graphics.clear();
if (!this._object._debugMode) {
return;
}
this._graphics.lineStyle(
this._object._outlineSize,
this._object._outlineColor,
this._object._outlineOpacity / 255
);
for (const polygon of this._object.getHitBoxes()) {
const vertices = polygon.vertices;
if (vertices.length === 0) continue;
this._graphics.beginFill(
this._object._fillColor,
this._object._fillOpacity / 255
);
this._graphics.moveTo(vertices[0][0], vertices[0][1]);
for (let index = 1; index < vertices.length; index++) {
this._graphics.lineTo(vertices[index][0], vertices[index][1]);
}
this._graphics.closePath();
this._graphics.endFill();
}
}
getRendererObject() {
return this._graphics;
}
}
}
}