starling-framework
Version:
A fast, productive library for 2D cross-platform development.
85 lines (68 loc) • 2.91 kB
JavaScript
// Class: starling.utils.MeshUtil
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 openfl_geom_Vector3D() {return $import(require("openfl/geom/Vector3D"));}
function openfl_geom_Matrix() {return $import(require("openfl/geom/Matrix"));}
function openfl_geom_Matrix3D() {return $import(require("openfl/geom/Matrix3D"));}
function starling_utils_Pool() {return require("./../../starling/utils/Pool");}
function starling_utils_MathUtil() {return require("./../../starling/utils/MathUtil");}
function openfl_geom_Rectangle() {return $import(require("openfl/geom/Rectangle"));}
// Constructor
var MeshUtil = function(){}
// Meta
MeshUtil.__name__ = "starling.utils.MeshUtil";
MeshUtil.__isInterface__ = false;
MeshUtil.prototype = {
};
MeshUtil.prototype.__class__ = MeshUtil.prototype.constructor = $hxClasses["starling.utils.MeshUtil"] = MeshUtil;
// Init
// Statics
MeshUtil.containsPoint = function(vertexData,indexData,point) {
var i;
var result = false;
var numIndices = indexData.get_numIndices();
var p0 = (starling_utils_Pool().default).getPoint();
var p1 = (starling_utils_Pool().default).getPoint();
var p2 = (starling_utils_Pool().default).getPoint();
var i1 = 0;
while(i1 < numIndices) {
vertexData.getPoint(indexData.getIndex(i1),"position",p0);
vertexData.getPoint(indexData.getIndex(i1 + 1),"position",p1);
vertexData.getPoint(indexData.getIndex(i1 + 2),"position",p2);
if((starling_utils_MathUtil().default).isPointInTriangle(point,p0,p1,p2)) {
result = true;
i1 = numIndices;
break;
}
i1 += 3;
}
(starling_utils_Pool().default).putPoint(p0);
(starling_utils_Pool().default).putPoint(p1);
(starling_utils_Pool().default).putPoint(p2);
return result;
}
MeshUtil.calculateBounds = function(vertexData,sourceSpace,targetSpace,out) {
if(out == null) {
out = new (openfl_geom_Rectangle().default)();
}
var stage = sourceSpace.get_stage();
if(sourceSpace.get_is3D() && stage != null) {
stage.getCameraPosition(targetSpace,MeshUtil.sPoint3D);
sourceSpace.getTransformationMatrix3D(targetSpace,MeshUtil.sMatrix3D);
vertexData.getBoundsProjected("position",MeshUtil.sMatrix3D,MeshUtil.sPoint3D,0,-1,out);
} else {
sourceSpace.getTransformationMatrix(targetSpace,MeshUtil.sMatrix);
vertexData.getBounds("position",MeshUtil.sMatrix,0,-1,out);
}
return out;
}
MeshUtil.sPoint3D = new (openfl_geom_Vector3D().default)()
MeshUtil.sMatrix = new (openfl_geom_Matrix().default)()
MeshUtil.sMatrix3D = new (openfl_geom_Matrix3D().default)()
// Export
exports.default = MeshUtil;