UNPKG

starling-framework

Version:

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

207 lines (191 loc) 8.77 kB
// Class: starling.display.Sprite3D 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; var $bind = require("./../../bind_stub").default; var $extend = require("./../../extend_stub").default; function starling_display_DisplayObjectContainer() {return require("./../../starling/display/DisplayObjectContainer");} function starling_utils_MatrixUtil() {return require("./../../starling/utils/MatrixUtil");} function starling_utils_MathUtil() {return require("./../../starling/utils/MathUtil");} function js_Boot() {return require("./../../js/Boot");} function starling_display_DisplayObject() {return require("./../../starling/display/DisplayObject");} function openfl_geom_Vector3D() {return $import(require("openfl/geom/Vector3D"));} function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function openfl_errors_Error() {return $import(require("openfl/errors/Error"));} function openfl_geom_Matrix3D() {return $import(require("openfl/geom/Matrix3D"));} // Constructor var Sprite3D = function() { (starling_display_DisplayObjectContainer().default).call(this); this.__scaleZ = 1.0; this.__rotationX = this.__rotationY = this.__pivotZ = this.__z = 0.0; this.__setIs3D(true); this.addEventListener("added",$bind(this,this.__onAddedChild)); this.addEventListener("removed",$bind(this,this.__onRemovedChild)); } // Meta Sprite3D.__name__ = "starling.display.Sprite3D"; Sprite3D.__isInterface__ = false; Sprite3D.__super__ = (starling_display_DisplayObjectContainer().default); Sprite3D.prototype = $extend((starling_display_DisplayObjectContainer().default).prototype, { render: function(painter) { if(this.get_isFlat()) { (starling_display_DisplayObjectContainer().default).prototype.render.call(this,painter); } else { painter.finishMeshBatch(); painter.pushState(); painter.get_state().transformModelviewMatrix3D(this.get_transformationMatrix3D()); (starling_display_DisplayObjectContainer().default).prototype.render.call(this,painter); painter.finishMeshBatch(); painter.excludeFromCache(this); painter.popState(); } }, hitTest: function(localPoint) { if(this.get_isFlat()) { return (starling_display_DisplayObjectContainer().default).prototype.hitTest.call(this,localPoint); } else { if(!this.get_visible() || !this.get_touchable()) { return null; } Sprite3D.sHelperMatrix.copyFrom(this.get_transformationMatrix3D()); Sprite3D.sHelperMatrix.invert(); this.get_stage().getCameraPosition(this,Sprite3D.sHelperPoint); (starling_utils_MatrixUtil().default).transformCoords3D(Sprite3D.sHelperMatrix,localPoint.x,localPoint.y,0,Sprite3D.sHelperPointAlt); (starling_utils_MathUtil().default).intersectLineWithXYPlane(Sprite3D.sHelperPoint,Sprite3D.sHelperPointAlt,localPoint); return (starling_display_DisplayObjectContainer().default).prototype.hitTest.call(this,localPoint); } }, __onAddedChild: function(event) { this.__recursivelySetIs3D((js_Boot().default).__cast(event.target , (starling_display_DisplayObject().default)),true); }, __onRemovedChild: function(event) { this.__recursivelySetIs3D((js_Boot().default).__cast(event.target , (starling_display_DisplayObject().default)),false); }, __recursivelySetIs3D: function(object,value) { if(((object) instanceof Sprite3D)) { return; } if(((object) instanceof (starling_display_DisplayObjectContainer().default))) { var container = object; var numChildren = container.get_numChildren(); var _g = 0; var _g1 = numChildren; while(_g < _g1) { var i = _g++; this.__recursivelySetIs3D(container.getChildAt(i),value); } } object.__setIs3D(value); }, __updateTransformationMatrices: function(x,y,pivotX,pivotY,scaleX,scaleY,skewX,skewY,rotation,out,out3D) { if(this.get_isFlat()) { (starling_display_DisplayObjectContainer().default).prototype.__updateTransformationMatrices.call(this,x,y,pivotX,pivotY,scaleX,scaleY,skewX,skewY,rotation,out,out3D); } else { this.__updateTransformationMatrices3D(x,y,this.__z,pivotX,pivotY,this.__pivotZ,scaleX,scaleY,this.__scaleZ,this.__rotationX,this.__rotationY,rotation,out,out3D); } }, __updateTransformationMatrices3D: function(x,y,z,pivotX,pivotY,pivotZ,scaleX,scaleY,scaleZ,rotationX,rotationY,rotationZ,out,out3D) { out.identity(); out3D.identity(); if(scaleX != 1.0 || scaleY != 1.0 || scaleZ != 1.0) { out3D.appendScale(scaleX != 0 ? scaleX : 0.00001,scaleY != 0 ? scaleY : 0.00001,scaleZ != 0 ? scaleZ : 0.00001); } if(rotationX != 0.0) { out3D.appendRotation((starling_utils_MathUtil().default).rad2deg(rotationX),(openfl_geom_Vector3D().default).get_X_AXIS()); } if(rotationY != 0.0) { out3D.appendRotation((starling_utils_MathUtil().default).rad2deg(rotationY),(openfl_geom_Vector3D().default).get_Y_AXIS()); } if(rotationZ != 0.0) { out3D.appendRotation((starling_utils_MathUtil().default).rad2deg(rotationZ),(openfl_geom_Vector3D().default).get_Z_AXIS()); } if(x != 0.0 || y != 0.0 || z != 0.0) { out3D.appendTranslation(x,y,z); } if(pivotX != 0.0 || pivotY != 0.0 || pivotZ != 0.0) { out3D.prependTranslation(-pivotX,-pivotY,-pivotZ); } }, set_transformationMatrix: function(value) { (starling_display_DisplayObjectContainer().default).prototype.set_transformationMatrix.call(this,value); this.__rotationX = this.__rotationY = this.__pivotZ = this.__z = 0; this.__setTransformationChanged(); return value; }, get_z: function() { return this.__z; }, set_z: function(value) { this.__z = value; this.__setTransformationChanged(); return value; }, get_pivotZ: function() { return this.__pivotZ; }, set_pivotZ: function(value) { this.__pivotZ = value; this.__setTransformationChanged(); return value; }, get_scaleZ: function() { return this.__scaleZ; }, set_scaleZ: function(value) { this.__scaleZ = value; this.__setTransformationChanged(); return value; }, set_scale: function(value) { return this.set_scaleX(this.set_scaleY(this.set_scaleZ(value))); }, set_skewX: function(value) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("3D objects do not support skewing")); }, set_skewY: function(value) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("3D objects do not support skewing")); }, get_rotationX: function() { return this.__rotationX; }, set_rotationX: function(value) { this.__rotationX = (starling_utils_MathUtil().default).normalizeAngle(value); this.__setTransformationChanged(); return value; }, get_rotationY: function() { return this.__rotationY; }, set_rotationY: function(value) { this.__rotationY = (starling_utils_MathUtil().default).normalizeAngle(value); this.__setTransformationChanged(); return value; }, get_rotationZ: function() { return this.get_rotation(); }, set_rotationZ: function(value) { return this.set_rotation(value); }, get_isFlat: function() { if(this.__z > -1e-05 && this.__z < 0.00001 && this.__rotationX > -1e-05 && this.__rotationX < 0.00001 && this.__rotationY > -1e-05 && this.__rotationY < 0.00001 && this.__pivotZ > -1e-05) { return this.__pivotZ < 0.00001; } else { return false; } } }); Sprite3D.prototype.__class__ = Sprite3D.prototype.constructor = $hxClasses["starling.display.Sprite3D"] = Sprite3D; // Init Object.defineProperties(Sprite3D.prototype,{ z : { get : function () { return this.get_z (); }, set : function (v) { return this.set_z (v); }}, pivotZ : { get : function () { return this.get_pivotZ (); }, set : function (v) { return this.set_pivotZ (v); }}, scaleZ : { get : function () { return this.get_scaleZ (); }, set : function (v) { return this.set_scaleZ (v); }}, rotationX : { get : function () { return this.get_rotationX (); }, set : function (v) { return this.set_rotationX (v); }}, rotationY : { get : function () { return this.get_rotationY (); }, set : function (v) { return this.set_rotationY (v); }}, rotationZ : { get : function () { return this.get_rotationZ (); }, set : function (v) { return this.set_rotationZ (v); }}, isFlat : { get : function () { return this.get_isFlat (); }}}); // Statics Sprite3D.E = 0.00001 Sprite3D.sHelperPoint = new (openfl_geom_Vector3D().default)() Sprite3D.sHelperPointAlt = new (openfl_geom_Vector3D().default)() Sprite3D.sHelperMatrix = new (openfl_geom_Matrix3D().default)() // Export exports.default = Sprite3D;