UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

309 lines (293 loc) 12.7 kB
// Class: starling.rendering.RenderState var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; function starling_utils_RectangleUtil() {return require("./../../starling/utils/RectangleUtil");} function openfl_geom_Matrix() {return $import(require("openfl/geom/Matrix"));} function openfl_geom_Matrix3D() {return $import(require("openfl/geom/Matrix3D"));} function starling_utils_MatrixUtil() {return require("./../../starling/utils/MatrixUtil");} function starling_utils_Pool() {return require("./../../starling/utils/Pool");} function Std() {return require("./../../Std");} function starling_utils_MathUtil() {return require("./../../starling/utils/MathUtil");} function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function openfl_errors_ArgumentError() {return $import(require("openfl/errors/ArgumentError"));} function openfl__$Vector_Vector_$Impl_$() {return require("./../../openfl/_Vector/Vector_Impl_");} // Constructor var RenderState = function() { this._miscOptions = 0; this.reset(); } // Meta RenderState.__name__ = "starling.rendering.RenderState"; RenderState.__isInterface__ = false; RenderState.prototype = { copyFrom: function(renderState) { if(this._onDrawRequired != null) { var currentTarget = this._renderTarget != null ? this._renderTarget.get_base() : null; var nextTarget = renderState._renderTarget != null ? renderState._renderTarget.get_base() : null; var cullingChanges = (this._miscOptions & 3840) != (renderState._miscOptions & 3840); var clipRectChanges = (this._clipRect != null || renderState._clipRect != null) && !(starling_utils_RectangleUtil().default).compare(this._clipRect,renderState._clipRect); if(this._blendMode != renderState._blendMode || currentTarget != nextTarget || clipRectChanges || cullingChanges) { this._onDrawRequired(); } } this._alpha = renderState._alpha; this._blendMode = renderState._blendMode; this._renderTarget = renderState._renderTarget; this._miscOptions = renderState._miscOptions; this._modelviewMatrix.copyFrom(renderState._modelviewMatrix); if(this._projectionMatrix3DRev != renderState._projectionMatrix3DRev) { this._projectionMatrix3DRev = renderState._projectionMatrix3DRev; this._projectionMatrix3D.copyFrom(renderState._projectionMatrix3D); } if(this._modelviewMatrix3D != null || renderState._modelviewMatrix3D != null) { this.set_modelviewMatrix3D(renderState._modelviewMatrix3D); } if(this._clipRect != null || renderState._clipRect != null) { this.set_clipRect(renderState._clipRect); } }, reset: function() { this.set_alpha(1.0); this.set_blendMode("normal"); this.set_culling("none"); this.set_depthMask(false); this.set_depthTest("always"); this.set_modelviewMatrix3D(null); this.set_renderTarget(null); this.set_clipRect(null); this._projectionMatrix3DRev = 0; if(this._modelviewMatrix != null) { this._modelviewMatrix.identity(); } else { this._modelviewMatrix = new (openfl_geom_Matrix().default)(); } if(this._projectionMatrix3D != null) { this._projectionMatrix3D.identity(); } else { this._projectionMatrix3D = new (openfl_geom_Matrix3D().default)(); } if(this._mvpMatrix3D == null) { this._mvpMatrix3D = new (openfl_geom_Matrix3D().default)(); } }, transformModelviewMatrix: function(matrix) { (starling_utils_MatrixUtil().default).prependMatrix(this._modelviewMatrix,matrix); }, transformModelviewMatrix3D: function(matrix) { if(this._modelviewMatrix3D == null) { this._modelviewMatrix3D = (starling_utils_Pool().default).getMatrix3D(); } this._modelviewMatrix3D.prepend((starling_utils_MatrixUtil().default).convertTo3D(this._modelviewMatrix,RenderState.sMatrix3D)); this._modelviewMatrix3D.prepend(matrix); this._modelviewMatrix.identity(); }, setProjectionMatrix: function(x,y,width,height,stageWidth,stageHeight,cameraPos) { if(stageHeight == null) { stageHeight = 0; } if(stageWidth == null) { stageWidth = 0; } this._projectionMatrix3DRev = ++RenderState.sProjectionMatrix3DRev; (starling_utils_MatrixUtil().default).createPerspectiveProjectionMatrix(x,y,width,height,stageWidth,stageHeight,cameraPos,this._projectionMatrix3D); }, setProjectionMatrixChanged: function() { this._projectionMatrix3DRev = ++RenderState.sProjectionMatrix3DRev; }, setModelviewMatricesToIdentity: function() { this._modelviewMatrix.identity(); if(this._modelviewMatrix3D != null) { this._modelviewMatrix3D.identity(); } }, get_modelviewMatrix: function() { return this._modelviewMatrix; }, set_modelviewMatrix: function(value) { this._modelviewMatrix.copyFrom(value); return value; }, get_modelviewMatrix3D: function() { return this._modelviewMatrix3D; }, set_modelviewMatrix3D: function(value) { if(value != null) { if(this._modelviewMatrix3D == null) { this._modelviewMatrix3D = (starling_utils_Pool().default).getMatrix3D(false); } this._modelviewMatrix3D.copyFrom(value); } else if(this._modelviewMatrix3D != null) { (starling_utils_Pool().default).putMatrix3D(this._modelviewMatrix3D); this._modelviewMatrix3D = null; } return value; }, get_projectionMatrix3D: function() { return this._projectionMatrix3D; }, set_projectionMatrix3D: function(value) { this.setProjectionMatrixChanged(); this._projectionMatrix3D.copyFrom(value); return value; }, get_mvpMatrix3D: function() { this._mvpMatrix3D.copyFrom(this._projectionMatrix3D); if(this._modelviewMatrix3D != null) { this._mvpMatrix3D.prepend(this._modelviewMatrix3D); } this._mvpMatrix3D.prepend((starling_utils_MatrixUtil().default).convertTo3D(this._modelviewMatrix,RenderState.sMatrix3D)); return this._mvpMatrix3D; }, setRenderTarget: function(target,enableDepthAndStencil,antiAlias) { if(antiAlias == null) { antiAlias = 0; } if(enableDepthAndStencil == null) { enableDepthAndStencil = true; } var currentTarget = this._renderTarget != null ? this._renderTarget.get_base() : null; var newTarget = target != null ? target.get_base() : null; var newOptions = (Std().default).int((starling_utils_MathUtil().default).min(antiAlias,15)) | (enableDepthAndStencil ? 1 : 0) << 4; var optionsChange = newOptions != (this._miscOptions & 255); if(currentTarget != newTarget || optionsChange) { if(this._onDrawRequired != null) { this._onDrawRequired(); } this._renderTarget = target; this._miscOptions = this._miscOptions & -256 | newOptions; } }, get_alpha: function() { return this._alpha; }, set_alpha: function(value) { return this._alpha = value; }, get_blendMode: function() { return this._blendMode; }, set_blendMode: function(value) { if(value != "auto" && this._blendMode != value) { if(this._onDrawRequired != null) { this._onDrawRequired(); } this._blendMode = value; } return value; }, get_renderTarget: function() { return this._renderTarget; }, set_renderTarget: function(value) { this.setRenderTarget(value); return value; }, get_renderTargetBase: function() { if(this._renderTarget != null) { return this._renderTarget.get_base(); } else { return null; } }, get_renderTargetOptions: function() { return this._miscOptions & 255; }, get_culling: function() { var index = (this._miscOptions & 3840) >>> 8; return RenderState.CULLING_VALUES[index]; }, set_culling: function(value) { if(this.get_culling() != value) { if(this._onDrawRequired != null) { this._onDrawRequired(); } var this1 = RenderState.CULLING_VALUES; var index = (Array.prototype.indexOf.call)(this1,value,0); if(index == -1) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("Invalid culling mode")); } this._miscOptions = this._miscOptions & -3841 | index << 8; } return value; }, get_depthMask: function() { return (this._miscOptions & 61440) != 0; }, set_depthMask: function(value) { if(this.get_depthMask() != value) { if(this._onDrawRequired != null) { this._onDrawRequired(); } this._miscOptions = this._miscOptions & -61441 | (value ? 1 : 0) << 12; } return value; }, get_depthTest: function() { var index = (this._miscOptions & 983040) >>> 16; return RenderState.COMPARE_VALUES[index]; }, set_depthTest: function(value) { if(this.get_depthTest() != value) { if(this._onDrawRequired != null) { this._onDrawRequired(); } var this1 = RenderState.COMPARE_VALUES; var index = (Array.prototype.indexOf.call)(this1,value,0); if(index == -1) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("Invalid compare mode")); } this._miscOptions = this._miscOptions & -983041 | index << 16; } return value; }, get_clipRect: function() { return this._clipRect; }, set_clipRect: function(value) { if(!(starling_utils_RectangleUtil().default).compare(this._clipRect,value)) { if(this._onDrawRequired != null) { this._onDrawRequired(); } if(value != null) { if(this._clipRect == null) { this._clipRect = (starling_utils_Pool().default).getRectangle(); } this._clipRect.copyFrom(value); } else if(this._clipRect != null) { (starling_utils_Pool().default).putRectangle(this._clipRect); this._clipRect = null; } } return value; }, get_renderTargetAntiAlias: function() { return this._miscOptions & 15; }, get_renderTargetSupportsDepthAndStencil: function() { return (this._miscOptions & 240) != 0; }, get_is3D: function() { return this._modelviewMatrix3D != null; }, get_onDrawRequired: function() { return this._onDrawRequired; }, set_onDrawRequired: function(value) { return this._onDrawRequired = value; } }; RenderState.prototype.__class__ = RenderState.prototype.constructor = $hxClasses["starling.rendering.RenderState"] = RenderState; // Init Object.defineProperties(RenderState.prototype,{ modelviewMatrix : { get : function () { return this.get_modelviewMatrix (); }, set : function (v) { return this.set_modelviewMatrix (v); }}, modelviewMatrix3D : { get : function () { return this.get_modelviewMatrix3D (); }, set : function (v) { return this.set_modelviewMatrix3D (v); }}, projectionMatrix3D : { get : function () { return this.get_projectionMatrix3D (); }, set : function (v) { return this.set_projectionMatrix3D (v); }}, mvpMatrix3D : { get : function () { return this.get_mvpMatrix3D (); }, set : function (v) { return this.set_mvpMatrix3D (v); }}, alpha : { get : function () { return this.get_alpha (); }, set : function (v) { return this.set_alpha (v); }}, blendMode : { get : function () { return this.get_blendMode (); }, set : function (v) { return this.set_blendMode (v); }}, renderTarget : { get : function () { return this.get_renderTargete (); }, set : function (v) { return this.set_renderTarget (v); }}, renderTargetBase : { get : function () { return this.get_renderTargetBase (); }}, culling : { get : function () { return this.get_culling (); }, set : function (v) { return this.set_culling (v); }}, depthMask : { get : function () { return this.get_depthMask (); }, set : function (v) { return this.set_depthMask (v); }}, depthTest : { get : function () { return this.get_depthTest (); }, set : function (v) { return this.set_depthTest (v); }}, clipRect : { get : function () { return this.get_clipRect (); }, set : function (v) { return this.set_clipRect (v); }}, renderTargetAntiAlias : { get : function () { return this.get_renderTargetAntiAlias (); }}, renderTargetSupportsDepthAndStencil : { get : function () { return this.get_renderTargetSupportsDepthAndStencil (); }}, is3D : { get : function () { return this.get_is3D (); }}, onDrawRequired : { get : function () { return this.get_onDrawRequired (); }, set : function (v) { return this.set_onDrawRequired (v); }}}); // Statics RenderState.CULLING_VALUES = (openfl__$Vector_Vector_$Impl_$().default)._new(null,null,["none","front","back","frontAndBack"]) RenderState.COMPARE_VALUES = (openfl__$Vector_Vector_$Impl_$().default)._new(null,null,["always","never","less","lessEqual","equal","greaterEqual","greater","notEqual"]) RenderState.sMatrix3D = new (openfl_geom_Matrix3D().default)() RenderState.sProjectionMatrix3DRev = 0 // Export exports.default = RenderState;