88 lines
2.8 KiB
JavaScript
88 lines
2.8 KiB
JavaScript
gdjs.RuntimeScenePixiRenderer = function(runtimeScene, runtimeGameRenderer) {
|
|
this._pixiRenderer = runtimeGameRenderer
|
|
? runtimeGameRenderer.getPIXIRenderer()
|
|
: null;
|
|
this._runtimeScene = runtimeScene;
|
|
this._pixiContainer = new PIXI.Container(); //The Container meant to contains all pixi objects of the scene.
|
|
};
|
|
|
|
gdjs.RuntimeSceneRenderer = gdjs.RuntimeScenePixiRenderer; //Register the class to let the engine use it.
|
|
|
|
gdjs.RuntimeScenePixiRenderer.prototype.onGameResolutionResized = function() {
|
|
if (!this._pixiRenderer) return;
|
|
|
|
var runtimeGame = this._runtimeScene.getGame();
|
|
this._pixiContainer.scale.x =
|
|
this._pixiRenderer.width / runtimeGame.getGameResolutionWidth();
|
|
this._pixiContainer.scale.y =
|
|
this._pixiRenderer.height / runtimeGame.getGameResolutionHeight();
|
|
};
|
|
|
|
gdjs.RuntimeScenePixiRenderer.prototype.render = function() {
|
|
if (!this._pixiRenderer) return;
|
|
|
|
// this._renderProfileText(); //Uncomment to display profiling times
|
|
|
|
// render the PIXI container of the scene
|
|
this._pixiRenderer.backgroundColor = this._runtimeScene.getBackgroundColor();
|
|
this._pixiRenderer.render(this._pixiContainer);
|
|
};
|
|
|
|
gdjs.RuntimeScenePixiRenderer.prototype._renderProfileText = function() {
|
|
if (!this._runtimeScene.getProfiler()) return;
|
|
|
|
if (!this._profilerText) {
|
|
this._profilerText = new PIXI.Text(" ", {
|
|
align: "left",
|
|
stroke: "#FFF",
|
|
strokeThickness: 1
|
|
});
|
|
this._pixiContainer.addChild(this._profilerText);
|
|
}
|
|
|
|
var average = this._runtimeScene.getProfiler().getFramesAverageMeasures();
|
|
var outputs = [];
|
|
gdjs.Profiler.getProfilerSectionTexts("All", average, outputs);
|
|
|
|
this._profilerText.text = outputs.join("\n");
|
|
};
|
|
|
|
gdjs.RuntimeScenePixiRenderer.prototype.renderDebugDraw = function(instances, layersCameraCoordinates) {
|
|
if (!this._debugDraw) {
|
|
this._debugDraw = new PIXI.Graphics();
|
|
this._pixiContainer.addChild(this._debugDraw);
|
|
}
|
|
/** @type PIXI.Graphics */
|
|
var debugDraw = this._debugDraw;
|
|
|
|
debugDraw.clear();
|
|
debugDraw.beginFill(0x6868e8);
|
|
debugDraw.lineStyle(1, 0x6868e8, 1);
|
|
debugDraw.fillAlpha = 0.1;
|
|
debugDraw.alpha = 0.8;
|
|
|
|
for(var i = 0;i < instances.length;i++) {
|
|
var object = instances[i];
|
|
var cameraCoords = layersCameraCoordinates[object.getLayer()];
|
|
var rendererObject = object.getRendererObject();
|
|
|
|
if (!cameraCoords || !rendererObject) continue;
|
|
|
|
var aabb = object.getAABB();
|
|
debugDraw.drawRect(aabb.min[0], aabb.min[1], aabb.max[0] - aabb.min[0], aabb.max[1] - aabb.min[1]);
|
|
}
|
|
debugDraw.endFill();
|
|
};
|
|
|
|
gdjs.RuntimeScenePixiRenderer.prototype.hideCursor = function() {
|
|
this._pixiRenderer.view.style.cursor = "none";
|
|
};
|
|
|
|
gdjs.RuntimeScenePixiRenderer.prototype.showCursor = function() {
|
|
this._pixiRenderer.view.style.cursor = "";
|
|
};
|
|
|
|
gdjs.RuntimeScenePixiRenderer.prototype.getPIXIContainer = function() {
|
|
return this._pixiContainer;
|
|
};
|