Browse Source

Examples: Removed physics_oimo_instancing (#21691)

Mr.doob 4 năm trước cách đây
mục cha
commit
815cda504f

+ 1 - 2
examples/files.json

@@ -358,8 +358,7 @@
 		"physics_ammo_instancing",
 		"physics_ammo_rope",
 		"physics_ammo_terrain",
-		"physics_ammo_volume",
-		"physics_oimo_instancing"
+		"physics_ammo_volume"
 	],
 	"misc": [
 		"misc_animation_groups",

+ 0 - 54881
examples/jsm/libs/OimoPhysics.js

@@ -1,54881 +0,0 @@
-var oimo = oimo || {};
-if(!oimo.collision) oimo.collision = {};
-if(!oimo.collision.broadphase) oimo.collision.broadphase = {};
-oimo.collision.broadphase.BroadPhase = class oimo_collision_broadphase_BroadPhase {
-	constructor(type) {
-		this._type = type;
-		this._numProxies = 0;
-		this._proxyList = null;
-		this._proxyListLast = null;
-		this._proxyPairList = null;
-		this._incremental = false;
-		this._testCount = 0;
-		this._proxyPairPool = null;
-		this._idCount = 0;
-		this._convexSweep = new oimo.collision.broadphase._BroadPhase.ConvexSweepGeometry();
-		this._aabb = new oimo.collision.broadphase._BroadPhase.AabbGeometry();
-		this.identity = new oimo.common.Transform();
-		this.zero = new oimo.common.Vec3();
-		this.rayCastHit = new oimo.collision.geometry.RayCastHit();
-	}
-	createProxy(userData,aabb) {
-		return null;
-	}
-	destroyProxy(proxy) {
-	}
-	moveProxy(proxy,aabb,displacement) {
-	}
-	isOverlapping(proxy1,proxy2) {
-		if(proxy1._aabbMinX < proxy2._aabbMaxX && proxy1._aabbMaxX > proxy2._aabbMinX && proxy1._aabbMinY < proxy2._aabbMaxY && proxy1._aabbMaxY > proxy2._aabbMinY && proxy1._aabbMinZ < proxy2._aabbMaxZ) {
-			return proxy1._aabbMaxZ > proxy2._aabbMinZ;
-		} else {
-			return false;
-		}
-	}
-	collectPairs() {
-	}
-	getProxyPairList() {
-		return this._proxyPairList;
-	}
-	isIncremental() {
-		return this._incremental;
-	}
-	getTestCount() {
-		return this._testCount;
-	}
-	rayCast(begin,end,callback) {
-	}
-	convexCast(convex,begin,translation,callback) {
-	}
-	aabbTest(aabb,callback) {
-	}
-}
-if(!oimo.collision.geometry) oimo.collision.geometry = {};
-oimo.collision.geometry.Geometry = class oimo_collision_geometry_Geometry {
-	constructor(type) {
-		this._type = type;
-		this._volume = 0;
-	}
-	_updateMass() {
-	}
-	_computeAabb(aabb,tf) {
-	}
-	_rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
-		return false;
-	}
-	getType() {
-		return this._type;
-	}
-	getVolume() {
-		return this._volume;
-	}
-	rayCast(begin,end,transform,hit) {
-		var beginLocal;
-		var beginLocalX;
-		var beginLocalY;
-		var beginLocalZ;
-		var endLocal;
-		var endLocalX;
-		var endLocalY;
-		var endLocalZ;
-		var v = begin;
-		beginLocalX = v.x;
-		beginLocalY = v.y;
-		beginLocalZ = v.z;
-		var v1 = end;
-		endLocalX = v1.x;
-		endLocalY = v1.y;
-		endLocalZ = v1.z;
-		beginLocalX -= transform._positionX;
-		beginLocalY -= transform._positionY;
-		beginLocalZ -= transform._positionZ;
-		endLocalX -= transform._positionX;
-		endLocalY -= transform._positionY;
-		endLocalZ -= transform._positionZ;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = transform._rotation00 * beginLocalX + transform._rotation10 * beginLocalY + transform._rotation20 * beginLocalZ;
-		__tmp__Y = transform._rotation01 * beginLocalX + transform._rotation11 * beginLocalY + transform._rotation21 * beginLocalZ;
-		__tmp__Z = transform._rotation02 * beginLocalX + transform._rotation12 * beginLocalY + transform._rotation22 * beginLocalZ;
-		beginLocalX = __tmp__X;
-		beginLocalY = __tmp__Y;
-		beginLocalZ = __tmp__Z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = transform._rotation00 * endLocalX + transform._rotation10 * endLocalY + transform._rotation20 * endLocalZ;
-		__tmp__Y1 = transform._rotation01 * endLocalX + transform._rotation11 * endLocalY + transform._rotation21 * endLocalZ;
-		__tmp__Z1 = transform._rotation02 * endLocalX + transform._rotation12 * endLocalY + transform._rotation22 * endLocalZ;
-		endLocalX = __tmp__X1;
-		endLocalY = __tmp__Y1;
-		endLocalZ = __tmp__Z1;
-		if(this._rayCastLocal(beginLocalX,beginLocalY,beginLocalZ,endLocalX,endLocalY,endLocalZ,hit)) {
-			var localPos;
-			var localPosX;
-			var localPosY;
-			var localPosZ;
-			var localNormal;
-			var localNormalX;
-			var localNormalY;
-			var localNormalZ;
-			var v2 = hit.position;
-			localPosX = v2.x;
-			localPosY = v2.y;
-			localPosZ = v2.z;
-			var v3 = hit.normal;
-			localNormalX = v3.x;
-			localNormalY = v3.y;
-			localNormalZ = v3.z;
-			var __tmp__X2;
-			var __tmp__Y2;
-			var __tmp__Z2;
-			__tmp__X2 = transform._rotation00 * localPosX + transform._rotation01 * localPosY + transform._rotation02 * localPosZ;
-			__tmp__Y2 = transform._rotation10 * localPosX + transform._rotation11 * localPosY + transform._rotation12 * localPosZ;
-			__tmp__Z2 = transform._rotation20 * localPosX + transform._rotation21 * localPosY + transform._rotation22 * localPosZ;
-			localPosX = __tmp__X2;
-			localPosY = __tmp__Y2;
-			localPosZ = __tmp__Z2;
-			var __tmp__X3;
-			var __tmp__Y3;
-			var __tmp__Z3;
-			__tmp__X3 = transform._rotation00 * localNormalX + transform._rotation01 * localNormalY + transform._rotation02 * localNormalZ;
-			__tmp__Y3 = transform._rotation10 * localNormalX + transform._rotation11 * localNormalY + transform._rotation12 * localNormalZ;
-			__tmp__Z3 = transform._rotation20 * localNormalX + transform._rotation21 * localNormalY + transform._rotation22 * localNormalZ;
-			localNormalX = __tmp__X3;
-			localNormalY = __tmp__Y3;
-			localNormalZ = __tmp__Z3;
-			localPosX += transform._positionX;
-			localPosY += transform._positionY;
-			localPosZ += transform._positionZ;
-			var v4 = hit.position;
-			v4.x = localPosX;
-			v4.y = localPosY;
-			v4.z = localPosZ;
-			var v5 = hit.normal;
-			v5.x = localNormalX;
-			v5.y = localNormalY;
-			v5.z = localNormalZ;
-			return true;
-		}
-		return false;
-	}
-}
-oimo.collision.geometry.ConvexGeometry = class oimo_collision_geometry_ConvexGeometry extends oimo.collision.geometry.Geometry {
-	constructor(type) {
-		super(type);
-		this._gjkMargin = oimo.common.Setting.defaultGJKMargin;
-		this._useGjkRayCast = false;
-	}
-	getGjkMergin() {
-		return this._gjkMargin;
-	}
-	setGjkMergin(gjkMergin) {
-		if(gjkMergin < 0) {
-			gjkMergin = 0;
-		}
-		this._gjkMargin = gjkMergin;
-	}
-	computeLocalSupportingVertex(dir,out) {
-	}
-	rayCast(begin,end,transform,hit) {
-		if(this._useGjkRayCast) {
-			return oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance.rayCast(this,transform,begin,end,hit);
-		} else {
-			return super.rayCast(begin,end,transform,hit);
-		}
-	}
-}
-if(!oimo.collision.broadphase._BroadPhase) oimo.collision.broadphase._BroadPhase = {};
-oimo.collision.broadphase._BroadPhase.ConvexSweepGeometry = class oimo_collision_broadphase__$BroadPhase_ConvexSweepGeometry extends oimo.collision.geometry.ConvexGeometry {
-	constructor() {
-		super(-1);
-	}
-	init(c,transform,translation) {
-		this.c = c;
-		var tr;
-		var trX;
-		var trY;
-		var trZ;
-		var v = translation;
-		trX = v.x;
-		trY = v.y;
-		trZ = v.z;
-		var localTr;
-		var localTrX;
-		var localTrY;
-		var localTrZ;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = transform._rotation00 * trX + transform._rotation10 * trY + transform._rotation20 * trZ;
-		__tmp__Y = transform._rotation01 * trX + transform._rotation11 * trY + transform._rotation21 * trZ;
-		__tmp__Z = transform._rotation02 * trX + transform._rotation12 * trY + transform._rotation22 * trZ;
-		localTrX = __tmp__X;
-		localTrY = __tmp__Y;
-		localTrZ = __tmp__Z;
-		this.localTranslation = new oimo.common.Vec3();
-		var v1 = this.localTranslation;
-		v1.x = localTrX;
-		v1.y = localTrY;
-		v1.z = localTrZ;
-		this._gjkMargin = c._gjkMargin;
-	}
-	computeLocalSupportingVertex(dir,out) {
-		this.c.computeLocalSupportingVertex(dir,out);
-		var v = this.localTranslation;
-		if(dir.x * v.x + dir.y * v.y + dir.z * v.z > 0) {
-			var v1 = this.localTranslation;
-			var tx = out.x + v1.x;
-			var ty = out.y + v1.y;
-			var tz = out.z + v1.z;
-			out.x = tx;
-			out.y = ty;
-			out.z = tz;
-		}
-	}
-}
-oimo.collision.broadphase._BroadPhase.AabbGeometry = class oimo_collision_broadphase__$BroadPhase_AabbGeometry extends oimo.collision.geometry.ConvexGeometry {
-	constructor() {
-		super(-1);
-		this.min = new oimo.common.Vec3();
-		this.max = new oimo.common.Vec3();
-	}
-	computeLocalSupportingVertex(dir,out) {
-		out.x = dir.x > 0 ? this.max.x : this.min.x;
-		out.y = dir.y > 0 ? this.max.y : this.min.y;
-		out.z = dir.z > 0 ? this.max.z : this.min.z;
-	}
-}
-oimo.collision.broadphase.BroadPhaseProxyCallback = class oimo_collision_broadphase_BroadPhaseProxyCallback {
-	constructor() {
-	}
-	process(proxy) {
-	}
-}
-oimo.collision.broadphase.BroadPhaseType = class oimo_collision_broadphase_BroadPhaseType {
-}
-oimo.collision.broadphase.Proxy = class oimo_collision_broadphase_Proxy {
-	constructor(userData,id) {
-		this.userData = userData;
-		this._id = id;
-		this._prev = null;
-		this._next = null;
-		this._aabbMinX = 0;
-		this._aabbMinY = 0;
-		this._aabbMinZ = 0;
-		this._aabbMaxX = 0;
-		this._aabbMaxY = 0;
-		this._aabbMaxZ = 0;
-	}
-	getId() {
-		return this._id;
-	}
-	getFatAabb() {
-		var aabb = new oimo.collision.geometry.Aabb();
-		aabb._minX = this._aabbMinX;
-		aabb._minY = this._aabbMinY;
-		aabb._minZ = this._aabbMinZ;
-		aabb._maxX = this._aabbMaxX;
-		aabb._maxY = this._aabbMaxY;
-		aabb._maxZ = this._aabbMaxZ;
-		return aabb;
-	}
-	getFatAabbTo(aabb) {
-		aabb._minX = this._aabbMinX;
-		aabb._minY = this._aabbMinY;
-		aabb._minZ = this._aabbMinZ;
-		aabb._maxX = this._aabbMaxX;
-		aabb._maxY = this._aabbMaxY;
-		aabb._maxZ = this._aabbMaxZ;
-	}
-}
-oimo.collision.broadphase.ProxyPair = class oimo_collision_broadphase_ProxyPair {
-	constructor() {
-		this._p1 = null;
-		this._p2 = null;
-	}
-	getProxy1() {
-		return this._p1;
-	}
-	getProxy2() {
-		return this._p2;
-	}
-	getNext() {
-		return this._next;
-	}
-}
-if(!oimo.collision.broadphase.bruteforce) oimo.collision.broadphase.bruteforce = {};
-oimo.collision.broadphase.bruteforce.BruteForceBroadPhase = class oimo_collision_broadphase_bruteforce_BruteForceBroadPhase extends oimo.collision.broadphase.BroadPhase {
-	constructor() {
-		super(1);
-		this._incremental = false;
-	}
-	createProxy(userData,aabb) {
-		var proxy = new oimo.collision.broadphase.Proxy(userData,this._idCount++);
-		this._numProxies++;
-		if(this._proxyList == null) {
-			this._proxyList = proxy;
-			this._proxyListLast = proxy;
-		} else {
-			this._proxyListLast._next = proxy;
-			proxy._prev = this._proxyListLast;
-			this._proxyListLast = proxy;
-		}
-		proxy._aabbMinX = aabb._minX;
-		proxy._aabbMinY = aabb._minY;
-		proxy._aabbMinZ = aabb._minZ;
-		proxy._aabbMaxX = aabb._maxX;
-		proxy._aabbMaxY = aabb._maxY;
-		proxy._aabbMaxZ = aabb._maxZ;
-		return proxy;
-	}
-	destroyProxy(proxy) {
-		this._numProxies--;
-		var prev = proxy._prev;
-		var next = proxy._next;
-		if(prev != null) {
-			prev._next = next;
-		}
-		if(next != null) {
-			next._prev = prev;
-		}
-		if(proxy == this._proxyList) {
-			this._proxyList = this._proxyList._next;
-		}
-		if(proxy == this._proxyListLast) {
-			this._proxyListLast = this._proxyListLast._prev;
-		}
-		proxy._next = null;
-		proxy._prev = null;
-		proxy.userData = null;
-	}
-	moveProxy(proxy,aabb,dislacement) {
-		proxy._aabbMinX = aabb._minX;
-		proxy._aabbMinY = aabb._minY;
-		proxy._aabbMinZ = aabb._minZ;
-		proxy._aabbMaxX = aabb._maxX;
-		proxy._aabbMaxY = aabb._maxY;
-		proxy._aabbMaxZ = aabb._maxZ;
-	}
-	collectPairs() {
-		var p = this._proxyPairList;
-		if(p != null) {
-			while(true) {
-				p._p1 = null;
-				p._p2 = null;
-				p = p._next;
-				if(!(p != null)) {
-					break;
-				}
-			}
-			this._proxyPairList._next = this._proxyPairPool;
-			this._proxyPairPool = this._proxyPairList;
-			this._proxyPairList = null;
-		}
-		this._testCount = 0;
-		var p1 = this._proxyList;
-		while(p1 != null) {
-			var n = p1._next;
-			var p2 = p1._next;
-			while(p2 != null) {
-				var n1 = p2._next;
-				this._testCount++;
-				if(p1._aabbMinX < p2._aabbMaxX && p1._aabbMaxX > p2._aabbMinX && p1._aabbMinY < p2._aabbMaxY && p1._aabbMaxY > p2._aabbMinY && p1._aabbMinZ < p2._aabbMaxZ && p1._aabbMaxZ > p2._aabbMinZ) {
-					var first = this._proxyPairPool;
-					if(first != null) {
-						this._proxyPairPool = first._next;
-						first._next = null;
-					} else {
-						first = new oimo.collision.broadphase.ProxyPair();
-					}
-					var pp = first;
-					if(this._proxyPairList == null) {
-						this._proxyPairList = pp;
-					} else {
-						pp._next = this._proxyPairList;
-						this._proxyPairList = pp;
-					}
-					pp._p1 = p1;
-					pp._p2 = p2;
-				}
-				p2 = n1;
-			}
-			p1 = n;
-		}
-	}
-	rayCast(begin,end,callback) {
-		var p1;
-		var p1X;
-		var p1Y;
-		var p1Z;
-		var p2;
-		var p2X;
-		var p2Y;
-		var p2Z;
-		var dir;
-		var dirX;
-		var dirY;
-		var dirZ;
-		var v = begin;
-		p1X = v.x;
-		p1Y = v.y;
-		p1Z = v.z;
-		var v1 = end;
-		p2X = v1.x;
-		p2Y = v1.y;
-		p2Z = v1.z;
-		dirX = p2X - p1X;
-		dirY = p2Y - p1Y;
-		dirZ = p2Z - p1Z;
-		var min;
-		var minX;
-		var minY;
-		var minZ;
-		var max;
-		var maxX;
-		var maxY;
-		var maxZ;
-		minX = p1X < p2X ? p1X : p2X;
-		minY = p1Y < p2Y ? p1Y : p2Y;
-		minZ = p1Z < p2Z ? p1Z : p2Z;
-		maxX = p1X > p2X ? p1X : p2X;
-		maxY = p1Y > p2Y ? p1Y : p2Y;
-		maxZ = p1Z > p2Z ? p1Z : p2Z;
-		var p = this._proxyList;
-		while(p != null) {
-			var n = p._next;
-			var x1 = p1X;
-			var y1 = p1Y;
-			var z1 = p1Z;
-			var x2 = p2X;
-			var y2 = p2Y;
-			var z2 = p2Z;
-			var sminx = x1 < x2 ? x1 : x2;
-			var sminy = y1 < y2 ? y1 : y2;
-			var sminz = z1 < z2 ? z1 : z2;
-			var smaxx = x1 > x2 ? x1 : x2;
-			var smaxy = y1 > y2 ? y1 : y2;
-			var smaxz = z1 > z2 ? z1 : z2;
-			var pminx = p._aabbMinX;
-			var pminy = p._aabbMinY;
-			var pminz = p._aabbMinZ;
-			var pmaxx = p._aabbMaxX;
-			var pmaxy = p._aabbMaxY;
-			var pmaxz = p._aabbMaxZ;
-			var tmp;
-			if(pminx > smaxx || pmaxx < sminx || pminy > smaxy || pmaxy < sminy || pminz > smaxz || pmaxz < sminz) {
-				tmp = false;
-			} else {
-				var dx = x2 - x1;
-				var dy = y2 - y1;
-				var dz = z2 - z1;
-				var adx = dx < 0 ? -dx : dx;
-				var ady = dy < 0 ? -dy : dy;
-				var adz = dz < 0 ? -dz : dz;
-				var pextx = (pmaxx - pminx) * 0.5;
-				var pexty = (pmaxy - pminy) * 0.5;
-				var pextz = (pmaxz - pminz) * 0.5;
-				var pcntx = (pmaxx + pminx) * 0.5;
-				var pcnty = (pmaxy + pminy) * 0.5;
-				var pcntz = (pmaxz + pminz) * 0.5;
-				var cpx = x1 - pcntx;
-				var cpy = y1 - pcnty;
-				var cpz = z1 - pcntz;
-				var tmp1;
-				var tmp2;
-				var x = cpy * dz - cpz * dy;
-				if(!((x < 0 ? -x : x) - (pexty * adz + pextz * ady) > 0)) {
-					var x3 = cpz * dx - cpx * dz;
-					tmp2 = (x3 < 0 ? -x3 : x3) - (pextz * adx + pextx * adz) > 0;
-				} else {
-					tmp2 = true;
-				}
-				if(!tmp2) {
-					var x4 = cpx * dy - cpy * dx;
-					tmp1 = (x4 < 0 ? -x4 : x4) - (pextx * ady + pexty * adx) > 0;
-				} else {
-					tmp1 = true;
-				}
-				tmp = tmp1 ? false : true;
-			}
-			if(tmp) {
-				callback.process(p);
-			}
-			p = n;
-		}
-	}
-	convexCast(convex,begin,translation,callback) {
-		var p = this._proxyList;
-		while(p != null) {
-			var n = p._next;
-			var v = this._aabb.min;
-			v.x = p._aabbMinX;
-			v.y = p._aabbMinY;
-			v.z = p._aabbMinZ;
-			var v1 = this._aabb.max;
-			v1.x = p._aabbMaxX;
-			v1.y = p._aabbMaxY;
-			v1.z = p._aabbMaxZ;
-			this._convexSweep.init(convex,begin,translation);
-			var gjkEpa = oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance;
-			if(gjkEpa.computeClosestPointsImpl(this._convexSweep,this._aabb,begin,this.identity,null,false) == 0 && gjkEpa.distance <= 0) {
-				callback.process(p);
-			}
-			p = n;
-		}
-	}
-	aabbTest(aabb,callback) {
-		var p = this._proxyList;
-		while(p != null) {
-			var n = p._next;
-			if(aabb._minX < p._aabbMaxX && aabb._maxX > p._aabbMinX && aabb._minY < p._aabbMaxY && aabb._maxY > p._aabbMinY && aabb._minZ < p._aabbMaxZ && aabb._maxZ > p._aabbMinZ) {
-				callback.process(p);
-			}
-			p = n;
-		}
-	}
-}
-if(!oimo.collision.broadphase.bvh) oimo.collision.broadphase.bvh = {};
-oimo.collision.broadphase.bvh.BvhBroadPhase = class oimo_collision_broadphase_bvh_BvhBroadPhase extends oimo.collision.broadphase.BroadPhase {
-	constructor() {
-		super(2);
-		this._incremental = true;
-		this._tree = new oimo.collision.broadphase.bvh.BvhTree();
-		var this1 = new Array(1024);
-		this.movedProxies = this1;
-		this.numMovedProxies = 0;
-	}
-	collide(n1,n2) {
-		this._testCount++;
-		var l1 = n1._height == 0;
-		var l2 = n2._height == 0;
-		if(n1 == n2) {
-			if(l1) {
-				return;
-			}
-			this.collide(n1._children[0],n2);
-			this.collide(n1._children[1],n2);
-			return;
-		}
-		if(!(n1._aabbMinX < n2._aabbMaxX && n1._aabbMaxX > n2._aabbMinX && n1._aabbMinY < n2._aabbMaxY && n1._aabbMaxY > n2._aabbMinY && n1._aabbMinZ < n2._aabbMaxZ && n1._aabbMaxZ > n2._aabbMinZ)) {
-			return;
-		}
-		if(l1 && l2) {
-			var p1 = n1._proxy;
-			var p2 = n2._proxy;
-			var first = this._proxyPairPool;
-			if(first != null) {
-				this._proxyPairPool = first._next;
-				first._next = null;
-			} else {
-				first = new oimo.collision.broadphase.ProxyPair();
-			}
-			var pp = first;
-			if(this._proxyPairList == null) {
-				this._proxyPairList = pp;
-			} else {
-				pp._next = this._proxyPairList;
-				this._proxyPairList = pp;
-			}
-			pp._p1 = p1;
-			pp._p2 = p2;
-			return;
-		}
-		if(l2 || n1._height > n2._height) {
-			this.collide(n1._children[0],n2);
-			this.collide(n1._children[1],n2);
-		} else {
-			this.collide(n2._children[0],n1);
-			this.collide(n2._children[1],n1);
-		}
-	}
-	rayCastRecursive(node,_p1X,_p1Y,_p1Z,_p2X,_p2Y,_p2Z,callback) {
-		var p1;
-		var p1X;
-		var p1Y;
-		var p1Z;
-		var p2;
-		var p2X;
-		var p2Y;
-		var p2Z;
-		p1X = _p1X;
-		p1Y = _p1Y;
-		p1Z = _p1Z;
-		p2X = _p2X;
-		p2Y = _p2Y;
-		p2Z = _p2Z;
-		var x1 = p1X;
-		var y1 = p1Y;
-		var z1 = p1Z;
-		var x2 = p2X;
-		var y2 = p2Y;
-		var z2 = p2Z;
-		var sminx = x1 < x2 ? x1 : x2;
-		var sminy = y1 < y2 ? y1 : y2;
-		var sminz = z1 < z2 ? z1 : z2;
-		var smaxx = x1 > x2 ? x1 : x2;
-		var smaxy = y1 > y2 ? y1 : y2;
-		var smaxz = z1 > z2 ? z1 : z2;
-		var pminx = node._aabbMinX;
-		var pminy = node._aabbMinY;
-		var pminz = node._aabbMinZ;
-		var pmaxx = node._aabbMaxX;
-		var pmaxy = node._aabbMaxY;
-		var pmaxz = node._aabbMaxZ;
-		var tmp;
-		if(pminx > smaxx || pmaxx < sminx || pminy > smaxy || pmaxy < sminy || pminz > smaxz || pmaxz < sminz) {
-			tmp = false;
-		} else {
-			var dx = x2 - x1;
-			var dy = y2 - y1;
-			var dz = z2 - z1;
-			var adx = dx < 0 ? -dx : dx;
-			var ady = dy < 0 ? -dy : dy;
-			var adz = dz < 0 ? -dz : dz;
-			var pextx = (pmaxx - pminx) * 0.5;
-			var pexty = (pmaxy - pminy) * 0.5;
-			var pextz = (pmaxz - pminz) * 0.5;
-			var pcntx = (pmaxx + pminx) * 0.5;
-			var pcnty = (pmaxy + pminy) * 0.5;
-			var pcntz = (pmaxz + pminz) * 0.5;
-			var cpx = x1 - pcntx;
-			var cpy = y1 - pcnty;
-			var cpz = z1 - pcntz;
-			var tmp1;
-			var tmp2;
-			var x = cpy * dz - cpz * dy;
-			if(!((x < 0 ? -x : x) - (pexty * adz + pextz * ady) > 0)) {
-				var x3 = cpz * dx - cpx * dz;
-				tmp2 = (x3 < 0 ? -x3 : x3) - (pextz * adx + pextx * adz) > 0;
-			} else {
-				tmp2 = true;
-			}
-			if(!tmp2) {
-				var x4 = cpx * dy - cpy * dx;
-				tmp1 = (x4 < 0 ? -x4 : x4) - (pextx * ady + pexty * adx) > 0;
-			} else {
-				tmp1 = true;
-			}
-			tmp = tmp1 ? false : true;
-		}
-		if(!tmp) {
-			return;
-		}
-		if(node._height == 0) {
-			callback.process(node._proxy);
-			return;
-		}
-		this.rayCastRecursive(node._children[0],p1X,p1Y,p1Z,p2X,p2Y,p2Z,callback);
-		this.rayCastRecursive(node._children[1],p1X,p1Y,p1Z,p2X,p2Y,p2Z,callback);
-	}
-	convexCastRecursive(node,convex,begin,translation,callback) {
-		var v = this._aabb.min;
-		v.x = node._aabbMinX;
-		v.y = node._aabbMinY;
-		v.z = node._aabbMinZ;
-		var v1 = this._aabb.max;
-		v1.x = node._aabbMaxX;
-		v1.y = node._aabbMaxY;
-		v1.z = node._aabbMaxZ;
-		this._convexSweep.init(convex,begin,translation);
-		var gjkEpa = oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance;
-		if(!(gjkEpa.computeClosestPointsImpl(this._convexSweep,this._aabb,begin,this.identity,null,false) == 0 && gjkEpa.distance <= 0)) {
-			return;
-		}
-		if(node._height == 0) {
-			callback.process(node._proxy);
-			return;
-		}
-		this.convexCastRecursive(node._children[0],convex,begin,translation,callback);
-		this.convexCastRecursive(node._children[1],convex,begin,translation,callback);
-	}
-	aabbTestRecursive(node,aabb,callback) {
-		if(!(node._aabbMinX < aabb._maxX && node._aabbMaxX > aabb._minX && node._aabbMinY < aabb._maxY && node._aabbMaxY > aabb._minY && node._aabbMinZ < aabb._maxZ && node._aabbMaxZ > aabb._minZ)) {
-			return;
-		}
-		if(node._height == 0) {
-			callback.process(node._proxy);
-			return;
-		}
-		this.aabbTestRecursive(node._children[0],aabb,callback);
-		this.aabbTestRecursive(node._children[1],aabb,callback);
-	}
-	createProxy(userData,aabb) {
-		var p = new oimo.collision.broadphase.bvh.BvhProxy(userData,this._idCount++);
-		this._numProxies++;
-		if(this._proxyList == null) {
-			this._proxyList = p;
-			this._proxyListLast = p;
-		} else {
-			this._proxyListLast._next = p;
-			p._prev = this._proxyListLast;
-			this._proxyListLast = p;
-		}
-		var displacement = null;
-		p._aabbMinX = aabb._minX;
-		p._aabbMinY = aabb._minY;
-		p._aabbMinZ = aabb._minZ;
-		p._aabbMaxX = aabb._maxX;
-		p._aabbMaxY = aabb._maxY;
-		p._aabbMaxZ = aabb._maxZ;
-		var padding = oimo.common.Setting.bvhProxyPadding;
-		var paddingVec;
-		var paddingVecX;
-		var paddingVecY;
-		var paddingVecZ;
-		paddingVecX = padding;
-		paddingVecY = padding;
-		paddingVecZ = padding;
-		p._aabbMinX -= paddingVecX;
-		p._aabbMinY -= paddingVecY;
-		p._aabbMinZ -= paddingVecZ;
-		p._aabbMaxX += paddingVecX;
-		p._aabbMaxY += paddingVecY;
-		p._aabbMaxZ += paddingVecZ;
-		if(displacement != null) {
-			var d;
-			var dX;
-			var dY;
-			var dZ;
-			var zero;
-			var zeroX;
-			var zeroY;
-			var zeroZ;
-			var addToMin;
-			var addToMinX;
-			var addToMinY;
-			var addToMinZ;
-			var addToMax;
-			var addToMaxX;
-			var addToMaxY;
-			var addToMaxZ;
-			zeroX = 0;
-			zeroY = 0;
-			zeroZ = 0;
-			var v = displacement;
-			dX = v.x;
-			dY = v.y;
-			dZ = v.z;
-			addToMinX = zeroX < dX ? zeroX : dX;
-			addToMinY = zeroY < dY ? zeroY : dY;
-			addToMinZ = zeroZ < dZ ? zeroZ : dZ;
-			addToMaxX = zeroX > dX ? zeroX : dX;
-			addToMaxY = zeroY > dY ? zeroY : dY;
-			addToMaxZ = zeroZ > dZ ? zeroZ : dZ;
-			p._aabbMinX += addToMinX;
-			p._aabbMinY += addToMinY;
-			p._aabbMinZ += addToMinZ;
-			p._aabbMaxX += addToMaxX;
-			p._aabbMaxY += addToMaxY;
-			p._aabbMaxZ += addToMaxZ;
-		}
-		var _this = this._tree;
-		var first = _this._nodePool;
-		if(first != null) {
-			_this._nodePool = first._next;
-			first._next = null;
-		} else {
-			first = new oimo.collision.broadphase.bvh.BvhNode();
-		}
-		var leaf = first;
-		leaf._proxy = p;
-		p._leaf = leaf;
-		leaf._aabbMinX = p._aabbMinX;
-		leaf._aabbMinY = p._aabbMinY;
-		leaf._aabbMinZ = p._aabbMinZ;
-		leaf._aabbMaxX = p._aabbMaxX;
-		leaf._aabbMaxY = p._aabbMaxY;
-		leaf._aabbMaxZ = p._aabbMaxZ;
-		_this._numLeaves++;
-		if(_this.leafList == null) {
-			_this.leafList = leaf;
-			_this.leafListLast = leaf;
-		} else {
-			_this.leafListLast._nextLeaf = leaf;
-			leaf._prevLeaf = _this.leafListLast;
-			_this.leafListLast = leaf;
-		}
-		if(_this._root == null) {
-			_this._root = leaf;
-		} else {
-			var sibling = _this._root;
-			while(sibling._height > 0) {
-				var nextStep = _this._strategy._decideInsertion(sibling,leaf);
-				if(nextStep == -1) {
-					break;
-				} else {
-					sibling = sibling._children[nextStep];
-				}
-			}
-			var parent = sibling._parent;
-			var first1 = _this._nodePool;
-			if(first1 != null) {
-				_this._nodePool = first1._next;
-				first1._next = null;
-			} else {
-				first1 = new oimo.collision.broadphase.bvh.BvhNode();
-			}
-			var node = first1;
-			if(parent == null) {
-				_this._root = node;
-			} else {
-				var index = sibling._childIndex;
-				parent._children[index] = node;
-				node._parent = parent;
-				node._childIndex = index;
-			}
-			var index1 = sibling._childIndex;
-			node._children[index1] = sibling;
-			sibling._parent = node;
-			sibling._childIndex = index1;
-			var index2 = sibling._childIndex ^ 1;
-			node._children[index2] = leaf;
-			leaf._parent = node;
-			leaf._childIndex = index2;
-			while(node != null) {
-				if(_this._strategy._balancingEnabled) {
-					var nh = node._height;
-					if(nh < 2) {
-						node = node;
-					} else {
-						var p1 = node._parent;
-						var l = node._children[0];
-						var r = node._children[1];
-						var lh = l._height;
-						var rh = r._height;
-						var balance = lh - rh;
-						var nodeIndex = node._childIndex;
-						if(balance > 1) {
-							var ll = l._children[0];
-							var lr = l._children[1];
-							var llh = ll._height;
-							var lrh = lr._height;
-							if(llh > lrh) {
-								l._children[1] = node;
-								node._parent = l;
-								node._childIndex = 1;
-								node._children[0] = lr;
-								lr._parent = node;
-								lr._childIndex = 0;
-								var c1 = l._children[0];
-								var c2 = l._children[1];
-								l._aabbMinX = c1._aabbMinX < c2._aabbMinX ? c1._aabbMinX : c2._aabbMinX;
-								l._aabbMinY = c1._aabbMinY < c2._aabbMinY ? c1._aabbMinY : c2._aabbMinY;
-								l._aabbMinZ = c1._aabbMinZ < c2._aabbMinZ ? c1._aabbMinZ : c2._aabbMinZ;
-								l._aabbMaxX = c1._aabbMaxX > c2._aabbMaxX ? c1._aabbMaxX : c2._aabbMaxX;
-								l._aabbMaxY = c1._aabbMaxY > c2._aabbMaxY ? c1._aabbMaxY : c2._aabbMaxY;
-								l._aabbMaxZ = c1._aabbMaxZ > c2._aabbMaxZ ? c1._aabbMaxZ : c2._aabbMaxZ;
-								var h1 = l._children[0]._height;
-								var h2 = l._children[1]._height;
-								l._height = (h1 > h2 ? h1 : h2) + 1;
-								var c11 = node._children[0];
-								var c21 = node._children[1];
-								node._aabbMinX = c11._aabbMinX < c21._aabbMinX ? c11._aabbMinX : c21._aabbMinX;
-								node._aabbMinY = c11._aabbMinY < c21._aabbMinY ? c11._aabbMinY : c21._aabbMinY;
-								node._aabbMinZ = c11._aabbMinZ < c21._aabbMinZ ? c11._aabbMinZ : c21._aabbMinZ;
-								node._aabbMaxX = c11._aabbMaxX > c21._aabbMaxX ? c11._aabbMaxX : c21._aabbMaxX;
-								node._aabbMaxY = c11._aabbMaxY > c21._aabbMaxY ? c11._aabbMaxY : c21._aabbMaxY;
-								node._aabbMaxZ = c11._aabbMaxZ > c21._aabbMaxZ ? c11._aabbMaxZ : c21._aabbMaxZ;
-								var h11 = node._children[0]._height;
-								var h21 = node._children[1]._height;
-								node._height = (h11 > h21 ? h11 : h21) + 1;
-							} else {
-								l._children[0] = node;
-								node._parent = l;
-								node._childIndex = 0;
-								node._children[0] = ll;
-								ll._parent = node;
-								ll._childIndex = 0;
-								var c12 = l._children[0];
-								var c22 = l._children[1];
-								l._aabbMinX = c12._aabbMinX < c22._aabbMinX ? c12._aabbMinX : c22._aabbMinX;
-								l._aabbMinY = c12._aabbMinY < c22._aabbMinY ? c12._aabbMinY : c22._aabbMinY;
-								l._aabbMinZ = c12._aabbMinZ < c22._aabbMinZ ? c12._aabbMinZ : c22._aabbMinZ;
-								l._aabbMaxX = c12._aabbMaxX > c22._aabbMaxX ? c12._aabbMaxX : c22._aabbMaxX;
-								l._aabbMaxY = c12._aabbMaxY > c22._aabbMaxY ? c12._aabbMaxY : c22._aabbMaxY;
-								l._aabbMaxZ = c12._aabbMaxZ > c22._aabbMaxZ ? c12._aabbMaxZ : c22._aabbMaxZ;
-								var h12 = l._children[0]._height;
-								var h22 = l._children[1]._height;
-								l._height = (h12 > h22 ? h12 : h22) + 1;
-								var c13 = node._children[0];
-								var c23 = node._children[1];
-								node._aabbMinX = c13._aabbMinX < c23._aabbMinX ? c13._aabbMinX : c23._aabbMinX;
-								node._aabbMinY = c13._aabbMinY < c23._aabbMinY ? c13._aabbMinY : c23._aabbMinY;
-								node._aabbMinZ = c13._aabbMinZ < c23._aabbMinZ ? c13._aabbMinZ : c23._aabbMinZ;
-								node._aabbMaxX = c13._aabbMaxX > c23._aabbMaxX ? c13._aabbMaxX : c23._aabbMaxX;
-								node._aabbMaxY = c13._aabbMaxY > c23._aabbMaxY ? c13._aabbMaxY : c23._aabbMaxY;
-								node._aabbMaxZ = c13._aabbMaxZ > c23._aabbMaxZ ? c13._aabbMaxZ : c23._aabbMaxZ;
-								var h13 = node._children[0]._height;
-								var h23 = node._children[1]._height;
-								node._height = (h13 > h23 ? h13 : h23) + 1;
-							}
-							if(p1 != null) {
-								p1._children[nodeIndex] = l;
-								l._parent = p1;
-								l._childIndex = nodeIndex;
-							} else {
-								_this._root = l;
-								l._parent = null;
-							}
-							node = l;
-						} else if(balance < -1) {
-							var rl = r._children[0];
-							var rr = r._children[1];
-							var rlh = rl._height;
-							var rrh = rr._height;
-							if(rlh > rrh) {
-								r._children[1] = node;
-								node._parent = r;
-								node._childIndex = 1;
-								node._children[1] = rr;
-								rr._parent = node;
-								rr._childIndex = 1;
-								var c14 = r._children[0];
-								var c24 = r._children[1];
-								r._aabbMinX = c14._aabbMinX < c24._aabbMinX ? c14._aabbMinX : c24._aabbMinX;
-								r._aabbMinY = c14._aabbMinY < c24._aabbMinY ? c14._aabbMinY : c24._aabbMinY;
-								r._aabbMinZ = c14._aabbMinZ < c24._aabbMinZ ? c14._aabbMinZ : c24._aabbMinZ;
-								r._aabbMaxX = c14._aabbMaxX > c24._aabbMaxX ? c14._aabbMaxX : c24._aabbMaxX;
-								r._aabbMaxY = c14._aabbMaxY > c24._aabbMaxY ? c14._aabbMaxY : c24._aabbMaxY;
-								r._aabbMaxZ = c14._aabbMaxZ > c24._aabbMaxZ ? c14._aabbMaxZ : c24._aabbMaxZ;
-								var h14 = r._children[0]._height;
-								var h24 = r._children[1]._height;
-								r._height = (h14 > h24 ? h14 : h24) + 1;
-								var c15 = node._children[0];
-								var c25 = node._children[1];
-								node._aabbMinX = c15._aabbMinX < c25._aabbMinX ? c15._aabbMinX : c25._aabbMinX;
-								node._aabbMinY = c15._aabbMinY < c25._aabbMinY ? c15._aabbMinY : c25._aabbMinY;
-								node._aabbMinZ = c15._aabbMinZ < c25._aabbMinZ ? c15._aabbMinZ : c25._aabbMinZ;
-								node._aabbMaxX = c15._aabbMaxX > c25._aabbMaxX ? c15._aabbMaxX : c25._aabbMaxX;
-								node._aabbMaxY = c15._aabbMaxY > c25._aabbMaxY ? c15._aabbMaxY : c25._aabbMaxY;
-								node._aabbMaxZ = c15._aabbMaxZ > c25._aabbMaxZ ? c15._aabbMaxZ : c25._aabbMaxZ;
-								var h15 = node._children[0]._height;
-								var h25 = node._children[1]._height;
-								node._height = (h15 > h25 ? h15 : h25) + 1;
-							} else {
-								r._children[0] = node;
-								node._parent = r;
-								node._childIndex = 0;
-								node._children[1] = rl;
-								rl._parent = node;
-								rl._childIndex = 1;
-								var c16 = r._children[0];
-								var c26 = r._children[1];
-								r._aabbMinX = c16._aabbMinX < c26._aabbMinX ? c16._aabbMinX : c26._aabbMinX;
-								r._aabbMinY = c16._aabbMinY < c26._aabbMinY ? c16._aabbMinY : c26._aabbMinY;
-								r._aabbMinZ = c16._aabbMinZ < c26._aabbMinZ ? c16._aabbMinZ : c26._aabbMinZ;
-								r._aabbMaxX = c16._aabbMaxX > c26._aabbMaxX ? c16._aabbMaxX : c26._aabbMaxX;
-								r._aabbMaxY = c16._aabbMaxY > c26._aabbMaxY ? c16._aabbMaxY : c26._aabbMaxY;
-								r._aabbMaxZ = c16._aabbMaxZ > c26._aabbMaxZ ? c16._aabbMaxZ : c26._aabbMaxZ;
-								var h16 = r._children[0]._height;
-								var h26 = r._children[1]._height;
-								r._height = (h16 > h26 ? h16 : h26) + 1;
-								var c17 = node._children[0];
-								var c27 = node._children[1];
-								node._aabbMinX = c17._aabbMinX < c27._aabbMinX ? c17._aabbMinX : c27._aabbMinX;
-								node._aabbMinY = c17._aabbMinY < c27._aabbMinY ? c17._aabbMinY : c27._aabbMinY;
-								node._aabbMinZ = c17._aabbMinZ < c27._aabbMinZ ? c17._aabbMinZ : c27._aabbMinZ;
-								node._aabbMaxX = c17._aabbMaxX > c27._aabbMaxX ? c17._aabbMaxX : c27._aabbMaxX;
-								node._aabbMaxY = c17._aabbMaxY > c27._aabbMaxY ? c17._aabbMaxY : c27._aabbMaxY;
-								node._aabbMaxZ = c17._aabbMaxZ > c27._aabbMaxZ ? c17._aabbMaxZ : c27._aabbMaxZ;
-								var h17 = node._children[0]._height;
-								var h27 = node._children[1]._height;
-								node._height = (h17 > h27 ? h17 : h27) + 1;
-							}
-							if(p1 != null) {
-								p1._children[nodeIndex] = r;
-								r._parent = p1;
-								r._childIndex = nodeIndex;
-							} else {
-								_this._root = r;
-								r._parent = null;
-							}
-							node = r;
-						} else {
-							node = node;
-						}
-					}
-				}
-				var h18 = node._children[0]._height;
-				var h28 = node._children[1]._height;
-				node._height = (h18 > h28 ? h18 : h28) + 1;
-				var c18 = node._children[0];
-				var c28 = node._children[1];
-				node._aabbMinX = c18._aabbMinX < c28._aabbMinX ? c18._aabbMinX : c28._aabbMinX;
-				node._aabbMinY = c18._aabbMinY < c28._aabbMinY ? c18._aabbMinY : c28._aabbMinY;
-				node._aabbMinZ = c18._aabbMinZ < c28._aabbMinZ ? c18._aabbMinZ : c28._aabbMinZ;
-				node._aabbMaxX = c18._aabbMaxX > c28._aabbMaxX ? c18._aabbMaxX : c28._aabbMaxX;
-				node._aabbMaxY = c18._aabbMaxY > c28._aabbMaxY ? c18._aabbMaxY : c28._aabbMaxY;
-				node._aabbMaxZ = c18._aabbMaxZ > c28._aabbMaxZ ? c18._aabbMaxZ : c28._aabbMaxZ;
-				node = node._parent;
-			}
-		}
-		if(!p._moved) {
-			p._moved = true;
-			if(this.movedProxies.length == this.numMovedProxies) {
-				var newLength = this.numMovedProxies << 1;
-				var this1 = new Array(newLength);
-				var newArray = this1;
-				var _g = 0;
-				var _g1 = this.numMovedProxies;
-				while(_g < _g1) {
-					var i = _g++;
-					newArray[i] = this.movedProxies[i];
-					this.movedProxies[i] = null;
-				}
-				this.movedProxies = newArray;
-			}
-			this.movedProxies[this.numMovedProxies++] = p;
-		}
-		return p;
-	}
-	destroyProxy(proxy) {
-		this._numProxies--;
-		var prev = proxy._prev;
-		var next = proxy._next;
-		if(prev != null) {
-			prev._next = next;
-		}
-		if(next != null) {
-			next._prev = prev;
-		}
-		if(proxy == this._proxyList) {
-			this._proxyList = this._proxyList._next;
-		}
-		if(proxy == this._proxyListLast) {
-			this._proxyListLast = this._proxyListLast._prev;
-		}
-		proxy._next = null;
-		proxy._prev = null;
-		var bvhProxy = proxy;
-		var _this = this._tree;
-		var leaf = bvhProxy._leaf;
-		_this._numLeaves--;
-		var prev1 = leaf._prevLeaf;
-		var next1 = leaf._nextLeaf;
-		if(prev1 != null) {
-			prev1._nextLeaf = next1;
-		}
-		if(next1 != null) {
-			next1._prevLeaf = prev1;
-		}
-		if(leaf == _this.leafList) {
-			_this.leafList = _this.leafList._nextLeaf;
-		}
-		if(leaf == _this.leafListLast) {
-			_this.leafListLast = _this.leafListLast._prevLeaf;
-		}
-		leaf._nextLeaf = null;
-		leaf._prevLeaf = null;
-		if(_this._root == leaf) {
-			_this._root = null;
-		} else {
-			var parent = leaf._parent;
-			var sibling = parent._children[leaf._childIndex ^ 1];
-			var grandParent = parent._parent;
-			if(grandParent == null) {
-				sibling._parent = null;
-				sibling._childIndex = 0;
-				_this._root = sibling;
-				parent._next = null;
-				parent._childIndex = 0;
-				parent._children[0] = null;
-				parent._children[1] = null;
-				parent._childIndex = 0;
-				parent._parent = null;
-				parent._height = 0;
-				parent._proxy = null;
-				parent._next = _this._nodePool;
-				_this._nodePool = parent;
-			} else {
-				sibling._parent = grandParent;
-				var index = parent._childIndex;
-				grandParent._children[index] = sibling;
-				sibling._parent = grandParent;
-				sibling._childIndex = index;
-				parent._next = null;
-				parent._childIndex = 0;
-				parent._children[0] = null;
-				parent._children[1] = null;
-				parent._childIndex = 0;
-				parent._parent = null;
-				parent._height = 0;
-				parent._proxy = null;
-				parent._next = _this._nodePool;
-				_this._nodePool = parent;
-				var node = grandParent;
-				while(node != null) {
-					if(_this._strategy._balancingEnabled) {
-						var nh = node._height;
-						if(nh < 2) {
-							node = node;
-						} else {
-							var p = node._parent;
-							var l = node._children[0];
-							var r = node._children[1];
-							var lh = l._height;
-							var rh = r._height;
-							var balance = lh - rh;
-							var nodeIndex = node._childIndex;
-							if(balance > 1) {
-								var ll = l._children[0];
-								var lr = l._children[1];
-								var llh = ll._height;
-								var lrh = lr._height;
-								if(llh > lrh) {
-									l._children[1] = node;
-									node._parent = l;
-									node._childIndex = 1;
-									node._children[0] = lr;
-									lr._parent = node;
-									lr._childIndex = 0;
-									var c1 = l._children[0];
-									var c2 = l._children[1];
-									l._aabbMinX = c1._aabbMinX < c2._aabbMinX ? c1._aabbMinX : c2._aabbMinX;
-									l._aabbMinY = c1._aabbMinY < c2._aabbMinY ? c1._aabbMinY : c2._aabbMinY;
-									l._aabbMinZ = c1._aabbMinZ < c2._aabbMinZ ? c1._aabbMinZ : c2._aabbMinZ;
-									l._aabbMaxX = c1._aabbMaxX > c2._aabbMaxX ? c1._aabbMaxX : c2._aabbMaxX;
-									l._aabbMaxY = c1._aabbMaxY > c2._aabbMaxY ? c1._aabbMaxY : c2._aabbMaxY;
-									l._aabbMaxZ = c1._aabbMaxZ > c2._aabbMaxZ ? c1._aabbMaxZ : c2._aabbMaxZ;
-									var h1 = l._children[0]._height;
-									var h2 = l._children[1]._height;
-									l._height = (h1 > h2 ? h1 : h2) + 1;
-									var c11 = node._children[0];
-									var c21 = node._children[1];
-									node._aabbMinX = c11._aabbMinX < c21._aabbMinX ? c11._aabbMinX : c21._aabbMinX;
-									node._aabbMinY = c11._aabbMinY < c21._aabbMinY ? c11._aabbMinY : c21._aabbMinY;
-									node._aabbMinZ = c11._aabbMinZ < c21._aabbMinZ ? c11._aabbMinZ : c21._aabbMinZ;
-									node._aabbMaxX = c11._aabbMaxX > c21._aabbMaxX ? c11._aabbMaxX : c21._aabbMaxX;
-									node._aabbMaxY = c11._aabbMaxY > c21._aabbMaxY ? c11._aabbMaxY : c21._aabbMaxY;
-									node._aabbMaxZ = c11._aabbMaxZ > c21._aabbMaxZ ? c11._aabbMaxZ : c21._aabbMaxZ;
-									var h11 = node._children[0]._height;
-									var h21 = node._children[1]._height;
-									node._height = (h11 > h21 ? h11 : h21) + 1;
-								} else {
-									l._children[0] = node;
-									node._parent = l;
-									node._childIndex = 0;
-									node._children[0] = ll;
-									ll._parent = node;
-									ll._childIndex = 0;
-									var c12 = l._children[0];
-									var c22 = l._children[1];
-									l._aabbMinX = c12._aabbMinX < c22._aabbMinX ? c12._aabbMinX : c22._aabbMinX;
-									l._aabbMinY = c12._aabbMinY < c22._aabbMinY ? c12._aabbMinY : c22._aabbMinY;
-									l._aabbMinZ = c12._aabbMinZ < c22._aabbMinZ ? c12._aabbMinZ : c22._aabbMinZ;
-									l._aabbMaxX = c12._aabbMaxX > c22._aabbMaxX ? c12._aabbMaxX : c22._aabbMaxX;
-									l._aabbMaxY = c12._aabbMaxY > c22._aabbMaxY ? c12._aabbMaxY : c22._aabbMaxY;
-									l._aabbMaxZ = c12._aabbMaxZ > c22._aabbMaxZ ? c12._aabbMaxZ : c22._aabbMaxZ;
-									var h12 = l._children[0]._height;
-									var h22 = l._children[1]._height;
-									l._height = (h12 > h22 ? h12 : h22) + 1;
-									var c13 = node._children[0];
-									var c23 = node._children[1];
-									node._aabbMinX = c13._aabbMinX < c23._aabbMinX ? c13._aabbMinX : c23._aabbMinX;
-									node._aabbMinY = c13._aabbMinY < c23._aabbMinY ? c13._aabbMinY : c23._aabbMinY;
-									node._aabbMinZ = c13._aabbMinZ < c23._aabbMinZ ? c13._aabbMinZ : c23._aabbMinZ;
-									node._aabbMaxX = c13._aabbMaxX > c23._aabbMaxX ? c13._aabbMaxX : c23._aabbMaxX;
-									node._aabbMaxY = c13._aabbMaxY > c23._aabbMaxY ? c13._aabbMaxY : c23._aabbMaxY;
-									node._aabbMaxZ = c13._aabbMaxZ > c23._aabbMaxZ ? c13._aabbMaxZ : c23._aabbMaxZ;
-									var h13 = node._children[0]._height;
-									var h23 = node._children[1]._height;
-									node._height = (h13 > h23 ? h13 : h23) + 1;
-								}
-								if(p != null) {
-									p._children[nodeIndex] = l;
-									l._parent = p;
-									l._childIndex = nodeIndex;
-								} else {
-									_this._root = l;
-									l._parent = null;
-								}
-								node = l;
-							} else if(balance < -1) {
-								var rl = r._children[0];
-								var rr = r._children[1];
-								var rlh = rl._height;
-								var rrh = rr._height;
-								if(rlh > rrh) {
-									r._children[1] = node;
-									node._parent = r;
-									node._childIndex = 1;
-									node._children[1] = rr;
-									rr._parent = node;
-									rr._childIndex = 1;
-									var c14 = r._children[0];
-									var c24 = r._children[1];
-									r._aabbMinX = c14._aabbMinX < c24._aabbMinX ? c14._aabbMinX : c24._aabbMinX;
-									r._aabbMinY = c14._aabbMinY < c24._aabbMinY ? c14._aabbMinY : c24._aabbMinY;
-									r._aabbMinZ = c14._aabbMinZ < c24._aabbMinZ ? c14._aabbMinZ : c24._aabbMinZ;
-									r._aabbMaxX = c14._aabbMaxX > c24._aabbMaxX ? c14._aabbMaxX : c24._aabbMaxX;
-									r._aabbMaxY = c14._aabbMaxY > c24._aabbMaxY ? c14._aabbMaxY : c24._aabbMaxY;
-									r._aabbMaxZ = c14._aabbMaxZ > c24._aabbMaxZ ? c14._aabbMaxZ : c24._aabbMaxZ;
-									var h14 = r._children[0]._height;
-									var h24 = r._children[1]._height;
-									r._height = (h14 > h24 ? h14 : h24) + 1;
-									var c15 = node._children[0];
-									var c25 = node._children[1];
-									node._aabbMinX = c15._aabbMinX < c25._aabbMinX ? c15._aabbMinX : c25._aabbMinX;
-									node._aabbMinY = c15._aabbMinY < c25._aabbMinY ? c15._aabbMinY : c25._aabbMinY;
-									node._aabbMinZ = c15._aabbMinZ < c25._aabbMinZ ? c15._aabbMinZ : c25._aabbMinZ;
-									node._aabbMaxX = c15._aabbMaxX > c25._aabbMaxX ? c15._aabbMaxX : c25._aabbMaxX;
-									node._aabbMaxY = c15._aabbMaxY > c25._aabbMaxY ? c15._aabbMaxY : c25._aabbMaxY;
-									node._aabbMaxZ = c15._aabbMaxZ > c25._aabbMaxZ ? c15._aabbMaxZ : c25._aabbMaxZ;
-									var h15 = node._children[0]._height;
-									var h25 = node._children[1]._height;
-									node._height = (h15 > h25 ? h15 : h25) + 1;
-								} else {
-									r._children[0] = node;
-									node._parent = r;
-									node._childIndex = 0;
-									node._children[1] = rl;
-									rl._parent = node;
-									rl._childIndex = 1;
-									var c16 = r._children[0];
-									var c26 = r._children[1];
-									r._aabbMinX = c16._aabbMinX < c26._aabbMinX ? c16._aabbMinX : c26._aabbMinX;
-									r._aabbMinY = c16._aabbMinY < c26._aabbMinY ? c16._aabbMinY : c26._aabbMinY;
-									r._aabbMinZ = c16._aabbMinZ < c26._aabbMinZ ? c16._aabbMinZ : c26._aabbMinZ;
-									r._aabbMaxX = c16._aabbMaxX > c26._aabbMaxX ? c16._aabbMaxX : c26._aabbMaxX;
-									r._aabbMaxY = c16._aabbMaxY > c26._aabbMaxY ? c16._aabbMaxY : c26._aabbMaxY;
-									r._aabbMaxZ = c16._aabbMaxZ > c26._aabbMaxZ ? c16._aabbMaxZ : c26._aabbMaxZ;
-									var h16 = r._children[0]._height;
-									var h26 = r._children[1]._height;
-									r._height = (h16 > h26 ? h16 : h26) + 1;
-									var c17 = node._children[0];
-									var c27 = node._children[1];
-									node._aabbMinX = c17._aabbMinX < c27._aabbMinX ? c17._aabbMinX : c27._aabbMinX;
-									node._aabbMinY = c17._aabbMinY < c27._aabbMinY ? c17._aabbMinY : c27._aabbMinY;
-									node._aabbMinZ = c17._aabbMinZ < c27._aabbMinZ ? c17._aabbMinZ : c27._aabbMinZ;
-									node._aabbMaxX = c17._aabbMaxX > c27._aabbMaxX ? c17._aabbMaxX : c27._aabbMaxX;
-									node._aabbMaxY = c17._aabbMaxY > c27._aabbMaxY ? c17._aabbMaxY : c27._aabbMaxY;
-									node._aabbMaxZ = c17._aabbMaxZ > c27._aabbMaxZ ? c17._aabbMaxZ : c27._aabbMaxZ;
-									var h17 = node._children[0]._height;
-									var h27 = node._children[1]._height;
-									node._height = (h17 > h27 ? h17 : h27) + 1;
-								}
-								if(p != null) {
-									p._children[nodeIndex] = r;
-									r._parent = p;
-									r._childIndex = nodeIndex;
-								} else {
-									_this._root = r;
-									r._parent = null;
-								}
-								node = r;
-							} else {
-								node = node;
-							}
-						}
-					}
-					var h18 = node._children[0]._height;
-					var h28 = node._children[1]._height;
-					node._height = (h18 > h28 ? h18 : h28) + 1;
-					var c18 = node._children[0];
-					var c28 = node._children[1];
-					node._aabbMinX = c18._aabbMinX < c28._aabbMinX ? c18._aabbMinX : c28._aabbMinX;
-					node._aabbMinY = c18._aabbMinY < c28._aabbMinY ? c18._aabbMinY : c28._aabbMinY;
-					node._aabbMinZ = c18._aabbMinZ < c28._aabbMinZ ? c18._aabbMinZ : c28._aabbMinZ;
-					node._aabbMaxX = c18._aabbMaxX > c28._aabbMaxX ? c18._aabbMaxX : c28._aabbMaxX;
-					node._aabbMaxY = c18._aabbMaxY > c28._aabbMaxY ? c18._aabbMaxY : c28._aabbMaxY;
-					node._aabbMaxZ = c18._aabbMaxZ > c28._aabbMaxZ ? c18._aabbMaxZ : c28._aabbMaxZ;
-					node = node._parent;
-				}
-			}
-		}
-		bvhProxy._leaf = null;
-		leaf._next = null;
-		leaf._childIndex = 0;
-		leaf._children[0] = null;
-		leaf._children[1] = null;
-		leaf._childIndex = 0;
-		leaf._parent = null;
-		leaf._height = 0;
-		leaf._proxy = null;
-		leaf._next = _this._nodePool;
-		_this._nodePool = leaf;
-		bvhProxy.userData = null;
-		bvhProxy._next = null;
-		bvhProxy._prev = null;
-		if(bvhProxy._moved) {
-			bvhProxy._moved = false;
-		}
-	}
-	moveProxy(proxy,aabb,displacement) {
-		var p = proxy;
-		if(p._aabbMinX <= aabb._minX && p._aabbMaxX >= aabb._maxX && p._aabbMinY <= aabb._minY && p._aabbMaxY >= aabb._maxY && p._aabbMinZ <= aabb._minZ && p._aabbMaxZ >= aabb._maxZ) {
-			return;
-		}
-		p._aabbMinX = aabb._minX;
-		p._aabbMinY = aabb._minY;
-		p._aabbMinZ = aabb._minZ;
-		p._aabbMaxX = aabb._maxX;
-		p._aabbMaxY = aabb._maxY;
-		p._aabbMaxZ = aabb._maxZ;
-		var padding = oimo.common.Setting.bvhProxyPadding;
-		var paddingVec;
-		var paddingVecX;
-		var paddingVecY;
-		var paddingVecZ;
-		paddingVecX = padding;
-		paddingVecY = padding;
-		paddingVecZ = padding;
-		p._aabbMinX -= paddingVecX;
-		p._aabbMinY -= paddingVecY;
-		p._aabbMinZ -= paddingVecZ;
-		p._aabbMaxX += paddingVecX;
-		p._aabbMaxY += paddingVecY;
-		p._aabbMaxZ += paddingVecZ;
-		if(displacement != null) {
-			var d;
-			var dX;
-			var dY;
-			var dZ;
-			var zero;
-			var zeroX;
-			var zeroY;
-			var zeroZ;
-			var addToMin;
-			var addToMinX;
-			var addToMinY;
-			var addToMinZ;
-			var addToMax;
-			var addToMaxX;
-			var addToMaxY;
-			var addToMaxZ;
-			zeroX = 0;
-			zeroY = 0;
-			zeroZ = 0;
-			var v = displacement;
-			dX = v.x;
-			dY = v.y;
-			dZ = v.z;
-			addToMinX = zeroX < dX ? zeroX : dX;
-			addToMinY = zeroY < dY ? zeroY : dY;
-			addToMinZ = zeroZ < dZ ? zeroZ : dZ;
-			addToMaxX = zeroX > dX ? zeroX : dX;
-			addToMaxY = zeroY > dY ? zeroY : dY;
-			addToMaxZ = zeroZ > dZ ? zeroZ : dZ;
-			p._aabbMinX += addToMinX;
-			p._aabbMinY += addToMinY;
-			p._aabbMinZ += addToMinZ;
-			p._aabbMaxX += addToMaxX;
-			p._aabbMaxY += addToMaxY;
-			p._aabbMaxZ += addToMaxZ;
-		}
-		if(!p._moved) {
-			p._moved = true;
-			if(this.movedProxies.length == this.numMovedProxies) {
-				var newLength = this.numMovedProxies << 1;
-				var this1 = new Array(newLength);
-				var newArray = this1;
-				var _g = 0;
-				var _g1 = this.numMovedProxies;
-				while(_g < _g1) {
-					var i = _g++;
-					newArray[i] = this.movedProxies[i];
-					this.movedProxies[i] = null;
-				}
-				this.movedProxies = newArray;
-			}
-			this.movedProxies[this.numMovedProxies++] = p;
-		}
-	}
-	collectPairs() {
-		var p = this._proxyPairList;
-		if(p != null) {
-			while(true) {
-				p._p1 = null;
-				p._p2 = null;
-				p = p._next;
-				if(!(p != null)) {
-					break;
-				}
-			}
-			this._proxyPairList._next = this._proxyPairPool;
-			this._proxyPairPool = this._proxyPairList;
-			this._proxyPairList = null;
-		}
-		this._testCount = 0;
-		if(this._numProxies < 2) {
-			return;
-		}
-		var topDown = false;
-		if(topDown) {
-			while(this.numMovedProxies > 0) this.movedProxies[--this.numMovedProxies] = null;
-			var _this = this._tree;
-			if(_this._root != null) {
-				if(_this._root != null) {
-					_this.decomposeRecursive(_this._root);
-					_this._root = null;
-				}
-				while(_this.tmp.length < _this._numLeaves) {
-					var newLength = _this.tmp.length << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g = 0;
-					var _g1 = _this.tmp.length;
-					while(_g < _g1) {
-						var i = _g++;
-						newArray[i] = _this.tmp[i];
-						_this.tmp[i] = null;
-					}
-					_this.tmp = newArray;
-				}
-				var idx = 0;
-				var leaf = _this.leafList;
-				while(leaf != null) {
-					var n = leaf._nextLeaf;
-					_this.tmp[idx] = leaf;
-					++idx;
-					leaf = n;
-				}
-				_this._root = _this.buildTopDownRecursive(_this.tmp,0,_this._numLeaves);
-			}
-			this.collide(this._tree._root,this._tree._root);
-			return;
-		}
-		var incrementalCollision = this.numMovedProxies / this._numProxies < oimo.common.Setting.bvhIncrementalCollisionThreshold;
-		var _g2 = 0;
-		var _g11 = this.numMovedProxies;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			var p1 = this.movedProxies[i1];
-			if(p1._moved) {
-				var _this1 = this._tree;
-				var leaf1 = p1._leaf;
-				_this1._numLeaves--;
-				var prev = leaf1._prevLeaf;
-				var next = leaf1._nextLeaf;
-				if(prev != null) {
-					prev._nextLeaf = next;
-				}
-				if(next != null) {
-					next._prevLeaf = prev;
-				}
-				if(leaf1 == _this1.leafList) {
-					_this1.leafList = _this1.leafList._nextLeaf;
-				}
-				if(leaf1 == _this1.leafListLast) {
-					_this1.leafListLast = _this1.leafListLast._prevLeaf;
-				}
-				leaf1._nextLeaf = null;
-				leaf1._prevLeaf = null;
-				if(_this1._root == leaf1) {
-					_this1._root = null;
-				} else {
-					var parent = leaf1._parent;
-					var sibling = parent._children[leaf1._childIndex ^ 1];
-					var grandParent = parent._parent;
-					if(grandParent == null) {
-						sibling._parent = null;
-						sibling._childIndex = 0;
-						_this1._root = sibling;
-						parent._next = null;
-						parent._childIndex = 0;
-						parent._children[0] = null;
-						parent._children[1] = null;
-						parent._childIndex = 0;
-						parent._parent = null;
-						parent._height = 0;
-						parent._proxy = null;
-						parent._next = _this1._nodePool;
-						_this1._nodePool = parent;
-					} else {
-						sibling._parent = grandParent;
-						var index = parent._childIndex;
-						grandParent._children[index] = sibling;
-						sibling._parent = grandParent;
-						sibling._childIndex = index;
-						parent._next = null;
-						parent._childIndex = 0;
-						parent._children[0] = null;
-						parent._children[1] = null;
-						parent._childIndex = 0;
-						parent._parent = null;
-						parent._height = 0;
-						parent._proxy = null;
-						parent._next = _this1._nodePool;
-						_this1._nodePool = parent;
-						var node = grandParent;
-						while(node != null) {
-							if(_this1._strategy._balancingEnabled) {
-								var nh = node._height;
-								if(nh < 2) {
-									node = node;
-								} else {
-									var p2 = node._parent;
-									var l = node._children[0];
-									var r = node._children[1];
-									var lh = l._height;
-									var rh = r._height;
-									var balance = lh - rh;
-									var nodeIndex = node._childIndex;
-									if(balance > 1) {
-										var ll = l._children[0];
-										var lr = l._children[1];
-										var llh = ll._height;
-										var lrh = lr._height;
-										if(llh > lrh) {
-											l._children[1] = node;
-											node._parent = l;
-											node._childIndex = 1;
-											node._children[0] = lr;
-											lr._parent = node;
-											lr._childIndex = 0;
-											var c1 = l._children[0];
-											var c2 = l._children[1];
-											l._aabbMinX = c1._aabbMinX < c2._aabbMinX ? c1._aabbMinX : c2._aabbMinX;
-											l._aabbMinY = c1._aabbMinY < c2._aabbMinY ? c1._aabbMinY : c2._aabbMinY;
-											l._aabbMinZ = c1._aabbMinZ < c2._aabbMinZ ? c1._aabbMinZ : c2._aabbMinZ;
-											l._aabbMaxX = c1._aabbMaxX > c2._aabbMaxX ? c1._aabbMaxX : c2._aabbMaxX;
-											l._aabbMaxY = c1._aabbMaxY > c2._aabbMaxY ? c1._aabbMaxY : c2._aabbMaxY;
-											l._aabbMaxZ = c1._aabbMaxZ > c2._aabbMaxZ ? c1._aabbMaxZ : c2._aabbMaxZ;
-											var h1 = l._children[0]._height;
-											var h2 = l._children[1]._height;
-											l._height = (h1 > h2 ? h1 : h2) + 1;
-											var c11 = node._children[0];
-											var c21 = node._children[1];
-											node._aabbMinX = c11._aabbMinX < c21._aabbMinX ? c11._aabbMinX : c21._aabbMinX;
-											node._aabbMinY = c11._aabbMinY < c21._aabbMinY ? c11._aabbMinY : c21._aabbMinY;
-											node._aabbMinZ = c11._aabbMinZ < c21._aabbMinZ ? c11._aabbMinZ : c21._aabbMinZ;
-											node._aabbMaxX = c11._aabbMaxX > c21._aabbMaxX ? c11._aabbMaxX : c21._aabbMaxX;
-											node._aabbMaxY = c11._aabbMaxY > c21._aabbMaxY ? c11._aabbMaxY : c21._aabbMaxY;
-											node._aabbMaxZ = c11._aabbMaxZ > c21._aabbMaxZ ? c11._aabbMaxZ : c21._aabbMaxZ;
-											var h11 = node._children[0]._height;
-											var h21 = node._children[1]._height;
-											node._height = (h11 > h21 ? h11 : h21) + 1;
-										} else {
-											l._children[0] = node;
-											node._parent = l;
-											node._childIndex = 0;
-											node._children[0] = ll;
-											ll._parent = node;
-											ll._childIndex = 0;
-											var c12 = l._children[0];
-											var c22 = l._children[1];
-											l._aabbMinX = c12._aabbMinX < c22._aabbMinX ? c12._aabbMinX : c22._aabbMinX;
-											l._aabbMinY = c12._aabbMinY < c22._aabbMinY ? c12._aabbMinY : c22._aabbMinY;
-											l._aabbMinZ = c12._aabbMinZ < c22._aabbMinZ ? c12._aabbMinZ : c22._aabbMinZ;
-											l._aabbMaxX = c12._aabbMaxX > c22._aabbMaxX ? c12._aabbMaxX : c22._aabbMaxX;
-											l._aabbMaxY = c12._aabbMaxY > c22._aabbMaxY ? c12._aabbMaxY : c22._aabbMaxY;
-											l._aabbMaxZ = c12._aabbMaxZ > c22._aabbMaxZ ? c12._aabbMaxZ : c22._aabbMaxZ;
-											var h12 = l._children[0]._height;
-											var h22 = l._children[1]._height;
-											l._height = (h12 > h22 ? h12 : h22) + 1;
-											var c13 = node._children[0];
-											var c23 = node._children[1];
-											node._aabbMinX = c13._aabbMinX < c23._aabbMinX ? c13._aabbMinX : c23._aabbMinX;
-											node._aabbMinY = c13._aabbMinY < c23._aabbMinY ? c13._aabbMinY : c23._aabbMinY;
-											node._aabbMinZ = c13._aabbMinZ < c23._aabbMinZ ? c13._aabbMinZ : c23._aabbMinZ;
-											node._aabbMaxX = c13._aabbMaxX > c23._aabbMaxX ? c13._aabbMaxX : c23._aabbMaxX;
-											node._aabbMaxY = c13._aabbMaxY > c23._aabbMaxY ? c13._aabbMaxY : c23._aabbMaxY;
-											node._aabbMaxZ = c13._aabbMaxZ > c23._aabbMaxZ ? c13._aabbMaxZ : c23._aabbMaxZ;
-											var h13 = node._children[0]._height;
-											var h23 = node._children[1]._height;
-											node._height = (h13 > h23 ? h13 : h23) + 1;
-										}
-										if(p2 != null) {
-											p2._children[nodeIndex] = l;
-											l._parent = p2;
-											l._childIndex = nodeIndex;
-										} else {
-											_this1._root = l;
-											l._parent = null;
-										}
-										node = l;
-									} else if(balance < -1) {
-										var rl = r._children[0];
-										var rr = r._children[1];
-										var rlh = rl._height;
-										var rrh = rr._height;
-										if(rlh > rrh) {
-											r._children[1] = node;
-											node._parent = r;
-											node._childIndex = 1;
-											node._children[1] = rr;
-											rr._parent = node;
-											rr._childIndex = 1;
-											var c14 = r._children[0];
-											var c24 = r._children[1];
-											r._aabbMinX = c14._aabbMinX < c24._aabbMinX ? c14._aabbMinX : c24._aabbMinX;
-											r._aabbMinY = c14._aabbMinY < c24._aabbMinY ? c14._aabbMinY : c24._aabbMinY;
-											r._aabbMinZ = c14._aabbMinZ < c24._aabbMinZ ? c14._aabbMinZ : c24._aabbMinZ;
-											r._aabbMaxX = c14._aabbMaxX > c24._aabbMaxX ? c14._aabbMaxX : c24._aabbMaxX;
-											r._aabbMaxY = c14._aabbMaxY > c24._aabbMaxY ? c14._aabbMaxY : c24._aabbMaxY;
-											r._aabbMaxZ = c14._aabbMaxZ > c24._aabbMaxZ ? c14._aabbMaxZ : c24._aabbMaxZ;
-											var h14 = r._children[0]._height;
-											var h24 = r._children[1]._height;
-											r._height = (h14 > h24 ? h14 : h24) + 1;
-											var c15 = node._children[0];
-											var c25 = node._children[1];
-											node._aabbMinX = c15._aabbMinX < c25._aabbMinX ? c15._aabbMinX : c25._aabbMinX;
-											node._aabbMinY = c15._aabbMinY < c25._aabbMinY ? c15._aabbMinY : c25._aabbMinY;
-											node._aabbMinZ = c15._aabbMinZ < c25._aabbMinZ ? c15._aabbMinZ : c25._aabbMinZ;
-											node._aabbMaxX = c15._aabbMaxX > c25._aabbMaxX ? c15._aabbMaxX : c25._aabbMaxX;
-											node._aabbMaxY = c15._aabbMaxY > c25._aabbMaxY ? c15._aabbMaxY : c25._aabbMaxY;
-											node._aabbMaxZ = c15._aabbMaxZ > c25._aabbMaxZ ? c15._aabbMaxZ : c25._aabbMaxZ;
-											var h15 = node._children[0]._height;
-											var h25 = node._children[1]._height;
-											node._height = (h15 > h25 ? h15 : h25) + 1;
-										} else {
-											r._children[0] = node;
-											node._parent = r;
-											node._childIndex = 0;
-											node._children[1] = rl;
-											rl._parent = node;
-											rl._childIndex = 1;
-											var c16 = r._children[0];
-											var c26 = r._children[1];
-											r._aabbMinX = c16._aabbMinX < c26._aabbMinX ? c16._aabbMinX : c26._aabbMinX;
-											r._aabbMinY = c16._aabbMinY < c26._aabbMinY ? c16._aabbMinY : c26._aabbMinY;
-											r._aabbMinZ = c16._aabbMinZ < c26._aabbMinZ ? c16._aabbMinZ : c26._aabbMinZ;
-											r._aabbMaxX = c16._aabbMaxX > c26._aabbMaxX ? c16._aabbMaxX : c26._aabbMaxX;
-											r._aabbMaxY = c16._aabbMaxY > c26._aabbMaxY ? c16._aabbMaxY : c26._aabbMaxY;
-											r._aabbMaxZ = c16._aabbMaxZ > c26._aabbMaxZ ? c16._aabbMaxZ : c26._aabbMaxZ;
-											var h16 = r._children[0]._height;
-											var h26 = r._children[1]._height;
-											r._height = (h16 > h26 ? h16 : h26) + 1;
-											var c17 = node._children[0];
-											var c27 = node._children[1];
-											node._aabbMinX = c17._aabbMinX < c27._aabbMinX ? c17._aabbMinX : c27._aabbMinX;
-											node._aabbMinY = c17._aabbMinY < c27._aabbMinY ? c17._aabbMinY : c27._aabbMinY;
-											node._aabbMinZ = c17._aabbMinZ < c27._aabbMinZ ? c17._aabbMinZ : c27._aabbMinZ;
-											node._aabbMaxX = c17._aabbMaxX > c27._aabbMaxX ? c17._aabbMaxX : c27._aabbMaxX;
-											node._aabbMaxY = c17._aabbMaxY > c27._aabbMaxY ? c17._aabbMaxY : c27._aabbMaxY;
-											node._aabbMaxZ = c17._aabbMaxZ > c27._aabbMaxZ ? c17._aabbMaxZ : c27._aabbMaxZ;
-											var h17 = node._children[0]._height;
-											var h27 = node._children[1]._height;
-											node._height = (h17 > h27 ? h17 : h27) + 1;
-										}
-										if(p2 != null) {
-											p2._children[nodeIndex] = r;
-											r._parent = p2;
-											r._childIndex = nodeIndex;
-										} else {
-											_this1._root = r;
-											r._parent = null;
-										}
-										node = r;
-									} else {
-										node = node;
-									}
-								}
-							}
-							var h18 = node._children[0]._height;
-							var h28 = node._children[1]._height;
-							node._height = (h18 > h28 ? h18 : h28) + 1;
-							var c18 = node._children[0];
-							var c28 = node._children[1];
-							node._aabbMinX = c18._aabbMinX < c28._aabbMinX ? c18._aabbMinX : c28._aabbMinX;
-							node._aabbMinY = c18._aabbMinY < c28._aabbMinY ? c18._aabbMinY : c28._aabbMinY;
-							node._aabbMinZ = c18._aabbMinZ < c28._aabbMinZ ? c18._aabbMinZ : c28._aabbMinZ;
-							node._aabbMaxX = c18._aabbMaxX > c28._aabbMaxX ? c18._aabbMaxX : c28._aabbMaxX;
-							node._aabbMaxY = c18._aabbMaxY > c28._aabbMaxY ? c18._aabbMaxY : c28._aabbMaxY;
-							node._aabbMaxZ = c18._aabbMaxZ > c28._aabbMaxZ ? c18._aabbMaxZ : c28._aabbMaxZ;
-							node = node._parent;
-						}
-					}
-				}
-				p1._leaf = null;
-				leaf1._next = null;
-				leaf1._childIndex = 0;
-				leaf1._children[0] = null;
-				leaf1._children[1] = null;
-				leaf1._childIndex = 0;
-				leaf1._parent = null;
-				leaf1._height = 0;
-				leaf1._proxy = null;
-				leaf1._next = _this1._nodePool;
-				_this1._nodePool = leaf1;
-				var _this2 = this._tree;
-				var first = _this2._nodePool;
-				if(first != null) {
-					_this2._nodePool = first._next;
-					first._next = null;
-				} else {
-					first = new oimo.collision.broadphase.bvh.BvhNode();
-				}
-				var leaf2 = first;
-				leaf2._proxy = p1;
-				p1._leaf = leaf2;
-				leaf2._aabbMinX = p1._aabbMinX;
-				leaf2._aabbMinY = p1._aabbMinY;
-				leaf2._aabbMinZ = p1._aabbMinZ;
-				leaf2._aabbMaxX = p1._aabbMaxX;
-				leaf2._aabbMaxY = p1._aabbMaxY;
-				leaf2._aabbMaxZ = p1._aabbMaxZ;
-				_this2._numLeaves++;
-				if(_this2.leafList == null) {
-					_this2.leafList = leaf2;
-					_this2.leafListLast = leaf2;
-				} else {
-					_this2.leafListLast._nextLeaf = leaf2;
-					leaf2._prevLeaf = _this2.leafListLast;
-					_this2.leafListLast = leaf2;
-				}
-				if(_this2._root == null) {
-					_this2._root = leaf2;
-				} else {
-					var sibling1 = _this2._root;
-					while(sibling1._height > 0) {
-						var nextStep = _this2._strategy._decideInsertion(sibling1,leaf2);
-						if(nextStep == -1) {
-							break;
-						} else {
-							sibling1 = sibling1._children[nextStep];
-						}
-					}
-					var parent1 = sibling1._parent;
-					var first1 = _this2._nodePool;
-					if(first1 != null) {
-						_this2._nodePool = first1._next;
-						first1._next = null;
-					} else {
-						first1 = new oimo.collision.broadphase.bvh.BvhNode();
-					}
-					var node1 = first1;
-					if(parent1 == null) {
-						_this2._root = node1;
-					} else {
-						var index1 = sibling1._childIndex;
-						parent1._children[index1] = node1;
-						node1._parent = parent1;
-						node1._childIndex = index1;
-					}
-					var index2 = sibling1._childIndex;
-					node1._children[index2] = sibling1;
-					sibling1._parent = node1;
-					sibling1._childIndex = index2;
-					var index3 = sibling1._childIndex ^ 1;
-					node1._children[index3] = leaf2;
-					leaf2._parent = node1;
-					leaf2._childIndex = index3;
-					while(node1 != null) {
-						if(_this2._strategy._balancingEnabled) {
-							var nh1 = node1._height;
-							if(nh1 < 2) {
-								node1 = node1;
-							} else {
-								var p3 = node1._parent;
-								var l1 = node1._children[0];
-								var r1 = node1._children[1];
-								var lh1 = l1._height;
-								var rh1 = r1._height;
-								var balance1 = lh1 - rh1;
-								var nodeIndex1 = node1._childIndex;
-								if(balance1 > 1) {
-									var ll1 = l1._children[0];
-									var lr1 = l1._children[1];
-									var llh1 = ll1._height;
-									var lrh1 = lr1._height;
-									if(llh1 > lrh1) {
-										l1._children[1] = node1;
-										node1._parent = l1;
-										node1._childIndex = 1;
-										node1._children[0] = lr1;
-										lr1._parent = node1;
-										lr1._childIndex = 0;
-										var c19 = l1._children[0];
-										var c29 = l1._children[1];
-										l1._aabbMinX = c19._aabbMinX < c29._aabbMinX ? c19._aabbMinX : c29._aabbMinX;
-										l1._aabbMinY = c19._aabbMinY < c29._aabbMinY ? c19._aabbMinY : c29._aabbMinY;
-										l1._aabbMinZ = c19._aabbMinZ < c29._aabbMinZ ? c19._aabbMinZ : c29._aabbMinZ;
-										l1._aabbMaxX = c19._aabbMaxX > c29._aabbMaxX ? c19._aabbMaxX : c29._aabbMaxX;
-										l1._aabbMaxY = c19._aabbMaxY > c29._aabbMaxY ? c19._aabbMaxY : c29._aabbMaxY;
-										l1._aabbMaxZ = c19._aabbMaxZ > c29._aabbMaxZ ? c19._aabbMaxZ : c29._aabbMaxZ;
-										var h19 = l1._children[0]._height;
-										var h29 = l1._children[1]._height;
-										l1._height = (h19 > h29 ? h19 : h29) + 1;
-										var c110 = node1._children[0];
-										var c210 = node1._children[1];
-										node1._aabbMinX = c110._aabbMinX < c210._aabbMinX ? c110._aabbMinX : c210._aabbMinX;
-										node1._aabbMinY = c110._aabbMinY < c210._aabbMinY ? c110._aabbMinY : c210._aabbMinY;
-										node1._aabbMinZ = c110._aabbMinZ < c210._aabbMinZ ? c110._aabbMinZ : c210._aabbMinZ;
-										node1._aabbMaxX = c110._aabbMaxX > c210._aabbMaxX ? c110._aabbMaxX : c210._aabbMaxX;
-										node1._aabbMaxY = c110._aabbMaxY > c210._aabbMaxY ? c110._aabbMaxY : c210._aabbMaxY;
-										node1._aabbMaxZ = c110._aabbMaxZ > c210._aabbMaxZ ? c110._aabbMaxZ : c210._aabbMaxZ;
-										var h110 = node1._children[0]._height;
-										var h210 = node1._children[1]._height;
-										node1._height = (h110 > h210 ? h110 : h210) + 1;
-									} else {
-										l1._children[0] = node1;
-										node1._parent = l1;
-										node1._childIndex = 0;
-										node1._children[0] = ll1;
-										ll1._parent = node1;
-										ll1._childIndex = 0;
-										var c111 = l1._children[0];
-										var c211 = l1._children[1];
-										l1._aabbMinX = c111._aabbMinX < c211._aabbMinX ? c111._aabbMinX : c211._aabbMinX;
-										l1._aabbMinY = c111._aabbMinY < c211._aabbMinY ? c111._aabbMinY : c211._aabbMinY;
-										l1._aabbMinZ = c111._aabbMinZ < c211._aabbMinZ ? c111._aabbMinZ : c211._aabbMinZ;
-										l1._aabbMaxX = c111._aabbMaxX > c211._aabbMaxX ? c111._aabbMaxX : c211._aabbMaxX;
-										l1._aabbMaxY = c111._aabbMaxY > c211._aabbMaxY ? c111._aabbMaxY : c211._aabbMaxY;
-										l1._aabbMaxZ = c111._aabbMaxZ > c211._aabbMaxZ ? c111._aabbMaxZ : c211._aabbMaxZ;
-										var h111 = l1._children[0]._height;
-										var h211 = l1._children[1]._height;
-										l1._height = (h111 > h211 ? h111 : h211) + 1;
-										var c112 = node1._children[0];
-										var c212 = node1._children[1];
-										node1._aabbMinX = c112._aabbMinX < c212._aabbMinX ? c112._aabbMinX : c212._aabbMinX;
-										node1._aabbMinY = c112._aabbMinY < c212._aabbMinY ? c112._aabbMinY : c212._aabbMinY;
-										node1._aabbMinZ = c112._aabbMinZ < c212._aabbMinZ ? c112._aabbMinZ : c212._aabbMinZ;
-										node1._aabbMaxX = c112._aabbMaxX > c212._aabbMaxX ? c112._aabbMaxX : c212._aabbMaxX;
-										node1._aabbMaxY = c112._aabbMaxY > c212._aabbMaxY ? c112._aabbMaxY : c212._aabbMaxY;
-										node1._aabbMaxZ = c112._aabbMaxZ > c212._aabbMaxZ ? c112._aabbMaxZ : c212._aabbMaxZ;
-										var h112 = node1._children[0]._height;
-										var h212 = node1._children[1]._height;
-										node1._height = (h112 > h212 ? h112 : h212) + 1;
-									}
-									if(p3 != null) {
-										p3._children[nodeIndex1] = l1;
-										l1._parent = p3;
-										l1._childIndex = nodeIndex1;
-									} else {
-										_this2._root = l1;
-										l1._parent = null;
-									}
-									node1 = l1;
-								} else if(balance1 < -1) {
-									var rl1 = r1._children[0];
-									var rr1 = r1._children[1];
-									var rlh1 = rl1._height;
-									var rrh1 = rr1._height;
-									if(rlh1 > rrh1) {
-										r1._children[1] = node1;
-										node1._parent = r1;
-										node1._childIndex = 1;
-										node1._children[1] = rr1;
-										rr1._parent = node1;
-										rr1._childIndex = 1;
-										var c113 = r1._children[0];
-										var c213 = r1._children[1];
-										r1._aabbMinX = c113._aabbMinX < c213._aabbMinX ? c113._aabbMinX : c213._aabbMinX;
-										r1._aabbMinY = c113._aabbMinY < c213._aabbMinY ? c113._aabbMinY : c213._aabbMinY;
-										r1._aabbMinZ = c113._aabbMinZ < c213._aabbMinZ ? c113._aabbMinZ : c213._aabbMinZ;
-										r1._aabbMaxX = c113._aabbMaxX > c213._aabbMaxX ? c113._aabbMaxX : c213._aabbMaxX;
-										r1._aabbMaxY = c113._aabbMaxY > c213._aabbMaxY ? c113._aabbMaxY : c213._aabbMaxY;
-										r1._aabbMaxZ = c113._aabbMaxZ > c213._aabbMaxZ ? c113._aabbMaxZ : c213._aabbMaxZ;
-										var h113 = r1._children[0]._height;
-										var h213 = r1._children[1]._height;
-										r1._height = (h113 > h213 ? h113 : h213) + 1;
-										var c114 = node1._children[0];
-										var c214 = node1._children[1];
-										node1._aabbMinX = c114._aabbMinX < c214._aabbMinX ? c114._aabbMinX : c214._aabbMinX;
-										node1._aabbMinY = c114._aabbMinY < c214._aabbMinY ? c114._aabbMinY : c214._aabbMinY;
-										node1._aabbMinZ = c114._aabbMinZ < c214._aabbMinZ ? c114._aabbMinZ : c214._aabbMinZ;
-										node1._aabbMaxX = c114._aabbMaxX > c214._aabbMaxX ? c114._aabbMaxX : c214._aabbMaxX;
-										node1._aabbMaxY = c114._aabbMaxY > c214._aabbMaxY ? c114._aabbMaxY : c214._aabbMaxY;
-										node1._aabbMaxZ = c114._aabbMaxZ > c214._aabbMaxZ ? c114._aabbMaxZ : c214._aabbMaxZ;
-										var h114 = node1._children[0]._height;
-										var h214 = node1._children[1]._height;
-										node1._height = (h114 > h214 ? h114 : h214) + 1;
-									} else {
-										r1._children[0] = node1;
-										node1._parent = r1;
-										node1._childIndex = 0;
-										node1._children[1] = rl1;
-										rl1._parent = node1;
-										rl1._childIndex = 1;
-										var c115 = r1._children[0];
-										var c215 = r1._children[1];
-										r1._aabbMinX = c115._aabbMinX < c215._aabbMinX ? c115._aabbMinX : c215._aabbMinX;
-										r1._aabbMinY = c115._aabbMinY < c215._aabbMinY ? c115._aabbMinY : c215._aabbMinY;
-										r1._aabbMinZ = c115._aabbMinZ < c215._aabbMinZ ? c115._aabbMinZ : c215._aabbMinZ;
-										r1._aabbMaxX = c115._aabbMaxX > c215._aabbMaxX ? c115._aabbMaxX : c215._aabbMaxX;
-										r1._aabbMaxY = c115._aabbMaxY > c215._aabbMaxY ? c115._aabbMaxY : c215._aabbMaxY;
-										r1._aabbMaxZ = c115._aabbMaxZ > c215._aabbMaxZ ? c115._aabbMaxZ : c215._aabbMaxZ;
-										var h115 = r1._children[0]._height;
-										var h215 = r1._children[1]._height;
-										r1._height = (h115 > h215 ? h115 : h215) + 1;
-										var c116 = node1._children[0];
-										var c216 = node1._children[1];
-										node1._aabbMinX = c116._aabbMinX < c216._aabbMinX ? c116._aabbMinX : c216._aabbMinX;
-										node1._aabbMinY = c116._aabbMinY < c216._aabbMinY ? c116._aabbMinY : c216._aabbMinY;
-										node1._aabbMinZ = c116._aabbMinZ < c216._aabbMinZ ? c116._aabbMinZ : c216._aabbMinZ;
-										node1._aabbMaxX = c116._aabbMaxX > c216._aabbMaxX ? c116._aabbMaxX : c216._aabbMaxX;
-										node1._aabbMaxY = c116._aabbMaxY > c216._aabbMaxY ? c116._aabbMaxY : c216._aabbMaxY;
-										node1._aabbMaxZ = c116._aabbMaxZ > c216._aabbMaxZ ? c116._aabbMaxZ : c216._aabbMaxZ;
-										var h116 = node1._children[0]._height;
-										var h216 = node1._children[1]._height;
-										node1._height = (h116 > h216 ? h116 : h216) + 1;
-									}
-									if(p3 != null) {
-										p3._children[nodeIndex1] = r1;
-										r1._parent = p3;
-										r1._childIndex = nodeIndex1;
-									} else {
-										_this2._root = r1;
-										r1._parent = null;
-									}
-									node1 = r1;
-								} else {
-									node1 = node1;
-								}
-							}
-						}
-						var h117 = node1._children[0]._height;
-						var h217 = node1._children[1]._height;
-						node1._height = (h117 > h217 ? h117 : h217) + 1;
-						var c117 = node1._children[0];
-						var c217 = node1._children[1];
-						node1._aabbMinX = c117._aabbMinX < c217._aabbMinX ? c117._aabbMinX : c217._aabbMinX;
-						node1._aabbMinY = c117._aabbMinY < c217._aabbMinY ? c117._aabbMinY : c217._aabbMinY;
-						node1._aabbMinZ = c117._aabbMinZ < c217._aabbMinZ ? c117._aabbMinZ : c217._aabbMinZ;
-						node1._aabbMaxX = c117._aabbMaxX > c217._aabbMaxX ? c117._aabbMaxX : c217._aabbMaxX;
-						node1._aabbMaxY = c117._aabbMaxY > c217._aabbMaxY ? c117._aabbMaxY : c217._aabbMaxY;
-						node1._aabbMaxZ = c117._aabbMaxZ > c217._aabbMaxZ ? c117._aabbMaxZ : c217._aabbMaxZ;
-						node1 = node1._parent;
-					}
-				}
-				if(incrementalCollision) {
-					this.collide(this._tree._root,p1._leaf);
-				}
-				p1._moved = false;
-			}
-			this.movedProxies[i1] = null;
-		}
-		if(!incrementalCollision) {
-			this.collide(this._tree._root,this._tree._root);
-		}
-		this.numMovedProxies = 0;
-	}
-	rayCast(begin,end,callback) {
-		if(this._tree._root == null) {
-			return;
-		}
-		var p1;
-		var p1X;
-		var p1Y;
-		var p1Z;
-		var p2;
-		var p2X;
-		var p2Y;
-		var p2Z;
-		var v = begin;
-		p1X = v.x;
-		p1Y = v.y;
-		p1Z = v.z;
-		var v1 = end;
-		p2X = v1.x;
-		p2Y = v1.y;
-		p2Z = v1.z;
-		this.rayCastRecursive(this._tree._root,p1X,p1Y,p1Z,p2X,p2Y,p2Z,callback);
-	}
-	convexCast(convex,begin,translation,callback) {
-		if(this._tree._root == null) {
-			return;
-		}
-		this.convexCastRecursive(this._tree._root,convex,begin,translation,callback);
-	}
-	aabbTest(aabb,callback) {
-		if(this._tree._root == null) {
-			return;
-		}
-		this.aabbTestRecursive(this._tree._root,aabb,callback);
-	}
-	getTreeBalance() {
-		return this._tree._getBalance();
-	}
-}
-oimo.collision.broadphase.bvh.BvhInsertionStrategy = class oimo_collision_broadphase_bvh_BvhInsertionStrategy {
-}
-oimo.collision.broadphase.bvh.BvhNode = class oimo_collision_broadphase_bvh_BvhNode {
-	constructor() {
-		this._next = null;
-		this._prevLeaf = null;
-		this._nextLeaf = null;
-		var this1 = new Array(2);
-		this._children = this1;
-		this._childIndex = 0;
-		this._parent = null;
-		this._height = 0;
-		this._proxy = null;
-		this._aabbMinX = 0;
-		this._aabbMinY = 0;
-		this._aabbMinZ = 0;
-		this._aabbMaxX = 0;
-		this._aabbMaxY = 0;
-		this._aabbMaxZ = 0;
-	}
-}
-oimo.collision.broadphase.bvh.BvhProxy = class oimo_collision_broadphase_bvh_BvhProxy extends oimo.collision.broadphase.Proxy {
-	constructor(userData,id) {
-		super(userData,id);
-		this._leaf = null;
-		this._moved = false;
-	}
-}
-oimo.collision.broadphase.bvh.BvhStrategy = class oimo_collision_broadphase_bvh_BvhStrategy {
-	constructor() {
-		this._insertionStrategy = 0;
-		this._balancingEnabled = false;
-	}
-	_decideInsertion(currentNode,leaf) {
-		switch(this._insertionStrategy) {
-		case 0:
-			var center;
-			var centerX;
-			var centerY;
-			var centerZ;
-			centerX = leaf._aabbMinX + leaf._aabbMaxX;
-			centerY = leaf._aabbMinY + leaf._aabbMaxY;
-			centerZ = leaf._aabbMinZ + leaf._aabbMaxZ;
-			var c1 = currentNode._children[0];
-			var c2 = currentNode._children[1];
-			var diff1;
-			var diff1X;
-			var diff1Y;
-			var diff1Z;
-			var diff2;
-			var diff2X;
-			var diff2Y;
-			var diff2Z;
-			diff1X = c1._aabbMinX + c1._aabbMaxX;
-			diff1Y = c1._aabbMinY + c1._aabbMaxY;
-			diff1Z = c1._aabbMinZ + c1._aabbMaxZ;
-			diff2X = c2._aabbMinX + c2._aabbMaxX;
-			diff2Y = c2._aabbMinY + c2._aabbMaxY;
-			diff2Z = c2._aabbMinZ + c2._aabbMaxZ;
-			diff1X -= centerX;
-			diff1Y -= centerY;
-			diff1Z -= centerZ;
-			diff2X -= centerX;
-			diff2Y -= centerY;
-			diff2Z -= centerZ;
-			var dist1 = diff1X * diff1X + diff1Y * diff1Y + diff1Z * diff1Z;
-			var dist2 = diff2X * diff2X + diff2Y * diff2Y + diff2Z * diff2Z;
-			if(dist1 < dist2) {
-				return 0;
-			} else {
-				return 1;
-			}
-			break;
-		case 1:
-			var c11 = currentNode._children[0];
-			var c21 = currentNode._children[1];
-			var ex = currentNode._aabbMaxX - currentNode._aabbMinX;
-			var ey = currentNode._aabbMaxY - currentNode._aabbMinY;
-			var ez = currentNode._aabbMaxZ - currentNode._aabbMinZ;
-			var oldArea = (ex * (ey + ez) + ey * ez) * 2;
-			var combinedMin;
-			var combinedMinX;
-			var combinedMinY;
-			var combinedMinZ;
-			var combinedMax;
-			var combinedMaxX;
-			var combinedMaxY;
-			var combinedMaxZ;
-			combinedMinX = currentNode._aabbMinX < leaf._aabbMinX ? currentNode._aabbMinX : leaf._aabbMinX;
-			combinedMinY = currentNode._aabbMinY < leaf._aabbMinY ? currentNode._aabbMinY : leaf._aabbMinY;
-			combinedMinZ = currentNode._aabbMinZ < leaf._aabbMinZ ? currentNode._aabbMinZ : leaf._aabbMinZ;
-			combinedMaxX = currentNode._aabbMaxX > leaf._aabbMaxX ? currentNode._aabbMaxX : leaf._aabbMaxX;
-			combinedMaxY = currentNode._aabbMaxY > leaf._aabbMaxY ? currentNode._aabbMaxY : leaf._aabbMaxY;
-			combinedMaxZ = currentNode._aabbMaxZ > leaf._aabbMaxZ ? currentNode._aabbMaxZ : leaf._aabbMaxZ;
-			var ex1 = combinedMaxX - combinedMinX;
-			var ey1 = combinedMaxY - combinedMinY;
-			var ez1 = combinedMaxZ - combinedMinZ;
-			var newArea = (ex1 * (ey1 + ez1) + ey1 * ez1) * 2;
-			var creatingCost = newArea * 2;
-			var incrementalCost = (newArea - oldArea) * 2;
-			var descendingCost1 = incrementalCost;
-			combinedMinX = c11._aabbMinX < leaf._aabbMinX ? c11._aabbMinX : leaf._aabbMinX;
-			combinedMinY = c11._aabbMinY < leaf._aabbMinY ? c11._aabbMinY : leaf._aabbMinY;
-			combinedMinZ = c11._aabbMinZ < leaf._aabbMinZ ? c11._aabbMinZ : leaf._aabbMinZ;
-			combinedMaxX = c11._aabbMaxX > leaf._aabbMaxX ? c11._aabbMaxX : leaf._aabbMaxX;
-			combinedMaxY = c11._aabbMaxY > leaf._aabbMaxY ? c11._aabbMaxY : leaf._aabbMaxY;
-			combinedMaxZ = c11._aabbMaxZ > leaf._aabbMaxZ ? c11._aabbMaxZ : leaf._aabbMaxZ;
-			if(c11._height == 0) {
-				var ex2 = combinedMaxX - combinedMinX;
-				var ey2 = combinedMaxY - combinedMinY;
-				var ez2 = combinedMaxZ - combinedMinZ;
-				descendingCost1 += (ex2 * (ey2 + ez2) + ey2 * ez2) * 2;
-			} else {
-				var ex3 = combinedMaxX - combinedMinX;
-				var ey3 = combinedMaxY - combinedMinY;
-				var ez3 = combinedMaxZ - combinedMinZ;
-				var ex4 = c11._aabbMaxX - c11._aabbMinX;
-				var ey4 = c11._aabbMaxY - c11._aabbMinY;
-				var ez4 = c11._aabbMaxZ - c11._aabbMinZ;
-				descendingCost1 += (ex3 * (ey3 + ez3) + ey3 * ez3) * 2 - (ex4 * (ey4 + ez4) + ey4 * ez4) * 2;
-			}
-			var descendingCost2 = incrementalCost;
-			combinedMinX = c21._aabbMinX < leaf._aabbMinX ? c21._aabbMinX : leaf._aabbMinX;
-			combinedMinY = c21._aabbMinY < leaf._aabbMinY ? c21._aabbMinY : leaf._aabbMinY;
-			combinedMinZ = c21._aabbMinZ < leaf._aabbMinZ ? c21._aabbMinZ : leaf._aabbMinZ;
-			combinedMaxX = c21._aabbMaxX > leaf._aabbMaxX ? c21._aabbMaxX : leaf._aabbMaxX;
-			combinedMaxY = c21._aabbMaxY > leaf._aabbMaxY ? c21._aabbMaxY : leaf._aabbMaxY;
-			combinedMaxZ = c21._aabbMaxZ > leaf._aabbMaxZ ? c21._aabbMaxZ : leaf._aabbMaxZ;
-			if(c21._height == 0) {
-				var ex5 = combinedMaxX - combinedMinX;
-				var ey5 = combinedMaxY - combinedMinY;
-				var ez5 = combinedMaxZ - combinedMinZ;
-				descendingCost2 += (ex5 * (ey5 + ez5) + ey5 * ez5) * 2;
-			} else {
-				var ex6 = combinedMaxX - combinedMinX;
-				var ey6 = combinedMaxY - combinedMinY;
-				var ez6 = combinedMaxZ - combinedMinZ;
-				var ex7 = c21._aabbMaxX - c21._aabbMinX;
-				var ey7 = c21._aabbMaxY - c21._aabbMinY;
-				var ez7 = c21._aabbMaxZ - c21._aabbMinZ;
-				descendingCost2 += (ex6 * (ey6 + ez6) + ey6 * ez6) * 2 - (ex7 * (ey7 + ez7) + ey7 * ez7) * 2;
-			}
-			if(creatingCost < descendingCost1) {
-				if(creatingCost < descendingCost2) {
-					return -1;
-				} else {
-					return 1;
-				}
-			} else if(descendingCost1 < descendingCost2) {
-				return 0;
-			} else {
-				return 1;
-			}
-			break;
-		default:
-			console.log("src/oimo/collision/broadphase/bvh/BvhStrategy.hx:37:","invalid BVH insertion strategy: " + this._insertionStrategy);
-			return -1;
-		}
-	}
-	_splitLeaves(leaves,from,until) {
-		var invN = 1.0 / (until - from);
-		var centerMean;
-		var centerMeanX;
-		var centerMeanY;
-		var centerMeanZ;
-		centerMeanX = 0;
-		centerMeanY = 0;
-		centerMeanZ = 0;
-		var _g = from;
-		var _g1 = until;
-		while(_g < _g1) {
-			var i = _g++;
-			var leaf = leaves[i];
-			leaf._tmpX = leaf._aabbMaxX + leaf._aabbMinX;
-			leaf._tmpY = leaf._aabbMaxY + leaf._aabbMinY;
-			leaf._tmpZ = leaf._aabbMaxZ + leaf._aabbMinZ;
-			centerMeanX += leaf._tmpX;
-			centerMeanY += leaf._tmpY;
-			centerMeanZ += leaf._tmpZ;
-		}
-		centerMeanX *= invN;
-		centerMeanY *= invN;
-		centerMeanZ *= invN;
-		var variance;
-		var varianceX;
-		var varianceY;
-		var varianceZ;
-		varianceX = 0;
-		varianceY = 0;
-		varianceZ = 0;
-		var _g2 = from;
-		var _g3 = until;
-		while(_g2 < _g3) {
-			var i1 = _g2++;
-			var leaf1 = leaves[i1];
-			var diff;
-			var diffX;
-			var diffY;
-			var diffZ;
-			diffX = leaf1._tmpX - centerMeanX;
-			diffY = leaf1._tmpY - centerMeanY;
-			diffZ = leaf1._tmpZ - centerMeanZ;
-			diffX *= diffX;
-			diffY *= diffY;
-			diffZ *= diffZ;
-			varianceX += diffX;
-			varianceY += diffY;
-			varianceZ += diffZ;
-		}
-		var varX = varianceX;
-		var varY = varianceY;
-		var varZ = varianceZ;
-		var l = from;
-		var r = until - 1;
-		if(varX > varY) {
-			if(varX > varZ) {
-				var mean = centerMeanX;
-				while(true) {
-					while(true) {
-						var leaf2 = leaves[l];
-						if(leaf2._tmpX <= mean) {
-							break;
-						}
-						++l;
-					}
-					while(true) {
-						var leaf3 = leaves[r];
-						if(leaf3._tmpX >= mean) {
-							break;
-						}
-						--r;
-					}
-					if(l >= r) {
-						break;
-					}
-					var tmp = leaves[l];
-					leaves[l] = leaves[r];
-					leaves[r] = tmp;
-					++l;
-					--r;
-				}
-			} else {
-				var mean1 = centerMeanZ;
-				while(true) {
-					while(true) {
-						var leaf4 = leaves[l];
-						if(leaf4._tmpZ <= mean1) {
-							break;
-						}
-						++l;
-					}
-					while(true) {
-						var leaf5 = leaves[r];
-						if(leaf5._tmpZ >= mean1) {
-							break;
-						}
-						--r;
-					}
-					if(l >= r) {
-						break;
-					}
-					var tmp1 = leaves[l];
-					leaves[l] = leaves[r];
-					leaves[r] = tmp1;
-					++l;
-					--r;
-				}
-			}
-		} else if(varY > varZ) {
-			var mean2 = centerMeanY;
-			while(true) {
-				while(true) {
-					var leaf6 = leaves[l];
-					if(leaf6._tmpY <= mean2) {
-						break;
-					}
-					++l;
-				}
-				while(true) {
-					var leaf7 = leaves[r];
-					if(leaf7._tmpY >= mean2) {
-						break;
-					}
-					--r;
-				}
-				if(l >= r) {
-					break;
-				}
-				var tmp2 = leaves[l];
-				leaves[l] = leaves[r];
-				leaves[r] = tmp2;
-				++l;
-				--r;
-			}
-		} else {
-			var mean3 = centerMeanZ;
-			while(true) {
-				while(true) {
-					var leaf8 = leaves[l];
-					if(leaf8._tmpZ <= mean3) {
-						break;
-					}
-					++l;
-				}
-				while(true) {
-					var leaf9 = leaves[r];
-					if(leaf9._tmpZ >= mean3) {
-						break;
-					}
-					--r;
-				}
-				if(l >= r) {
-					break;
-				}
-				var tmp3 = leaves[l];
-				leaves[l] = leaves[r];
-				leaves[r] = tmp3;
-				++l;
-				--r;
-			}
-		}
-		return l;
-	}
-}
-oimo.collision.broadphase.bvh.BvhTree = class oimo_collision_broadphase_bvh_BvhTree {
-	constructor() {
-		this._root = null;
-		this._numLeaves = 0;
-		this._strategy = new oimo.collision.broadphase.bvh.BvhStrategy();
-		this._nodePool = null;
-		this.leafList = null;
-		this.leafListLast = null;
-		var this1 = new Array(1024);
-		this.tmp = this1;
-	}
-	_print(root,indent) {
-		if(indent == null) {
-			indent = "";
-		}
-		if(root == null) {
-			return;
-		}
-		if(root._height == 0) {
-			console.log("src/oimo/collision/broadphase/bvh/BvhTree.hx:39:",indent + root._proxy._id);
-		} else {
-			this._print(root._children[0],indent + "  ");
-			var tmp;
-			var size;
-			var sizeX;
-			var sizeY;
-			var sizeZ;
-			sizeX = root._aabbMaxX - root._aabbMinX;
-			sizeY = root._aabbMaxY - root._aabbMinY;
-			sizeZ = root._aabbMaxZ - root._aabbMinZ;
-			var x = sizeX;
-			var y = sizeY;
-			var z = sizeZ;
-			if(x * (y + z) + y * z > 0) {
-				var size1;
-				var sizeX1;
-				var sizeY1;
-				var sizeZ1;
-				sizeX1 = root._aabbMaxX - root._aabbMinX;
-				sizeY1 = root._aabbMaxY - root._aabbMinY;
-				sizeZ1 = root._aabbMaxZ - root._aabbMinZ;
-				var x1 = sizeX1;
-				var y1 = sizeY1;
-				var z1 = sizeZ1;
-				tmp = ((x1 * (y1 + z1) + y1 * z1) * 1000 + 0.5 | 0) / 1000;
-			} else {
-				var size2;
-				var sizeX2;
-				var sizeY2;
-				var sizeZ2;
-				sizeX2 = root._aabbMaxX - root._aabbMinX;
-				sizeY2 = root._aabbMaxY - root._aabbMinY;
-				sizeZ2 = root._aabbMaxZ - root._aabbMinZ;
-				var x2 = sizeX2;
-				var y2 = sizeY2;
-				var z2 = sizeZ2;
-				tmp = ((x2 * (y2 + z2) + y2 * z2) * 1000 - 0.5 | 0) / 1000;
-			}
-			console.log("src/oimo/collision/broadphase/bvh/BvhTree.hx:42:",indent + "#" + root._height + ", " + tmp);
-			this._print(root._children[1],indent + "  ");
-		}
-	}
-	_getBalance() {
-		return this.getBalanceRecursive(this._root);
-	}
-	deleteRecursive(root) {
-		if(root._height == 0) {
-			var prev = root._prevLeaf;
-			var next = root._nextLeaf;
-			if(prev != null) {
-				prev._nextLeaf = next;
-			}
-			if(next != null) {
-				next._prevLeaf = prev;
-			}
-			if(root == this.leafList) {
-				this.leafList = this.leafList._nextLeaf;
-			}
-			if(root == this.leafListLast) {
-				this.leafListLast = this.leafListLast._prevLeaf;
-			}
-			root._nextLeaf = null;
-			root._prevLeaf = null;
-			root._proxy._leaf = null;
-			root._next = null;
-			root._childIndex = 0;
-			root._children[0] = null;
-			root._children[1] = null;
-			root._childIndex = 0;
-			root._parent = null;
-			root._height = 0;
-			root._proxy = null;
-			root._next = this._nodePool;
-			this._nodePool = root;
-			return;
-		}
-		this.deleteRecursive(root._children[0]);
-		this.deleteRecursive(root._children[1]);
-		root._next = null;
-		root._childIndex = 0;
-		root._children[0] = null;
-		root._children[1] = null;
-		root._childIndex = 0;
-		root._parent = null;
-		root._height = 0;
-		root._proxy = null;
-		root._next = this._nodePool;
-		this._nodePool = root;
-	}
-	decomposeRecursive(root) {
-		if(root._height == 0) {
-			root._childIndex = 0;
-			root._parent = null;
-			return;
-		}
-		this.decomposeRecursive(root._children[0]);
-		this.decomposeRecursive(root._children[1]);
-		root._next = null;
-		root._childIndex = 0;
-		root._children[0] = null;
-		root._children[1] = null;
-		root._childIndex = 0;
-		root._parent = null;
-		root._height = 0;
-		root._proxy = null;
-		root._next = this._nodePool;
-		this._nodePool = root;
-	}
-	buildTopDownRecursive(leaves,from,until) {
-		var num = until - from;
-		if(num == 1) {
-			var leaf = leaves[from];
-			var proxy = leaf._proxy;
-			leaf._aabbMinX = proxy._aabbMinX;
-			leaf._aabbMinY = proxy._aabbMinY;
-			leaf._aabbMinZ = proxy._aabbMinZ;
-			leaf._aabbMaxX = proxy._aabbMaxX;
-			leaf._aabbMaxY = proxy._aabbMaxY;
-			leaf._aabbMaxZ = proxy._aabbMaxZ;
-			return leaf;
-		}
-		var splitAt = this._strategy._splitLeaves(leaves,from,until);
-		var child1 = this.buildTopDownRecursive(leaves,from,splitAt);
-		var child2 = this.buildTopDownRecursive(leaves,splitAt,until);
-		var first = this._nodePool;
-		if(first != null) {
-			this._nodePool = first._next;
-			first._next = null;
-		} else {
-			first = new oimo.collision.broadphase.bvh.BvhNode();
-		}
-		var parent = first;
-		parent._children[0] = child1;
-		child1._parent = parent;
-		child1._childIndex = 0;
-		parent._children[1] = child2;
-		child2._parent = parent;
-		child2._childIndex = 1;
-		var c1 = parent._children[0];
-		var c2 = parent._children[1];
-		parent._aabbMinX = c1._aabbMinX < c2._aabbMinX ? c1._aabbMinX : c2._aabbMinX;
-		parent._aabbMinY = c1._aabbMinY < c2._aabbMinY ? c1._aabbMinY : c2._aabbMinY;
-		parent._aabbMinZ = c1._aabbMinZ < c2._aabbMinZ ? c1._aabbMinZ : c2._aabbMinZ;
-		parent._aabbMaxX = c1._aabbMaxX > c2._aabbMaxX ? c1._aabbMaxX : c2._aabbMaxX;
-		parent._aabbMaxY = c1._aabbMaxY > c2._aabbMaxY ? c1._aabbMaxY : c2._aabbMaxY;
-		parent._aabbMaxZ = c1._aabbMaxZ > c2._aabbMaxZ ? c1._aabbMaxZ : c2._aabbMaxZ;
-		var h1 = parent._children[0]._height;
-		var h2 = parent._children[1]._height;
-		parent._height = (h1 > h2 ? h1 : h2) + 1;
-		return parent;
-	}
-	getBalanceRecursive(root) {
-		if(root == null || root._height == 0) {
-			return 0;
-		}
-		var balance = root._children[0]._height - root._children[1]._height;
-		if(balance < 0) {
-			balance = -balance;
-		}
-		return balance + this.getBalanceRecursive(root._children[0]) + this.getBalanceRecursive(root._children[1]);
-	}
-}
-oimo.collision.geometry.Aabb = class oimo_collision_geometry_Aabb {
-	constructor() {
-		this._minX = 0;
-		this._minY = 0;
-		this._minZ = 0;
-		this._maxX = 0;
-		this._maxY = 0;
-		this._maxZ = 0;
-	}
-	init(min,max) {
-		var v = min;
-		this._minX = v.x;
-		this._minY = v.y;
-		this._minZ = v.z;
-		var v1 = max;
-		this._maxX = v1.x;
-		this._maxY = v1.y;
-		this._maxZ = v1.z;
-		return this;
-	}
-	getMin() {
-		var min = new oimo.common.Vec3();
-		var v = min;
-		v.x = this._minX;
-		v.y = this._minY;
-		v.z = this._minZ;
-		return min;
-	}
-	getMinTo(min) {
-		var v = min;
-		v.x = this._minX;
-		v.y = this._minY;
-		v.z = this._minZ;
-	}
-	setMin(min) {
-		var v = min;
-		this._minX = v.x;
-		this._minY = v.y;
-		this._minZ = v.z;
-		return this;
-	}
-	getMax() {
-		var max = new oimo.common.Vec3();
-		var v = max;
-		v.x = this._maxX;
-		v.y = this._maxY;
-		v.z = this._maxZ;
-		return max;
-	}
-	getMaxTo(max) {
-		var v = max;
-		v.x = this._maxX;
-		v.y = this._maxY;
-		v.z = this._maxZ;
-	}
-	setMax(max) {
-		var v = max;
-		this._maxX = v.x;
-		this._maxY = v.y;
-		this._maxZ = v.z;
-		return this;
-	}
-	getCenter() {
-		var v = new oimo.common.Vec3();
-		var c;
-		var cX;
-		var cY;
-		var cZ;
-		cX = this._minX + this._maxX;
-		cY = this._minY + this._maxY;
-		cZ = this._minZ + this._maxZ;
-		cX *= 0.5;
-		cY *= 0.5;
-		cZ *= 0.5;
-		var v1 = v;
-		v1.x = cX;
-		v1.y = cY;
-		v1.z = cZ;
-		return v;
-	}
-	getCenterTo(center) {
-		var c;
-		var cX;
-		var cY;
-		var cZ;
-		cX = this._minX + this._maxX;
-		cY = this._minY + this._maxY;
-		cZ = this._minZ + this._maxZ;
-		cX *= 0.5;
-		cY *= 0.5;
-		cZ *= 0.5;
-		var v = center;
-		v.x = cX;
-		v.y = cY;
-		v.z = cZ;
-	}
-	getExtents() {
-		var v = new oimo.common.Vec3();
-		var c;
-		var cX;
-		var cY;
-		var cZ;
-		cX = this._maxX - this._minX;
-		cY = this._maxY - this._minY;
-		cZ = this._maxZ - this._minZ;
-		cX *= 0.5;
-		cY *= 0.5;
-		cZ *= 0.5;
-		var v1 = v;
-		v1.x = cX;
-		v1.y = cY;
-		v1.z = cZ;
-		return v;
-	}
-	getExtentsTo(halfExtents) {
-		var c;
-		var cX;
-		var cY;
-		var cZ;
-		cX = this._maxX - this._minX;
-		cY = this._maxY - this._minY;
-		cZ = this._maxZ - this._minZ;
-		cX *= 0.5;
-		cY *= 0.5;
-		cZ *= 0.5;
-		var v = halfExtents;
-		v.x = cX;
-		v.y = cY;
-		v.z = cZ;
-	}
-	combine(other) {
-		this._minX = this._minX < other._minX ? this._minX : other._minX;
-		this._minY = this._minY < other._minY ? this._minY : other._minY;
-		this._minZ = this._minZ < other._minZ ? this._minZ : other._minZ;
-		this._maxX = this._maxX > other._maxX ? this._maxX : other._maxX;
-		this._maxY = this._maxY > other._maxY ? this._maxY : other._maxY;
-		this._maxZ = this._maxZ > other._maxZ ? this._maxZ : other._maxZ;
-		return this;
-	}
-	combined(other) {
-		var aabb = new oimo.collision.geometry.Aabb();
-		aabb._minX = this._minX < other._minX ? this._minX : other._minX;
-		aabb._minY = this._minY < other._minY ? this._minY : other._minY;
-		aabb._minZ = this._minZ < other._minZ ? this._minZ : other._minZ;
-		aabb._maxX = this._maxX > other._maxX ? this._maxX : other._maxX;
-		aabb._maxY = this._maxY > other._maxY ? this._maxY : other._maxY;
-		aabb._maxZ = this._maxZ > other._maxZ ? this._maxZ : other._maxZ;
-		return aabb;
-	}
-	overlap(other) {
-		if(this._minX < other._maxX && this._maxX > other._minX && this._minY < other._maxY && this._maxY > other._minY && this._minZ < other._maxZ) {
-			return this._maxZ > other._minZ;
-		} else {
-			return false;
-		}
-	}
-	getIntersection(other) {
-		var aabb = new oimo.collision.geometry.Aabb();
-		aabb._minX = this._minX > other._minX ? this._minX : other._minX;
-		aabb._minY = this._minY > other._minY ? this._minY : other._minY;
-		aabb._minZ = this._minZ > other._minZ ? this._minZ : other._minZ;
-		aabb._maxX = this._maxX < other._maxX ? this._maxX : other._maxX;
-		aabb._maxY = this._maxY < other._maxY ? this._maxY : other._maxY;
-		aabb._maxZ = this._maxZ < other._maxZ ? this._maxZ : other._maxZ;
-		return aabb;
-	}
-	getIntersectionTo(other,intersection) {
-		intersection._minX = this._minX > other._minX ? this._minX : other._minX;
-		intersection._minY = this._minY > other._minY ? this._minY : other._minY;
-		intersection._minZ = this._minZ > other._minZ ? this._minZ : other._minZ;
-		intersection._maxX = this._maxX < other._maxX ? this._maxX : other._maxX;
-		intersection._maxY = this._maxY < other._maxY ? this._maxY : other._maxY;
-		intersection._maxZ = this._maxZ < other._maxZ ? this._maxZ : other._maxZ;
-	}
-	copyFrom(aabb) {
-		this._minX = aabb._minX;
-		this._minY = aabb._minY;
-		this._minZ = aabb._minZ;
-		this._maxX = aabb._maxX;
-		this._maxY = aabb._maxY;
-		this._maxZ = aabb._maxZ;
-		return this;
-	}
-	clone() {
-		var aabb = new oimo.collision.geometry.Aabb();
-		aabb._minX = this._minX;
-		aabb._minY = this._minY;
-		aabb._minZ = this._minZ;
-		aabb._maxX = this._maxX;
-		aabb._maxY = this._maxY;
-		aabb._maxZ = this._maxZ;
-		return aabb;
-	}
-}
-oimo.collision.geometry.BoxGeometry = class oimo_collision_geometry_BoxGeometry extends oimo.collision.geometry.ConvexGeometry {
-	constructor(halfExtents) {
-		super(1);
-		var v = halfExtents;
-		this._halfExtentsX = v.x;
-		this._halfExtentsY = v.y;
-		this._halfExtentsZ = v.z;
-		this._halfAxisXX = halfExtents.x;
-		this._halfAxisXY = 0;
-		this._halfAxisXZ = 0;
-		this._halfAxisYX = 0;
-		this._halfAxisYY = halfExtents.y;
-		this._halfAxisYZ = 0;
-		this._halfAxisZX = 0;
-		this._halfAxisZY = 0;
-		this._halfAxisZZ = halfExtents.z;
-		this._updateMass();
-		var minHalfExtents = halfExtents.x < halfExtents.y ? halfExtents.z < halfExtents.x ? halfExtents.z : halfExtents.x : halfExtents.z < halfExtents.y ? halfExtents.z : halfExtents.y;
-		if(this._gjkMargin > minHalfExtents * 0.2) {
-			this._gjkMargin = minHalfExtents * 0.2;
-		}
-	}
-	getHalfExtents() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._halfExtentsX;
-		v1.y = this._halfExtentsY;
-		v1.z = this._halfExtentsZ;
-		return v;
-	}
-	getHalfExtentsTo(halfExtents) {
-		var v = halfExtents;
-		v.x = this._halfExtentsX;
-		v.y = this._halfExtentsY;
-		v.z = this._halfExtentsZ;
-	}
-	_updateMass() {
-		this._volume = 8 * (this._halfExtentsX * this._halfExtentsY * this._halfExtentsZ);
-		var sq;
-		var sqX;
-		var sqY;
-		var sqZ;
-		sqX = this._halfExtentsX * this._halfExtentsX;
-		sqY = this._halfExtentsY * this._halfExtentsY;
-		sqZ = this._halfExtentsZ * this._halfExtentsZ;
-		this._inertiaCoeff00 = 0.333333333333333315 * (sqY + sqZ);
-		this._inertiaCoeff01 = 0;
-		this._inertiaCoeff02 = 0;
-		this._inertiaCoeff10 = 0;
-		this._inertiaCoeff11 = 0.333333333333333315 * (sqZ + sqX);
-		this._inertiaCoeff12 = 0;
-		this._inertiaCoeff20 = 0;
-		this._inertiaCoeff21 = 0;
-		this._inertiaCoeff22 = 0.333333333333333315 * (sqX + sqY);
-	}
-	_computeAabb(aabb,tf) {
-		var tfx;
-		var tfxX;
-		var tfxY;
-		var tfxZ;
-		var tfy;
-		var tfyX;
-		var tfyY;
-		var tfyZ;
-		var tfz;
-		var tfzX;
-		var tfzY;
-		var tfzZ;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = tf._rotation00 * this._halfAxisXX + tf._rotation01 * this._halfAxisXY + tf._rotation02 * this._halfAxisXZ;
-		__tmp__Y = tf._rotation10 * this._halfAxisXX + tf._rotation11 * this._halfAxisXY + tf._rotation12 * this._halfAxisXZ;
-		__tmp__Z = tf._rotation20 * this._halfAxisXX + tf._rotation21 * this._halfAxisXY + tf._rotation22 * this._halfAxisXZ;
-		tfxX = __tmp__X;
-		tfxY = __tmp__Y;
-		tfxZ = __tmp__Z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = tf._rotation00 * this._halfAxisYX + tf._rotation01 * this._halfAxisYY + tf._rotation02 * this._halfAxisYZ;
-		__tmp__Y1 = tf._rotation10 * this._halfAxisYX + tf._rotation11 * this._halfAxisYY + tf._rotation12 * this._halfAxisYZ;
-		__tmp__Z1 = tf._rotation20 * this._halfAxisYX + tf._rotation21 * this._halfAxisYY + tf._rotation22 * this._halfAxisYZ;
-		tfyX = __tmp__X1;
-		tfyY = __tmp__Y1;
-		tfyZ = __tmp__Z1;
-		var __tmp__X2;
-		var __tmp__Y2;
-		var __tmp__Z2;
-		__tmp__X2 = tf._rotation00 * this._halfAxisZX + tf._rotation01 * this._halfAxisZY + tf._rotation02 * this._halfAxisZZ;
-		__tmp__Y2 = tf._rotation10 * this._halfAxisZX + tf._rotation11 * this._halfAxisZY + tf._rotation12 * this._halfAxisZZ;
-		__tmp__Z2 = tf._rotation20 * this._halfAxisZX + tf._rotation21 * this._halfAxisZY + tf._rotation22 * this._halfAxisZZ;
-		tfzX = __tmp__X2;
-		tfzY = __tmp__Y2;
-		tfzZ = __tmp__Z2;
-		tfxX = tfxX < 0 ? -tfxX : tfxX;
-		tfxY = tfxY < 0 ? -tfxY : tfxY;
-		tfxZ = tfxZ < 0 ? -tfxZ : tfxZ;
-		tfyX = tfyX < 0 ? -tfyX : tfyX;
-		tfyY = tfyY < 0 ? -tfyY : tfyY;
-		tfyZ = tfyZ < 0 ? -tfyZ : tfyZ;
-		tfzX = tfzX < 0 ? -tfzX : tfzX;
-		tfzY = tfzY < 0 ? -tfzY : tfzY;
-		tfzZ = tfzZ < 0 ? -tfzZ : tfzZ;
-		var tfs;
-		var tfsX;
-		var tfsY;
-		var tfsZ;
-		tfsX = tfxX + tfyX;
-		tfsY = tfxY + tfyY;
-		tfsZ = tfxZ + tfyZ;
-		tfsX += tfzX;
-		tfsY += tfzY;
-		tfsZ += tfzZ;
-		aabb._minX = tf._positionX - tfsX;
-		aabb._minY = tf._positionY - tfsY;
-		aabb._minZ = tf._positionZ - tfsZ;
-		aabb._maxX = tf._positionX + tfsX;
-		aabb._maxY = tf._positionY + tfsY;
-		aabb._maxZ = tf._positionZ + tfsZ;
-	}
-	computeLocalSupportingVertex(dir,out) {
-		var gjkMargins;
-		var gjkMarginsX;
-		var gjkMarginsY;
-		var gjkMarginsZ;
-		var coreExtents;
-		var coreExtentsX;
-		var coreExtentsY;
-		var coreExtentsZ;
-		gjkMarginsX = this._gjkMargin;
-		gjkMarginsY = this._gjkMargin;
-		gjkMarginsZ = this._gjkMargin;
-		gjkMarginsX = gjkMarginsX < this._halfExtentsX ? gjkMarginsX : this._halfExtentsX;
-		gjkMarginsY = gjkMarginsY < this._halfExtentsY ? gjkMarginsY : this._halfExtentsY;
-		gjkMarginsZ = gjkMarginsZ < this._halfExtentsZ ? gjkMarginsZ : this._halfExtentsZ;
-		coreExtentsX = this._halfExtentsX - gjkMarginsX;
-		coreExtentsY = this._halfExtentsY - gjkMarginsY;
-		coreExtentsZ = this._halfExtentsZ - gjkMarginsZ;
-		out.x = dir.x > 0 ? coreExtentsX : -coreExtentsX;
-		out.y = dir.y > 0 ? coreExtentsY : -coreExtentsY;
-		out.z = dir.z > 0 ? coreExtentsZ : -coreExtentsZ;
-	}
-	_rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
-		var p1x = beginX;
-		var p1y = beginY;
-		var p1z = beginZ;
-		var p2x = endX;
-		var p2y = endY;
-		var p2z = endZ;
-		var halfW = this._halfExtentsX;
-		var halfH = this._halfExtentsY;
-		var halfD = this._halfExtentsZ;
-		var dx = p2x - p1x;
-		var dy = p2y - p1y;
-		var dz = p2z - p1z;
-		var tminx = 0;
-		var tminy = 0;
-		var tminz = 0;
-		var tmaxx = 1;
-		var tmaxy = 1;
-		var tmaxz = 1;
-		if(dx > -1e-6 && dx < 1e-6) {
-			if(p1x <= -halfW || p1x >= halfW) {
-				return false;
-			}
-		} else {
-			var invDx = 1 / dx;
-			var t1 = (-halfW - p1x) * invDx;
-			var t2 = (halfW - p1x) * invDx;
-			if(t1 > t2) {
-				var tmp = t1;
-				t1 = t2;
-				t2 = tmp;
-			}
-			if(t1 > 0) {
-				tminx = t1;
-			}
-			if(t2 < 1) {
-				tmaxx = t2;
-			}
-		}
-		if(dy > -1e-6 && dy < 1e-6) {
-			if(p1y <= -halfH || p1y >= halfH) {
-				return false;
-			}
-		} else {
-			var invDy = 1 / dy;
-			var t11 = (-halfH - p1y) * invDy;
-			var t21 = (halfH - p1y) * invDy;
-			if(t11 > t21) {
-				var tmp1 = t11;
-				t11 = t21;
-				t21 = tmp1;
-			}
-			if(t11 > 0) {
-				tminy = t11;
-			}
-			if(t21 < 1) {
-				tmaxy = t21;
-			}
-		}
-		if(dz > -1e-6 && dz < 1e-6) {
-			if(p1z <= -halfD || p1z >= halfD) {
-				return false;
-			}
-		} else {
-			var invDz = 1 / dz;
-			var t12 = (-halfD - p1z) * invDz;
-			var t22 = (halfD - p1z) * invDz;
-			if(t12 > t22) {
-				var tmp2 = t12;
-				t12 = t22;
-				t22 = tmp2;
-			}
-			if(t12 > 0) {
-				tminz = t12;
-			}
-			if(t22 < 1) {
-				tmaxz = t22;
-			}
-		}
-		if(tminx >= 1 || tminy >= 1 || tminz >= 1 || tmaxx <= 0 || tmaxy <= 0 || tmaxz <= 0) {
-			return false;
-		}
-		var min = tminx;
-		var max = tmaxx;
-		var hitDirection = 0;
-		if(tminy > min) {
-			min = tminy;
-			hitDirection = 1;
-		}
-		if(tminz > min) {
-			min = tminz;
-			hitDirection = 2;
-		}
-		if(tmaxy < max) {
-			max = tmaxy;
-		}
-		if(tmaxz < max) {
-			max = tmaxz;
-		}
-		if(min > max) {
-			return false;
-		}
-		if(min == 0) {
-			return false;
-		}
-		switch(hitDirection) {
-		case 0:
-			hit.normal.init(dx > 0 ? -1 : 1,0,0);
-			break;
-		case 1:
-			hit.normal.init(0,dy > 0 ? -1 : 1,0);
-			break;
-		case 2:
-			hit.normal.init(0,0,dz > 0 ? -1 : 1);
-			break;
-		}
-		hit.position.init(p1x + min * dx,p1y + min * dy,p1z + min * dz);
-		hit.fraction = min;
-		return true;
-	}
-}
-oimo.collision.geometry.CapsuleGeometry = class oimo_collision_geometry_CapsuleGeometry extends oimo.collision.geometry.ConvexGeometry {
-	constructor(radius,halfHeight) {
-		super(4);
-		this._radius = radius;
-		this._halfHeight = halfHeight;
-		this._gjkMargin = this._radius;
-		this._updateMass();
-	}
-	getRadius() {
-		return this._radius;
-	}
-	getHalfHeight() {
-		return this._halfHeight;
-	}
-	_updateMass() {
-		var r2 = this._radius * this._radius;
-		var hh2 = this._halfHeight * this._halfHeight;
-		var cylinderVolume = 6.28318530717958 * r2 * this._halfHeight;
-		var sphereVolume = 3.14159265358979 * r2 * this._radius * 4 / 3;
-		this._volume = cylinderVolume + sphereVolume;
-		var invVolume = this._volume == 0 ? 0 : 1 / this._volume;
-		var inertiaY = invVolume * (cylinderVolume * r2 * 0.5 + sphereVolume * r2 * 0.4);
-		var inertiaXZ = invVolume * (cylinderVolume * (r2 * 0.25 + hh2 / 3) + sphereVolume * (r2 * 0.4 + this._halfHeight * this._radius * 0.75 + hh2));
-		this._inertiaCoeff00 = inertiaXZ;
-		this._inertiaCoeff01 = 0;
-		this._inertiaCoeff02 = 0;
-		this._inertiaCoeff10 = 0;
-		this._inertiaCoeff11 = inertiaY;
-		this._inertiaCoeff12 = 0;
-		this._inertiaCoeff20 = 0;
-		this._inertiaCoeff21 = 0;
-		this._inertiaCoeff22 = inertiaXZ;
-	}
-	_computeAabb(aabb,tf) {
-		var radVec;
-		var radVecX;
-		var radVecY;
-		var radVecZ;
-		radVecX = this._radius;
-		radVecY = this._radius;
-		radVecZ = this._radius;
-		var axis;
-		var axisX;
-		var axisY;
-		var axisZ;
-		axisX = tf._rotation01;
-		axisY = tf._rotation11;
-		axisZ = tf._rotation21;
-		axisX = axisX < 0 ? -axisX : axisX;
-		axisY = axisY < 0 ? -axisY : axisY;
-		axisZ = axisZ < 0 ? -axisZ : axisZ;
-		axisX *= this._halfHeight;
-		axisY *= this._halfHeight;
-		axisZ *= this._halfHeight;
-		radVecX += axisX;
-		radVecY += axisY;
-		radVecZ += axisZ;
-		aabb._minX = tf._positionX - radVecX;
-		aabb._minY = tf._positionY - radVecY;
-		aabb._minZ = tf._positionZ - radVecZ;
-		aabb._maxX = tf._positionX + radVecX;
-		aabb._maxY = tf._positionY + radVecY;
-		aabb._maxZ = tf._positionZ + radVecZ;
-	}
-	computeLocalSupportingVertex(dir,out) {
-		if(dir.y > 0) {
-			out.init(0,this._halfHeight,0);
-		} else {
-			out.init(0,-this._halfHeight,0);
-		}
-	}
-	_rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
-		var p1x = beginX;
-		var p1y = beginY;
-		var p1z = beginZ;
-		var p2x = endX;
-		var p2y = endY;
-		var p2z = endZ;
-		var halfH = this._halfHeight;
-		var dx = p2x - p1x;
-		var dy = p2y - p1y;
-		var dz = p2z - p1z;
-		var tminxz = 0;
-		var tmaxxz = 1;
-		var a = dx * dx + dz * dz;
-		var b = p1x * dx + p1z * dz;
-		var c = p1x * p1x + p1z * p1z - this._radius * this._radius;
-		var D = b * b - a * c;
-		if(D < 0) {
-			return false;
-		}
-		var t;
-		if(a > 0) {
-			var sqrtD = Math.sqrt(D);
-			tminxz = (-b - sqrtD) / a;
-			tmaxxz = (-b + sqrtD) / a;
-			if(tminxz >= 1 || tmaxxz <= 0) {
-				return false;
-			}
-		} else {
-			if(c >= 0) {
-				return false;
-			}
-			tminxz = 0;
-			tmaxxz = 1;
-		}
-		var crossY = p1y + dy * tminxz;
-		var min;
-		if(crossY > -halfH && crossY < halfH) {
-			if(tminxz > 0) {
-				min = tminxz;
-				var _this = hit.normal.init(p1x + dx * min,0,p1z + dz * min);
-				var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
-				if(invLen > 0) {
-					invLen = 1 / invLen;
-				}
-				var tx = _this.x * invLen;
-				var ty = _this.y * invLen;
-				var tz = _this.z * invLen;
-				_this.x = tx;
-				_this.y = ty;
-				_this.z = tz;
-				hit.position.init(p1x + min * dx,crossY,p1z + min * dz);
-				hit.fraction = min;
-				return true;
-			}
-			return false;
-		}
-		var sphereY = crossY < 0 ? -halfH : halfH;
-		var spherePos;
-		var spherePosX;
-		var spherePosY;
-		var spherePosZ;
-		var sphereToBegin;
-		var sphereToBeginX;
-		var sphereToBeginY;
-		var sphereToBeginZ;
-		spherePosX = 0;
-		spherePosY = sphereY;
-		spherePosZ = 0;
-		sphereToBeginX = beginX - spherePosX;
-		sphereToBeginY = beginY - spherePosY;
-		sphereToBeginZ = beginZ - spherePosZ;
-		var d;
-		var dX;
-		var dY;
-		var dZ;
-		dX = endX - beginX;
-		dY = endY - beginY;
-		dZ = endZ - beginZ;
-		a = dX * dX + dY * dY + dZ * dZ;
-		b = sphereToBeginX * dX + sphereToBeginY * dY + sphereToBeginZ * dZ;
-		c = sphereToBeginX * sphereToBeginX + sphereToBeginY * sphereToBeginY + sphereToBeginZ * sphereToBeginZ - this._radius * this._radius;
-		D = b * b - a * c;
-		if(D < 0) {
-			return false;
-		}
-		var t1 = (-b - Math.sqrt(D)) / a;
-		if(t1 < 0 || t1 > 1) {
-			return false;
-		}
-		var hitPos;
-		var hitPosX;
-		var hitPosY;
-		var hitPosZ;
-		var hitNormal;
-		var hitNormalX;
-		var hitNormalY;
-		var hitNormalZ;
-		hitPosX = sphereToBeginX + dX * t1;
-		hitPosY = sphereToBeginY + dY * t1;
-		hitPosZ = sphereToBeginZ + dZ * t1;
-		var l = hitPosX * hitPosX + hitPosY * hitPosY + hitPosZ * hitPosZ;
-		if(l > 0) {
-			l = 1 / Math.sqrt(l);
-		}
-		hitNormalX = hitPosX * l;
-		hitNormalY = hitPosY * l;
-		hitNormalZ = hitPosZ * l;
-		hitPosX += spherePosX;
-		hitPosY += spherePosY;
-		hitPosZ += spherePosZ;
-		var v = hit.position;
-		v.x = hitPosX;
-		v.y = hitPosY;
-		v.z = hitPosZ;
-		var v1 = hit.normal;
-		v1.x = hitNormalX;
-		v1.y = hitNormalY;
-		v1.z = hitNormalZ;
-		hit.fraction = t1;
-		return true;
-	}
-}
-oimo.collision.geometry.ConeGeometry = class oimo_collision_geometry_ConeGeometry extends oimo.collision.geometry.ConvexGeometry {
-	constructor(radius,halfHeight) {
-		super(3);
-		this._radius = radius;
-		this._halfHeight = halfHeight;
-		this.sinTheta = radius / Math.sqrt(radius * radius + 4 * halfHeight * halfHeight);
-		this.cosTheta = 2 * halfHeight / Math.sqrt(radius * radius + 4 * halfHeight * halfHeight);
-		this._updateMass();
-	}
-	getRadius() {
-		return this._radius;
-	}
-	getHalfHeight() {
-		return this._halfHeight;
-	}
-	_updateMass() {
-		var r2 = this._radius * this._radius;
-		var h2 = this._halfHeight * this._halfHeight * 4;
-		this._volume = 3.14159265358979 * r2 * this._halfHeight * 2 / 3;
-		this._inertiaCoeff00 = 0.05 * (3 * r2 + 2 * h2);
-		this._inertiaCoeff01 = 0;
-		this._inertiaCoeff02 = 0;
-		this._inertiaCoeff10 = 0;
-		this._inertiaCoeff11 = 0.3 * r2;
-		this._inertiaCoeff12 = 0;
-		this._inertiaCoeff20 = 0;
-		this._inertiaCoeff21 = 0;
-		this._inertiaCoeff22 = 0.05 * (3 * r2 + 2 * h2);
-	}
-	_computeAabb(aabb,tf) {
-		var axis;
-		var axisX;
-		var axisY;
-		var axisZ;
-		var axis2;
-		var axis2X;
-		var axis2Y;
-		var axis2Z;
-		var eh;
-		var ehX;
-		var ehY;
-		var ehZ;
-		var er;
-		var erX;
-		var erY;
-		var erZ;
-		axisX = tf._rotation01;
-		axisY = tf._rotation11;
-		axisZ = tf._rotation21;
-		axis2X = axisX * axisX;
-		axis2Y = axisY * axisY;
-		axis2Z = axisZ * axisZ;
-		var axis2x = axis2X;
-		var axis2y = axis2Y;
-		var axis2z = axis2Z;
-		erX = Math.sqrt(1 - axis2x);
-		erY = Math.sqrt(1 - axis2y);
-		erZ = Math.sqrt(1 - axis2z);
-		erX *= this._radius;
-		erY *= this._radius;
-		erZ *= this._radius;
-		ehX = axisX * this._halfHeight;
-		ehY = axisY * this._halfHeight;
-		ehZ = axisZ * this._halfHeight;
-		var rmin;
-		var rminX;
-		var rminY;
-		var rminZ;
-		var rmax;
-		var rmaxX;
-		var rmaxY;
-		var rmaxZ;
-		rminX = -ehX;
-		rminY = -ehY;
-		rminZ = -ehZ;
-		rminX -= erX;
-		rminY -= erY;
-		rminZ -= erZ;
-		rmaxX = -ehX;
-		rmaxY = -ehY;
-		rmaxZ = -ehZ;
-		rmaxX += erX;
-		rmaxY += erY;
-		rmaxZ += erZ;
-		var max;
-		var maxX;
-		var maxY;
-		var maxZ;
-		var min;
-		var minX;
-		var minY;
-		var minZ;
-		maxX = rminX > rmaxX ? rminX : rmaxX;
-		maxY = rminY > rmaxY ? rminY : rmaxY;
-		maxZ = rminZ > rmaxZ ? rminZ : rmaxZ;
-		maxX = maxX > ehX ? maxX : ehX;
-		maxY = maxY > ehY ? maxY : ehY;
-		maxZ = maxZ > ehZ ? maxZ : ehZ;
-		minX = rminX < rmaxX ? rminX : rmaxX;
-		minY = rminY < rmaxY ? rminY : rmaxY;
-		minZ = rminZ < rmaxZ ? rminZ : rmaxZ;
-		minX = minX < ehX ? minX : ehX;
-		minY = minY < ehY ? minY : ehY;
-		minZ = minZ < ehZ ? minZ : ehZ;
-		aabb._minX = tf._positionX + minX;
-		aabb._minY = tf._positionY + minY;
-		aabb._minZ = tf._positionZ + minZ;
-		aabb._maxX = tf._positionX + maxX;
-		aabb._maxY = tf._positionY + maxY;
-		aabb._maxZ = tf._positionZ + maxZ;
-	}
-	computeLocalSupportingVertex(dir,out) {
-		var dx = dir.x;
-		var dy = dir.y;
-		var dz = dir.z;
-		if(dy > 0 && dy * dy > this.sinTheta * this.sinTheta * (dx * dx + dy * dy + dz * dz)) {
-			out.init(0,this._halfHeight - this._gjkMargin / this.sinTheta,0);
-			if(out.y < 0) {
-				out.y = 0;
-			}
-			return;
-		}
-		var rx = dir.x;
-		var rz = dir.z;
-		var len = rx * rx + rz * rz;
-		var height = 2 * this._halfHeight;
-		var coreRadius = (height - this._gjkMargin) / height * this._radius - this._gjkMargin / this.cosTheta;
-		if(coreRadius < 0) {
-			coreRadius = 0;
-		}
-		var invLen = len > 0 ? coreRadius / Math.sqrt(len) : 0;
-		var coreHalfHeight = this._halfHeight - this._gjkMargin;
-		if(coreHalfHeight < 0) {
-			coreHalfHeight = 0;
-		}
-		out.x = rx * invLen;
-		out.y = -coreHalfHeight;
-		out.z = rz * invLen;
-	}
-	_rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
-		var p1x = beginX;
-		var p1y = beginY;
-		var p1z = beginZ;
-		var p2x = endX;
-		var p2y = endY;
-		var p2z = endZ;
-		var halfH = this._halfHeight;
-		var dx = p2x - p1x;
-		var dy = p2y - p1y;
-		var dz = p2z - p1z;
-		var tminy = 0;
-		var tmaxy = 1;
-		if(dy > -1e-6 && dy < 1e-6) {
-			if(p1y <= -halfH || p1y >= halfH) {
-				return false;
-			}
-		} else {
-			var invDy = 1 / dy;
-			var t1 = (-halfH - p1y) * invDy;
-			var t2 = (halfH - p1y) * invDy;
-			if(t1 > t2) {
-				var tmp = t1;
-				t1 = t2;
-				t2 = tmp;
-			}
-			if(t1 > 0) {
-				tminy = t1;
-			}
-			if(t2 < 1) {
-				tmaxy = t2;
-			}
-		}
-		if(tminy >= 1 || tmaxy <= 0) {
-			return false;
-		}
-		var tminxz = 0;
-		var tmaxxz = 0;
-		p1y -= halfH;
-		var cos2 = this.cosTheta * this.cosTheta;
-		var a = cos2 * (dx * dx + dy * dy + dz * dz) - dy * dy;
-		var b = cos2 * (p1x * dx + p1y * dy + p1z * dz) - p1y * dy;
-		var c = cos2 * (p1x * p1x + p1y * p1y + p1z * p1z) - p1y * p1y;
-		var D = b * b - a * c;
-		if(a != 0) {
-			if(D < 0) {
-				return false;
-			}
-			var sqrtD = Math.sqrt(D);
-			if(a < 0) {
-				if(dy > 0) {
-					tminxz = 0;
-					tmaxxz = (-b + sqrtD) / a;
-					if(tmaxxz <= 0) {
-						return false;
-					}
-				} else {
-					tminxz = (-b - sqrtD) / a;
-					tmaxxz = 1;
-					if(tminxz >= 1) {
-						return false;
-					}
-				}
-			} else {
-				tminxz = (-b - sqrtD) / a;
-				tmaxxz = (-b + sqrtD) / a;
-				if(tminxz >= 1 || tmaxxz <= 0) {
-					return false;
-				}
-			}
-		} else {
-			var t = -c / (2 * b);
-			if(b > 0) {
-				tminxz = 0;
-				tmaxxz = t;
-				if(t <= 0) {
-					return false;
-				}
-			} else {
-				tminxz = t;
-				tmaxxz = 1;
-				if(t >= 1) {
-					return false;
-				}
-			}
-		}
-		p1y += halfH;
-		var min;
-		if(tmaxxz <= tminy || tmaxy <= tminxz) {
-			return false;
-		}
-		if(tminxz < tminy) {
-			min = tminy;
-			if(min == 0) {
-				return false;
-			}
-			hit.normal.init(0,dy > 0 ? -1 : 1,0);
-		} else {
-			min = tminxz;
-			if(min == 0) {
-				return false;
-			}
-			var _this = hit.normal.init(p1x + dx * min,0,p1z + dz * min);
-			var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
-			if(invLen > 0) {
-				invLen = 1 / invLen;
-			}
-			var tx = _this.x * invLen;
-			var ty = _this.y * invLen;
-			var tz = _this.z * invLen;
-			_this.x = tx;
-			_this.y = ty;
-			_this.z = tz;
-			var _this1 = _this;
-			var s = this.cosTheta;
-			var tx1 = _this1.x * s;
-			var ty1 = _this1.y * s;
-			var tz1 = _this1.z * s;
-			_this1.x = tx1;
-			_this1.y = ty1;
-			_this1.z = tz1;
-			hit.normal.y += this.sinTheta;
-		}
-		hit.position.init(p1x + min * dx,p1y + min * dy,p1z + min * dz);
-		hit.fraction = min;
-		return true;
-	}
-}
-oimo.collision.geometry.ConvexHullGeometry = class oimo_collision_geometry_ConvexHullGeometry extends oimo.collision.geometry.ConvexGeometry {
-	constructor(vertices) {
-		super(5);
-		this._numVertices = vertices.length;
-		var this1 = new Array(this._numVertices);
-		this._vertices = this1;
-		var this2 = new Array(this._numVertices);
-		this._tmpVertices = this2;
-		var _g = 0;
-		var _g1 = this._numVertices;
-		while(_g < _g1) {
-			var i = _g++;
-			this._vertices[i] = vertices[i];
-			this._tmpVertices[i] = new oimo.common.Vec3();
-		}
-		this._useGjkRayCast = true;
-		this._updateMass();
-	}
-	getVertices() {
-		return this._vertices;
-	}
-	_updateMass() {
-		this._volume = 1;
-		this._inertiaCoeff00 = 1;
-		this._inertiaCoeff01 = 0;
-		this._inertiaCoeff02 = 0;
-		this._inertiaCoeff10 = 0;
-		this._inertiaCoeff11 = 1;
-		this._inertiaCoeff12 = 0;
-		this._inertiaCoeff20 = 0;
-		this._inertiaCoeff21 = 0;
-		this._inertiaCoeff22 = 1;
-		var minx = this._vertices[0].x;
-		var miny = this._vertices[0].y;
-		var minz = this._vertices[0].z;
-		var maxx = this._vertices[0].x;
-		var maxy = this._vertices[0].y;
-		var maxz = this._vertices[0].z;
-		var _g = 1;
-		var _g1 = this._numVertices;
-		while(_g < _g1) {
-			var i = _g++;
-			var vx = this._vertices[i].x;
-			var vy = this._vertices[i].y;
-			var vz = this._vertices[i].z;
-			if(vx < minx) {
-				minx = vx;
-			} else if(vx > maxx) {
-				maxx = vx;
-			}
-			if(vy < miny) {
-				miny = vy;
-			} else if(vy > maxy) {
-				maxy = vy;
-			}
-			if(vz < minz) {
-				minz = vz;
-			} else if(vz > maxz) {
-				maxz = vz;
-			}
-		}
-		var sizex = maxx - minx;
-		var sizey = maxy - miny;
-		var sizez = maxz - minz;
-		this._volume = sizex * sizey * sizez;
-		var diffCog = ((minx + maxx) * (minx + maxx) + (miny + maxy) * (miny + maxy) + (minz + maxz) * (minz + maxz)) * 0.25;
-		sizex = sizex * sizex * 0.25;
-		sizey = sizey * sizey * 0.25;
-		sizez = sizez * sizez * 0.25;
-		this._inertiaCoeff00 = 0.333333333333333315 * (sizey + sizez) + diffCog;
-		this._inertiaCoeff01 = 0;
-		this._inertiaCoeff02 = 0;
-		this._inertiaCoeff10 = 0;
-		this._inertiaCoeff11 = 0.333333333333333315 * (sizez + sizex) + diffCog;
-		this._inertiaCoeff12 = 0;
-		this._inertiaCoeff20 = 0;
-		this._inertiaCoeff21 = 0;
-		this._inertiaCoeff22 = 0.333333333333333315 * (sizex + sizey) + diffCog;
-	}
-	_computeAabb(aabb,tf) {
-		var min;
-		var minX;
-		var minY;
-		var minZ;
-		var max;
-		var maxX;
-		var maxY;
-		var maxZ;
-		var margin;
-		var marginX;
-		var marginY;
-		var marginZ;
-		marginX = this._gjkMargin;
-		marginY = this._gjkMargin;
-		marginZ = this._gjkMargin;
-		var localV;
-		var localVX;
-		var localVY;
-		var localVZ;
-		var v = this._vertices[0];
-		localVX = v.x;
-		localVY = v.y;
-		localVZ = v.z;
-		var worldV;
-		var worldVX;
-		var worldVY;
-		var worldVZ;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = tf._rotation00 * localVX + tf._rotation01 * localVY + tf._rotation02 * localVZ;
-		__tmp__Y = tf._rotation10 * localVX + tf._rotation11 * localVY + tf._rotation12 * localVZ;
-		__tmp__Z = tf._rotation20 * localVX + tf._rotation21 * localVY + tf._rotation22 * localVZ;
-		worldVX = __tmp__X;
-		worldVY = __tmp__Y;
-		worldVZ = __tmp__Z;
-		worldVX += tf._positionX;
-		worldVY += tf._positionY;
-		worldVZ += tf._positionZ;
-		minX = worldVX;
-		minY = worldVY;
-		minZ = worldVZ;
-		maxX = worldVX;
-		maxY = worldVY;
-		maxZ = worldVZ;
-		var _g = 1;
-		var _g1 = this._numVertices;
-		while(_g < _g1) {
-			var i = _g++;
-			var v1 = this._vertices[i];
-			localVX = v1.x;
-			localVY = v1.y;
-			localVZ = v1.z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = tf._rotation00 * localVX + tf._rotation01 * localVY + tf._rotation02 * localVZ;
-			__tmp__Y1 = tf._rotation10 * localVX + tf._rotation11 * localVY + tf._rotation12 * localVZ;
-			__tmp__Z1 = tf._rotation20 * localVX + tf._rotation21 * localVY + tf._rotation22 * localVZ;
-			worldVX = __tmp__X1;
-			worldVY = __tmp__Y1;
-			worldVZ = __tmp__Z1;
-			worldVX += tf._positionX;
-			worldVY += tf._positionY;
-			worldVZ += tf._positionZ;
-			minX = minX < worldVX ? minX : worldVX;
-			minY = minY < worldVY ? minY : worldVY;
-			minZ = minZ < worldVZ ? minZ : worldVZ;
-			maxX = maxX > worldVX ? maxX : worldVX;
-			maxY = maxY > worldVY ? maxY : worldVY;
-			maxZ = maxZ > worldVZ ? maxZ : worldVZ;
-		}
-		aabb._minX = minX - marginX;
-		aabb._minY = minY - marginY;
-		aabb._minZ = minZ - marginZ;
-		aabb._maxX = maxX + marginX;
-		aabb._maxY = maxY + marginY;
-		aabb._maxZ = maxZ + marginZ;
-	}
-	computeLocalSupportingVertex(dir,out) {
-		var _this = this._vertices[0];
-		var maxDot = _this.x * dir.x + _this.y * dir.y + _this.z * dir.z;
-		var maxIndex = 0;
-		var _g = 1;
-		var _g1 = this._numVertices;
-		while(_g < _g1) {
-			var i = _g++;
-			var _this1 = this._vertices[i];
-			var dot = _this1.x * dir.x + _this1.y * dir.y + _this1.z * dir.z;
-			if(dot > maxDot) {
-				maxDot = dot;
-				maxIndex = i;
-			}
-		}
-		var v = this._vertices[maxIndex];
-		out.x = v.x;
-		out.y = v.y;
-		out.z = v.z;
-	}
-}
-oimo.collision.geometry.CylinderGeometry = class oimo_collision_geometry_CylinderGeometry extends oimo.collision.geometry.ConvexGeometry {
-	constructor(radius,halfHeight) {
-		super(2);
-		this._radius = radius;
-		this._halfHeight = halfHeight;
-		this._updateMass();
-	}
-	getRadius() {
-		return this._radius;
-	}
-	getHalfHeight() {
-		return this._halfHeight;
-	}
-	_updateMass() {
-		var r2 = this._radius * this._radius;
-		var h2 = this._halfHeight * this._halfHeight * 4;
-		this._volume = 3.14159265358979 * r2 * this._halfHeight * 2;
-		this._inertiaCoeff00 = 0.0833333333333333287 * (3 * r2 + h2);
-		this._inertiaCoeff01 = 0;
-		this._inertiaCoeff02 = 0;
-		this._inertiaCoeff10 = 0;
-		this._inertiaCoeff11 = 0.5 * r2;
-		this._inertiaCoeff12 = 0;
-		this._inertiaCoeff20 = 0;
-		this._inertiaCoeff21 = 0;
-		this._inertiaCoeff22 = 0.0833333333333333287 * (3 * r2 + h2);
-	}
-	_computeAabb(aabb,tf) {
-		var axis;
-		var axisX;
-		var axisY;
-		var axisZ;
-		var axis2;
-		var axis2X;
-		var axis2Y;
-		var axis2Z;
-		var eh;
-		var ehX;
-		var ehY;
-		var ehZ;
-		var er;
-		var erX;
-		var erY;
-		var erZ;
-		axisX = tf._rotation01;
-		axisY = tf._rotation11;
-		axisZ = tf._rotation21;
-		axisX = axisX < 0 ? -axisX : axisX;
-		axisY = axisY < 0 ? -axisY : axisY;
-		axisZ = axisZ < 0 ? -axisZ : axisZ;
-		axis2X = axisX * axisX;
-		axis2Y = axisY * axisY;
-		axis2Z = axisZ * axisZ;
-		var axis2x = axis2X;
-		var axis2y = axis2Y;
-		var axis2z = axis2Z;
-		erX = Math.sqrt(1 - axis2x);
-		erY = Math.sqrt(1 - axis2y);
-		erZ = Math.sqrt(1 - axis2z);
-		erX *= this._radius;
-		erY *= this._radius;
-		erZ *= this._radius;
-		ehX = axisX * this._halfHeight;
-		ehY = axisY * this._halfHeight;
-		ehZ = axisZ * this._halfHeight;
-		var max;
-		var maxX;
-		var maxY;
-		var maxZ;
-		maxX = erX + ehX;
-		maxY = erY + ehY;
-		maxZ = erZ + ehZ;
-		aabb._minX = tf._positionX - maxX;
-		aabb._minY = tf._positionY - maxY;
-		aabb._minZ = tf._positionZ - maxZ;
-		aabb._maxX = tf._positionX + maxX;
-		aabb._maxY = tf._positionY + maxY;
-		aabb._maxZ = tf._positionZ + maxZ;
-	}
-	computeLocalSupportingVertex(dir,out) {
-		var rx = dir.x;
-		var rz = dir.z;
-		var len = rx * rx + rz * rz;
-		var coreRadius = this._radius - this._gjkMargin;
-		if(coreRadius < 0) {
-			coreRadius = 0;
-		}
-		var invLen = len > 0 ? coreRadius / Math.sqrt(len) : 0;
-		var coreHeight = this._halfHeight - this._gjkMargin;
-		if(coreHeight < 0) {
-			coreHeight = 0;
-		}
-		out.x = rx * invLen;
-		out.y = dir.y > 0 ? coreHeight : -coreHeight;
-		out.z = rz * invLen;
-	}
-	_rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
-		var p1x = beginX;
-		var p1y = beginY;
-		var p1z = beginZ;
-		var p2x = endX;
-		var p2y = endY;
-		var p2z = endZ;
-		var halfH = this._halfHeight;
-		var dx = p2x - p1x;
-		var dy = p2y - p1y;
-		var dz = p2z - p1z;
-		var tminy = 0;
-		var tmaxy = 1;
-		if(dy > -1e-6 && dy < 1e-6) {
-			if(p1y <= -halfH || p1y >= halfH) {
-				return false;
-			}
-		} else {
-			var invDy = 1 / dy;
-			var t1 = (-halfH - p1y) * invDy;
-			var t2 = (halfH - p1y) * invDy;
-			if(t1 > t2) {
-				var tmp = t1;
-				t1 = t2;
-				t2 = tmp;
-			}
-			if(t1 > 0) {
-				tminy = t1;
-			}
-			if(t2 < 1) {
-				tmaxy = t2;
-			}
-		}
-		if(tminy >= 1 || tmaxy <= 0) {
-			return false;
-		}
-		var tminxz = 0;
-		var tmaxxz = 1;
-		var a = dx * dx + dz * dz;
-		var b = p1x * dx + p1z * dz;
-		var c = p1x * p1x + p1z * p1z - this._radius * this._radius;
-		var D = b * b - a * c;
-		if(D < 0) {
-			return false;
-		}
-		var t;
-		if(a > 0) {
-			var sqrtD = Math.sqrt(D);
-			tminxz = (-b - sqrtD) / a;
-			tmaxxz = (-b + sqrtD) / a;
-			if(tminxz >= 1 || tmaxxz <= 0) {
-				return false;
-			}
-		} else {
-			if(c >= 0) {
-				return false;
-			}
-			tminxz = 0;
-			tmaxxz = 1;
-		}
-		var min;
-		if(tmaxxz <= tminy || tmaxy <= tminxz) {
-			return false;
-		}
-		if(tminxz < tminy) {
-			min = tminy;
-			if(min == 0) {
-				return false;
-			}
-			hit.normal.init(0,dy > 0 ? -1 : 1,0);
-		} else {
-			min = tminxz;
-			if(min == 0) {
-				return false;
-			}
-			var _this = hit.normal.init(p1x + dx * min,0,p1z + dz * min);
-			var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
-			if(invLen > 0) {
-				invLen = 1 / invLen;
-			}
-			var tx = _this.x * invLen;
-			var ty = _this.y * invLen;
-			var tz = _this.z * invLen;
-			_this.x = tx;
-			_this.y = ty;
-			_this.z = tz;
-		}
-		hit.position.init(p1x + min * dx,p1y + min * dy,p1z + min * dz);
-		hit.fraction = min;
-		return true;
-	}
-}
-oimo.collision.geometry.GeometryType = class oimo_collision_geometry_GeometryType {
-}
-oimo.collision.geometry.RayCastHit = class oimo_collision_geometry_RayCastHit {
-	constructor() {
-		this.position = new oimo.common.Vec3();
-		this.normal = new oimo.common.Vec3();
-		this.fraction = 0;
-	}
-}
-oimo.collision.geometry.SphereGeometry = class oimo_collision_geometry_SphereGeometry extends oimo.collision.geometry.ConvexGeometry {
-	constructor(radius) {
-		super(0);
-		this._radius = radius;
-		this._gjkMargin = this._radius;
-		this._updateMass();
-	}
-	getRadius() {
-		return this._radius;
-	}
-	_updateMass() {
-		this._volume = 4.18879020478638608 * this._radius * this._radius * this._radius;
-		this._inertiaCoeff00 = 0.4 * this._radius * this._radius;
-		this._inertiaCoeff01 = 0;
-		this._inertiaCoeff02 = 0;
-		this._inertiaCoeff10 = 0;
-		this._inertiaCoeff11 = 0.4 * this._radius * this._radius;
-		this._inertiaCoeff12 = 0;
-		this._inertiaCoeff20 = 0;
-		this._inertiaCoeff21 = 0;
-		this._inertiaCoeff22 = 0.4 * this._radius * this._radius;
-	}
-	_computeAabb(aabb,tf) {
-		var radVec;
-		var radVecX;
-		var radVecY;
-		var radVecZ;
-		radVecX = this._radius;
-		radVecY = this._radius;
-		radVecZ = this._radius;
-		aabb._minX = tf._positionX - radVecX;
-		aabb._minY = tf._positionY - radVecY;
-		aabb._minZ = tf._positionZ - radVecZ;
-		aabb._maxX = tf._positionX + radVecX;
-		aabb._maxY = tf._positionY + radVecY;
-		aabb._maxZ = tf._positionZ + radVecZ;
-	}
-	computeLocalSupportingVertex(dir,out) {
-		out.zero();
-	}
-	_rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
-		var d;
-		var dX;
-		var dY;
-		var dZ;
-		dX = endX - beginX;
-		dY = endY - beginY;
-		dZ = endZ - beginZ;
-		var a = dX * dX + dY * dY + dZ * dZ;
-		var b = beginX * dX + beginY * dY + beginZ * dZ;
-		var c = beginX * beginX + beginY * beginY + beginZ * beginZ - this._radius * this._radius;
-		var D = b * b - a * c;
-		if(D < 0) {
-			return false;
-		}
-		var t = (-b - Math.sqrt(D)) / a;
-		if(t < 0 || t > 1) {
-			return false;
-		}
-		var hitPos;
-		var hitPosX;
-		var hitPosY;
-		var hitPosZ;
-		var hitNormal;
-		var hitNormalX;
-		var hitNormalY;
-		var hitNormalZ;
-		hitPosX = beginX + dX * t;
-		hitPosY = beginY + dY * t;
-		hitPosZ = beginZ + dZ * t;
-		var l = hitPosX * hitPosX + hitPosY * hitPosY + hitPosZ * hitPosZ;
-		if(l > 0) {
-			l = 1 / Math.sqrt(l);
-		}
-		hitNormalX = hitPosX * l;
-		hitNormalY = hitPosY * l;
-		hitNormalZ = hitPosZ * l;
-		var v = hit.position;
-		v.x = hitPosX;
-		v.y = hitPosY;
-		v.z = hitPosZ;
-		var v1 = hit.normal;
-		v1.x = hitNormalX;
-		v1.y = hitNormalY;
-		v1.z = hitNormalZ;
-		hit.fraction = t;
-		return true;
-	}
-}
-if(!oimo.collision.narrowphase) oimo.collision.narrowphase = {};
-oimo.collision.narrowphase.CollisionMatrix = class oimo_collision_narrowphase_CollisionMatrix {
-	constructor() {
-		var this1 = new Array(8);
-		this.detectors = this1;
-		var this2 = this.detectors;
-		var this3 = new Array(8);
-		this2[0] = this3;
-		var this4 = this.detectors;
-		var this5 = new Array(8);
-		this4[1] = this5;
-		var this6 = this.detectors;
-		var this7 = new Array(8);
-		this6[2] = this7;
-		var this8 = this.detectors;
-		var this9 = new Array(8);
-		this8[3] = this9;
-		var this10 = this.detectors;
-		var this11 = new Array(8);
-		this10[4] = this11;
-		var this12 = this.detectors;
-		var this13 = new Array(8);
-		this12[5] = this13;
-		var gjkEpaDetector = new oimo.collision.narrowphase.detector.GjkEpaDetector();
-		var sp = 0;
-		var bo = 1;
-		var cy = 2;
-		var co = 3;
-		var ca = 4;
-		var ch = 5;
-		this.detectors[sp][sp] = new oimo.collision.narrowphase.detector.SphereSphereDetector();
-		this.detectors[sp][bo] = new oimo.collision.narrowphase.detector.SphereBoxDetector(false);
-		this.detectors[sp][cy] = gjkEpaDetector;
-		this.detectors[sp][co] = gjkEpaDetector;
-		this.detectors[sp][ca] = new oimo.collision.narrowphase.detector.SphereCapsuleDetector(false);
-		this.detectors[sp][ch] = gjkEpaDetector;
-		this.detectors[bo][sp] = new oimo.collision.narrowphase.detector.SphereBoxDetector(true);
-		this.detectors[bo][bo] = new oimo.collision.narrowphase.detector.BoxBoxDetector();
-		this.detectors[bo][cy] = gjkEpaDetector;
-		this.detectors[bo][co] = gjkEpaDetector;
-		this.detectors[bo][ca] = gjkEpaDetector;
-		this.detectors[bo][ch] = gjkEpaDetector;
-		this.detectors[cy][sp] = gjkEpaDetector;
-		this.detectors[cy][bo] = gjkEpaDetector;
-		this.detectors[cy][cy] = gjkEpaDetector;
-		this.detectors[cy][co] = gjkEpaDetector;
-		this.detectors[cy][ca] = gjkEpaDetector;
-		this.detectors[cy][ch] = gjkEpaDetector;
-		this.detectors[co][sp] = gjkEpaDetector;
-		this.detectors[co][bo] = gjkEpaDetector;
-		this.detectors[co][cy] = gjkEpaDetector;
-		this.detectors[co][co] = gjkEpaDetector;
-		this.detectors[co][ca] = gjkEpaDetector;
-		this.detectors[co][ch] = gjkEpaDetector;
-		this.detectors[ca][sp] = new oimo.collision.narrowphase.detector.SphereCapsuleDetector(true);
-		this.detectors[ca][bo] = gjkEpaDetector;
-		this.detectors[ca][cy] = gjkEpaDetector;
-		this.detectors[ca][co] = gjkEpaDetector;
-		this.detectors[ca][ca] = new oimo.collision.narrowphase.detector.CapsuleCapsuleDetector();
-		this.detectors[ca][ch] = gjkEpaDetector;
-		this.detectors[ch][sp] = gjkEpaDetector;
-		this.detectors[ch][bo] = gjkEpaDetector;
-		this.detectors[ch][cy] = gjkEpaDetector;
-		this.detectors[ch][co] = gjkEpaDetector;
-		this.detectors[ch][ca] = gjkEpaDetector;
-		this.detectors[ch][ch] = gjkEpaDetector;
-	}
-	getDetector(geomType1,geomType2) {
-		return this.detectors[geomType1][geomType2];
-	}
-}
-oimo.collision.narrowphase.DetectorResult = class oimo_collision_narrowphase_DetectorResult {
-	constructor() {
-		this.numPoints = 0;
-		this.normal = new oimo.common.Vec3();
-		var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
-		this.points = this1;
-		this.incremental = false;
-		var _g = 0;
-		var _g1 = oimo.common.Setting.maxManifoldPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			this.points[i] = new oimo.collision.narrowphase.DetectorResultPoint();
-		}
-	}
-	getMaxDepth() {
-		var max = 0;
-		var _g = 0;
-		var _g1 = this.numPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			if(this.points[i].depth > max) {
-				max = this.points[i].depth;
-			}
-		}
-		return max;
-	}
-	clear() {
-		this.numPoints = 0;
-		var _g = 0;
-		var _g1 = this.points;
-		while(_g < _g1.length) {
-			var p = _g1[_g];
-			++_g;
-			p.position1.zero();
-			p.position2.zero();
-			p.depth = 0;
-			p.id = 0;
-		}
-		this.normal.zero();
-	}
-}
-oimo.collision.narrowphase.DetectorResultPoint = class oimo_collision_narrowphase_DetectorResultPoint {
-	constructor() {
-		this.position1 = new oimo.common.Vec3();
-		this.position2 = new oimo.common.Vec3();
-		this.depth = 0;
-		this.id = 0;
-	}
-}
-if(!oimo.collision.narrowphase.detector) oimo.collision.narrowphase.detector = {};
-oimo.collision.narrowphase.detector.Detector = class oimo_collision_narrowphase_detector_Detector {
-	constructor(swapped) {
-		this.swapped = swapped;
-	}
-	setNormal(result,nX,nY,nZ) {
-		var v = result.normal;
-		v.x = nX;
-		v.y = nY;
-		v.z = nZ;
-		if(this.swapped) {
-			var _this = result.normal;
-			var tx = -_this.x;
-			var ty = -_this.y;
-			var tz = -_this.z;
-			_this.x = tx;
-			_this.y = ty;
-			_this.z = tz;
-		}
-	}
-	addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,depth,id) {
-		var p = result.points[result.numPoints++];
-		p.depth = depth;
-		p.id = id;
-		if(this.swapped) {
-			var v = p.position1;
-			v.x = pos2X;
-			v.y = pos2Y;
-			v.z = pos2Z;
-			var v1 = p.position2;
-			v1.x = pos1X;
-			v1.y = pos1Y;
-			v1.z = pos1Z;
-		} else {
-			var v2 = p.position1;
-			v2.x = pos1X;
-			v2.y = pos1Y;
-			v2.z = pos1Z;
-			var v3 = p.position2;
-			v3.x = pos2X;
-			v3.y = pos2Y;
-			v3.z = pos2Z;
-		}
-	}
-	detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
-	}
-	detect(result,geom1,geom2,transform1,transform2,cachedData) {
-		result.numPoints = 0;
-		var _g = 0;
-		var _g1 = result.points;
-		while(_g < _g1.length) {
-			var p = _g1[_g];
-			++_g;
-			p.position1.zero();
-			p.position2.zero();
-			p.depth = 0;
-			p.id = 0;
-		}
-		result.normal.zero();
-		if(this.swapped) {
-			this.detectImpl(result,geom2,geom1,transform2,transform1,cachedData);
-		} else {
-			this.detectImpl(result,geom1,geom2,transform1,transform2,cachedData);
-		}
-	}
-}
-oimo.collision.narrowphase.detector.BoxBoxDetector = class oimo_collision_narrowphase_detector_BoxBoxDetector extends oimo.collision.narrowphase.detector.Detector {
-	constructor() {
-		super(false);
-		this.clipper = new oimo.collision.narrowphase.detector._BoxBoxDetector.FaceClipper();
-	}
-	detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
-		var b1 = geom1;
-		var b2 = geom2;
-		result.incremental = false;
-		var c1;
-		var c1X;
-		var c1Y;
-		var c1Z;
-		var c2;
-		var c2X;
-		var c2Y;
-		var c2Z;
-		var c12;
-		var c12X;
-		var c12Y;
-		var c12Z;
-		c1X = tf1._positionX;
-		c1Y = tf1._positionY;
-		c1Z = tf1._positionZ;
-		c2X = tf2._positionX;
-		c2Y = tf2._positionY;
-		c2Z = tf2._positionZ;
-		c12X = c2X - c1X;
-		c12Y = c2Y - c1Y;
-		c12Z = c2Z - c1Z;
-		var x1;
-		var x1X;
-		var x1Y;
-		var x1Z;
-		var y1;
-		var y1X;
-		var y1Y;
-		var y1Z;
-		var z1;
-		var z1X;
-		var z1Y;
-		var z1Z;
-		var x2;
-		var x2X;
-		var x2Y;
-		var x2Z;
-		var y2;
-		var y2X;
-		var y2Y;
-		var y2Z;
-		var z2;
-		var z2X;
-		var z2Y;
-		var z2Z;
-		x1X = tf1._rotation00;
-		x1Y = tf1._rotation10;
-		x1Z = tf1._rotation20;
-		y1X = tf1._rotation01;
-		y1Y = tf1._rotation11;
-		y1Z = tf1._rotation21;
-		z1X = tf1._rotation02;
-		z1Y = tf1._rotation12;
-		z1Z = tf1._rotation22;
-		x2X = tf2._rotation00;
-		x2Y = tf2._rotation10;
-		x2Z = tf2._rotation20;
-		y2X = tf2._rotation01;
-		y2Y = tf2._rotation11;
-		y2Z = tf2._rotation21;
-		z2X = tf2._rotation02;
-		z2Y = tf2._rotation12;
-		z2Z = tf2._rotation22;
-		var w1 = b1._halfExtentsX;
-		var h1 = b1._halfExtentsY;
-		var d1 = b1._halfExtentsZ;
-		var w2 = b2._halfExtentsX;
-		var h2 = b2._halfExtentsY;
-		var d2 = b2._halfExtentsZ;
-		var sx1;
-		var sx1X;
-		var sx1Y;
-		var sx1Z;
-		var sy1;
-		var sy1X;
-		var sy1Y;
-		var sy1Z;
-		var sz1;
-		var sz1X;
-		var sz1Y;
-		var sz1Z;
-		var sx2;
-		var sx2X;
-		var sx2Y;
-		var sx2Z;
-		var sy2;
-		var sy2X;
-		var sy2Y;
-		var sy2Z;
-		var sz2;
-		var sz2X;
-		var sz2Y;
-		var sz2Z;
-		sx1X = x1X * w1;
-		sx1Y = x1Y * w1;
-		sx1Z = x1Z * w1;
-		sy1X = y1X * h1;
-		sy1Y = y1Y * h1;
-		sy1Z = y1Z * h1;
-		sz1X = z1X * d1;
-		sz1Y = z1Y * d1;
-		sz1Z = z1Z * d1;
-		sx2X = x2X * w2;
-		sx2Y = x2Y * w2;
-		sx2Z = x2Z * w2;
-		sy2X = y2X * h2;
-		sy2Y = y2Y * h2;
-		sy2Z = y2Z * h2;
-		sz2X = z2X * d2;
-		sz2Y = z2Y * d2;
-		sz2Z = z2Z * d2;
-		var projSum;
-		var projC12Abs;
-		var mDepth = 1e65536;
-		var mId = -1;
-		var mSign = 0;
-		var mAxis;
-		var mAxisX;
-		var mAxisY;
-		var mAxisZ;
-		mAxisX = 0;
-		mAxisY = 0;
-		mAxisZ = 0;
-		var proj1 = w1;
-		var dx = x1X * sx2X + x1Y * sx2Y + x1Z * sx2Z;
-		var dy = x1X * sy2X + x1Y * sy2Y + x1Z * sy2Z;
-		var dz = x1X * sz2X + x1Y * sz2Y + x1Z * sz2Z;
-		if(dx < 0) {
-			dx = -dx;
-		}
-		if(dy < 0) {
-			dy = -dy;
-		}
-		if(dz < 0) {
-			dz = -dz;
-		}
-		var proj2 = dx + dy + dz;
-		var projC12 = x1X * c12X + x1Y * c12Y + x1Z * c12Z;
-		var sum = proj1 + proj2;
-		var neg = projC12 < 0;
-		var abs = neg ? -projC12 : projC12;
-		if(abs < sum) {
-			var depth = sum - abs;
-			if(depth < mDepth) {
-				mDepth = depth;
-				mId = 0;
-				mAxisX = x1X;
-				mAxisY = x1Y;
-				mAxisZ = x1Z;
-				mSign = neg ? -1 : 1;
-			}
-		} else {
-			return;
-		}
-		proj1 = h1;
-		var dx1 = y1X * sx2X + y1Y * sx2Y + y1Z * sx2Z;
-		var dy1 = y1X * sy2X + y1Y * sy2Y + y1Z * sy2Z;
-		var dz1 = y1X * sz2X + y1Y * sz2Y + y1Z * sz2Z;
-		if(dx1 < 0) {
-			dx1 = -dx1;
-		}
-		if(dy1 < 0) {
-			dy1 = -dy1;
-		}
-		if(dz1 < 0) {
-			dz1 = -dz1;
-		}
-		proj2 = dx1 + dy1 + dz1;
-		projC12 = y1X * c12X + y1Y * c12Y + y1Z * c12Z;
-		var sum1 = proj1 + proj2;
-		var neg1 = projC12 < 0;
-		var abs1 = neg1 ? -projC12 : projC12;
-		if(abs1 < sum1) {
-			var depth1 = sum1 - abs1;
-			if(depth1 < mDepth) {
-				mDepth = depth1;
-				mId = 1;
-				mAxisX = y1X;
-				mAxisY = y1Y;
-				mAxisZ = y1Z;
-				mSign = neg1 ? -1 : 1;
-			}
-		} else {
-			return;
-		}
-		proj1 = d1;
-		var dx2 = z1X * sx2X + z1Y * sx2Y + z1Z * sx2Z;
-		var dy2 = z1X * sy2X + z1Y * sy2Y + z1Z * sy2Z;
-		var dz2 = z1X * sz2X + z1Y * sz2Y + z1Z * sz2Z;
-		if(dx2 < 0) {
-			dx2 = -dx2;
-		}
-		if(dy2 < 0) {
-			dy2 = -dy2;
-		}
-		if(dz2 < 0) {
-			dz2 = -dz2;
-		}
-		proj2 = dx2 + dy2 + dz2;
-		projC12 = z1X * c12X + z1Y * c12Y + z1Z * c12Z;
-		var sum2 = proj1 + proj2;
-		var neg2 = projC12 < 0;
-		var abs2 = neg2 ? -projC12 : projC12;
-		if(abs2 < sum2) {
-			var depth2 = sum2 - abs2;
-			if(depth2 < mDepth) {
-				mDepth = depth2;
-				mId = 2;
-				mAxisX = z1X;
-				mAxisY = z1Y;
-				mAxisZ = z1Z;
-				mSign = neg2 ? -1 : 1;
-			}
-		} else {
-			return;
-		}
-		if(mDepth > oimo.common.Setting.linearSlop) {
-			mDepth -= oimo.common.Setting.linearSlop;
-		} else {
-			mDepth = 0;
-		}
-		var dx3 = x2X * sx1X + x2Y * sx1Y + x2Z * sx1Z;
-		var dy3 = x2X * sy1X + x2Y * sy1Y + x2Z * sy1Z;
-		var dz3 = x2X * sz1X + x2Y * sz1Y + x2Z * sz1Z;
-		if(dx3 < 0) {
-			dx3 = -dx3;
-		}
-		if(dy3 < 0) {
-			dy3 = -dy3;
-		}
-		if(dz3 < 0) {
-			dz3 = -dz3;
-		}
-		proj1 = dx3 + dy3 + dz3;
-		proj2 = w2;
-		projC12 = x2X * c12X + x2Y * c12Y + x2Z * c12Z;
-		var sum3 = proj1 + proj2;
-		var neg3 = projC12 < 0;
-		var abs3 = neg3 ? -projC12 : projC12;
-		if(abs3 < sum3) {
-			var depth3 = sum3 - abs3;
-			if(depth3 < mDepth) {
-				mDepth = depth3;
-				mId = 3;
-				mAxisX = x2X;
-				mAxisY = x2Y;
-				mAxisZ = x2Z;
-				mSign = neg3 ? -1 : 1;
-			}
-		} else {
-			return;
-		}
-		var dx4 = y2X * sx1X + y2Y * sx1Y + y2Z * sx1Z;
-		var dy4 = y2X * sy1X + y2Y * sy1Y + y2Z * sy1Z;
-		var dz4 = y2X * sz1X + y2Y * sz1Y + y2Z * sz1Z;
-		if(dx4 < 0) {
-			dx4 = -dx4;
-		}
-		if(dy4 < 0) {
-			dy4 = -dy4;
-		}
-		if(dz4 < 0) {
-			dz4 = -dz4;
-		}
-		proj1 = dx4 + dy4 + dz4;
-		proj2 = h2;
-		projC12 = y2X * c12X + y2Y * c12Y + y2Z * c12Z;
-		var sum4 = proj1 + proj2;
-		var neg4 = projC12 < 0;
-		var abs4 = neg4 ? -projC12 : projC12;
-		if(abs4 < sum4) {
-			var depth4 = sum4 - abs4;
-			if(depth4 < mDepth) {
-				mDepth = depth4;
-				mId = 4;
-				mAxisX = y2X;
-				mAxisY = y2Y;
-				mAxisZ = y2Z;
-				mSign = neg4 ? -1 : 1;
-			}
-		} else {
-			return;
-		}
-		var dx5 = z2X * sx1X + z2Y * sx1Y + z2Z * sx1Z;
-		var dy5 = z2X * sy1X + z2Y * sy1Y + z2Z * sy1Z;
-		var dz5 = z2X * sz1X + z2Y * sz1Y + z2Z * sz1Z;
-		if(dx5 < 0) {
-			dx5 = -dx5;
-		}
-		if(dy5 < 0) {
-			dy5 = -dy5;
-		}
-		if(dz5 < 0) {
-			dz5 = -dz5;
-		}
-		proj1 = dx5 + dy5 + dz5;
-		proj2 = d2;
-		projC12 = z2X * c12X + z2Y * c12Y + z2Z * c12Z;
-		var sum5 = proj1 + proj2;
-		var neg5 = projC12 < 0;
-		var abs5 = neg5 ? -projC12 : projC12;
-		if(abs5 < sum5) {
-			var depth5 = sum5 - abs5;
-			if(depth5 < mDepth) {
-				mDepth = depth5;
-				mId = 5;
-				mAxisX = z2X;
-				mAxisY = z2Y;
-				mAxisZ = z2Z;
-				mSign = neg5 ? -1 : 1;
-			}
-		} else {
-			return;
-		}
-		if(mDepth > oimo.common.Setting.linearSlop) {
-			mDepth -= oimo.common.Setting.linearSlop;
-		} else {
-			mDepth = 0;
-		}
-		var edgeAxis;
-		var edgeAxisX;
-		var edgeAxisY;
-		var edgeAxisZ;
-		edgeAxisX = x1Y * x2Z - x1Z * x2Y;
-		edgeAxisY = x1Z * x2X - x1X * x2Z;
-		edgeAxisZ = x1X * x2Y - x1Y * x2X;
-		if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
-			var l = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
-			if(l > 0) {
-				l = 1 / Math.sqrt(l);
-			}
-			edgeAxisX *= l;
-			edgeAxisY *= l;
-			edgeAxisZ *= l;
-			var dx6 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
-			var dy6 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
-			if(dx6 < 0) {
-				dx6 = -dx6;
-			}
-			if(dy6 < 0) {
-				dy6 = -dy6;
-			}
-			proj1 = dx6 + dy6;
-			var dx7 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
-			var dy7 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
-			if(dx7 < 0) {
-				dx7 = -dx7;
-			}
-			if(dy7 < 0) {
-				dy7 = -dy7;
-			}
-			proj2 = dx7 + dy7;
-			projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
-			var sum6 = proj1 + proj2;
-			var neg6 = projC12 < 0;
-			var abs6 = neg6 ? -projC12 : projC12;
-			if(abs6 < sum6) {
-				var depth6 = sum6 - abs6;
-				if(depth6 < mDepth) {
-					mDepth = depth6;
-					mId = 6;
-					mAxisX = edgeAxisX;
-					mAxisY = edgeAxisY;
-					mAxisZ = edgeAxisZ;
-					mSign = neg6 ? -1 : 1;
-				}
-			} else {
-				return;
-			}
-		}
-		edgeAxisX = x1Y * y2Z - x1Z * y2Y;
-		edgeAxisY = x1Z * y2X - x1X * y2Z;
-		edgeAxisZ = x1X * y2Y - x1Y * y2X;
-		if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
-			var l1 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
-			if(l1 > 0) {
-				l1 = 1 / Math.sqrt(l1);
-			}
-			edgeAxisX *= l1;
-			edgeAxisY *= l1;
-			edgeAxisZ *= l1;
-			var dx8 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
-			var dy8 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
-			if(dx8 < 0) {
-				dx8 = -dx8;
-			}
-			if(dy8 < 0) {
-				dy8 = -dy8;
-			}
-			proj1 = dx8 + dy8;
-			var dx9 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
-			var dy9 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
-			if(dx9 < 0) {
-				dx9 = -dx9;
-			}
-			if(dy9 < 0) {
-				dy9 = -dy9;
-			}
-			proj2 = dx9 + dy9;
-			projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
-			var sum7 = proj1 + proj2;
-			var neg7 = projC12 < 0;
-			var abs7 = neg7 ? -projC12 : projC12;
-			if(abs7 < sum7) {
-				var depth7 = sum7 - abs7;
-				if(depth7 < mDepth) {
-					mDepth = depth7;
-					mId = 7;
-					mAxisX = edgeAxisX;
-					mAxisY = edgeAxisY;
-					mAxisZ = edgeAxisZ;
-					mSign = neg7 ? -1 : 1;
-				}
-			} else {
-				return;
-			}
-		}
-		edgeAxisX = x1Y * z2Z - x1Z * z2Y;
-		edgeAxisY = x1Z * z2X - x1X * z2Z;
-		edgeAxisZ = x1X * z2Y - x1Y * z2X;
-		if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
-			var l2 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
-			if(l2 > 0) {
-				l2 = 1 / Math.sqrt(l2);
-			}
-			edgeAxisX *= l2;
-			edgeAxisY *= l2;
-			edgeAxisZ *= l2;
-			var dx10 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
-			var dy10 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
-			if(dx10 < 0) {
-				dx10 = -dx10;
-			}
-			if(dy10 < 0) {
-				dy10 = -dy10;
-			}
-			proj1 = dx10 + dy10;
-			var dx11 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
-			var dy11 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
-			if(dx11 < 0) {
-				dx11 = -dx11;
-			}
-			if(dy11 < 0) {
-				dy11 = -dy11;
-			}
-			proj2 = dx11 + dy11;
-			projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
-			var sum8 = proj1 + proj2;
-			var neg8 = projC12 < 0;
-			var abs8 = neg8 ? -projC12 : projC12;
-			if(abs8 < sum8) {
-				var depth8 = sum8 - abs8;
-				if(depth8 < mDepth) {
-					mDepth = depth8;
-					mId = 8;
-					mAxisX = edgeAxisX;
-					mAxisY = edgeAxisY;
-					mAxisZ = edgeAxisZ;
-					mSign = neg8 ? -1 : 1;
-				}
-			} else {
-				return;
-			}
-		}
-		edgeAxisX = y1Y * x2Z - y1Z * x2Y;
-		edgeAxisY = y1Z * x2X - y1X * x2Z;
-		edgeAxisZ = y1X * x2Y - y1Y * x2X;
-		if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
-			var l3 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
-			if(l3 > 0) {
-				l3 = 1 / Math.sqrt(l3);
-			}
-			edgeAxisX *= l3;
-			edgeAxisY *= l3;
-			edgeAxisZ *= l3;
-			var dx12 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
-			var dy12 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
-			if(dx12 < 0) {
-				dx12 = -dx12;
-			}
-			if(dy12 < 0) {
-				dy12 = -dy12;
-			}
-			proj1 = dx12 + dy12;
-			var dx13 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
-			var dy13 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
-			if(dx13 < 0) {
-				dx13 = -dx13;
-			}
-			if(dy13 < 0) {
-				dy13 = -dy13;
-			}
-			proj2 = dx13 + dy13;
-			projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
-			var sum9 = proj1 + proj2;
-			var neg9 = projC12 < 0;
-			var abs9 = neg9 ? -projC12 : projC12;
-			if(abs9 < sum9) {
-				var depth9 = sum9 - abs9;
-				if(depth9 < mDepth) {
-					mDepth = depth9;
-					mId = 9;
-					mAxisX = edgeAxisX;
-					mAxisY = edgeAxisY;
-					mAxisZ = edgeAxisZ;
-					mSign = neg9 ? -1 : 1;
-				}
-			} else {
-				return;
-			}
-		}
-		edgeAxisX = y1Y * y2Z - y1Z * y2Y;
-		edgeAxisY = y1Z * y2X - y1X * y2Z;
-		edgeAxisZ = y1X * y2Y - y1Y * y2X;
-		if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
-			var l4 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
-			if(l4 > 0) {
-				l4 = 1 / Math.sqrt(l4);
-			}
-			edgeAxisX *= l4;
-			edgeAxisY *= l4;
-			edgeAxisZ *= l4;
-			var dx14 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
-			var dy14 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
-			if(dx14 < 0) {
-				dx14 = -dx14;
-			}
-			if(dy14 < 0) {
-				dy14 = -dy14;
-			}
-			proj1 = dx14 + dy14;
-			var dx15 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
-			var dy15 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
-			if(dx15 < 0) {
-				dx15 = -dx15;
-			}
-			if(dy15 < 0) {
-				dy15 = -dy15;
-			}
-			proj2 = dx15 + dy15;
-			projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
-			var sum10 = proj1 + proj2;
-			var neg10 = projC12 < 0;
-			var abs10 = neg10 ? -projC12 : projC12;
-			if(abs10 < sum10) {
-				var depth10 = sum10 - abs10;
-				if(depth10 < mDepth) {
-					mDepth = depth10;
-					mId = 10;
-					mAxisX = edgeAxisX;
-					mAxisY = edgeAxisY;
-					mAxisZ = edgeAxisZ;
-					mSign = neg10 ? -1 : 1;
-				}
-			} else {
-				return;
-			}
-		}
-		edgeAxisX = y1Y * z2Z - y1Z * z2Y;
-		edgeAxisY = y1Z * z2X - y1X * z2Z;
-		edgeAxisZ = y1X * z2Y - y1Y * z2X;
-		if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
-			var l5 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
-			if(l5 > 0) {
-				l5 = 1 / Math.sqrt(l5);
-			}
-			edgeAxisX *= l5;
-			edgeAxisY *= l5;
-			edgeAxisZ *= l5;
-			var dx16 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
-			var dy16 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
-			if(dx16 < 0) {
-				dx16 = -dx16;
-			}
-			if(dy16 < 0) {
-				dy16 = -dy16;
-			}
-			proj1 = dx16 + dy16;
-			var dx17 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
-			var dy17 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
-			if(dx17 < 0) {
-				dx17 = -dx17;
-			}
-			if(dy17 < 0) {
-				dy17 = -dy17;
-			}
-			proj2 = dx17 + dy17;
-			projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
-			var sum11 = proj1 + proj2;
-			var neg11 = projC12 < 0;
-			var abs11 = neg11 ? -projC12 : projC12;
-			if(abs11 < sum11) {
-				var depth11 = sum11 - abs11;
-				if(depth11 < mDepth) {
-					mDepth = depth11;
-					mId = 11;
-					mAxisX = edgeAxisX;
-					mAxisY = edgeAxisY;
-					mAxisZ = edgeAxisZ;
-					mSign = neg11 ? -1 : 1;
-				}
-			} else {
-				return;
-			}
-		}
-		edgeAxisX = z1Y * x2Z - z1Z * x2Y;
-		edgeAxisY = z1Z * x2X - z1X * x2Z;
-		edgeAxisZ = z1X * x2Y - z1Y * x2X;
-		if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
-			var l6 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
-			if(l6 > 0) {
-				l6 = 1 / Math.sqrt(l6);
-			}
-			edgeAxisX *= l6;
-			edgeAxisY *= l6;
-			edgeAxisZ *= l6;
-			var dx18 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
-			var dy18 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
-			if(dx18 < 0) {
-				dx18 = -dx18;
-			}
-			if(dy18 < 0) {
-				dy18 = -dy18;
-			}
-			proj1 = dx18 + dy18;
-			var dx19 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
-			var dy19 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
-			if(dx19 < 0) {
-				dx19 = -dx19;
-			}
-			if(dy19 < 0) {
-				dy19 = -dy19;
-			}
-			proj2 = dx19 + dy19;
-			projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
-			var sum12 = proj1 + proj2;
-			var neg12 = projC12 < 0;
-			var abs12 = neg12 ? -projC12 : projC12;
-			if(abs12 < sum12) {
-				var depth12 = sum12 - abs12;
-				if(depth12 < mDepth) {
-					mDepth = depth12;
-					mId = 12;
-					mAxisX = edgeAxisX;
-					mAxisY = edgeAxisY;
-					mAxisZ = edgeAxisZ;
-					mSign = neg12 ? -1 : 1;
-				}
-			} else {
-				return;
-			}
-		}
-		edgeAxisX = z1Y * y2Z - z1Z * y2Y;
-		edgeAxisY = z1Z * y2X - z1X * y2Z;
-		edgeAxisZ = z1X * y2Y - z1Y * y2X;
-		if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
-			var l7 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
-			if(l7 > 0) {
-				l7 = 1 / Math.sqrt(l7);
-			}
-			edgeAxisX *= l7;
-			edgeAxisY *= l7;
-			edgeAxisZ *= l7;
-			var dx20 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
-			var dy20 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
-			if(dx20 < 0) {
-				dx20 = -dx20;
-			}
-			if(dy20 < 0) {
-				dy20 = -dy20;
-			}
-			proj1 = dx20 + dy20;
-			var dx21 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
-			var dy21 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
-			if(dx21 < 0) {
-				dx21 = -dx21;
-			}
-			if(dy21 < 0) {
-				dy21 = -dy21;
-			}
-			proj2 = dx21 + dy21;
-			projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
-			var sum13 = proj1 + proj2;
-			var neg13 = projC12 < 0;
-			var abs13 = neg13 ? -projC12 : projC12;
-			if(abs13 < sum13) {
-				var depth13 = sum13 - abs13;
-				if(depth13 < mDepth) {
-					mDepth = depth13;
-					mId = 13;
-					mAxisX = edgeAxisX;
-					mAxisY = edgeAxisY;
-					mAxisZ = edgeAxisZ;
-					mSign = neg13 ? -1 : 1;
-				}
-			} else {
-				return;
-			}
-		}
-		edgeAxisX = z1Y * z2Z - z1Z * z2Y;
-		edgeAxisY = z1Z * z2X - z1X * z2Z;
-		edgeAxisZ = z1X * z2Y - z1Y * z2X;
-		if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
-			var l8 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
-			if(l8 > 0) {
-				l8 = 1 / Math.sqrt(l8);
-			}
-			edgeAxisX *= l8;
-			edgeAxisY *= l8;
-			edgeAxisZ *= l8;
-			var dx22 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
-			var dy22 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
-			if(dx22 < 0) {
-				dx22 = -dx22;
-			}
-			if(dy22 < 0) {
-				dy22 = -dy22;
-			}
-			proj1 = dx22 + dy22;
-			var dx23 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
-			var dy23 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
-			if(dx23 < 0) {
-				dx23 = -dx23;
-			}
-			if(dy23 < 0) {
-				dy23 = -dy23;
-			}
-			proj2 = dx23 + dy23;
-			projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
-			var sum14 = proj1 + proj2;
-			var neg14 = projC12 < 0;
-			var abs14 = neg14 ? -projC12 : projC12;
-			if(abs14 < sum14) {
-				var depth14 = sum14 - abs14;
-				if(depth14 < mDepth) {
-					mDepth = depth14;
-					mId = 14;
-					mAxisX = edgeAxisX;
-					mAxisY = edgeAxisY;
-					mAxisZ = edgeAxisZ;
-					mSign = neg14 ? -1 : 1;
-				}
-			} else {
-				return;
-			}
-		}
-		if(mId >= 6) {
-			mAxisX *= mSign;
-			mAxisY *= mSign;
-			mAxisZ *= mSign;
-			var id1 = (mId - 6) / 3 | 0;
-			var id2 = mId - 6 - id1 * 3;
-			var p1;
-			var p1X;
-			var p1Y;
-			var p1Z;
-			var p2;
-			var p2X;
-			var p2Y;
-			var p2Z;
-			var d11;
-			var d1X;
-			var d1Y;
-			var d1Z;
-			var d21;
-			var d2X;
-			var d2Y;
-			var d2Z;
-			switch(id1) {
-			case 0:
-				d1X = x1X;
-				d1Y = x1Y;
-				d1Z = x1Z;
-				var signX = sy1X * mAxisX + sy1Y * mAxisY + sy1Z * mAxisZ > 0;
-				var signY = sz1X * mAxisX + sz1Y * mAxisY + sz1Z * mAxisZ > 0;
-				if(signX) {
-					if(signY) {
-						p1X = sy1X + sz1X;
-						p1Y = sy1Y + sz1Y;
-						p1Z = sy1Z + sz1Z;
-					} else {
-						p1X = sy1X - sz1X;
-						p1Y = sy1Y - sz1Y;
-						p1Z = sy1Z - sz1Z;
-					}
-				} else if(signY) {
-					p1X = sz1X - sy1X;
-					p1Y = sz1Y - sy1Y;
-					p1Z = sz1Z - sy1Z;
-				} else {
-					p1X = sy1X + sz1X;
-					p1Y = sy1Y + sz1Y;
-					p1Z = sy1Z + sz1Z;
-					p1X = -p1X;
-					p1Y = -p1Y;
-					p1Z = -p1Z;
-				}
-				break;
-			case 1:
-				d1X = y1X;
-				d1Y = y1Y;
-				d1Z = y1Z;
-				var signX1 = sx1X * mAxisX + sx1Y * mAxisY + sx1Z * mAxisZ > 0;
-				var signY1 = sz1X * mAxisX + sz1Y * mAxisY + sz1Z * mAxisZ > 0;
-				if(signX1) {
-					if(signY1) {
-						p1X = sx1X + sz1X;
-						p1Y = sx1Y + sz1Y;
-						p1Z = sx1Z + sz1Z;
-					} else {
-						p1X = sx1X - sz1X;
-						p1Y = sx1Y - sz1Y;
-						p1Z = sx1Z - sz1Z;
-					}
-				} else if(signY1) {
-					p1X = sz1X - sx1X;
-					p1Y = sz1Y - sx1Y;
-					p1Z = sz1Z - sx1Z;
-				} else {
-					p1X = sx1X + sz1X;
-					p1Y = sx1Y + sz1Y;
-					p1Z = sx1Z + sz1Z;
-					p1X = -p1X;
-					p1Y = -p1Y;
-					p1Z = -p1Z;
-				}
-				break;
-			default:
-				d1X = z1X;
-				d1Y = z1Y;
-				d1Z = z1Z;
-				var signX2 = sx1X * mAxisX + sx1Y * mAxisY + sx1Z * mAxisZ > 0;
-				var signY2 = sy1X * mAxisX + sy1Y * mAxisY + sy1Z * mAxisZ > 0;
-				if(signX2) {
-					if(signY2) {
-						p1X = sx1X + sy1X;
-						p1Y = sx1Y + sy1Y;
-						p1Z = sx1Z + sy1Z;
-					} else {
-						p1X = sx1X - sy1X;
-						p1Y = sx1Y - sy1Y;
-						p1Z = sx1Z - sy1Z;
-					}
-				} else if(signY2) {
-					p1X = sy1X - sx1X;
-					p1Y = sy1Y - sx1Y;
-					p1Z = sy1Z - sx1Z;
-				} else {
-					p1X = sx1X + sy1X;
-					p1Y = sx1Y + sy1Y;
-					p1Z = sx1Z + sy1Z;
-					p1X = -p1X;
-					p1Y = -p1Y;
-					p1Z = -p1Z;
-				}
-			}
-			p1X = c1X + p1X;
-			p1Y = c1Y + p1Y;
-			p1Z = c1Z + p1Z;
-			switch(id2) {
-			case 0:
-				d2X = x2X;
-				d2Y = x2Y;
-				d2Z = x2Z;
-				var signX3 = sy2X * mAxisX + sy2Y * mAxisY + sy2Z * mAxisZ > 0;
-				var signY3 = sz2X * mAxisX + sz2Y * mAxisY + sz2Z * mAxisZ > 0;
-				if(signX3) {
-					if(signY3) {
-						p2X = sy2X + sz2X;
-						p2Y = sy2Y + sz2Y;
-						p2Z = sy2Z + sz2Z;
-					} else {
-						p2X = sy2X - sz2X;
-						p2Y = sy2Y - sz2Y;
-						p2Z = sy2Z - sz2Z;
-					}
-				} else if(signY3) {
-					p2X = sz2X - sy2X;
-					p2Y = sz2Y - sy2Y;
-					p2Z = sz2Z - sy2Z;
-				} else {
-					p2X = sy2X + sz2X;
-					p2Y = sy2Y + sz2Y;
-					p2Z = sy2Z + sz2Z;
-					p2X = -p2X;
-					p2Y = -p2Y;
-					p2Z = -p2Z;
-				}
-				break;
-			case 1:
-				d2X = y2X;
-				d2Y = y2Y;
-				d2Z = y2Z;
-				var signX4 = sx2X * mAxisX + sx2Y * mAxisY + sx2Z * mAxisZ > 0;
-				var signY4 = sz2X * mAxisX + sz2Y * mAxisY + sz2Z * mAxisZ > 0;
-				if(signX4) {
-					if(signY4) {
-						p2X = sx2X + sz2X;
-						p2Y = sx2Y + sz2Y;
-						p2Z = sx2Z + sz2Z;
-					} else {
-						p2X = sx2X - sz2X;
-						p2Y = sx2Y - sz2Y;
-						p2Z = sx2Z - sz2Z;
-					}
-				} else if(signY4) {
-					p2X = sz2X - sx2X;
-					p2Y = sz2Y - sx2Y;
-					p2Z = sz2Z - sx2Z;
-				} else {
-					p2X = sx2X + sz2X;
-					p2Y = sx2Y + sz2Y;
-					p2Z = sx2Z + sz2Z;
-					p2X = -p2X;
-					p2Y = -p2Y;
-					p2Z = -p2Z;
-				}
-				break;
-			default:
-				d2X = z2X;
-				d2Y = z2Y;
-				d2Z = z2Z;
-				var signX5 = sx2X * mAxisX + sx2Y * mAxisY + sx2Z * mAxisZ > 0;
-				var signY5 = sy2X * mAxisX + sy2Y * mAxisY + sy2Z * mAxisZ > 0;
-				if(signX5) {
-					if(signY5) {
-						p2X = sx2X + sy2X;
-						p2Y = sx2Y + sy2Y;
-						p2Z = sx2Z + sy2Z;
-					} else {
-						p2X = sx2X - sy2X;
-						p2Y = sx2Y - sy2Y;
-						p2Z = sx2Z - sy2Z;
-					}
-				} else if(signY5) {
-					p2X = sy2X - sx2X;
-					p2Y = sy2Y - sx2Y;
-					p2Z = sy2Z - sx2Z;
-				} else {
-					p2X = sx2X + sy2X;
-					p2Y = sx2Y + sy2Y;
-					p2Z = sx2Z + sy2Z;
-					p2X = -p2X;
-					p2Y = -p2Y;
-					p2Z = -p2Z;
-				}
-			}
-			p2X = c2X - p2X;
-			p2Y = c2Y - p2Y;
-			p2Z = c2Z - p2Z;
-			var r;
-			var rX;
-			var rY;
-			var rZ;
-			rX = p1X - p2X;
-			rY = p1Y - p2Y;
-			rZ = p1Z - p2Z;
-			var dot12 = d1X * d2X + d1Y * d2Y + d1Z * d2Z;
-			var dot1r = d1X * rX + d1Y * rY + d1Z * rZ;
-			var dot2r = d2X * rX + d2Y * rY + d2Z * rZ;
-			var invDet = 1 / (1 - dot12 * dot12);
-			var t1 = (dot12 * dot2r - dot1r) * invDet;
-			var t2 = (dot2r - dot12 * dot1r) * invDet;
-			var cp1;
-			var cp1X;
-			var cp1Y;
-			var cp1Z;
-			var cp2;
-			var cp2X;
-			var cp2Y;
-			var cp2Z;
-			cp1X = p1X + d1X * t1;
-			cp1Y = p1Y + d1Y * t1;
-			cp1Z = p1Z + d1Z * t1;
-			cp2X = p2X + d2X * t2;
-			cp2Y = p2Y + d2Y * t2;
-			cp2Z = p2Z + d2Z * t2;
-			var normal;
-			var normalX;
-			var normalY;
-			var normalZ;
-			normalX = -mAxisX;
-			normalY = -mAxisY;
-			normalZ = -mAxisZ;
-			this.setNormal(result,normalX,normalY,normalZ);
-			this.addPoint(result,cp1X,cp1Y,cp1Z,cp2X,cp2Y,cp2Z,mDepth,4);
-			return;
-		}
-		var tmp;
-		var tmpX;
-		var tmpY;
-		var tmpZ;
-		var swapped;
-		if(mId >= 3) {
-			mSign = -mSign;
-			c12X = -c12X;
-			c12Y = -c12Y;
-			c12Z = -c12Z;
-			var tmp1 = b1;
-			b1 = b2;
-			b2 = tmp1;
-			var tmp2 = w1;
-			w1 = w2;
-			w2 = tmp2;
-			var tmp3 = h1;
-			h1 = h2;
-			h2 = tmp3;
-			var tmp4 = d1;
-			d1 = d2;
-			d2 = tmp4;
-			tmpX = c1X;
-			tmpY = c1Y;
-			tmpZ = c1Z;
-			c1X = c2X;
-			c1Y = c2Y;
-			c1Z = c2Z;
-			c2X = tmpX;
-			c2Y = tmpY;
-			c2Z = tmpZ;
-			tmpX = x1X;
-			tmpY = x1Y;
-			tmpZ = x1Z;
-			x1X = x2X;
-			x1Y = x2Y;
-			x1Z = x2Z;
-			x2X = tmpX;
-			x2Y = tmpY;
-			x2Z = tmpZ;
-			tmpX = y1X;
-			tmpY = y1Y;
-			tmpZ = y1Z;
-			y1X = y2X;
-			y1Y = y2Y;
-			y1Z = y2Z;
-			y2X = tmpX;
-			y2Y = tmpY;
-			y2Z = tmpZ;
-			tmpX = z1X;
-			tmpY = z1Y;
-			tmpZ = z1Z;
-			z1X = z2X;
-			z1Y = z2Y;
-			z1Z = z2Z;
-			z2X = tmpX;
-			z2Y = tmpY;
-			z2Z = tmpZ;
-			tmpX = sx1X;
-			tmpY = sx1Y;
-			tmpZ = sx1Z;
-			sx1X = sx2X;
-			sx1Y = sx2Y;
-			sx1Z = sx2Z;
-			sx2X = tmpX;
-			sx2Y = tmpY;
-			sx2Z = tmpZ;
-			tmpX = sy1X;
-			tmpY = sy1Y;
-			tmpZ = sy1Z;
-			sy1X = sy2X;
-			sy1Y = sy2Y;
-			sy1Z = sy2Z;
-			sy2X = tmpX;
-			sy2Y = tmpY;
-			sy2Z = tmpZ;
-			tmpX = sz1X;
-			tmpY = sz1Y;
-			tmpZ = sz1Z;
-			sz1X = sz2X;
-			sz1Y = sz2Y;
-			sz1Z = sz2Z;
-			sz2X = tmpX;
-			sz2Y = tmpY;
-			sz2Z = tmpZ;
-			mId -= 3;
-			swapped = true;
-		} else {
-			swapped = false;
-		}
-		var refCenter;
-		var refCenterX;
-		var refCenterY;
-		var refCenterZ;
-		var refNormal;
-		var refNormalX;
-		var refNormalY;
-		var refNormalZ;
-		var refX;
-		var refXX;
-		var refXY;
-		var refXZ;
-		var refY;
-		var refYX;
-		var refYY;
-		var refYZ;
-		var refW;
-		var refH;
-		switch(mId) {
-		case 0:
-			refCenterX = sx1X;
-			refCenterY = sx1Y;
-			refCenterZ = sx1Z;
-			refNormalX = x1X;
-			refNormalY = x1Y;
-			refNormalZ = x1Z;
-			refXX = y1X;
-			refXY = y1Y;
-			refXZ = y1Z;
-			refYX = z1X;
-			refYY = z1Y;
-			refYZ = z1Z;
-			refW = h1;
-			refH = d1;
-			break;
-		case 1:
-			refCenterX = sy1X;
-			refCenterY = sy1Y;
-			refCenterZ = sy1Z;
-			refNormalX = y1X;
-			refNormalY = y1Y;
-			refNormalZ = y1Z;
-			refXX = z1X;
-			refXY = z1Y;
-			refXZ = z1Z;
-			refYX = x1X;
-			refYY = x1Y;
-			refYZ = x1Z;
-			refW = d1;
-			refH = w1;
-			break;
-		default:
-			refCenterX = sz1X;
-			refCenterY = sz1Y;
-			refCenterZ = sz1Z;
-			refNormalX = z1X;
-			refNormalY = z1Y;
-			refNormalZ = z1Z;
-			refXX = x1X;
-			refXY = x1Y;
-			refXZ = x1Z;
-			refYX = y1X;
-			refYY = y1Y;
-			refYZ = y1Z;
-			refW = w1;
-			refH = h1;
-		}
-		if(mSign < 0) {
-			refCenterX = -refCenterX;
-			refCenterY = -refCenterY;
-			refCenterZ = -refCenterZ;
-			refNormalX = -refNormalX;
-			refNormalY = -refNormalY;
-			refNormalZ = -refNormalZ;
-			tmpX = refXX;
-			tmpY = refXY;
-			tmpZ = refXZ;
-			refXX = refYX;
-			refXY = refYY;
-			refXZ = refYZ;
-			refYX = tmpX;
-			refYY = tmpY;
-			refYZ = tmpZ;
-			var tmp5 = refW;
-			refW = refH;
-			refH = tmp5;
-		}
-		refCenterX += c1X;
-		refCenterY += c1Y;
-		refCenterZ += c1Z;
-		var minIncDot = 1;
-		var incId = 0;
-		var incDot = refNormalX * x2X + refNormalY * x2Y + refNormalZ * x2Z;
-		if(incDot < minIncDot) {
-			minIncDot = incDot;
-			incId = 0;
-		}
-		if(-incDot < minIncDot) {
-			minIncDot = -incDot;
-			incId = 1;
-		}
-		incDot = refNormalX * y2X + refNormalY * y2Y + refNormalZ * y2Z;
-		if(incDot < minIncDot) {
-			minIncDot = incDot;
-			incId = 2;
-		}
-		if(-incDot < minIncDot) {
-			minIncDot = -incDot;
-			incId = 3;
-		}
-		incDot = refNormalX * z2X + refNormalY * z2Y + refNormalZ * z2Z;
-		if(incDot < minIncDot) {
-			minIncDot = incDot;
-			incId = 4;
-		}
-		if(-incDot < minIncDot) {
-			minIncDot = -incDot;
-			incId = 5;
-		}
-		var incV1;
-		var incV1X;
-		var incV1Y;
-		var incV1Z;
-		var incV2;
-		var incV2X;
-		var incV2Y;
-		var incV2Z;
-		var incV3;
-		var incV3X;
-		var incV3Y;
-		var incV3Z;
-		var incV4;
-		var incV4X;
-		var incV4Y;
-		var incV4Z;
-		switch(incId) {
-		case 0:
-			incV1X = sx2X + sy2X;
-			incV1Y = sx2Y + sy2Y;
-			incV1Z = sx2Z + sy2Z;
-			incV1X += sz2X;
-			incV1Y += sz2Y;
-			incV1Z += sz2Z;
-			incV2X = sx2X - sy2X;
-			incV2Y = sx2Y - sy2Y;
-			incV2Z = sx2Z - sy2Z;
-			incV2X += sz2X;
-			incV2Y += sz2Y;
-			incV2Z += sz2Z;
-			incV3X = sx2X - sy2X;
-			incV3Y = sx2Y - sy2Y;
-			incV3Z = sx2Z - sy2Z;
-			incV3X -= sz2X;
-			incV3Y -= sz2Y;
-			incV3Z -= sz2Z;
-			incV4X = sx2X + sy2X;
-			incV4Y = sx2Y + sy2Y;
-			incV4Z = sx2Z + sy2Z;
-			incV4X -= sz2X;
-			incV4Y -= sz2Y;
-			incV4Z -= sz2Z;
-			break;
-		case 1:
-			incV1X = sy2X - sx2X;
-			incV1Y = sy2Y - sx2Y;
-			incV1Z = sy2Z - sx2Z;
-			incV1X += sz2X;
-			incV1Y += sz2Y;
-			incV1Z += sz2Z;
-			incV2X = sy2X - sx2X;
-			incV2Y = sy2Y - sx2Y;
-			incV2Z = sy2Z - sx2Z;
-			incV2X -= sz2X;
-			incV2Y -= sz2Y;
-			incV2Z -= sz2Z;
-			incV3X = sx2X + sy2X;
-			incV3Y = sx2Y + sy2Y;
-			incV3Z = sx2Z + sy2Z;
-			incV3X = -incV3X;
-			incV3Y = -incV3Y;
-			incV3Z = -incV3Z;
-			incV3X -= sz2X;
-			incV3Y -= sz2Y;
-			incV3Z -= sz2Z;
-			incV4X = sx2X + sy2X;
-			incV4Y = sx2Y + sy2Y;
-			incV4Z = sx2Z + sy2Z;
-			incV4X = -incV4X;
-			incV4Y = -incV4Y;
-			incV4Z = -incV4Z;
-			incV4X += sz2X;
-			incV4Y += sz2Y;
-			incV4Z += sz2Z;
-			break;
-		case 2:
-			incV1X = sx2X + sy2X;
-			incV1Y = sx2Y + sy2Y;
-			incV1Z = sx2Z + sy2Z;
-			incV1X += sz2X;
-			incV1Y += sz2Y;
-			incV1Z += sz2Z;
-			incV2X = sx2X + sy2X;
-			incV2Y = sx2Y + sy2Y;
-			incV2Z = sx2Z + sy2Z;
-			incV2X -= sz2X;
-			incV2Y -= sz2Y;
-			incV2Z -= sz2Z;
-			incV3X = sy2X - sx2X;
-			incV3Y = sy2Y - sx2Y;
-			incV3Z = sy2Z - sx2Z;
-			incV3X -= sz2X;
-			incV3Y -= sz2Y;
-			incV3Z -= sz2Z;
-			incV4X = sy2X - sx2X;
-			incV4Y = sy2Y - sx2Y;
-			incV4Z = sy2Z - sx2Z;
-			incV4X += sz2X;
-			incV4Y += sz2Y;
-			incV4Z += sz2Z;
-			break;
-		case 3:
-			incV1X = sx2X - sy2X;
-			incV1Y = sx2Y - sy2Y;
-			incV1Z = sx2Z - sy2Z;
-			incV1X += sz2X;
-			incV1Y += sz2Y;
-			incV1Z += sz2Z;
-			incV2X = sx2X + sy2X;
-			incV2Y = sx2Y + sy2Y;
-			incV2Z = sx2Z + sy2Z;
-			incV2X = -incV2X;
-			incV2Y = -incV2Y;
-			incV2Z = -incV2Z;
-			incV2X += sz2X;
-			incV2Y += sz2Y;
-			incV2Z += sz2Z;
-			incV3X = sx2X + sy2X;
-			incV3Y = sx2Y + sy2Y;
-			incV3Z = sx2Z + sy2Z;
-			incV3X = -incV3X;
-			incV3Y = -incV3Y;
-			incV3Z = -incV3Z;
-			incV3X -= sz2X;
-			incV3Y -= sz2Y;
-			incV3Z -= sz2Z;
-			incV4X = sx2X - sy2X;
-			incV4Y = sx2Y - sy2Y;
-			incV4Z = sx2Z - sy2Z;
-			incV4X -= sz2X;
-			incV4Y -= sz2Y;
-			incV4Z -= sz2Z;
-			break;
-		case 4:
-			incV1X = sx2X + sy2X;
-			incV1Y = sx2Y + sy2Y;
-			incV1Z = sx2Z + sy2Z;
-			incV1X += sz2X;
-			incV1Y += sz2Y;
-			incV1Z += sz2Z;
-			incV2X = sy2X - sx2X;
-			incV2Y = sy2Y - sx2Y;
-			incV2Z = sy2Z - sx2Z;
-			incV2X += sz2X;
-			incV2Y += sz2Y;
-			incV2Z += sz2Z;
-			incV3X = sx2X + sy2X;
-			incV3Y = sx2Y + sy2Y;
-			incV3Z = sx2Z + sy2Z;
-			incV3X = -incV3X;
-			incV3Y = -incV3Y;
-			incV3Z = -incV3Z;
-			incV3X += sz2X;
-			incV3Y += sz2Y;
-			incV3Z += sz2Z;
-			incV4X = sx2X - sy2X;
-			incV4Y = sx2Y - sy2Y;
-			incV4Z = sx2Z - sy2Z;
-			incV4X += sz2X;
-			incV4Y += sz2Y;
-			incV4Z += sz2Z;
-			break;
-		default:
-			incV1X = sx2X + sy2X;
-			incV1Y = sx2Y + sy2Y;
-			incV1Z = sx2Z + sy2Z;
-			incV1X -= sz2X;
-			incV1Y -= sz2Y;
-			incV1Z -= sz2Z;
-			incV2X = sx2X - sy2X;
-			incV2Y = sx2Y - sy2Y;
-			incV2Z = sx2Z - sy2Z;
-			incV2X -= sz2X;
-			incV2Y -= sz2Y;
-			incV2Z -= sz2Z;
-			incV3X = sx2X + sy2X;
-			incV3Y = sx2Y + sy2Y;
-			incV3Z = sx2Z + sy2Z;
-			incV3X = -incV3X;
-			incV3Y = -incV3Y;
-			incV3Z = -incV3Z;
-			incV3X -= sz2X;
-			incV3Y -= sz2Y;
-			incV3Z -= sz2Z;
-			incV4X = sy2X - sx2X;
-			incV4Y = sy2Y - sx2Y;
-			incV4Z = sy2Z - sx2Z;
-			incV4X -= sz2X;
-			incV4Y -= sz2Y;
-			incV4Z -= sz2Z;
-		}
-		incV1X += c12X;
-		incV1Y += c12Y;
-		incV1Z += c12Z;
-		incV2X += c12X;
-		incV2Y += c12Y;
-		incV2Z += c12Z;
-		incV3X += c12X;
-		incV3Y += c12Y;
-		incV3Z += c12Z;
-		incV4X += c12X;
-		incV4Y += c12Y;
-		incV4Z += c12Z;
-		var _this = this.clipper;
-		_this.w = refW;
-		_this.h = refH;
-		_this.numVertices = 0;
-		_this.numTmpVertices = 0;
-		var _this1 = this.clipper;
-		var _this2 = _this1.vertices[_this1.numVertices++];
-		_this2.x = incV1X * refXX + incV1Y * refXY + incV1Z * refXZ;
-		_this2.y = incV1X * refYX + incV1Y * refYY + incV1Z * refYZ;
-		_this2.wx = incV1X;
-		_this2.wy = incV1Y;
-		_this2.wz = incV1Z;
-		var _this3 = this.clipper;
-		var _this4 = _this3.vertices[_this3.numVertices++];
-		_this4.x = incV2X * refXX + incV2Y * refXY + incV2Z * refXZ;
-		_this4.y = incV2X * refYX + incV2Y * refYY + incV2Z * refYZ;
-		_this4.wx = incV2X;
-		_this4.wy = incV2Y;
-		_this4.wz = incV2Z;
-		var _this5 = this.clipper;
-		var _this6 = _this5.vertices[_this5.numVertices++];
-		_this6.x = incV3X * refXX + incV3Y * refXY + incV3Z * refXZ;
-		_this6.y = incV3X * refYX + incV3Y * refYY + incV3Z * refYZ;
-		_this6.wx = incV3X;
-		_this6.wy = incV3Y;
-		_this6.wz = incV3Z;
-		var _this7 = this.clipper;
-		var _this8 = _this7.vertices[_this7.numVertices++];
-		_this8.x = incV4X * refXX + incV4Y * refXY + incV4Z * refXZ;
-		_this8.y = incV4X * refYX + incV4Y * refYY + incV4Z * refYZ;
-		_this8.wx = incV4X;
-		_this8.wy = incV4Y;
-		_this8.wz = incV4Z;
-		this.clipper.clip();
-		this.clipper.reduce();
-		var normal1;
-		var normalX1;
-		var normalY1;
-		var normalZ1;
-		if(swapped) {
-			normalX1 = refNormalX;
-			normalY1 = refNormalY;
-			normalZ1 = refNormalZ;
-		} else {
-			normalX1 = -refNormalX;
-			normalY1 = -refNormalY;
-			normalZ1 = -refNormalZ;
-		}
-		this.setNormal(result,normalX1,normalY1,normalZ1);
-		var _g = 0;
-		var _g1 = this.clipper.numVertices;
-		while(_g < _g1) {
-			var i = _g++;
-			var v = this.clipper.vertices[i];
-			var clippedVertex;
-			var clippedVertexX;
-			var clippedVertexY;
-			var clippedVertexZ;
-			clippedVertexX = v.wx;
-			clippedVertexY = v.wy;
-			clippedVertexZ = v.wz;
-			clippedVertexX += c1X;
-			clippedVertexY += c1Y;
-			clippedVertexZ += c1Z;
-			var clippedVertexToRefCenter;
-			var clippedVertexToRefCenterX;
-			var clippedVertexToRefCenterY;
-			var clippedVertexToRefCenterZ;
-			clippedVertexToRefCenterX = refCenterX - clippedVertexX;
-			clippedVertexToRefCenterY = refCenterY - clippedVertexY;
-			clippedVertexToRefCenterZ = refCenterZ - clippedVertexZ;
-			var depth15 = clippedVertexToRefCenterX * refNormalX + clippedVertexToRefCenterY * refNormalY + clippedVertexToRefCenterZ * refNormalZ;
-			var clippedVertexOnRefFace;
-			var clippedVertexOnRefFaceX;
-			var clippedVertexOnRefFaceY;
-			var clippedVertexOnRefFaceZ;
-			clippedVertexOnRefFaceX = clippedVertexX + refNormalX * depth15;
-			clippedVertexOnRefFaceY = clippedVertexY + refNormalY * depth15;
-			clippedVertexOnRefFaceZ = clippedVertexZ + refNormalZ * depth15;
-			if(depth15 > -oimo.common.Setting.contactPersistenceThreshold) {
-				if(swapped) {
-					this.addPoint(result,clippedVertexX,clippedVertexY,clippedVertexZ,clippedVertexOnRefFaceX,clippedVertexOnRefFaceY,clippedVertexOnRefFaceZ,depth15,i);
-				} else {
-					this.addPoint(result,clippedVertexOnRefFaceX,clippedVertexOnRefFaceY,clippedVertexOnRefFaceZ,clippedVertexX,clippedVertexY,clippedVertexZ,depth15,i);
-				}
-			}
-		}
-	}
-}
-if(!oimo.collision.narrowphase.detector._BoxBoxDetector) oimo.collision.narrowphase.detector._BoxBoxDetector = {};
-oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex = class oimo_collision_narrowphase_detector__$BoxBoxDetector_IncidentVertex {
-	constructor() {
-		this.x = 0;
-		this.y = 0;
-		this.wx = 0;
-		this.wy = 0;
-		this.wz = 0;
-	}
-}
-oimo.collision.narrowphase.detector._BoxBoxDetector.FaceClipper = class oimo_collision_narrowphase_detector__$BoxBoxDetector_FaceClipper {
-	constructor() {
-		this.w = 0;
-		this.h = 0;
-		this.numVertices = 0;
-		this.numTmpVertices = 0;
-		var this1 = new Array(8);
-		this.vertices = this1;
-		var this2 = new Array(8);
-		this.tmpVertices = this2;
-		this.vertices[0] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.tmpVertices[0] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.vertices[1] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.tmpVertices[1] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.vertices[2] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.tmpVertices[2] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.vertices[3] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.tmpVertices[3] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.vertices[4] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.tmpVertices[4] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.vertices[5] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.tmpVertices[5] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.vertices[6] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.tmpVertices[6] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.vertices[7] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-		this.tmpVertices[7] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
-	}
-	clip() {
-		var _g = 0;
-		var _g1 = this.numVertices;
-		while(_g < _g1) {
-			var i = _g++;
-			var v1 = this.vertices[i];
-			var v2 = this.vertices[(i + 1) % this.numVertices];
-			var s1 = this.w + v1.x;
-			var s2 = this.w + v2.x;
-			if(s1 > 0 && s2 > 0) {
-				var _this = this.tmpVertices[this.numTmpVertices++];
-				_this.x = v1.x;
-				_this.y = v1.y;
-				_this.wx = v1.wx;
-				_this.wy = v1.wy;
-				_this.wz = v1.wz;
-			} else if(s1 > 0 && s2 <= 0) {
-				var _this1 = this.tmpVertices[this.numTmpVertices++];
-				_this1.x = v1.x;
-				_this1.y = v1.y;
-				_this1.wx = v1.wx;
-				_this1.wy = v1.wy;
-				_this1.wz = v1.wz;
-				var t = s1 / (s1 - s2);
-				var _this2 = this.tmpVertices[this.numTmpVertices++];
-				_this2.x = v1.x + (v2.x - v1.x) * t;
-				_this2.y = v1.y + (v2.y - v1.y) * t;
-				_this2.wx = v1.wx + (v2.wx - v1.wx) * t;
-				_this2.wy = v1.wy + (v2.wy - v1.wy) * t;
-				_this2.wz = v1.wz + (v2.wz - v1.wz) * t;
-			} else if(s1 <= 0 && s2 > 0) {
-				var t1 = s1 / (s1 - s2);
-				var _this3 = this.tmpVertices[this.numTmpVertices++];
-				_this3.x = v1.x + (v2.x - v1.x) * t1;
-				_this3.y = v1.y + (v2.y - v1.y) * t1;
-				_this3.wx = v1.wx + (v2.wx - v1.wx) * t1;
-				_this3.wy = v1.wy + (v2.wy - v1.wy) * t1;
-				_this3.wz = v1.wz + (v2.wz - v1.wz) * t1;
-			}
-		}
-		var tmp = this.vertices;
-		this.vertices = this.tmpVertices;
-		this.tmpVertices = tmp;
-		this.numVertices = this.numTmpVertices;
-		this.numTmpVertices = 0;
-		var _g2 = 0;
-		var _g11 = this.numVertices;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			var v11 = this.vertices[i1];
-			var v21 = this.vertices[(i1 + 1) % this.numVertices];
-			var s11 = this.w - v11.x;
-			var s21 = this.w - v21.x;
-			if(s11 > 0 && s21 > 0) {
-				var _this4 = this.tmpVertices[this.numTmpVertices++];
-				_this4.x = v11.x;
-				_this4.y = v11.y;
-				_this4.wx = v11.wx;
-				_this4.wy = v11.wy;
-				_this4.wz = v11.wz;
-			} else if(s11 > 0 && s21 <= 0) {
-				var _this5 = this.tmpVertices[this.numTmpVertices++];
-				_this5.x = v11.x;
-				_this5.y = v11.y;
-				_this5.wx = v11.wx;
-				_this5.wy = v11.wy;
-				_this5.wz = v11.wz;
-				var t2 = s11 / (s11 - s21);
-				var _this6 = this.tmpVertices[this.numTmpVertices++];
-				_this6.x = v11.x + (v21.x - v11.x) * t2;
-				_this6.y = v11.y + (v21.y - v11.y) * t2;
-				_this6.wx = v11.wx + (v21.wx - v11.wx) * t2;
-				_this6.wy = v11.wy + (v21.wy - v11.wy) * t2;
-				_this6.wz = v11.wz + (v21.wz - v11.wz) * t2;
-			} else if(s11 <= 0 && s21 > 0) {
-				var t3 = s11 / (s11 - s21);
-				var _this7 = this.tmpVertices[this.numTmpVertices++];
-				_this7.x = v11.x + (v21.x - v11.x) * t3;
-				_this7.y = v11.y + (v21.y - v11.y) * t3;
-				_this7.wx = v11.wx + (v21.wx - v11.wx) * t3;
-				_this7.wy = v11.wy + (v21.wy - v11.wy) * t3;
-				_this7.wz = v11.wz + (v21.wz - v11.wz) * t3;
-			}
-		}
-		var tmp1 = this.vertices;
-		this.vertices = this.tmpVertices;
-		this.tmpVertices = tmp1;
-		this.numVertices = this.numTmpVertices;
-		this.numTmpVertices = 0;
-		var _g3 = 0;
-		var _g12 = this.numVertices;
-		while(_g3 < _g12) {
-			var i2 = _g3++;
-			var v12 = this.vertices[i2];
-			var v22 = this.vertices[(i2 + 1) % this.numVertices];
-			var s12 = this.h + v12.y;
-			var s22 = this.h + v22.y;
-			if(s12 > 0 && s22 > 0) {
-				var _this8 = this.tmpVertices[this.numTmpVertices++];
-				_this8.x = v12.x;
-				_this8.y = v12.y;
-				_this8.wx = v12.wx;
-				_this8.wy = v12.wy;
-				_this8.wz = v12.wz;
-			} else if(s12 > 0 && s22 <= 0) {
-				var _this9 = this.tmpVertices[this.numTmpVertices++];
-				_this9.x = v12.x;
-				_this9.y = v12.y;
-				_this9.wx = v12.wx;
-				_this9.wy = v12.wy;
-				_this9.wz = v12.wz;
-				var t4 = s12 / (s12 - s22);
-				var _this10 = this.tmpVertices[this.numTmpVertices++];
-				_this10.x = v12.x + (v22.x - v12.x) * t4;
-				_this10.y = v12.y + (v22.y - v12.y) * t4;
-				_this10.wx = v12.wx + (v22.wx - v12.wx) * t4;
-				_this10.wy = v12.wy + (v22.wy - v12.wy) * t4;
-				_this10.wz = v12.wz + (v22.wz - v12.wz) * t4;
-			} else if(s12 <= 0 && s22 > 0) {
-				var t5 = s12 / (s12 - s22);
-				var _this11 = this.tmpVertices[this.numTmpVertices++];
-				_this11.x = v12.x + (v22.x - v12.x) * t5;
-				_this11.y = v12.y + (v22.y - v12.y) * t5;
-				_this11.wx = v12.wx + (v22.wx - v12.wx) * t5;
-				_this11.wy = v12.wy + (v22.wy - v12.wy) * t5;
-				_this11.wz = v12.wz + (v22.wz - v12.wz) * t5;
-			}
-		}
-		var tmp2 = this.vertices;
-		this.vertices = this.tmpVertices;
-		this.tmpVertices = tmp2;
-		this.numVertices = this.numTmpVertices;
-		this.numTmpVertices = 0;
-		var _g4 = 0;
-		var _g13 = this.numVertices;
-		while(_g4 < _g13) {
-			var i3 = _g4++;
-			var v13 = this.vertices[i3];
-			var v23 = this.vertices[(i3 + 1) % this.numVertices];
-			var s13 = this.h - v13.y;
-			var s23 = this.h - v23.y;
-			if(s13 > 0 && s23 > 0) {
-				var _this12 = this.tmpVertices[this.numTmpVertices++];
-				_this12.x = v13.x;
-				_this12.y = v13.y;
-				_this12.wx = v13.wx;
-				_this12.wy = v13.wy;
-				_this12.wz = v13.wz;
-			} else if(s13 > 0 && s23 <= 0) {
-				var _this13 = this.tmpVertices[this.numTmpVertices++];
-				_this13.x = v13.x;
-				_this13.y = v13.y;
-				_this13.wx = v13.wx;
-				_this13.wy = v13.wy;
-				_this13.wz = v13.wz;
-				var t6 = s13 / (s13 - s23);
-				var _this14 = this.tmpVertices[this.numTmpVertices++];
-				_this14.x = v13.x + (v23.x - v13.x) * t6;
-				_this14.y = v13.y + (v23.y - v13.y) * t6;
-				_this14.wx = v13.wx + (v23.wx - v13.wx) * t6;
-				_this14.wy = v13.wy + (v23.wy - v13.wy) * t6;
-				_this14.wz = v13.wz + (v23.wz - v13.wz) * t6;
-			} else if(s13 <= 0 && s23 > 0) {
-				var t7 = s13 / (s13 - s23);
-				var _this15 = this.tmpVertices[this.numTmpVertices++];
-				_this15.x = v13.x + (v23.x - v13.x) * t7;
-				_this15.y = v13.y + (v23.y - v13.y) * t7;
-				_this15.wx = v13.wx + (v23.wx - v13.wx) * t7;
-				_this15.wy = v13.wy + (v23.wy - v13.wy) * t7;
-				_this15.wz = v13.wz + (v23.wz - v13.wz) * t7;
-			}
-		}
-		var tmp3 = this.vertices;
-		this.vertices = this.tmpVertices;
-		this.tmpVertices = tmp3;
-		this.numVertices = this.numTmpVertices;
-		this.numTmpVertices = 0;
-	}
-	reduce() {
-		if(this.numVertices < 4) {
-			return;
-		}
-		var max1 = -1e65536;
-		var min1 = 1e65536;
-		var max2 = -1e65536;
-		var min2 = 1e65536;
-		var max1V = null;
-		var min1V = null;
-		var max2V = null;
-		var min2V = null;
-		var e1x = 1;
-		var e1y = 1;
-		var e2x = -1;
-		var e2y = 1;
-		var _g = 0;
-		var _g1 = this.numVertices;
-		while(_g < _g1) {
-			var i = _g++;
-			var v = this.vertices[i];
-			var dot1 = v.x * e1x + v.y * e1y;
-			var dot2 = v.x * e2x + v.y * e2y;
-			if(dot1 > max1) {
-				max1 = dot1;
-				max1V = v;
-			}
-			if(dot1 < min1) {
-				min1 = dot1;
-				min1V = v;
-			}
-			if(dot2 > max2) {
-				max2 = dot2;
-				max2V = v;
-			}
-			if(dot2 < min2) {
-				min2 = dot2;
-				min2V = v;
-			}
-		}
-		var _this = this.tmpVertices[this.numTmpVertices++];
-		_this.x = max1V.x;
-		_this.y = max1V.y;
-		_this.wx = max1V.wx;
-		_this.wy = max1V.wy;
-		_this.wz = max1V.wz;
-		var _this1 = this.tmpVertices[this.numTmpVertices++];
-		_this1.x = max2V.x;
-		_this1.y = max2V.y;
-		_this1.wx = max2V.wx;
-		_this1.wy = max2V.wy;
-		_this1.wz = max2V.wz;
-		var _this2 = this.tmpVertices[this.numTmpVertices++];
-		_this2.x = min1V.x;
-		_this2.y = min1V.y;
-		_this2.wx = min1V.wx;
-		_this2.wy = min1V.wy;
-		_this2.wz = min1V.wz;
-		var _this3 = this.tmpVertices[this.numTmpVertices++];
-		_this3.x = min2V.x;
-		_this3.y = min2V.y;
-		_this3.wx = min2V.wx;
-		_this3.wy = min2V.wy;
-		_this3.wz = min2V.wz;
-		var tmp = this.vertices;
-		this.vertices = this.tmpVertices;
-		this.tmpVertices = tmp;
-		this.numVertices = this.numTmpVertices;
-		this.numTmpVertices = 0;
-	}
-}
-oimo.collision.narrowphase.detector.BoxBoxDetectorMacro = class oimo_collision_narrowphase_detector_BoxBoxDetectorMacro {
-}
-oimo.collision.narrowphase.detector.CachedDetectorData = class oimo_collision_narrowphase_detector_CachedDetectorData {
-	constructor() {
-	}
-	_clear() {
-		if(this._gjkCache != null) {
-			this._gjkCache.clear();
-		}
-	}
-}
-oimo.collision.narrowphase.detector.CapsuleCapsuleDetector = class oimo_collision_narrowphase_detector_CapsuleCapsuleDetector extends oimo.collision.narrowphase.detector.Detector {
-	constructor() {
-		super(false);
-	}
-	detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
-		var c1 = geom1;
-		var c2 = geom2;
-		result.incremental = false;
-		var axis1;
-		var axis1X;
-		var axis1Y;
-		var axis1Z;
-		var axis2;
-		var axis2X;
-		var axis2Y;
-		var axis2Z;
-		axis1X = tf1._rotation01;
-		axis1Y = tf1._rotation11;
-		axis1Z = tf1._rotation21;
-		axis2X = tf2._rotation01;
-		axis2Y = tf2._rotation11;
-		axis2Z = tf2._rotation21;
-		var hh1 = c1._halfHeight;
-		var hh2 = c2._halfHeight;
-		var r1 = c1._radius;
-		var r2 = c2._radius;
-		var p1;
-		var p1X;
-		var p1Y;
-		var p1Z;
-		var q1;
-		var q1X;
-		var q1Y;
-		var q1Z;
-		var p2;
-		var p2X;
-		var p2Y;
-		var p2Z;
-		var q2;
-		var q2X;
-		var q2Y;
-		var q2Z;
-		p1X = tf1._positionX + axis1X * -hh1;
-		p1Y = tf1._positionY + axis1Y * -hh1;
-		p1Z = tf1._positionZ + axis1Z * -hh1;
-		q1X = tf1._positionX + axis1X * hh1;
-		q1Y = tf1._positionY + axis1Y * hh1;
-		q1Z = tf1._positionZ + axis1Z * hh1;
-		p2X = tf2._positionX + axis2X * -hh2;
-		p2Y = tf2._positionY + axis2Y * -hh2;
-		p2Z = tf2._positionZ + axis2Z * -hh2;
-		q2X = tf2._positionX + axis2X * hh2;
-		q2Y = tf2._positionY + axis2Y * hh2;
-		q2Z = tf2._positionZ + axis2Z * hh2;
-		var p12;
-		var p12X;
-		var p12Y;
-		var p12Z;
-		p12X = p1X - p2X;
-		p12Y = p1Y - p2Y;
-		p12Z = p1Z - p2Z;
-		var d1;
-		var d1X;
-		var d1Y;
-		var d1Z;
-		var d2;
-		var d2X;
-		var d2Y;
-		var d2Z;
-		d1X = q1X - p1X;
-		d1Y = q1Y - p1Y;
-		d1Z = q1Z - p1Z;
-		d2X = q2X - p2X;
-		d2Y = q2Y - p2Y;
-		d2Z = q2Z - p2Z;
-		var p21d1 = -(p12X * d1X + p12Y * d1Y + p12Z * d1Z);
-		var p12d2 = p12X * d2X + p12Y * d2Y + p12Z * d2Z;
-		var d11 = hh1 * hh1 * 4;
-		var d12 = d1X * d2X + d1Y * d2Y + d1Z * d2Z;
-		var d22 = hh2 * hh2 * 4;
-		var t1;
-		var t2;
-		if(d11 == 0 && d22 == 0) {
-			t1 = 0;
-			t2 = 0;
-		} else if(d11 == 0) {
-			t1 = 0;
-			t2 = p12d2;
-			if(t2 < 0) {
-				t2 = 0;
-			} else if(t2 > d22) {
-				t2 = 1;
-			} else {
-				t2 /= d22;
-			}
-		} else if(d22 == 0) {
-			t2 = 0;
-			t1 = p21d1;
-			if(t1 < 0) {
-				t1 = 0;
-			} else if(t1 > d11) {
-				t1 = 1;
-			} else {
-				t1 /= d11;
-			}
-		} else {
-			var det = d11 * d22 - d12 * d12;
-			if(det == 0) {
-				t1 = 0;
-			} else {
-				t1 = d12 * p12d2 + d22 * p21d1;
-				if(t1 < 0) {
-					t1 = 0;
-				} else if(t1 > det) {
-					t1 = 1;
-				} else {
-					t1 /= det;
-				}
-			}
-			t2 = t1 * d12 + p12d2;
-			if(t2 < 0) {
-				t2 = 0;
-				t1 = p21d1;
-				if(t1 < 0) {
-					t1 = 0;
-				} else if(t1 > d11) {
-					t1 = 1;
-				} else {
-					t1 /= d11;
-				}
-			} else if(t2 > d22) {
-				t2 = 1;
-				t1 = d12 + p21d1;
-				if(t1 < 0) {
-					t1 = 0;
-				} else if(t1 > d11) {
-					t1 = 1;
-				} else {
-					t1 /= d11;
-				}
-			} else {
-				t2 /= d22;
-			}
-		}
-		var cp1;
-		var cp1X;
-		var cp1Y;
-		var cp1Z;
-		var cp2;
-		var cp2X;
-		var cp2Y;
-		var cp2Z;
-		cp1X = p1X + d1X * t1;
-		cp1Y = p1Y + d1Y * t1;
-		cp1Z = p1Z + d1Z * t1;
-		cp2X = p2X + d2X * t2;
-		cp2Y = p2Y + d2Y * t2;
-		cp2Z = p2Z + d2Z * t2;
-		var d;
-		var dX;
-		var dY;
-		var dZ;
-		dX = cp1X - cp2X;
-		dY = cp1Y - cp2Y;
-		dZ = cp1Z - cp2Z;
-		var len2 = dX * dX + dY * dY + dZ * dZ;
-		if(len2 >= (r1 + r2) * (r1 + r2)) {
-			return;
-		}
-		var len = Math.sqrt(len2);
-		var n;
-		var nX;
-		var nY;
-		var nZ;
-		if(len > 0) {
-			nX = dX * (1 / len);
-			nY = dY * (1 / len);
-			nZ = dZ * (1 / len);
-		} else {
-			nX = 1;
-			nY = 0;
-			nZ = 0;
-		}
-		this.setNormal(result,nX,nY,nZ);
-		var pos1;
-		var pos1X;
-		var pos1Y;
-		var pos1Z;
-		var pos2;
-		var pos2X;
-		var pos2Y;
-		var pos2Z;
-		pos1X = cp1X + nX * -r1;
-		pos1Y = cp1Y + nY * -r1;
-		pos1Z = cp1Z + nZ * -r1;
-		pos2X = cp2X + nX * r2;
-		pos2Y = cp2Y + nY * r2;
-		pos2Z = cp2Z + nZ * r2;
-		this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,r1 + r2 - len,0);
-	}
-}
-oimo.collision.narrowphase.detector.GjkEpaDetector = class oimo_collision_narrowphase_detector_GjkEpaDetector extends oimo.collision.narrowphase.detector.Detector {
-	constructor() {
-		super(false);
-	}
-	detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
-		var gjkEpa = oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance;
-		var g1 = geom1;
-		var g2 = geom2;
-		var status = gjkEpa.computeClosestPointsImpl(g1,g2,tf1,tf2,oimo.common.Setting.enableGJKCaching ? cachedData : null,true);
-		result.incremental = true;
-		if(status != oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.SUCCEEDED) {
-			console.log("src/oimo/collision/narrowphase/detector/GjkEpaDetector.hx:28:","GJK/EPA failed: status=" + status);
-			return;
-		}
-		var margin1 = g1._gjkMargin;
-		var margin2 = g2._gjkMargin;
-		if(gjkEpa.distance > margin1 + margin2) {
-			return;
-		}
-		var pos1;
-		var pos1X;
-		var pos1Y;
-		var pos1Z;
-		var pos2;
-		var pos2X;
-		var pos2Y;
-		var pos2Z;
-		var v = gjkEpa.closestPoint1;
-		pos1X = v.x;
-		pos1Y = v.y;
-		pos1Z = v.z;
-		var v1 = gjkEpa.closestPoint2;
-		pos2X = v1.x;
-		pos2Y = v1.y;
-		pos2Z = v1.z;
-		var normal;
-		var normalX;
-		var normalY;
-		var normalZ;
-		normalX = pos1X - pos2X;
-		normalY = pos1Y - pos2Y;
-		normalZ = pos1Z - pos2Z;
-		if(normalX * normalX + normalY * normalY + normalZ * normalZ == 0) {
-			return;
-		}
-		if(gjkEpa.distance < 0) {
-			normalX = -normalX;
-			normalY = -normalY;
-			normalZ = -normalZ;
-		}
-		var l = normalX * normalX + normalY * normalY + normalZ * normalZ;
-		if(l > 0) {
-			l = 1 / Math.sqrt(l);
-		}
-		normalX *= l;
-		normalY *= l;
-		normalZ *= l;
-		this.setNormal(result,normalX,normalY,normalZ);
-		pos1X += normalX * -g1._gjkMargin;
-		pos1Y += normalY * -g1._gjkMargin;
-		pos1Z += normalZ * -g1._gjkMargin;
-		pos2X += normalX * g2._gjkMargin;
-		pos2Y += normalY * g2._gjkMargin;
-		pos2Z += normalZ * g2._gjkMargin;
-		this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,g1._gjkMargin + g2._gjkMargin - gjkEpa.distance,0);
-	}
-}
-oimo.collision.narrowphase.detector.SphereBoxDetector = class oimo_collision_narrowphase_detector_SphereBoxDetector extends oimo.collision.narrowphase.detector.Detector {
-	constructor(swapped) {
-		super(swapped);
-	}
-	detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
-		var s = geom1;
-		var b = geom2;
-		result.incremental = false;
-		var halfExt;
-		var halfExtX;
-		var halfExtY;
-		var halfExtZ;
-		var negHalfExt;
-		var negHalfExtX;
-		var negHalfExtY;
-		var negHalfExtZ;
-		halfExtX = b._halfExtentsX;
-		halfExtY = b._halfExtentsY;
-		halfExtZ = b._halfExtentsZ;
-		negHalfExtX = -halfExtX;
-		negHalfExtY = -halfExtY;
-		negHalfExtZ = -halfExtZ;
-		var r = s._radius;
-		var boxToSphere;
-		var boxToSphereX;
-		var boxToSphereY;
-		var boxToSphereZ;
-		boxToSphereX = tf1._positionX - tf2._positionX;
-		boxToSphereY = tf1._positionY - tf2._positionY;
-		boxToSphereZ = tf1._positionZ - tf2._positionZ;
-		var boxToSphereInBox;
-		var boxToSphereInBoxX;
-		var boxToSphereInBoxY;
-		var boxToSphereInBoxZ;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = tf2._rotation00 * boxToSphereX + tf2._rotation10 * boxToSphereY + tf2._rotation20 * boxToSphereZ;
-		__tmp__Y = tf2._rotation01 * boxToSphereX + tf2._rotation11 * boxToSphereY + tf2._rotation21 * boxToSphereZ;
-		__tmp__Z = tf2._rotation02 * boxToSphereX + tf2._rotation12 * boxToSphereY + tf2._rotation22 * boxToSphereZ;
-		boxToSphereInBoxX = __tmp__X;
-		boxToSphereInBoxY = __tmp__Y;
-		boxToSphereInBoxZ = __tmp__Z;
-		var insideBox = negHalfExtX < boxToSphereInBoxX && halfExtX > boxToSphereInBoxX && negHalfExtY < boxToSphereInBoxY && halfExtY > boxToSphereInBoxY && negHalfExtZ < boxToSphereInBoxZ && halfExtZ > boxToSphereInBoxZ;
-		if(insideBox) {
-			var sphereToBoxSurface;
-			var sphereToBoxSurfaceX;
-			var sphereToBoxSurfaceY;
-			var sphereToBoxSurfaceZ;
-			sphereToBoxSurfaceX = boxToSphereInBoxX < 0 ? -boxToSphereInBoxX : boxToSphereInBoxX;
-			sphereToBoxSurfaceY = boxToSphereInBoxY < 0 ? -boxToSphereInBoxY : boxToSphereInBoxY;
-			sphereToBoxSurfaceZ = boxToSphereInBoxZ < 0 ? -boxToSphereInBoxZ : boxToSphereInBoxZ;
-			sphereToBoxSurfaceX = halfExtX - sphereToBoxSurfaceX;
-			sphereToBoxSurfaceY = halfExtY - sphereToBoxSurfaceY;
-			sphereToBoxSurfaceZ = halfExtZ - sphereToBoxSurfaceZ;
-			var normalInBox;
-			var normalInBoxX;
-			var normalInBoxY;
-			var normalInBoxZ;
-			var distX = sphereToBoxSurfaceX;
-			var distY = sphereToBoxSurfaceY;
-			var distZ = sphereToBoxSurfaceZ;
-			var depth;
-			var projectionMask;
-			var projectionMaskX;
-			var projectionMaskY;
-			var projectionMaskZ;
-			if(distX < distY) {
-				if(distX < distZ) {
-					if(boxToSphereInBoxX > 0) {
-						normalInBoxX = 1;
-						normalInBoxY = 0;
-						normalInBoxZ = 0;
-					} else {
-						normalInBoxX = -1;
-						normalInBoxY = 0;
-						normalInBoxZ = 0;
-					}
-					projectionMaskX = 0;
-					projectionMaskY = 1;
-					projectionMaskZ = 1;
-					depth = distX;
-				} else {
-					if(boxToSphereInBoxZ > 0) {
-						normalInBoxX = 0;
-						normalInBoxY = 0;
-						normalInBoxZ = 1;
-					} else {
-						normalInBoxX = 0;
-						normalInBoxY = 0;
-						normalInBoxZ = -1;
-					}
-					projectionMaskX = 1;
-					projectionMaskY = 1;
-					projectionMaskZ = 0;
-					depth = distZ;
-				}
-			} else if(distY < distZ) {
-				if(boxToSphereInBoxY > 0) {
-					normalInBoxX = 0;
-					normalInBoxY = 1;
-					normalInBoxZ = 0;
-				} else {
-					normalInBoxX = 0;
-					normalInBoxY = -1;
-					normalInBoxZ = 0;
-				}
-				projectionMaskX = 1;
-				projectionMaskY = 0;
-				projectionMaskZ = 1;
-				depth = distY;
-			} else {
-				if(boxToSphereInBoxZ > 0) {
-					normalInBoxX = 0;
-					normalInBoxY = 0;
-					normalInBoxZ = 1;
-				} else {
-					normalInBoxX = 0;
-					normalInBoxY = 0;
-					normalInBoxZ = -1;
-				}
-				projectionMaskX = 1;
-				projectionMaskY = 1;
-				projectionMaskZ = 0;
-				depth = distZ;
-			}
-			var base;
-			var baseX;
-			var baseY;
-			var baseZ;
-			baseX = projectionMaskX * boxToSphereInBoxX;
-			baseY = projectionMaskY * boxToSphereInBoxY;
-			baseZ = projectionMaskZ * boxToSphereInBoxZ;
-			var boxToClosestPointInBox;
-			var boxToClosestPointInBoxX;
-			var boxToClosestPointInBoxY;
-			var boxToClosestPointInBoxZ;
-			boxToClosestPointInBoxX = normalInBoxX * halfExtX;
-			boxToClosestPointInBoxY = normalInBoxY * halfExtY;
-			boxToClosestPointInBoxZ = normalInBoxZ * halfExtZ;
-			boxToClosestPointInBoxX += baseX;
-			boxToClosestPointInBoxY += baseY;
-			boxToClosestPointInBoxZ += baseZ;
-			var boxToClosestPoint;
-			var boxToClosestPointX;
-			var boxToClosestPointY;
-			var boxToClosestPointZ;
-			var normal;
-			var normalX;
-			var normalY;
-			var normalZ;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = tf2._rotation00 * boxToClosestPointInBoxX + tf2._rotation01 * boxToClosestPointInBoxY + tf2._rotation02 * boxToClosestPointInBoxZ;
-			__tmp__Y1 = tf2._rotation10 * boxToClosestPointInBoxX + tf2._rotation11 * boxToClosestPointInBoxY + tf2._rotation12 * boxToClosestPointInBoxZ;
-			__tmp__Z1 = tf2._rotation20 * boxToClosestPointInBoxX + tf2._rotation21 * boxToClosestPointInBoxY + tf2._rotation22 * boxToClosestPointInBoxZ;
-			boxToClosestPointX = __tmp__X1;
-			boxToClosestPointY = __tmp__Y1;
-			boxToClosestPointZ = __tmp__Z1;
-			var __tmp__X2;
-			var __tmp__Y2;
-			var __tmp__Z2;
-			__tmp__X2 = tf2._rotation00 * normalInBoxX + tf2._rotation01 * normalInBoxY + tf2._rotation02 * normalInBoxZ;
-			__tmp__Y2 = tf2._rotation10 * normalInBoxX + tf2._rotation11 * normalInBoxY + tf2._rotation12 * normalInBoxZ;
-			__tmp__Z2 = tf2._rotation20 * normalInBoxX + tf2._rotation21 * normalInBoxY + tf2._rotation22 * normalInBoxZ;
-			normalX = __tmp__X2;
-			normalY = __tmp__Y2;
-			normalZ = __tmp__Z2;
-			this.setNormal(result,normalX,normalY,normalZ);
-			var pos1;
-			var pos1X;
-			var pos1Y;
-			var pos1Z;
-			var pos2;
-			var pos2X;
-			var pos2Y;
-			var pos2Z;
-			pos1X = tf1._positionX + normalX * -r;
-			pos1Y = tf1._positionY + normalY * -r;
-			pos1Z = tf1._positionZ + normalZ * -r;
-			pos2X = tf2._positionX + boxToClosestPointX;
-			pos2Y = tf2._positionY + boxToClosestPointY;
-			pos2Z = tf2._positionZ + boxToClosestPointZ;
-			this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,depth,0);
-			return;
-		}
-		var boxToClosestPointInBox1;
-		var boxToClosestPointInBoxX1;
-		var boxToClosestPointInBoxY1;
-		var boxToClosestPointInBoxZ1;
-		var eps = 1e-9;
-		var epsVec;
-		var epsVecX;
-		var epsVecY;
-		var epsVecZ;
-		epsVecX = eps;
-		epsVecY = eps;
-		epsVecZ = eps;
-		halfExtX -= epsVecX;
-		halfExtY -= epsVecY;
-		halfExtZ -= epsVecZ;
-		negHalfExtX += epsVecX;
-		negHalfExtY += epsVecY;
-		negHalfExtZ += epsVecZ;
-		boxToClosestPointInBoxX1 = boxToSphereInBoxX < halfExtX ? boxToSphereInBoxX : halfExtX;
-		boxToClosestPointInBoxY1 = boxToSphereInBoxY < halfExtY ? boxToSphereInBoxY : halfExtY;
-		boxToClosestPointInBoxZ1 = boxToSphereInBoxZ < halfExtZ ? boxToSphereInBoxZ : halfExtZ;
-		boxToClosestPointInBoxX1 = boxToClosestPointInBoxX1 > negHalfExtX ? boxToClosestPointInBoxX1 : negHalfExtX;
-		boxToClosestPointInBoxY1 = boxToClosestPointInBoxY1 > negHalfExtY ? boxToClosestPointInBoxY1 : negHalfExtY;
-		boxToClosestPointInBoxZ1 = boxToClosestPointInBoxZ1 > negHalfExtZ ? boxToClosestPointInBoxZ1 : negHalfExtZ;
-		var closestPointToSphereInBox;
-		var closestPointToSphereInBoxX;
-		var closestPointToSphereInBoxY;
-		var closestPointToSphereInBoxZ;
-		closestPointToSphereInBoxX = boxToSphereInBoxX - boxToClosestPointInBoxX1;
-		closestPointToSphereInBoxY = boxToSphereInBoxY - boxToClosestPointInBoxY1;
-		closestPointToSphereInBoxZ = boxToSphereInBoxZ - boxToClosestPointInBoxZ1;
-		var dist = closestPointToSphereInBoxX * closestPointToSphereInBoxX + closestPointToSphereInBoxY * closestPointToSphereInBoxY + closestPointToSphereInBoxZ * closestPointToSphereInBoxZ;
-		if(dist >= r * r) {
-			return;
-		}
-		dist = Math.sqrt(dist);
-		var boxToClosestPoint1;
-		var boxToClosestPointX1;
-		var boxToClosestPointY1;
-		var boxToClosestPointZ1;
-		var closestPointToSphere;
-		var closestPointToSphereX;
-		var closestPointToSphereY;
-		var closestPointToSphereZ;
-		var __tmp__X3;
-		var __tmp__Y3;
-		var __tmp__Z3;
-		__tmp__X3 = tf2._rotation00 * boxToClosestPointInBoxX1 + tf2._rotation01 * boxToClosestPointInBoxY1 + tf2._rotation02 * boxToClosestPointInBoxZ1;
-		__tmp__Y3 = tf2._rotation10 * boxToClosestPointInBoxX1 + tf2._rotation11 * boxToClosestPointInBoxY1 + tf2._rotation12 * boxToClosestPointInBoxZ1;
-		__tmp__Z3 = tf2._rotation20 * boxToClosestPointInBoxX1 + tf2._rotation21 * boxToClosestPointInBoxY1 + tf2._rotation22 * boxToClosestPointInBoxZ1;
-		boxToClosestPointX1 = __tmp__X3;
-		boxToClosestPointY1 = __tmp__Y3;
-		boxToClosestPointZ1 = __tmp__Z3;
-		var __tmp__X4;
-		var __tmp__Y4;
-		var __tmp__Z4;
-		__tmp__X4 = tf2._rotation00 * closestPointToSphereInBoxX + tf2._rotation01 * closestPointToSphereInBoxY + tf2._rotation02 * closestPointToSphereInBoxZ;
-		__tmp__Y4 = tf2._rotation10 * closestPointToSphereInBoxX + tf2._rotation11 * closestPointToSphereInBoxY + tf2._rotation12 * closestPointToSphereInBoxZ;
-		__tmp__Z4 = tf2._rotation20 * closestPointToSphereInBoxX + tf2._rotation21 * closestPointToSphereInBoxY + tf2._rotation22 * closestPointToSphereInBoxZ;
-		closestPointToSphereX = __tmp__X4;
-		closestPointToSphereY = __tmp__Y4;
-		closestPointToSphereZ = __tmp__Z4;
-		var normal1;
-		var normalX1;
-		var normalY1;
-		var normalZ1;
-		var l = closestPointToSphereX * closestPointToSphereX + closestPointToSphereY * closestPointToSphereY + closestPointToSphereZ * closestPointToSphereZ;
-		if(l > 0) {
-			l = 1 / Math.sqrt(l);
-		}
-		normalX1 = closestPointToSphereX * l;
-		normalY1 = closestPointToSphereY * l;
-		normalZ1 = closestPointToSphereZ * l;
-		this.setNormal(result,normalX1,normalY1,normalZ1);
-		var pos11;
-		var pos1X1;
-		var pos1Y1;
-		var pos1Z1;
-		var pos21;
-		var pos2X1;
-		var pos2Y1;
-		var pos2Z1;
-		pos1X1 = tf1._positionX + normalX1 * -r;
-		pos1Y1 = tf1._positionY + normalY1 * -r;
-		pos1Z1 = tf1._positionZ + normalZ1 * -r;
-		pos2X1 = tf2._positionX + boxToClosestPointX1;
-		pos2Y1 = tf2._positionY + boxToClosestPointY1;
-		pos2Z1 = tf2._positionZ + boxToClosestPointZ1;
-		this.addPoint(result,pos1X1,pos1Y1,pos1Z1,pos2X1,pos2Y1,pos2Z1,r - dist,0);
-	}
-}
-oimo.collision.narrowphase.detector.SphereCapsuleDetector = class oimo_collision_narrowphase_detector_SphereCapsuleDetector extends oimo.collision.narrowphase.detector.Detector {
-	constructor(swapped) {
-		super(swapped);
-	}
-	detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
-		var s1 = geom1;
-		var c2 = geom2;
-		result.incremental = false;
-		var hh2 = c2._halfHeight;
-		var r1 = s1._radius;
-		var r2 = c2._radius;
-		var axis2;
-		var axis2X;
-		var axis2Y;
-		var axis2Z;
-		axis2X = tf2._rotation01;
-		axis2Y = tf2._rotation11;
-		axis2Z = tf2._rotation21;
-		var cp1;
-		var cp1X;
-		var cp1Y;
-		var cp1Z;
-		cp1X = tf1._positionX;
-		cp1Y = tf1._positionY;
-		cp1Z = tf1._positionZ;
-		var p2;
-		var p2X;
-		var p2Y;
-		var p2Z;
-		var q2;
-		var q2X;
-		var q2Y;
-		var q2Z;
-		p2X = tf2._positionX + axis2X * -hh2;
-		p2Y = tf2._positionY + axis2Y * -hh2;
-		p2Z = tf2._positionZ + axis2Z * -hh2;
-		q2X = tf2._positionX + axis2X * hh2;
-		q2Y = tf2._positionY + axis2Y * hh2;
-		q2Z = tf2._positionZ + axis2Z * hh2;
-		var p12;
-		var p12X;
-		var p12Y;
-		var p12Z;
-		p12X = cp1X - p2X;
-		p12Y = cp1Y - p2Y;
-		p12Z = cp1Z - p2Z;
-		var d2;
-		var d2X;
-		var d2Y;
-		var d2Z;
-		d2X = q2X - p2X;
-		d2Y = q2Y - p2Y;
-		d2Z = q2Z - p2Z;
-		var d22 = hh2 * hh2 * 4;
-		var t = p12X * d2X + p12Y * d2Y + p12Z * d2Z;
-		if(t < 0) {
-			t = 0;
-		} else if(t > d22) {
-			t = 1;
-		} else {
-			t /= d22;
-		}
-		var cp2;
-		var cp2X;
-		var cp2Y;
-		var cp2Z;
-		cp2X = p2X + d2X * t;
-		cp2Y = p2Y + d2Y * t;
-		cp2Z = p2Z + d2Z * t;
-		var d;
-		var dX;
-		var dY;
-		var dZ;
-		dX = cp1X - cp2X;
-		dY = cp1Y - cp2Y;
-		dZ = cp1Z - cp2Z;
-		var len2 = dX * dX + dY * dY + dZ * dZ;
-		if(len2 >= (r1 + r2) * (r1 + r2)) {
-			return;
-		}
-		var len = Math.sqrt(len2);
-		var n;
-		var nX;
-		var nY;
-		var nZ;
-		if(len > 0) {
-			nX = dX * (1 / len);
-			nY = dY * (1 / len);
-			nZ = dZ * (1 / len);
-		} else {
-			nX = 1;
-			nY = 0;
-			nZ = 0;
-		}
-		this.setNormal(result,nX,nY,nZ);
-		var pos1;
-		var pos1X;
-		var pos1Y;
-		var pos1Z;
-		var pos2;
-		var pos2X;
-		var pos2Y;
-		var pos2Z;
-		pos1X = cp1X + nX * -r1;
-		pos1Y = cp1Y + nY * -r1;
-		pos1Z = cp1Z + nZ * -r1;
-		pos2X = cp2X + nX * r2;
-		pos2Y = cp2Y + nY * r2;
-		pos2Z = cp2Z + nZ * r2;
-		this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,r1 + r2 - len,0);
-	}
-}
-oimo.collision.narrowphase.detector.SphereSphereDetector = class oimo_collision_narrowphase_detector_SphereSphereDetector extends oimo.collision.narrowphase.detector.Detector {
-	constructor() {
-		super(false);
-	}
-	detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
-		var s1 = geom1;
-		var s2 = geom2;
-		result.incremental = false;
-		var d;
-		var dX;
-		var dY;
-		var dZ;
-		dX = tf1._positionX - tf2._positionX;
-		dY = tf1._positionY - tf2._positionY;
-		dZ = tf1._positionZ - tf2._positionZ;
-		var r1 = s1._radius;
-		var r2 = s2._radius;
-		var len2 = dX * dX + dY * dY + dZ * dZ;
-		if(len2 >= (r1 + r2) * (r1 + r2)) {
-			return;
-		}
-		var len = Math.sqrt(len2);
-		var n;
-		var nX;
-		var nY;
-		var nZ;
-		if(len > 0) {
-			nX = dX * (1 / len);
-			nY = dY * (1 / len);
-			nZ = dZ * (1 / len);
-		} else {
-			nX = 1;
-			nY = 0;
-			nZ = 0;
-		}
-		this.setNormal(result,nX,nY,nZ);
-		var pos1;
-		var pos1X;
-		var pos1Y;
-		var pos1Z;
-		var pos2;
-		var pos2X;
-		var pos2Y;
-		var pos2Z;
-		pos1X = tf1._positionX + nX * -r1;
-		pos1Y = tf1._positionY + nY * -r1;
-		pos1Z = tf1._positionZ + nZ * -r1;
-		pos2X = tf2._positionX + nX * r2;
-		pos2Y = tf2._positionY + nY * r2;
-		pos2Z = tf2._positionZ + nZ * r2;
-		this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,r1 + r2 - len,0);
-	}
-}
-if(!oimo.collision.narrowphase.detector.gjkepa) oimo.collision.narrowphase.detector.gjkepa = {};
-oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedron = class oimo_collision_narrowphase_detector_gjkepa_EpaPolyhedron {
-	constructor() {
-		var this1 = new Array(oimo.common.Setting.maxEPAVertices);
-		this._vertices = this1;
-		this._center = new oimo.common.Vec3();
-		this._numVertices = 0;
-		this._triangleList = null;
-		this._triangleListLast = null;
-		this._numTriangles = 0;
-		this._trianglePool = null;
-		this._vertexPool = null;
-	}
-	dumpHoleEdge(first) {
-	}
-	validate() {
-		var t = this._triangleList;
-		while(t != null) {
-			var n = t._next;
-			t._vertices[0]._tmpEdgeLoopOuterTriangle = null;
-			t._vertices[0]._tmpEdgeLoopNext = null;
-			if(t._adjacentPairIndex[0] == -1) {
-				this._status = 2;
-				return false;
-			}
-			if(t._adjacentTriangles[0] == null) {
-				this._status = 3;
-				return false;
-			}
-			t._vertices[1]._tmpEdgeLoopOuterTriangle = null;
-			t._vertices[1]._tmpEdgeLoopNext = null;
-			if(t._adjacentPairIndex[1] == -1) {
-				this._status = 2;
-				return false;
-			}
-			if(t._adjacentTriangles[1] == null) {
-				this._status = 3;
-				return false;
-			}
-			t._vertices[2]._tmpEdgeLoopOuterTriangle = null;
-			t._vertices[2]._tmpEdgeLoopNext = null;
-			if(t._adjacentPairIndex[2] == -1) {
-				this._status = 2;
-				return false;
-			}
-			if(t._adjacentTriangles[2] == null) {
-				this._status = 3;
-				return false;
-			}
-			t = n;
-		}
-		return true;
-	}
-	findEdgeLoop(id,base,from) {
-		if(base._tmpDfsId == id) {
-			return;
-		}
-		base._tmpDfsId = id;
-		var _this = base.tmp;
-		_this.x = from.x;
-		_this.y = from.y;
-		_this.z = from.z;
-		var _this1 = _this;
-		var v = base._vertices[0].v;
-		var tx = _this1.x - v.x;
-		var ty = _this1.y - v.y;
-		var tz = _this1.z - v.z;
-		_this1.x = tx;
-		_this1.y = ty;
-		_this1.z = tz;
-		var _this2 = base.tmp;
-		var v1 = base._normal;
-		base._tmpDfsVisible = _this2.x * v1.x + _this2.y * v1.y + _this2.z * v1.z > 0;
-		if(!base._tmpDfsVisible) {
-			this._status = 6;
-			return;
-		}
-		var _g = 0;
-		while(_g < 3) {
-			var i = _g++;
-			var t = base._adjacentTriangles[i];
-			if(t == null) {
-				continue;
-			}
-			var _this3 = t.tmp;
-			_this3.x = from.x;
-			_this3.y = from.y;
-			_this3.z = from.z;
-			var _this4 = _this3;
-			var v2 = t._vertices[0].v;
-			var tx1 = _this4.x - v2.x;
-			var ty1 = _this4.y - v2.y;
-			var tz1 = _this4.z - v2.z;
-			_this4.x = tx1;
-			_this4.y = ty1;
-			_this4.z = tz1;
-			var _this5 = t.tmp;
-			var v3 = t._normal;
-			t._tmpDfsVisible = _this5.x * v3.x + _this5.y * v3.y + _this5.z * v3.z > 0;
-			if(t._tmpDfsVisible) {
-				this.findEdgeLoop(id,t,from);
-			} else {
-				var i2 = base._nextIndex[i];
-				var v11 = base._vertices[i];
-				var v21 = base._vertices[i2];
-				v11._tmpEdgeLoopNext = v21;
-				v11._tmpEdgeLoopOuterTriangle = t;
-			}
-		}
-		var triangle = base._adjacentTriangles[0];
-		if(triangle != null) {
-			var pairIndex = base._adjacentPairIndex[0];
-			triangle._adjacentTriangles[pairIndex] = null;
-			triangle._adjacentPairIndex[pairIndex] = -1;
-			base._adjacentTriangles[0] = null;
-			base._adjacentPairIndex[0] = -1;
-		}
-		var triangle1 = base._adjacentTriangles[1];
-		if(triangle1 != null) {
-			var pairIndex1 = base._adjacentPairIndex[1];
-			triangle1._adjacentTriangles[pairIndex1] = null;
-			triangle1._adjacentPairIndex[pairIndex1] = -1;
-			base._adjacentTriangles[1] = null;
-			base._adjacentPairIndex[1] = -1;
-		}
-		var triangle2 = base._adjacentTriangles[2];
-		if(triangle2 != null) {
-			var pairIndex2 = base._adjacentPairIndex[2];
-			triangle2._adjacentTriangles[pairIndex2] = null;
-			triangle2._adjacentPairIndex[pairIndex2] = -1;
-			base._adjacentTriangles[2] = null;
-			base._adjacentPairIndex[2] = -1;
-		}
-		this._numTriangles--;
-		var prev = base._prev;
-		var next = base._next;
-		if(prev != null) {
-			prev._next = next;
-		}
-		if(next != null) {
-			next._prev = prev;
-		}
-		if(base == this._triangleList) {
-			this._triangleList = this._triangleList._next;
-		}
-		if(base == this._triangleListLast) {
-			this._triangleListLast = this._triangleListLast._prev;
-		}
-		base._next = null;
-		base._prev = null;
-		base.removeReferences();
-		base._next = this._trianglePool;
-		this._trianglePool = base;
-	}
-	_init(v1,v2,v3,v4) {
-		this._status = 0;
-		this._numVertices = 4;
-		this._vertices[0] = v1;
-		this._vertices[1] = v2;
-		this._vertices[2] = v3;
-		this._vertices[3] = v4;
-		var _this = this._center;
-		var v = v1.v;
-		_this.x = v.x;
-		_this.y = v.y;
-		_this.z = v.z;
-		var _this1 = _this;
-		var v5 = v2.v;
-		var tx = _this1.x + v5.x;
-		var ty = _this1.y + v5.y;
-		var tz = _this1.z + v5.z;
-		_this1.x = tx;
-		_this1.y = ty;
-		_this1.z = tz;
-		var _this2 = _this1;
-		var v6 = v3.v;
-		var tx1 = _this2.x + v6.x;
-		var ty1 = _this2.y + v6.y;
-		var tz1 = _this2.z + v6.z;
-		_this2.x = tx1;
-		_this2.y = ty1;
-		_this2.z = tz1;
-		var _this3 = _this2;
-		var v7 = v4.v;
-		var tx2 = _this3.x + v7.x;
-		var ty2 = _this3.y + v7.y;
-		var tz2 = _this3.z + v7.z;
-		_this3.x = tx2;
-		_this3.y = ty2;
-		_this3.z = tz2;
-		var _this4 = _this3;
-		var tx3 = _this4.x * 0.25;
-		var ty3 = _this4.y * 0.25;
-		var tz3 = _this4.z * 0.25;
-		_this4.x = tx3;
-		_this4.y = ty3;
-		_this4.z = tz3;
-		var first = this._trianglePool;
-		if(first != null) {
-			this._trianglePool = first._next;
-			first._next = null;
-		} else {
-			first = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
-		}
-		var t1 = first;
-		var first1 = this._trianglePool;
-		if(first1 != null) {
-			this._trianglePool = first1._next;
-			first1._next = null;
-		} else {
-			first1 = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
-		}
-		var t2 = first1;
-		var first2 = this._trianglePool;
-		if(first2 != null) {
-			this._trianglePool = first2._next;
-			first2._next = null;
-		} else {
-			first2 = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
-		}
-		var t3 = first2;
-		var first3 = this._trianglePool;
-		if(first3 != null) {
-			this._trianglePool = first3._next;
-			first3._next = null;
-		} else {
-			first3 = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
-		}
-		var t4 = first3;
-		var autoCheck = true;
-		if(autoCheck == null) {
-			autoCheck = false;
-		}
-		if(!t1.init(v1,v2,v3,this._center,autoCheck)) {
-			this._status = 1;
-		}
-		var autoCheck1 = true;
-		if(autoCheck1 == null) {
-			autoCheck1 = false;
-		}
-		if(!t2.init(v1,v2,v4,this._center,autoCheck1)) {
-			this._status = 1;
-		}
-		var autoCheck2 = true;
-		if(autoCheck2 == null) {
-			autoCheck2 = false;
-		}
-		if(!t3.init(v1,v3,v4,this._center,autoCheck2)) {
-			this._status = 1;
-		}
-		var autoCheck3 = true;
-		if(autoCheck3 == null) {
-			autoCheck3 = false;
-		}
-		if(!t4.init(v2,v3,v4,this._center,autoCheck3)) {
-			this._status = 1;
-		}
-		if(!t1.setAdjacentTriangle(t2)) {
-			this._status = 1;
-		}
-		if(!t1.setAdjacentTriangle(t3)) {
-			this._status = 1;
-		}
-		if(!t1.setAdjacentTriangle(t4)) {
-			this._status = 1;
-		}
-		if(!t2.setAdjacentTriangle(t3)) {
-			this._status = 1;
-		}
-		if(!t2.setAdjacentTriangle(t4)) {
-			this._status = 1;
-		}
-		if(!t3.setAdjacentTriangle(t4)) {
-			this._status = 1;
-		}
-		this._numTriangles++;
-		if(this._triangleList == null) {
-			this._triangleList = t1;
-			this._triangleListLast = t1;
-		} else {
-			this._triangleListLast._next = t1;
-			t1._prev = this._triangleListLast;
-			this._triangleListLast = t1;
-		}
-		this._numTriangles++;
-		if(this._triangleList == null) {
-			this._triangleList = t2;
-			this._triangleListLast = t2;
-		} else {
-			this._triangleListLast._next = t2;
-			t2._prev = this._triangleListLast;
-			this._triangleListLast = t2;
-		}
-		this._numTriangles++;
-		if(this._triangleList == null) {
-			this._triangleList = t3;
-			this._triangleListLast = t3;
-		} else {
-			this._triangleListLast._next = t3;
-			t3._prev = this._triangleListLast;
-			this._triangleListLast = t3;
-		}
-		this._numTriangles++;
-		if(this._triangleList == null) {
-			this._triangleList = t4;
-			this._triangleListLast = t4;
-		} else {
-			this._triangleListLast._next = t4;
-			t4._prev = this._triangleListLast;
-			this._triangleListLast = t4;
-		}
-		return this._status == 0;
-	}
-	_addVertex(vertex,base) {
-		this._vertices[this._numVertices++] = vertex;
-		var v1 = base._vertices[0];
-		this.findEdgeLoop(this._numVertices,base,vertex.v);
-		if(this._status != 0) {
-			return false;
-		}
-		var v = v1;
-		var firstV = v1;
-		var prevT = null;
-		var firstT = null;
-		while(true) {
-			if(v._tmpEdgeLoopNext == null) {
-				this._dumpAsObjModel();
-				this._status = 4;
-				return false;
-			}
-			if(v._tmpEdgeLoopOuterTriangle == null) {
-				this._status = 5;
-				return false;
-			}
-			var first = this._trianglePool;
-			if(first != null) {
-				this._trianglePool = first._next;
-				first._next = null;
-			} else {
-				first = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
-			}
-			var t = first;
-			if(firstT == null) {
-				firstT = t;
-			}
-			if(!t.init(v,v._tmpEdgeLoopNext,vertex,this._center,false)) {
-				this._status = 1;
-			}
-			if(this._status != 0) {
-				return false;
-			}
-			this._numTriangles++;
-			if(this._triangleList == null) {
-				this._triangleList = t;
-				this._triangleListLast = t;
-			} else {
-				this._triangleListLast._next = t;
-				t._prev = this._triangleListLast;
-				this._triangleListLast = t;
-			}
-			if(!t.setAdjacentTriangle(v._tmpEdgeLoopOuterTriangle)) {
-				this._status = 1;
-			}
-			if(prevT != null) {
-				if(!t.setAdjacentTriangle(prevT)) {
-					this._status = 1;
-				}
-			}
-			prevT = t;
-			v = v._tmpEdgeLoopNext;
-			if(!(v != firstV)) {
-				break;
-			}
-		}
-		if(!prevT.setAdjacentTriangle(firstT)) {
-			this._status = 1;
-		}
-		if(this._status == 0) {
-			return this.validate();
-		} else {
-			return false;
-		}
-	}
-	_dumpAsObjModel() {
-	}
-}
-oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState = class oimo_collision_narrowphase_detector_gjkepa_EpaPolyhedronState {
-}
-oimo.collision.narrowphase.detector.gjkepa.EpaTriangle = class oimo_collision_narrowphase_detector_gjkepa_EpaTriangle {
-	constructor() {
-		this.id = ++oimo.collision.narrowphase.detector.gjkepa.EpaTriangle.count;
-		this._next = null;
-		this._prev = null;
-		this._normal = new oimo.common.Vec3();
-		this._distanceSq = 0;
-		this._tmpDfsId = 0;
-		this._tmpDfsVisible = false;
-		var this1 = new Array(3);
-		this._vertices = this1;
-		var this2 = new Array(3);
-		this._adjacentTriangles = this2;
-		var this3 = new Array(3);
-		this._adjacentPairIndex = this3;
-		this.tmp = new oimo.common.Vec3();
-		var this4 = new Array(3);
-		this._nextIndex = this4;
-		this._nextIndex[0] = 1;
-		this._nextIndex[1] = 2;
-		this._nextIndex[2] = 0;
-	}
-	init(vertex1,vertex2,vertex3,center,autoCheck) {
-		if(autoCheck == null) {
-			autoCheck = false;
-		}
-		var v1;
-		var v1X;
-		var v1Y;
-		var v1Z;
-		var v2;
-		var v2X;
-		var v2Y;
-		var v2Z;
-		var v3;
-		var v3X;
-		var v3Y;
-		var v3Z;
-		var vc;
-		var vcX;
-		var vcY;
-		var vcZ;
-		var v = vertex1.v;
-		v1X = v.x;
-		v1Y = v.y;
-		v1Z = v.z;
-		var v4 = vertex2.v;
-		v2X = v4.x;
-		v2Y = v4.y;
-		v2Z = v4.z;
-		var v5 = vertex3.v;
-		v3X = v5.x;
-		v3Y = v5.y;
-		v3Z = v5.z;
-		var v6 = center;
-		vcX = v6.x;
-		vcY = v6.y;
-		vcZ = v6.z;
-		var v12;
-		var v12X;
-		var v12Y;
-		var v12Z;
-		var v13;
-		var v13X;
-		var v13Y;
-		var v13Z;
-		var vc1;
-		var vc1X;
-		var vc1Y;
-		var vc1Z;
-		v12X = v2X - v1X;
-		v12Y = v2Y - v1Y;
-		v12Z = v2Z - v1Z;
-		v13X = v3X - v1X;
-		v13Y = v3Y - v1Y;
-		v13Z = v3Z - v1Z;
-		vc1X = v1X - vcX;
-		vc1Y = v1Y - vcY;
-		vc1Z = v1Z - vcZ;
-		var inor;
-		var inorX;
-		var inorY;
-		var inorZ;
-		inorX = v12Y * v13Z - v12Z * v13Y;
-		inorY = v12Z * v13X - v12X * v13Z;
-		inorZ = v12X * v13Y - v12Y * v13X;
-		var inverted = false;
-		var d = vc1X * inorX + vc1Y * inorY + vc1Z * inorZ;
-		if(d < 0) {
-			if(autoCheck) {
-				var tmp = vertex2;
-				vertex2 = vertex3;
-				vertex3 = tmp;
-				inorX *= -1;
-				inorY *= -1;
-				inorZ *= -1;
-			} else {
-				inverted = true;
-			}
-		}
-		this._vertices[0] = vertex1;
-		this._vertices[1] = vertex2;
-		this._vertices[2] = vertex3;
-		var v7 = this._normal;
-		v7.x = inorX;
-		v7.y = inorY;
-		v7.z = inorZ;
-		var vec1 = vertex1.v;
-		var vec2 = vertex2.v;
-		var vec3 = vertex3.v;
-		var out = this.tmp;
-		var v11;
-		var v1X1;
-		var v1Y1;
-		var v1Z1;
-		var v21;
-		var v2X1;
-		var v2Y1;
-		var v2Z1;
-		var v31;
-		var v3X1;
-		var v3Y1;
-		var v3Z1;
-		var v121;
-		var v12X1;
-		var v12Y1;
-		var v12Z1;
-		var v23;
-		var v23X;
-		var v23Y;
-		var v23Z;
-		var v311;
-		var v31X;
-		var v31Y;
-		var v31Z;
-		var v8 = vec1;
-		v1X1 = v8.x;
-		v1Y1 = v8.y;
-		v1Z1 = v8.z;
-		var v9 = vec2;
-		v2X1 = v9.x;
-		v2Y1 = v9.y;
-		v2Z1 = v9.z;
-		var v10 = vec3;
-		v3X1 = v10.x;
-		v3Y1 = v10.y;
-		v3Z1 = v10.z;
-		v12X1 = v2X1 - v1X1;
-		v12Y1 = v2Y1 - v1Y1;
-		v12Z1 = v2Z1 - v1Z1;
-		v23X = v3X1 - v2X1;
-		v23Y = v3Y1 - v2Y1;
-		v23Z = v3Z1 - v2Z1;
-		v31X = v1X1 - v3X1;
-		v31Y = v1Y1 - v3Y1;
-		v31Z = v1Z1 - v3Z1;
-		var n;
-		var nX;
-		var nY;
-		var nZ;
-		nX = v12Y1 * v23Z - v12Z1 * v23Y;
-		nY = v12Z1 * v23X - v12X1 * v23Z;
-		nZ = v12X1 * v23Y - v12Y1 * v23X;
-		var n12;
-		var n12X;
-		var n12Y;
-		var n12Z;
-		var n23;
-		var n23X;
-		var n23Y;
-		var n23Z;
-		var n31;
-		var n31X;
-		var n31Y;
-		var n31Z;
-		n12X = v12Y1 * nZ - v12Z1 * nY;
-		n12Y = v12Z1 * nX - v12X1 * nZ;
-		n12Z = v12X1 * nY - v12Y1 * nX;
-		n23X = v23Y * nZ - v23Z * nY;
-		n23Y = v23Z * nX - v23X * nZ;
-		n23Z = v23X * nY - v23Y * nX;
-		n31X = v31Y * nZ - v31Z * nY;
-		n31Y = v31Z * nX - v31X * nZ;
-		n31Z = v31X * nY - v31Y * nX;
-		var d12 = v1X1 * n12X + v1Y1 * n12Y + v1Z1 * n12Z;
-		var d23 = v2X1 * n23X + v2Y1 * n23Y + v2Z1 * n23Z;
-		var d31 = v3X1 * n31X + v3Y1 * n31Y + v3Z1 * n31Z;
-		var mind = -1;
-		var minv;
-		var minvX;
-		var minvY;
-		var minvZ;
-		var mini = 0;
-		minvX = 0;
-		minvY = 0;
-		minvZ = 0;
-		if(d12 < 0) {
-			var v14;
-			var v1X2;
-			var v1Y2;
-			var v1Z2;
-			var v22;
-			var v2X2;
-			var v2Y2;
-			var v2Z2;
-			var v15 = vec1;
-			v1X2 = v15.x;
-			v1Y2 = v15.y;
-			v1Z2 = v15.z;
-			var v16 = vec2;
-			v2X2 = v16.x;
-			v2Y2 = v16.y;
-			v2Z2 = v16.z;
-			var v122;
-			var v12X2;
-			var v12Y2;
-			var v12Z2;
-			v12X2 = v2X2 - v1X2;
-			v12Y2 = v2Y2 - v1Y2;
-			v12Z2 = v2Z2 - v1Z2;
-			var d1 = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
-			var t = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
-			t = -t / d1;
-			var b;
-			if(t < 0) {
-				var v17 = out;
-				v17.x = v1X2;
-				v17.y = v1Y2;
-				v17.z = v1Z2;
-				b = 1;
-			} else if(t > 1) {
-				var v18 = out;
-				v18.x = v2X2;
-				v18.y = v2Y2;
-				v18.z = v2Z2;
-				b = 2;
-			} else {
-				var p;
-				var pX;
-				var pY;
-				var pZ;
-				pX = v1X2 + v12X2 * t;
-				pY = v1Y2 + v12Y2 * t;
-				pZ = v1Z2 + v12Z2 * t;
-				var v19 = out;
-				v19.x = pX;
-				v19.y = pY;
-				v19.z = pZ;
-				b = 3;
-			}
-			var d2 = out.x * out.x + out.y * out.y + out.z * out.z;
-			mini = b;
-			mind = d2;
-			var v20 = out;
-			minvX = v20.x;
-			minvY = v20.y;
-			minvZ = v20.z;
-		}
-		if(d23 < 0) {
-			var v110;
-			var v1X3;
-			var v1Y3;
-			var v1Z3;
-			var v24;
-			var v2X3;
-			var v2Y3;
-			var v2Z3;
-			var v25 = vec2;
-			v1X3 = v25.x;
-			v1Y3 = v25.y;
-			v1Z3 = v25.z;
-			var v26 = vec3;
-			v2X3 = v26.x;
-			v2Y3 = v26.y;
-			v2Z3 = v26.z;
-			var v123;
-			var v12X3;
-			var v12Y3;
-			var v12Z3;
-			v12X3 = v2X3 - v1X3;
-			v12Y3 = v2Y3 - v1Y3;
-			v12Z3 = v2Z3 - v1Z3;
-			var d3 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
-			var t1 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
-			t1 = -t1 / d3;
-			var b1;
-			if(t1 < 0) {
-				var v27 = out;
-				v27.x = v1X3;
-				v27.y = v1Y3;
-				v27.z = v1Z3;
-				b1 = 1;
-			} else if(t1 > 1) {
-				var v28 = out;
-				v28.x = v2X3;
-				v28.y = v2Y3;
-				v28.z = v2Z3;
-				b1 = 2;
-			} else {
-				var p1;
-				var pX1;
-				var pY1;
-				var pZ1;
-				pX1 = v1X3 + v12X3 * t1;
-				pY1 = v1Y3 + v12Y3 * t1;
-				pZ1 = v1Z3 + v12Z3 * t1;
-				var v29 = out;
-				v29.x = pX1;
-				v29.y = pY1;
-				v29.z = pZ1;
-				b1 = 3;
-			}
-			var d4 = out.x * out.x + out.y * out.y + out.z * out.z;
-			if(mind < 0 || d4 < mind) {
-				mini = b1 << 1;
-				mind = d4;
-				var v30 = out;
-				minvX = v30.x;
-				minvY = v30.y;
-				minvZ = v30.z;
-			}
-		}
-		if(d31 < 0) {
-			var v111;
-			var v1X4;
-			var v1Y4;
-			var v1Z4;
-			var v210;
-			var v2X4;
-			var v2Y4;
-			var v2Z4;
-			var v32 = vec1;
-			v1X4 = v32.x;
-			v1Y4 = v32.y;
-			v1Z4 = v32.z;
-			var v33 = vec3;
-			v2X4 = v33.x;
-			v2Y4 = v33.y;
-			v2Z4 = v33.z;
-			var v124;
-			var v12X4;
-			var v12Y4;
-			var v12Z4;
-			v12X4 = v2X4 - v1X4;
-			v12Y4 = v2Y4 - v1Y4;
-			v12Z4 = v2Z4 - v1Z4;
-			var d5 = v12X4 * v12X4 + v12Y4 * v12Y4 + v12Z4 * v12Z4;
-			var t2 = v12X4 * v1X4 + v12Y4 * v1Y4 + v12Z4 * v1Z4;
-			t2 = -t2 / d5;
-			var b2;
-			if(t2 < 0) {
-				var v34 = out;
-				v34.x = v1X4;
-				v34.y = v1Y4;
-				v34.z = v1Z4;
-				b2 = 1;
-			} else if(t2 > 1) {
-				var v35 = out;
-				v35.x = v2X4;
-				v35.y = v2Y4;
-				v35.z = v2Z4;
-				b2 = 2;
-			} else {
-				var p2;
-				var pX2;
-				var pY2;
-				var pZ2;
-				pX2 = v1X4 + v12X4 * t2;
-				pY2 = v1Y4 + v12Y4 * t2;
-				pZ2 = v1Z4 + v12Z4 * t2;
-				var v36 = out;
-				v36.x = pX2;
-				v36.y = pY2;
-				v36.z = pZ2;
-				b2 = 3;
-			}
-			var d6 = out.x * out.x + out.y * out.y + out.z * out.z;
-			if(mind < 0 || d6 < mind) {
-				mini = b2 & 1 | (b2 & 2) << 1;
-				mind = d6;
-				var v37 = out;
-				minvX = v37.x;
-				minvY = v37.y;
-				minvZ = v37.z;
-			}
-		}
-		if(mind > 0) {
-			var v38 = out;
-			v38.x = minvX;
-			v38.y = minvY;
-			v38.z = minvZ;
-		} else {
-			var l = nX * nX + nY * nY + nZ * nZ;
-			if(l > 0) {
-				l = 1 / Math.sqrt(l);
-			}
-			nX *= l;
-			nY *= l;
-			nZ *= l;
-			var dn = v1X1 * nX + v1Y1 * nY + v1Z1 * nZ;
-			var l2 = nX * nX + nY * nY + nZ * nZ;
-			l2 = dn / l2;
-			minvX = nX * l2;
-			minvY = nY * l2;
-			minvZ = nZ * l2;
-			var v39 = out;
-			v39.x = minvX;
-			v39.y = minvY;
-			v39.z = minvZ;
-		}
-		var _this = this.tmp;
-		this._distanceSq = _this.x * _this.x + _this.y * _this.y + _this.z * _this.z;
-		this._adjacentTriangles[0] = null;
-		this._adjacentTriangles[1] = null;
-		this._adjacentTriangles[2] = null;
-		this._adjacentPairIndex[0] = -1;
-		this._adjacentPairIndex[1] = -1;
-		this._adjacentPairIndex[2] = -1;
-		return !inverted;
-	}
-	setAdjacentTriangle(triangle) {
-		var count = 0;
-		var i2 = this._nextIndex[0];
-		var j2 = this._nextIndex[0];
-		if(this._vertices[0] == triangle._vertices[j2] && this._vertices[i2] == triangle._vertices[0]) {
-			this._adjacentTriangles[0] = triangle;
-			this._adjacentPairIndex[0] = 0;
-			triangle._adjacentTriangles[0] = this;
-			triangle._adjacentPairIndex[0] = 0;
-			++count;
-		}
-		var i21 = this._nextIndex[0];
-		var j21 = this._nextIndex[1];
-		if(this._vertices[0] == triangle._vertices[j21] && this._vertices[i21] == triangle._vertices[1]) {
-			this._adjacentTriangles[0] = triangle;
-			this._adjacentPairIndex[0] = 1;
-			triangle._adjacentTriangles[1] = this;
-			triangle._adjacentPairIndex[1] = 0;
-			++count;
-		}
-		var i22 = this._nextIndex[0];
-		var j22 = this._nextIndex[2];
-		if(this._vertices[0] == triangle._vertices[j22] && this._vertices[i22] == triangle._vertices[2]) {
-			this._adjacentTriangles[0] = triangle;
-			this._adjacentPairIndex[0] = 2;
-			triangle._adjacentTriangles[2] = this;
-			triangle._adjacentPairIndex[2] = 0;
-			++count;
-		}
-		var i23 = this._nextIndex[1];
-		var j23 = this._nextIndex[0];
-		if(this._vertices[1] == triangle._vertices[j23] && this._vertices[i23] == triangle._vertices[0]) {
-			this._adjacentTriangles[1] = triangle;
-			this._adjacentPairIndex[1] = 0;
-			triangle._adjacentTriangles[0] = this;
-			triangle._adjacentPairIndex[0] = 1;
-			++count;
-		}
-		var i24 = this._nextIndex[1];
-		var j24 = this._nextIndex[1];
-		if(this._vertices[1] == triangle._vertices[j24] && this._vertices[i24] == triangle._vertices[1]) {
-			this._adjacentTriangles[1] = triangle;
-			this._adjacentPairIndex[1] = 1;
-			triangle._adjacentTriangles[1] = this;
-			triangle._adjacentPairIndex[1] = 1;
-			++count;
-		}
-		var i25 = this._nextIndex[1];
-		var j25 = this._nextIndex[2];
-		if(this._vertices[1] == triangle._vertices[j25] && this._vertices[i25] == triangle._vertices[2]) {
-			this._adjacentTriangles[1] = triangle;
-			this._adjacentPairIndex[1] = 2;
-			triangle._adjacentTriangles[2] = this;
-			triangle._adjacentPairIndex[2] = 1;
-			++count;
-		}
-		var i26 = this._nextIndex[2];
-		var j26 = this._nextIndex[0];
-		if(this._vertices[2] == triangle._vertices[j26] && this._vertices[i26] == triangle._vertices[0]) {
-			this._adjacentTriangles[2] = triangle;
-			this._adjacentPairIndex[2] = 0;
-			triangle._adjacentTriangles[0] = this;
-			triangle._adjacentPairIndex[0] = 2;
-			++count;
-		}
-		var i27 = this._nextIndex[2];
-		var j27 = this._nextIndex[1];
-		if(this._vertices[2] == triangle._vertices[j27] && this._vertices[i27] == triangle._vertices[1]) {
-			this._adjacentTriangles[2] = triangle;
-			this._adjacentPairIndex[2] = 1;
-			triangle._adjacentTriangles[1] = this;
-			triangle._adjacentPairIndex[1] = 2;
-			++count;
-		}
-		var i28 = this._nextIndex[2];
-		var j28 = this._nextIndex[2];
-		if(this._vertices[2] == triangle._vertices[j28] && this._vertices[i28] == triangle._vertices[2]) {
-			this._adjacentTriangles[2] = triangle;
-			this._adjacentPairIndex[2] = 2;
-			triangle._adjacentTriangles[2] = this;
-			triangle._adjacentPairIndex[2] = 2;
-			++count;
-		}
-		if(count != 1) {
-			return false;
-		}
-		return true;
-	}
-	removeAdjacentTriangles() {
-		var triangle = this._adjacentTriangles[0];
-		if(triangle != null) {
-			var pairIndex = this._adjacentPairIndex[0];
-			triangle._adjacentTriangles[pairIndex] = null;
-			triangle._adjacentPairIndex[pairIndex] = -1;
-			this._adjacentTriangles[0] = null;
-			this._adjacentPairIndex[0] = -1;
-		}
-		var triangle1 = this._adjacentTriangles[1];
-		if(triangle1 != null) {
-			var pairIndex1 = this._adjacentPairIndex[1];
-			triangle1._adjacentTriangles[pairIndex1] = null;
-			triangle1._adjacentPairIndex[pairIndex1] = -1;
-			this._adjacentTriangles[1] = null;
-			this._adjacentPairIndex[1] = -1;
-		}
-		var triangle2 = this._adjacentTriangles[2];
-		if(triangle2 != null) {
-			var pairIndex2 = this._adjacentPairIndex[2];
-			triangle2._adjacentTriangles[pairIndex2] = null;
-			triangle2._adjacentPairIndex[pairIndex2] = -1;
-			this._adjacentTriangles[2] = null;
-			this._adjacentPairIndex[2] = -1;
-		}
-	}
-	removeReferences() {
-		this._next = null;
-		this._prev = null;
-		this._tmpDfsId = 0;
-		this._tmpDfsVisible = false;
-		this._distanceSq = 0;
-		this._vertices[0] = null;
-		this._vertices[1] = null;
-		this._vertices[2] = null;
-		this._adjacentTriangles[0] = null;
-		this._adjacentTriangles[1] = null;
-		this._adjacentTriangles[2] = null;
-		this._adjacentPairIndex[0] = 0;
-		this._adjacentPairIndex[1] = 0;
-		this._adjacentPairIndex[2] = 0;
-	}
-	dump() {
-	}
-}
-oimo.collision.narrowphase.detector.gjkepa.EpaVertex = class oimo_collision_narrowphase_detector_gjkepa_EpaVertex {
-	constructor() {
-		this.randId = Math.random() * 100000 | 0;
-		this.v = new oimo.common.Vec3();
-		this.w1 = new oimo.common.Vec3();
-		this.w2 = new oimo.common.Vec3();
-	}
-	init(v,w1,w2) {
-		var _this = this.v;
-		_this.x = v.x;
-		_this.y = v.y;
-		_this.z = v.z;
-		var _this1 = this.w1;
-		_this1.x = w1.x;
-		_this1.y = w1.y;
-		_this1.z = w1.z;
-		var _this2 = this.w2;
-		_this2.x = w2.x;
-		_this2.y = w2.y;
-		_this2.z = w2.z;
-		this._next = null;
-		this._tmpEdgeLoopNext = null;
-		this._tmpEdgeLoopOuterTriangle = null;
-		return this;
-	}
-	removeReferences() {
-		this._next = null;
-		this._tmpEdgeLoopNext = null;
-		this._tmpEdgeLoopOuterTriangle = null;
-	}
-}
-oimo.collision.narrowphase.detector.gjkepa.GjkCache = class oimo_collision_narrowphase_detector_gjkepa_GjkCache {
-	constructor() {
-		this.prevClosestDir = new oimo.common.Vec3();
-	}
-	clear() {
-		this.prevClosestDir.zero();
-	}
-}
-if(!oimo.common) oimo.common = {};
-oimo.common.Vec3 = class oimo_common_Vec3 {
-	constructor(x,y,z) {
-		if(z == null) {
-			z = 0;
-		}
-		if(y == null) {
-			y = 0;
-		}
-		if(x == null) {
-			x = 0;
-		}
-		this.x = x;
-		this.y = y;
-		this.z = z;
-		oimo.common.Vec3.numCreations++;
-	}
-	init(x,y,z) {
-		this.x = x;
-		this.y = y;
-		this.z = z;
-		return this;
-	}
-	zero() {
-		var tx = 0;
-		var ty = 0;
-		var tz = 0;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	add(v) {
-		return new oimo.common.Vec3(this.x + v.x,this.y + v.y,this.z + v.z);
-	}
-	add3(vx,vy,vz) {
-		return new oimo.common.Vec3(this.x + vx,this.y + vy,this.z + vz);
-	}
-	addScaled(v,s) {
-		return new oimo.common.Vec3(this.x + v.x * s,this.y + v.y * s,this.z + v.z * s);
-	}
-	sub(v) {
-		return new oimo.common.Vec3(this.x - v.x,this.y - v.y,this.z - v.z);
-	}
-	sub3(vx,vy,vz) {
-		return new oimo.common.Vec3(this.x - vx,this.y - vy,this.z - vz);
-	}
-	scale(s) {
-		return new oimo.common.Vec3(this.x * s,this.y * s,this.z * s);
-	}
-	scale3(sx,sy,sz) {
-		return new oimo.common.Vec3(this.x * sx,this.y * sy,this.z * sz);
-	}
-	dot(v) {
-		return this.x * v.x + this.y * v.y + this.z * v.z;
-	}
-	cross(v) {
-		return new oimo.common.Vec3(this.y * v.z - this.z * v.y,this.z * v.x - this.x * v.z,this.x * v.y - this.y * v.x);
-	}
-	addEq(v) {
-		var tx = this.x + v.x;
-		var ty = this.y + v.y;
-		var tz = this.z + v.z;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	add3Eq(vx,vy,vz) {
-		var tx = this.x + vx;
-		var ty = this.y + vy;
-		var tz = this.z + vz;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	addScaledEq(v,s) {
-		var tx = this.x + v.x * s;
-		var ty = this.y + v.y * s;
-		var tz = this.z + v.z * s;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	subEq(v) {
-		var tx = this.x - v.x;
-		var ty = this.y - v.y;
-		var tz = this.z - v.z;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	sub3Eq(vx,vy,vz) {
-		var tx = this.x - vx;
-		var ty = this.y - vy;
-		var tz = this.z - vz;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	scaleEq(s) {
-		var tx = this.x * s;
-		var ty = this.y * s;
-		var tz = this.z * s;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	scale3Eq(sx,sy,sz) {
-		var tx = this.x * sx;
-		var ty = this.y * sy;
-		var tz = this.z * sz;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	crossEq(v) {
-		var tx = this.y * v.z - this.z * v.y;
-		var ty = this.z * v.x - this.x * v.z;
-		var tz = this.x * v.y - this.y * v.x;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	mulMat3(m) {
-		return new oimo.common.Vec3(this.x * m.e00 + this.y * m.e01 + this.z * m.e02,this.x * m.e10 + this.y * m.e11 + this.z * m.e12,this.x * m.e20 + this.y * m.e21 + this.z * m.e22);
-	}
-	mulMat4(m) {
-		return new oimo.common.Vec3(this.x * m.e00 + this.y * m.e01 + this.z * m.e02 + m.e03,this.x * m.e10 + this.y * m.e11 + this.z * m.e12 + m.e13,this.x * m.e20 + this.y * m.e21 + this.z * m.e22 + m.e23);
-	}
-	mulTransform(tf) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = this;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = tf._rotation00 * vX + tf._rotation01 * vY + tf._rotation02 * vZ;
-		__tmp__Y = tf._rotation10 * vX + tf._rotation11 * vY + tf._rotation12 * vZ;
-		__tmp__Z = tf._rotation20 * vX + tf._rotation21 * vY + tf._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		vX += tf._positionX;
-		vY += tf._positionY;
-		vZ += tf._positionZ;
-		var res = new oimo.common.Vec3();
-		var v2 = res;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		return res;
-	}
-	mulMat3Eq(m) {
-		var tx = this.x * m.e00 + this.y * m.e01 + this.z * m.e02;
-		var ty = this.x * m.e10 + this.y * m.e11 + this.z * m.e12;
-		var tz = this.x * m.e20 + this.y * m.e21 + this.z * m.e22;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	mulMat4Eq(m) {
-		var tx = this.x * m.e00 + this.y * m.e01 + this.z * m.e02 + m.e03;
-		var ty = this.x * m.e10 + this.y * m.e11 + this.z * m.e12 + m.e13;
-		var tz = this.x * m.e20 + this.y * m.e21 + this.z * m.e22 + m.e23;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	mulTransformEq(tf) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = this;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = tf._rotation00 * vX + tf._rotation01 * vY + tf._rotation02 * vZ;
-		__tmp__Y = tf._rotation10 * vX + tf._rotation11 * vY + tf._rotation12 * vZ;
-		__tmp__Z = tf._rotation20 * vX + tf._rotation21 * vY + tf._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		vX += tf._positionX;
-		vY += tf._positionY;
-		vZ += tf._positionZ;
-		var v2 = this;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		return this;
-	}
-	length() {
-		return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
-	}
-	lengthSq() {
-		return this.x * this.x + this.y * this.y + this.z * this.z;
-	}
-	normalized() {
-		var invLen = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
-		if(invLen > 0) {
-			invLen = 1 / invLen;
-		}
-		return new oimo.common.Vec3(this.x * invLen,this.y * invLen,this.z * invLen);
-	}
-	normalize() {
-		var invLen = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
-		if(invLen > 0) {
-			invLen = 1 / invLen;
-		}
-		var tx = this.x * invLen;
-		var ty = this.y * invLen;
-		var tz = this.z * invLen;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	negate() {
-		return new oimo.common.Vec3(-this.x,-this.y,-this.z);
-	}
-	negateEq() {
-		var tx = -this.x;
-		var ty = -this.y;
-		var tz = -this.z;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		return this;
-	}
-	copyFrom(v) {
-		this.x = v.x;
-		this.y = v.y;
-		this.z = v.z;
-		return this;
-	}
-	clone() {
-		return new oimo.common.Vec3(this.x,this.y,this.z);
-	}
-	toString() {
-		return "Vec3[" + (this.x > 0 ? (this.x * 10000000 + 0.5 | 0) / 10000000 : (this.x * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.y > 0 ? (this.y * 10000000 + 0.5 | 0) / 10000000 : (this.y * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.z > 0 ? (this.z * 10000000 + 0.5 | 0) / 10000000 : (this.z * 10000000 - 0.5 | 0) / 10000000) + "]";
-	}
-}
-oimo.common.Transform = class oimo_common_Transform {
-	constructor() {
-		this._positionX = 0;
-		this._positionY = 0;
-		this._positionZ = 0;
-		this._rotation00 = 1;
-		this._rotation01 = 0;
-		this._rotation02 = 0;
-		this._rotation10 = 0;
-		this._rotation11 = 1;
-		this._rotation12 = 0;
-		this._rotation20 = 0;
-		this._rotation21 = 0;
-		this._rotation22 = 1;
-	}
-	identity() {
-		this._positionX = 0;
-		this._positionY = 0;
-		this._positionZ = 0;
-		this._rotation00 = 1;
-		this._rotation01 = 0;
-		this._rotation02 = 0;
-		this._rotation10 = 0;
-		this._rotation11 = 1;
-		this._rotation12 = 0;
-		this._rotation20 = 0;
-		this._rotation21 = 0;
-		this._rotation22 = 1;
-		return this;
-	}
-	getPosition() {
-		var position = new oimo.common.Vec3();
-		var v = position;
-		v.x = this._positionX;
-		v.y = this._positionY;
-		v.z = this._positionZ;
-		return position;
-	}
-	getPositionTo(position) {
-		var v = position;
-		v.x = this._positionX;
-		v.y = this._positionY;
-		v.z = this._positionZ;
-	}
-	setPosition(position) {
-		var v = position;
-		this._positionX = v.x;
-		this._positionY = v.y;
-		this._positionZ = v.z;
-		return this;
-	}
-	translate(translation) {
-		var diff;
-		var diffX;
-		var diffY;
-		var diffZ;
-		var v = translation;
-		diffX = v.x;
-		diffY = v.y;
-		diffZ = v.z;
-		this._positionX += diffX;
-		this._positionY += diffY;
-		this._positionZ += diffZ;
-	}
-	getRotation() {
-		var rotation = new oimo.common.Mat3();
-		var m = rotation;
-		m.e00 = this._rotation00;
-		m.e01 = this._rotation01;
-		m.e02 = this._rotation02;
-		m.e10 = this._rotation10;
-		m.e11 = this._rotation11;
-		m.e12 = this._rotation12;
-		m.e20 = this._rotation20;
-		m.e21 = this._rotation21;
-		m.e22 = this._rotation22;
-		return rotation;
-	}
-	getRotationTo(out) {
-		var m = out;
-		m.e00 = this._rotation00;
-		m.e01 = this._rotation01;
-		m.e02 = this._rotation02;
-		m.e10 = this._rotation10;
-		m.e11 = this._rotation11;
-		m.e12 = this._rotation12;
-		m.e20 = this._rotation20;
-		m.e21 = this._rotation21;
-		m.e22 = this._rotation22;
-	}
-	setRotation(rotation) {
-		var m = rotation;
-		this._rotation00 = m.e00;
-		this._rotation01 = m.e01;
-		this._rotation02 = m.e02;
-		this._rotation10 = m.e10;
-		this._rotation11 = m.e11;
-		this._rotation12 = m.e12;
-		this._rotation20 = m.e20;
-		this._rotation21 = m.e21;
-		this._rotation22 = m.e22;
-		return this;
-	}
-	setRotationXyz(eulerAngles) {
-		var xyz;
-		var xyzX;
-		var xyzY;
-		var xyzZ;
-		var v = eulerAngles;
-		xyzX = v.x;
-		xyzY = v.y;
-		xyzZ = v.z;
-		var sx = Math.sin(xyzX);
-		var sy = Math.sin(xyzY);
-		var sz = Math.sin(xyzZ);
-		var cx = Math.cos(xyzX);
-		var cy = Math.cos(xyzY);
-		var cz = Math.cos(xyzZ);
-		this._rotation00 = cy * cz;
-		this._rotation01 = -cy * sz;
-		this._rotation02 = sy;
-		this._rotation10 = cx * sz + cz * sx * sy;
-		this._rotation11 = cx * cz - sx * sy * sz;
-		this._rotation12 = -cy * sx;
-		this._rotation20 = sx * sz - cx * cz * sy;
-		this._rotation21 = cz * sx + cx * sy * sz;
-		this._rotation22 = cx * cy;
-	}
-	rotate(rotation) {
-		var rot;
-		var rot00;
-		var rot01;
-		var rot02;
-		var rot10;
-		var rot11;
-		var rot12;
-		var rot20;
-		var rot21;
-		var rot22;
-		var m = rotation;
-		rot00 = m.e00;
-		rot01 = m.e01;
-		rot02 = m.e02;
-		rot10 = m.e10;
-		rot11 = m.e11;
-		rot12 = m.e12;
-		rot20 = m.e20;
-		rot21 = m.e21;
-		rot22 = m.e22;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = rot00 * this._rotation00 + rot01 * this._rotation10 + rot02 * this._rotation20;
-		__tmp__01 = rot00 * this._rotation01 + rot01 * this._rotation11 + rot02 * this._rotation21;
-		__tmp__02 = rot00 * this._rotation02 + rot01 * this._rotation12 + rot02 * this._rotation22;
-		__tmp__10 = rot10 * this._rotation00 + rot11 * this._rotation10 + rot12 * this._rotation20;
-		__tmp__11 = rot10 * this._rotation01 + rot11 * this._rotation11 + rot12 * this._rotation21;
-		__tmp__12 = rot10 * this._rotation02 + rot11 * this._rotation12 + rot12 * this._rotation22;
-		__tmp__20 = rot20 * this._rotation00 + rot21 * this._rotation10 + rot22 * this._rotation20;
-		__tmp__21 = rot20 * this._rotation01 + rot21 * this._rotation11 + rot22 * this._rotation21;
-		__tmp__22 = rot20 * this._rotation02 + rot21 * this._rotation12 + rot22 * this._rotation22;
-		this._rotation00 = __tmp__00;
-		this._rotation01 = __tmp__01;
-		this._rotation02 = __tmp__02;
-		this._rotation10 = __tmp__10;
-		this._rotation11 = __tmp__11;
-		this._rotation12 = __tmp__12;
-		this._rotation20 = __tmp__20;
-		this._rotation21 = __tmp__21;
-		this._rotation22 = __tmp__22;
-	}
-	rotateXyz(eulerAngles) {
-		var xyz;
-		var xyzX;
-		var xyzY;
-		var xyzZ;
-		var rot;
-		var rot00;
-		var rot01;
-		var rot02;
-		var rot10;
-		var rot11;
-		var rot12;
-		var rot20;
-		var rot21;
-		var rot22;
-		var v = eulerAngles;
-		xyzX = v.x;
-		xyzY = v.y;
-		xyzZ = v.z;
-		var sx = Math.sin(xyzX);
-		var sy = Math.sin(xyzY);
-		var sz = Math.sin(xyzZ);
-		var cx = Math.cos(xyzX);
-		var cy = Math.cos(xyzY);
-		var cz = Math.cos(xyzZ);
-		rot00 = cy * cz;
-		rot01 = -cy * sz;
-		rot02 = sy;
-		rot10 = cx * sz + cz * sx * sy;
-		rot11 = cx * cz - sx * sy * sz;
-		rot12 = -cy * sx;
-		rot20 = sx * sz - cx * cz * sy;
-		rot21 = cz * sx + cx * sy * sz;
-		rot22 = cx * cy;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = rot00 * this._rotation00 + rot01 * this._rotation10 + rot02 * this._rotation20;
-		__tmp__01 = rot00 * this._rotation01 + rot01 * this._rotation11 + rot02 * this._rotation21;
-		__tmp__02 = rot00 * this._rotation02 + rot01 * this._rotation12 + rot02 * this._rotation22;
-		__tmp__10 = rot10 * this._rotation00 + rot11 * this._rotation10 + rot12 * this._rotation20;
-		__tmp__11 = rot10 * this._rotation01 + rot11 * this._rotation11 + rot12 * this._rotation21;
-		__tmp__12 = rot10 * this._rotation02 + rot11 * this._rotation12 + rot12 * this._rotation22;
-		__tmp__20 = rot20 * this._rotation00 + rot21 * this._rotation10 + rot22 * this._rotation20;
-		__tmp__21 = rot20 * this._rotation01 + rot21 * this._rotation11 + rot22 * this._rotation21;
-		__tmp__22 = rot20 * this._rotation02 + rot21 * this._rotation12 + rot22 * this._rotation22;
-		this._rotation00 = __tmp__00;
-		this._rotation01 = __tmp__01;
-		this._rotation02 = __tmp__02;
-		this._rotation10 = __tmp__10;
-		this._rotation11 = __tmp__11;
-		this._rotation12 = __tmp__12;
-		this._rotation20 = __tmp__20;
-		this._rotation21 = __tmp__21;
-		this._rotation22 = __tmp__22;
-	}
-	getOrientation() {
-		var q = new oimo.common.Quat();
-		var iq;
-		var iqX;
-		var iqY;
-		var iqZ;
-		var iqW;
-		var e00 = this._rotation00;
-		var e11 = this._rotation11;
-		var e22 = this._rotation22;
-		var t = e00 + e11 + e22;
-		var s;
-		if(t > 0) {
-			s = Math.sqrt(t + 1);
-			iqW = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._rotation21 - this._rotation12) * s;
-			iqY = (this._rotation02 - this._rotation20) * s;
-			iqZ = (this._rotation10 - this._rotation01) * s;
-		} else if(e00 > e11) {
-			if(e00 > e22) {
-				s = Math.sqrt(e00 - e11 - e22 + 1);
-				iqX = 0.5 * s;
-				s = 0.5 / s;
-				iqY = (this._rotation01 + this._rotation10) * s;
-				iqZ = (this._rotation02 + this._rotation20) * s;
-				iqW = (this._rotation21 - this._rotation12) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				iqZ = 0.5 * s;
-				s = 0.5 / s;
-				iqX = (this._rotation02 + this._rotation20) * s;
-				iqY = (this._rotation12 + this._rotation21) * s;
-				iqW = (this._rotation10 - this._rotation01) * s;
-			}
-		} else if(e11 > e22) {
-			s = Math.sqrt(e11 - e22 - e00 + 1);
-			iqY = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._rotation01 + this._rotation10) * s;
-			iqZ = (this._rotation12 + this._rotation21) * s;
-			iqW = (this._rotation02 - this._rotation20) * s;
-		} else {
-			s = Math.sqrt(e22 - e00 - e11 + 1);
-			iqZ = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._rotation02 + this._rotation20) * s;
-			iqY = (this._rotation12 + this._rotation21) * s;
-			iqW = (this._rotation10 - this._rotation01) * s;
-		}
-		var q1 = q;
-		q1.x = iqX;
-		q1.y = iqY;
-		q1.z = iqZ;
-		q1.w = iqW;
-		return q;
-	}
-	getOrientationTo(orientation) {
-		var iq;
-		var iqX;
-		var iqY;
-		var iqZ;
-		var iqW;
-		var e00 = this._rotation00;
-		var e11 = this._rotation11;
-		var e22 = this._rotation22;
-		var t = e00 + e11 + e22;
-		var s;
-		if(t > 0) {
-			s = Math.sqrt(t + 1);
-			iqW = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._rotation21 - this._rotation12) * s;
-			iqY = (this._rotation02 - this._rotation20) * s;
-			iqZ = (this._rotation10 - this._rotation01) * s;
-		} else if(e00 > e11) {
-			if(e00 > e22) {
-				s = Math.sqrt(e00 - e11 - e22 + 1);
-				iqX = 0.5 * s;
-				s = 0.5 / s;
-				iqY = (this._rotation01 + this._rotation10) * s;
-				iqZ = (this._rotation02 + this._rotation20) * s;
-				iqW = (this._rotation21 - this._rotation12) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				iqZ = 0.5 * s;
-				s = 0.5 / s;
-				iqX = (this._rotation02 + this._rotation20) * s;
-				iqY = (this._rotation12 + this._rotation21) * s;
-				iqW = (this._rotation10 - this._rotation01) * s;
-			}
-		} else if(e11 > e22) {
-			s = Math.sqrt(e11 - e22 - e00 + 1);
-			iqY = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._rotation01 + this._rotation10) * s;
-			iqZ = (this._rotation12 + this._rotation21) * s;
-			iqW = (this._rotation02 - this._rotation20) * s;
-		} else {
-			s = Math.sqrt(e22 - e00 - e11 + 1);
-			iqZ = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._rotation02 + this._rotation20) * s;
-			iqY = (this._rotation12 + this._rotation21) * s;
-			iqW = (this._rotation10 - this._rotation01) * s;
-		}
-		var q = orientation;
-		q.x = iqX;
-		q.y = iqY;
-		q.z = iqZ;
-		q.w = iqW;
-	}
-	setOrientation(quaternion) {
-		var q;
-		var qX;
-		var qY;
-		var qZ;
-		var qW;
-		var q1 = quaternion;
-		qX = q1.x;
-		qY = q1.y;
-		qZ = q1.z;
-		qW = q1.w;
-		var x = qX;
-		var y = qY;
-		var z = qZ;
-		var w = qW;
-		var x2 = 2 * x;
-		var y2 = 2 * y;
-		var z2 = 2 * z;
-		var xx = x * x2;
-		var yy = y * y2;
-		var zz = z * z2;
-		var xy = x * y2;
-		var yz = y * z2;
-		var xz = x * z2;
-		var wx = w * x2;
-		var wy = w * y2;
-		var wz = w * z2;
-		this._rotation00 = 1 - yy - zz;
-		this._rotation01 = xy - wz;
-		this._rotation02 = xz + wy;
-		this._rotation10 = xy + wz;
-		this._rotation11 = 1 - xx - zz;
-		this._rotation12 = yz - wx;
-		this._rotation20 = xz - wy;
-		this._rotation21 = yz + wx;
-		this._rotation22 = 1 - xx - yy;
-		return this;
-	}
-	clone() {
-		var tf = new oimo.common.Transform();
-		tf._positionX = this._positionX;
-		tf._positionY = this._positionY;
-		tf._positionZ = this._positionZ;
-		tf._rotation00 = this._rotation00;
-		tf._rotation01 = this._rotation01;
-		tf._rotation02 = this._rotation02;
-		tf._rotation10 = this._rotation10;
-		tf._rotation11 = this._rotation11;
-		tf._rotation12 = this._rotation12;
-		tf._rotation20 = this._rotation20;
-		tf._rotation21 = this._rotation21;
-		tf._rotation22 = this._rotation22;
-		return tf;
-	}
-	copyFrom(transform) {
-		this._positionX = transform._positionX;
-		this._positionY = transform._positionY;
-		this._positionZ = transform._positionZ;
-		this._rotation00 = transform._rotation00;
-		this._rotation01 = transform._rotation01;
-		this._rotation02 = transform._rotation02;
-		this._rotation10 = transform._rotation10;
-		this._rotation11 = transform._rotation11;
-		this._rotation12 = transform._rotation12;
-		this._rotation20 = transform._rotation20;
-		this._rotation21 = transform._rotation21;
-		this._rotation22 = transform._rotation22;
-		return this;
-	}
-}
-oimo.common.Setting = class oimo_common_Setting {
-}
-oimo.collision.narrowphase.detector.gjkepa.GjkEpa = class oimo_collision_narrowphase_detector_gjkepa_GjkEpa {
-	constructor() {
-		var this1 = new Array(4);
-		this.s = this1;
-		var this2 = new Array(4);
-		this.w1 = this2;
-		var this3 = new Array(4);
-		this.w2 = this3;
-		var this4 = new Array(3);
-		this.baseDirs = this4;
-		this.baseDirs[0] = new oimo.common.Vec3(1,0,0);
-		this.baseDirs[1] = new oimo.common.Vec3(0,1,0);
-		this.baseDirs[2] = new oimo.common.Vec3(0,0,1);
-		this.tl1 = new oimo.common.Vec3();
-		this.tl2 = new oimo.common.Vec3();
-		this.rayX = new oimo.common.Vec3();
-		this.rayR = new oimo.common.Vec3();
-		this.tempTransform = new oimo.common.Transform();
-		this.s[0] = new oimo.common.Vec3();
-		this.w1[0] = new oimo.common.Vec3();
-		this.w2[0] = new oimo.common.Vec3();
-		this.s[1] = new oimo.common.Vec3();
-		this.w1[1] = new oimo.common.Vec3();
-		this.w2[1] = new oimo.common.Vec3();
-		this.s[2] = new oimo.common.Vec3();
-		this.w1[2] = new oimo.common.Vec3();
-		this.w2[2] = new oimo.common.Vec3();
-		this.s[3] = new oimo.common.Vec3();
-		this.w1[3] = new oimo.common.Vec3();
-		this.w2[3] = new oimo.common.Vec3();
-		this.dir = new oimo.common.Vec3();
-		this.closest = new oimo.common.Vec3();
-		this.closestPoint1 = new oimo.common.Vec3();
-		this.closestPoint2 = new oimo.common.Vec3();
-		this.polyhedron = new oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedron();
-	}
-	computeClosestPointsImpl(c1,c2,tf1,tf2,cache,useEpa) {
-		this.c1 = c1;
-		this.c2 = c2;
-		this.tf1 = tf1;
-		this.tf2 = tf2;
-		var s = this.s;
-		var w1 = this.w1;
-		var w2 = this.w2;
-		var closest = this.closest;
-		var dir = this.dir;
-		if(cache != null) {
-			if(cache._gjkCache == null) {
-				cache._gjkCache = new oimo.collision.narrowphase.detector.gjkepa.GjkCache();
-			}
-			this.loadCache(cache._gjkCache);
-		} else {
-			dir.zero();
-		}
-		if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z == 0) {
-			var firstDir;
-			var firstDirX;
-			var firstDirY;
-			var firstDirZ;
-			firstDirX = tf2._positionX - tf1._positionX;
-			firstDirY = tf2._positionY - tf1._positionY;
-			firstDirZ = tf2._positionZ - tf1._positionZ;
-			var v = dir;
-			v.x = firstDirX;
-			v.y = firstDirY;
-			v.z = firstDirZ;
-			if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z < 1e-6) {
-				dir.init(1,0,0);
-			}
-		}
-		this.simplexSize = 0;
-		this.computeWitnessPoint1(false);
-		this.computeWitnessPoint2(false);
-		var _this = this.s[this.simplexSize];
-		var v1 = this.w1[this.simplexSize];
-		_this.x = v1.x;
-		_this.y = v1.y;
-		_this.z = v1.z;
-		var _this1 = _this;
-		var v2 = this.w2[this.simplexSize];
-		var tx = _this1.x - v2.x;
-		var ty = _this1.y - v2.y;
-		var tz = _this1.z - v2.z;
-		_this1.x = tx;
-		_this1.y = ty;
-		_this1.z = tz;
-		this.simplexSize = 1;
-		var count = 0;
-		var max = 40;
-		var eps = 1e-4;
-		var eps2 = eps * eps;
-		while(count < max) {
-			var v3 = 0;
-			switch(this.simplexSize) {
-			case 1:
-				var v4 = s[0];
-				closest.x = v4.x;
-				closest.y = v4.y;
-				closest.z = v4.z;
-				v3 = 1;
-				break;
-			case 2:
-				var v11;
-				var v1X;
-				var v1Y;
-				var v1Z;
-				var v21;
-				var v2X;
-				var v2Y;
-				var v2Z;
-				var v5 = s[0];
-				v1X = v5.x;
-				v1Y = v5.y;
-				v1Z = v5.z;
-				var v6 = s[1];
-				v2X = v6.x;
-				v2Y = v6.y;
-				v2Z = v6.z;
-				var v12;
-				var v12X;
-				var v12Y;
-				var v12Z;
-				v12X = v2X - v1X;
-				v12Y = v2Y - v1Y;
-				v12Z = v2Z - v1Z;
-				var d = v12X * v12X + v12Y * v12Y + v12Z * v12Z;
-				var t = v12X * v1X + v12Y * v1Y + v12Z * v1Z;
-				t = -t / d;
-				if(t < 0) {
-					var v7 = closest;
-					v7.x = v1X;
-					v7.y = v1Y;
-					v7.z = v1Z;
-					v3 = 1;
-				} else if(t > 1) {
-					var v8 = closest;
-					v8.x = v2X;
-					v8.y = v2Y;
-					v8.z = v2Z;
-					v3 = 2;
-				} else {
-					var p;
-					var pX;
-					var pY;
-					var pZ;
-					pX = v1X + v12X * t;
-					pY = v1Y + v12Y * t;
-					pZ = v1Z + v12Z * t;
-					var v9 = closest;
-					v9.x = pX;
-					v9.y = pY;
-					v9.z = pZ;
-					v3 = 3;
-				}
-				break;
-			case 3:
-				var vec1 = s[0];
-				var vec2 = s[1];
-				var vec3 = s[2];
-				var v13;
-				var v1X1;
-				var v1Y1;
-				var v1Z1;
-				var v22;
-				var v2X1;
-				var v2Y1;
-				var v2Z1;
-				var v31;
-				var v3X;
-				var v3Y;
-				var v3Z;
-				var v121;
-				var v12X1;
-				var v12Y1;
-				var v12Z1;
-				var v23;
-				var v23X;
-				var v23Y;
-				var v23Z;
-				var v311;
-				var v31X;
-				var v31Y;
-				var v31Z;
-				var v10 = vec1;
-				v1X1 = v10.x;
-				v1Y1 = v10.y;
-				v1Z1 = v10.z;
-				var v14 = vec2;
-				v2X1 = v14.x;
-				v2Y1 = v14.y;
-				v2Z1 = v14.z;
-				var v15 = vec3;
-				v3X = v15.x;
-				v3Y = v15.y;
-				v3Z = v15.z;
-				v12X1 = v2X1 - v1X1;
-				v12Y1 = v2Y1 - v1Y1;
-				v12Z1 = v2Z1 - v1Z1;
-				v23X = v3X - v2X1;
-				v23Y = v3Y - v2Y1;
-				v23Z = v3Z - v2Z1;
-				v31X = v1X1 - v3X;
-				v31Y = v1Y1 - v3Y;
-				v31Z = v1Z1 - v3Z;
-				var n;
-				var nX;
-				var nY;
-				var nZ;
-				nX = v12Y1 * v23Z - v12Z1 * v23Y;
-				nY = v12Z1 * v23X - v12X1 * v23Z;
-				nZ = v12X1 * v23Y - v12Y1 * v23X;
-				var n12;
-				var n12X;
-				var n12Y;
-				var n12Z;
-				var n23;
-				var n23X;
-				var n23Y;
-				var n23Z;
-				var n31;
-				var n31X;
-				var n31Y;
-				var n31Z;
-				n12X = v12Y1 * nZ - v12Z1 * nY;
-				n12Y = v12Z1 * nX - v12X1 * nZ;
-				n12Z = v12X1 * nY - v12Y1 * nX;
-				n23X = v23Y * nZ - v23Z * nY;
-				n23Y = v23Z * nX - v23X * nZ;
-				n23Z = v23X * nY - v23Y * nX;
-				n31X = v31Y * nZ - v31Z * nY;
-				n31Y = v31Z * nX - v31X * nZ;
-				n31Z = v31X * nY - v31Y * nX;
-				var d12 = v1X1 * n12X + v1Y1 * n12Y + v1Z1 * n12Z;
-				var d23 = v2X1 * n23X + v2Y1 * n23Y + v2Z1 * n23Z;
-				var d31 = v3X * n31X + v3Y * n31Y + v3Z * n31Z;
-				var mind = -1;
-				var minv;
-				var minvX;
-				var minvY;
-				var minvZ;
-				var mini = 0;
-				minvX = 0;
-				minvY = 0;
-				minvZ = 0;
-				if(d12 < 0) {
-					var v16;
-					var v1X2;
-					var v1Y2;
-					var v1Z2;
-					var v24;
-					var v2X2;
-					var v2Y2;
-					var v2Z2;
-					var v17 = vec1;
-					v1X2 = v17.x;
-					v1Y2 = v17.y;
-					v1Z2 = v17.z;
-					var v18 = vec2;
-					v2X2 = v18.x;
-					v2Y2 = v18.y;
-					v2Z2 = v18.z;
-					var v122;
-					var v12X2;
-					var v12Y2;
-					var v12Z2;
-					v12X2 = v2X2 - v1X2;
-					v12Y2 = v2Y2 - v1Y2;
-					v12Z2 = v2Z2 - v1Z2;
-					var d1 = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
-					var t1 = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
-					t1 = -t1 / d1;
-					var b;
-					if(t1 < 0) {
-						var v19 = closest;
-						v19.x = v1X2;
-						v19.y = v1Y2;
-						v19.z = v1Z2;
-						b = 1;
-					} else if(t1 > 1) {
-						var v20 = closest;
-						v20.x = v2X2;
-						v20.y = v2Y2;
-						v20.z = v2Z2;
-						b = 2;
-					} else {
-						var p1;
-						var pX1;
-						var pY1;
-						var pZ1;
-						pX1 = v1X2 + v12X2 * t1;
-						pY1 = v1Y2 + v12Y2 * t1;
-						pZ1 = v1Z2 + v12Z2 * t1;
-						var v25 = closest;
-						v25.x = pX1;
-						v25.y = pY1;
-						v25.z = pZ1;
-						b = 3;
-					}
-					var d2 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					mini = b;
-					mind = d2;
-					var v26 = closest;
-					minvX = v26.x;
-					minvY = v26.y;
-					minvZ = v26.z;
-				}
-				if(d23 < 0) {
-					var v110;
-					var v1X3;
-					var v1Y3;
-					var v1Z3;
-					var v27;
-					var v2X3;
-					var v2Y3;
-					var v2Z3;
-					var v28 = vec2;
-					v1X3 = v28.x;
-					v1Y3 = v28.y;
-					v1Z3 = v28.z;
-					var v29 = vec3;
-					v2X3 = v29.x;
-					v2Y3 = v29.y;
-					v2Z3 = v29.z;
-					var v123;
-					var v12X3;
-					var v12Y3;
-					var v12Z3;
-					v12X3 = v2X3 - v1X3;
-					v12Y3 = v2Y3 - v1Y3;
-					v12Z3 = v2Z3 - v1Z3;
-					var d3 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
-					var t2 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
-					t2 = -t2 / d3;
-					var b1;
-					if(t2 < 0) {
-						var v30 = closest;
-						v30.x = v1X3;
-						v30.y = v1Y3;
-						v30.z = v1Z3;
-						b1 = 1;
-					} else if(t2 > 1) {
-						var v32 = closest;
-						v32.x = v2X3;
-						v32.y = v2Y3;
-						v32.z = v2Z3;
-						b1 = 2;
-					} else {
-						var p2;
-						var pX2;
-						var pY2;
-						var pZ2;
-						pX2 = v1X3 + v12X3 * t2;
-						pY2 = v1Y3 + v12Y3 * t2;
-						pZ2 = v1Z3 + v12Z3 * t2;
-						var v33 = closest;
-						v33.x = pX2;
-						v33.y = pY2;
-						v33.z = pZ2;
-						b1 = 3;
-					}
-					var d4 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind < 0 || d4 < mind) {
-						mini = b1 << 1;
-						mind = d4;
-						var v34 = closest;
-						minvX = v34.x;
-						minvY = v34.y;
-						minvZ = v34.z;
-					}
-				}
-				if(d31 < 0) {
-					var v111;
-					var v1X4;
-					var v1Y4;
-					var v1Z4;
-					var v210;
-					var v2X4;
-					var v2Y4;
-					var v2Z4;
-					var v35 = vec1;
-					v1X4 = v35.x;
-					v1Y4 = v35.y;
-					v1Z4 = v35.z;
-					var v36 = vec3;
-					v2X4 = v36.x;
-					v2Y4 = v36.y;
-					v2Z4 = v36.z;
-					var v124;
-					var v12X4;
-					var v12Y4;
-					var v12Z4;
-					v12X4 = v2X4 - v1X4;
-					v12Y4 = v2Y4 - v1Y4;
-					v12Z4 = v2Z4 - v1Z4;
-					var d5 = v12X4 * v12X4 + v12Y4 * v12Y4 + v12Z4 * v12Z4;
-					var t3 = v12X4 * v1X4 + v12Y4 * v1Y4 + v12Z4 * v1Z4;
-					t3 = -t3 / d5;
-					var b2;
-					if(t3 < 0) {
-						var v37 = closest;
-						v37.x = v1X4;
-						v37.y = v1Y4;
-						v37.z = v1Z4;
-						b2 = 1;
-					} else if(t3 > 1) {
-						var v38 = closest;
-						v38.x = v2X4;
-						v38.y = v2Y4;
-						v38.z = v2Z4;
-						b2 = 2;
-					} else {
-						var p3;
-						var pX3;
-						var pY3;
-						var pZ3;
-						pX3 = v1X4 + v12X4 * t3;
-						pY3 = v1Y4 + v12Y4 * t3;
-						pZ3 = v1Z4 + v12Z4 * t3;
-						var v39 = closest;
-						v39.x = pX3;
-						v39.y = pY3;
-						v39.z = pZ3;
-						b2 = 3;
-					}
-					var d6 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind < 0 || d6 < mind) {
-						mini = b2 & 1 | (b2 & 2) << 1;
-						mind = d6;
-						var v40 = closest;
-						minvX = v40.x;
-						minvY = v40.y;
-						minvZ = v40.z;
-					}
-				}
-				if(mind > 0) {
-					var v41 = closest;
-					v41.x = minvX;
-					v41.y = minvY;
-					v41.z = minvZ;
-					v3 = mini;
-				} else {
-					var l = nX * nX + nY * nY + nZ * nZ;
-					if(l > 0) {
-						l = 1 / Math.sqrt(l);
-					}
-					nX *= l;
-					nY *= l;
-					nZ *= l;
-					var dn = v1X1 * nX + v1Y1 * nY + v1Z1 * nZ;
-					var l2 = nX * nX + nY * nY + nZ * nZ;
-					l2 = dn / l2;
-					minvX = nX * l2;
-					minvY = nY * l2;
-					minvZ = nZ * l2;
-					var v42 = closest;
-					v42.x = minvX;
-					v42.y = minvY;
-					v42.z = minvZ;
-					v3 = 7;
-				}
-				break;
-			case 4:
-				var vec11 = s[0];
-				var vec21 = s[1];
-				var vec31 = s[2];
-				var vec4 = s[3];
-				var v112;
-				var v1X5;
-				var v1Y5;
-				var v1Z5;
-				var v211;
-				var v2X5;
-				var v2Y5;
-				var v2Z5;
-				var v310;
-				var v3X1;
-				var v3Y1;
-				var v3Z1;
-				var v43;
-				var v4X;
-				var v4Y;
-				var v4Z;
-				var v125;
-				var v12X5;
-				var v12Y5;
-				var v12Z5;
-				var v131;
-				var v13X;
-				var v13Y;
-				var v13Z;
-				var v141;
-				var v14X;
-				var v14Y;
-				var v14Z;
-				var v231;
-				var v23X1;
-				var v23Y1;
-				var v23Z1;
-				var v241;
-				var v24X;
-				var v24Y;
-				var v24Z;
-				var v341;
-				var v34X;
-				var v34Y;
-				var v34Z;
-				var v44 = vec11;
-				v1X5 = v44.x;
-				v1Y5 = v44.y;
-				v1Z5 = v44.z;
-				var v45 = vec21;
-				v2X5 = v45.x;
-				v2Y5 = v45.y;
-				v2Z5 = v45.z;
-				var v46 = vec31;
-				v3X1 = v46.x;
-				v3Y1 = v46.y;
-				v3Z1 = v46.z;
-				var v47 = vec4;
-				v4X = v47.x;
-				v4Y = v47.y;
-				v4Z = v47.z;
-				v12X5 = v2X5 - v1X5;
-				v12Y5 = v2Y5 - v1Y5;
-				v12Z5 = v2Z5 - v1Z5;
-				v13X = v3X1 - v1X5;
-				v13Y = v3Y1 - v1Y5;
-				v13Z = v3Z1 - v1Z5;
-				v14X = v4X - v1X5;
-				v14Y = v4Y - v1Y5;
-				v14Z = v4Z - v1Z5;
-				v23X1 = v3X1 - v2X5;
-				v23Y1 = v3Y1 - v2Y5;
-				v23Z1 = v3Z1 - v2Z5;
-				v24X = v4X - v2X5;
-				v24Y = v4Y - v2Y5;
-				v24Z = v4Z - v2Z5;
-				v34X = v4X - v3X1;
-				v34Y = v4Y - v3Y1;
-				v34Z = v4Z - v3Z1;
-				var rev;
-				var n123;
-				var n123X;
-				var n123Y;
-				var n123Z;
-				var n134;
-				var n134X;
-				var n134Y;
-				var n134Z;
-				var n142;
-				var n142X;
-				var n142Y;
-				var n142Z;
-				var n243;
-				var n243X;
-				var n243Y;
-				var n243Z;
-				var n1;
-				var nX1;
-				var nY1;
-				var nZ1;
-				n123X = v12Y5 * v13Z - v12Z5 * v13Y;
-				n123Y = v12Z5 * v13X - v12X5 * v13Z;
-				n123Z = v12X5 * v13Y - v12Y5 * v13X;
-				n134X = v13Y * v14Z - v13Z * v14Y;
-				n134Y = v13Z * v14X - v13X * v14Z;
-				n134Z = v13X * v14Y - v13Y * v14X;
-				n142X = v14Y * v12Z5 - v14Z * v12Y5;
-				n142Y = v14Z * v12X5 - v14X * v12Z5;
-				n142Z = v14X * v12Y5 - v14Y * v12X5;
-				n243X = v24Y * v23Z1 - v24Z * v23Y1;
-				n243Y = v24Z * v23X1 - v24X * v23Z1;
-				n243Z = v24X * v23Y1 - v24Y * v23X1;
-				var sign = v12X5 * n243X + v12Y5 * n243Y + v12Z5 * n243Z > 0 ? 1 : -1;
-				var d123 = v1X5 * n123X + v1Y5 * n123Y + v1Z5 * n123Z;
-				var d134 = v1X5 * n134X + v1Y5 * n134Y + v1Z5 * n134Z;
-				var d142 = v1X5 * n142X + v1Y5 * n142Y + v1Z5 * n142Z;
-				var d243 = v2X5 * n243X + v2Y5 * n243Y + v2Z5 * n243Z;
-				var mind1 = -1;
-				var minv1;
-				var minvX1;
-				var minvY1;
-				var minvZ1;
-				var mini1 = 0;
-				minvX1 = 0;
-				minvY1 = 0;
-				minvZ1 = 0;
-				if(d123 * sign < 0) {
-					var v113;
-					var v1X6;
-					var v1Y6;
-					var v1Z6;
-					var v212;
-					var v2X6;
-					var v2Y6;
-					var v2Z6;
-					var v312;
-					var v3X2;
-					var v3Y2;
-					var v3Z2;
-					var v126;
-					var v12X6;
-					var v12Y6;
-					var v12Z6;
-					var v232;
-					var v23X2;
-					var v23Y2;
-					var v23Z2;
-					var v313;
-					var v31X1;
-					var v31Y1;
-					var v31Z1;
-					var v48 = vec11;
-					v1X6 = v48.x;
-					v1Y6 = v48.y;
-					v1Z6 = v48.z;
-					var v49 = vec21;
-					v2X6 = v49.x;
-					v2Y6 = v49.y;
-					v2Z6 = v49.z;
-					var v50 = vec31;
-					v3X2 = v50.x;
-					v3Y2 = v50.y;
-					v3Z2 = v50.z;
-					v12X6 = v2X6 - v1X6;
-					v12Y6 = v2Y6 - v1Y6;
-					v12Z6 = v2Z6 - v1Z6;
-					v23X2 = v3X2 - v2X6;
-					v23Y2 = v3Y2 - v2Y6;
-					v23Z2 = v3Z2 - v2Z6;
-					v31X1 = v1X6 - v3X2;
-					v31Y1 = v1Y6 - v3Y2;
-					v31Z1 = v1Z6 - v3Z2;
-					var n2;
-					var nX2;
-					var nY2;
-					var nZ2;
-					nX2 = v12Y6 * v23Z2 - v12Z6 * v23Y2;
-					nY2 = v12Z6 * v23X2 - v12X6 * v23Z2;
-					nZ2 = v12X6 * v23Y2 - v12Y6 * v23X2;
-					var n121;
-					var n12X1;
-					var n12Y1;
-					var n12Z1;
-					var n231;
-					var n23X1;
-					var n23Y1;
-					var n23Z1;
-					var n311;
-					var n31X1;
-					var n31Y1;
-					var n31Z1;
-					n12X1 = v12Y6 * nZ2 - v12Z6 * nY2;
-					n12Y1 = v12Z6 * nX2 - v12X6 * nZ2;
-					n12Z1 = v12X6 * nY2 - v12Y6 * nX2;
-					n23X1 = v23Y2 * nZ2 - v23Z2 * nY2;
-					n23Y1 = v23Z2 * nX2 - v23X2 * nZ2;
-					n23Z1 = v23X2 * nY2 - v23Y2 * nX2;
-					n31X1 = v31Y1 * nZ2 - v31Z1 * nY2;
-					n31Y1 = v31Z1 * nX2 - v31X1 * nZ2;
-					n31Z1 = v31X1 * nY2 - v31Y1 * nX2;
-					var d121 = v1X6 * n12X1 + v1Y6 * n12Y1 + v1Z6 * n12Z1;
-					var d231 = v2X6 * n23X1 + v2Y6 * n23Y1 + v2Z6 * n23Z1;
-					var d311 = v3X2 * n31X1 + v3Y2 * n31Y1 + v3Z2 * n31Z1;
-					var mind2 = -1;
-					var minv2;
-					var minvX2;
-					var minvY2;
-					var minvZ2;
-					var mini2 = 0;
-					minvX2 = 0;
-					minvY2 = 0;
-					minvZ2 = 0;
-					if(d121 < 0) {
-						var v114;
-						var v1X7;
-						var v1Y7;
-						var v1Z7;
-						var v213;
-						var v2X7;
-						var v2Y7;
-						var v2Z7;
-						var v51 = vec11;
-						v1X7 = v51.x;
-						v1Y7 = v51.y;
-						v1Z7 = v51.z;
-						var v52 = vec21;
-						v2X7 = v52.x;
-						v2Y7 = v52.y;
-						v2Z7 = v52.z;
-						var v127;
-						var v12X7;
-						var v12Y7;
-						var v12Z7;
-						v12X7 = v2X7 - v1X7;
-						v12Y7 = v2Y7 - v1Y7;
-						v12Z7 = v2Z7 - v1Z7;
-						var d7 = v12X7 * v12X7 + v12Y7 * v12Y7 + v12Z7 * v12Z7;
-						var t4 = v12X7 * v1X7 + v12Y7 * v1Y7 + v12Z7 * v1Z7;
-						t4 = -t4 / d7;
-						var b3;
-						if(t4 < 0) {
-							var v53 = closest;
-							v53.x = v1X7;
-							v53.y = v1Y7;
-							v53.z = v1Z7;
-							b3 = 1;
-						} else if(t4 > 1) {
-							var v54 = closest;
-							v54.x = v2X7;
-							v54.y = v2Y7;
-							v54.z = v2Z7;
-							b3 = 2;
-						} else {
-							var p4;
-							var pX4;
-							var pY4;
-							var pZ4;
-							pX4 = v1X7 + v12X7 * t4;
-							pY4 = v1Y7 + v12Y7 * t4;
-							pZ4 = v1Z7 + v12Z7 * t4;
-							var v55 = closest;
-							v55.x = pX4;
-							v55.y = pY4;
-							v55.z = pZ4;
-							b3 = 3;
-						}
-						var d8 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						mini2 = b3;
-						mind2 = d8;
-						var v56 = closest;
-						minvX2 = v56.x;
-						minvY2 = v56.y;
-						minvZ2 = v56.z;
-					}
-					if(d231 < 0) {
-						var v115;
-						var v1X8;
-						var v1Y8;
-						var v1Z8;
-						var v214;
-						var v2X8;
-						var v2Y8;
-						var v2Z8;
-						var v57 = vec21;
-						v1X8 = v57.x;
-						v1Y8 = v57.y;
-						v1Z8 = v57.z;
-						var v58 = vec31;
-						v2X8 = v58.x;
-						v2Y8 = v58.y;
-						v2Z8 = v58.z;
-						var v128;
-						var v12X8;
-						var v12Y8;
-						var v12Z8;
-						v12X8 = v2X8 - v1X8;
-						v12Y8 = v2Y8 - v1Y8;
-						v12Z8 = v2Z8 - v1Z8;
-						var d9 = v12X8 * v12X8 + v12Y8 * v12Y8 + v12Z8 * v12Z8;
-						var t5 = v12X8 * v1X8 + v12Y8 * v1Y8 + v12Z8 * v1Z8;
-						t5 = -t5 / d9;
-						var b4;
-						if(t5 < 0) {
-							var v59 = closest;
-							v59.x = v1X8;
-							v59.y = v1Y8;
-							v59.z = v1Z8;
-							b4 = 1;
-						} else if(t5 > 1) {
-							var v60 = closest;
-							v60.x = v2X8;
-							v60.y = v2Y8;
-							v60.z = v2Z8;
-							b4 = 2;
-						} else {
-							var p5;
-							var pX5;
-							var pY5;
-							var pZ5;
-							pX5 = v1X8 + v12X8 * t5;
-							pY5 = v1Y8 + v12Y8 * t5;
-							pZ5 = v1Z8 + v12Z8 * t5;
-							var v61 = closest;
-							v61.x = pX5;
-							v61.y = pY5;
-							v61.z = pZ5;
-							b4 = 3;
-						}
-						var d10 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind2 < 0 || d10 < mind2) {
-							mini2 = b4 << 1;
-							mind2 = d10;
-							var v62 = closest;
-							minvX2 = v62.x;
-							minvY2 = v62.y;
-							minvZ2 = v62.z;
-						}
-					}
-					if(d311 < 0) {
-						var v116;
-						var v1X9;
-						var v1Y9;
-						var v1Z9;
-						var v215;
-						var v2X9;
-						var v2Y9;
-						var v2Z9;
-						var v63 = vec11;
-						v1X9 = v63.x;
-						v1Y9 = v63.y;
-						v1Z9 = v63.z;
-						var v64 = vec31;
-						v2X9 = v64.x;
-						v2Y9 = v64.y;
-						v2Z9 = v64.z;
-						var v129;
-						var v12X9;
-						var v12Y9;
-						var v12Z9;
-						v12X9 = v2X9 - v1X9;
-						v12Y9 = v2Y9 - v1Y9;
-						v12Z9 = v2Z9 - v1Z9;
-						var d11 = v12X9 * v12X9 + v12Y9 * v12Y9 + v12Z9 * v12Z9;
-						var t6 = v12X9 * v1X9 + v12Y9 * v1Y9 + v12Z9 * v1Z9;
-						t6 = -t6 / d11;
-						var b5;
-						if(t6 < 0) {
-							var v65 = closest;
-							v65.x = v1X9;
-							v65.y = v1Y9;
-							v65.z = v1Z9;
-							b5 = 1;
-						} else if(t6 > 1) {
-							var v66 = closest;
-							v66.x = v2X9;
-							v66.y = v2Y9;
-							v66.z = v2Z9;
-							b5 = 2;
-						} else {
-							var p6;
-							var pX6;
-							var pY6;
-							var pZ6;
-							pX6 = v1X9 + v12X9 * t6;
-							pY6 = v1Y9 + v12Y9 * t6;
-							pZ6 = v1Z9 + v12Z9 * t6;
-							var v67 = closest;
-							v67.x = pX6;
-							v67.y = pY6;
-							v67.z = pZ6;
-							b5 = 3;
-						}
-						var d13 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind2 < 0 || d13 < mind2) {
-							mini2 = b5 & 1 | (b5 & 2) << 1;
-							mind2 = d13;
-							var v68 = closest;
-							minvX2 = v68.x;
-							minvY2 = v68.y;
-							minvZ2 = v68.z;
-						}
-					}
-					var b6;
-					if(mind2 > 0) {
-						var v69 = closest;
-						v69.x = minvX2;
-						v69.y = minvY2;
-						v69.z = minvZ2;
-						b6 = mini2;
-					} else {
-						var l1 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
-						if(l1 > 0) {
-							l1 = 1 / Math.sqrt(l1);
-						}
-						nX2 *= l1;
-						nY2 *= l1;
-						nZ2 *= l1;
-						var dn1 = v1X6 * nX2 + v1Y6 * nY2 + v1Z6 * nZ2;
-						var l21 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
-						l21 = dn1 / l21;
-						minvX2 = nX2 * l21;
-						minvY2 = nY2 * l21;
-						minvZ2 = nZ2 * l21;
-						var v70 = closest;
-						v70.x = minvX2;
-						v70.y = minvY2;
-						v70.z = minvZ2;
-						b6 = 7;
-					}
-					var d14 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					mini1 = b6;
-					mind1 = d14;
-					var v71 = closest;
-					minvX1 = v71.x;
-					minvY1 = v71.y;
-					minvZ1 = v71.z;
-				}
-				if(d134 * sign < 0) {
-					var v117;
-					var v1X10;
-					var v1Y10;
-					var v1Z10;
-					var v216;
-					var v2X10;
-					var v2Y10;
-					var v2Z10;
-					var v314;
-					var v3X3;
-					var v3Y3;
-					var v3Z3;
-					var v1210;
-					var v12X10;
-					var v12Y10;
-					var v12Z10;
-					var v233;
-					var v23X3;
-					var v23Y3;
-					var v23Z3;
-					var v315;
-					var v31X2;
-					var v31Y2;
-					var v31Z2;
-					var v72 = vec11;
-					v1X10 = v72.x;
-					v1Y10 = v72.y;
-					v1Z10 = v72.z;
-					var v73 = vec31;
-					v2X10 = v73.x;
-					v2Y10 = v73.y;
-					v2Z10 = v73.z;
-					var v74 = vec4;
-					v3X3 = v74.x;
-					v3Y3 = v74.y;
-					v3Z3 = v74.z;
-					v12X10 = v2X10 - v1X10;
-					v12Y10 = v2Y10 - v1Y10;
-					v12Z10 = v2Z10 - v1Z10;
-					v23X3 = v3X3 - v2X10;
-					v23Y3 = v3Y3 - v2Y10;
-					v23Z3 = v3Z3 - v2Z10;
-					v31X2 = v1X10 - v3X3;
-					v31Y2 = v1Y10 - v3Y3;
-					v31Z2 = v1Z10 - v3Z3;
-					var n3;
-					var nX3;
-					var nY3;
-					var nZ3;
-					nX3 = v12Y10 * v23Z3 - v12Z10 * v23Y3;
-					nY3 = v12Z10 * v23X3 - v12X10 * v23Z3;
-					nZ3 = v12X10 * v23Y3 - v12Y10 * v23X3;
-					var n122;
-					var n12X2;
-					var n12Y2;
-					var n12Z2;
-					var n232;
-					var n23X2;
-					var n23Y2;
-					var n23Z2;
-					var n312;
-					var n31X2;
-					var n31Y2;
-					var n31Z2;
-					n12X2 = v12Y10 * nZ3 - v12Z10 * nY3;
-					n12Y2 = v12Z10 * nX3 - v12X10 * nZ3;
-					n12Z2 = v12X10 * nY3 - v12Y10 * nX3;
-					n23X2 = v23Y3 * nZ3 - v23Z3 * nY3;
-					n23Y2 = v23Z3 * nX3 - v23X3 * nZ3;
-					n23Z2 = v23X3 * nY3 - v23Y3 * nX3;
-					n31X2 = v31Y2 * nZ3 - v31Z2 * nY3;
-					n31Y2 = v31Z2 * nX3 - v31X2 * nZ3;
-					n31Z2 = v31X2 * nY3 - v31Y2 * nX3;
-					var d122 = v1X10 * n12X2 + v1Y10 * n12Y2 + v1Z10 * n12Z2;
-					var d232 = v2X10 * n23X2 + v2Y10 * n23Y2 + v2Z10 * n23Z2;
-					var d312 = v3X3 * n31X2 + v3Y3 * n31Y2 + v3Z3 * n31Z2;
-					var mind3 = -1;
-					var minv3;
-					var minvX3;
-					var minvY3;
-					var minvZ3;
-					var mini3 = 0;
-					minvX3 = 0;
-					minvY3 = 0;
-					minvZ3 = 0;
-					if(d122 < 0) {
-						var v118;
-						var v1X11;
-						var v1Y11;
-						var v1Z11;
-						var v217;
-						var v2X11;
-						var v2Y11;
-						var v2Z11;
-						var v75 = vec11;
-						v1X11 = v75.x;
-						v1Y11 = v75.y;
-						v1Z11 = v75.z;
-						var v76 = vec31;
-						v2X11 = v76.x;
-						v2Y11 = v76.y;
-						v2Z11 = v76.z;
-						var v1211;
-						var v12X11;
-						var v12Y11;
-						var v12Z11;
-						v12X11 = v2X11 - v1X11;
-						v12Y11 = v2Y11 - v1Y11;
-						v12Z11 = v2Z11 - v1Z11;
-						var d15 = v12X11 * v12X11 + v12Y11 * v12Y11 + v12Z11 * v12Z11;
-						var t7 = v12X11 * v1X11 + v12Y11 * v1Y11 + v12Z11 * v1Z11;
-						t7 = -t7 / d15;
-						var b7;
-						if(t7 < 0) {
-							var v77 = closest;
-							v77.x = v1X11;
-							v77.y = v1Y11;
-							v77.z = v1Z11;
-							b7 = 1;
-						} else if(t7 > 1) {
-							var v78 = closest;
-							v78.x = v2X11;
-							v78.y = v2Y11;
-							v78.z = v2Z11;
-							b7 = 2;
-						} else {
-							var p7;
-							var pX7;
-							var pY7;
-							var pZ7;
-							pX7 = v1X11 + v12X11 * t7;
-							pY7 = v1Y11 + v12Y11 * t7;
-							pZ7 = v1Z11 + v12Z11 * t7;
-							var v79 = closest;
-							v79.x = pX7;
-							v79.y = pY7;
-							v79.z = pZ7;
-							b7 = 3;
-						}
-						var d16 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						mini3 = b7;
-						mind3 = d16;
-						var v80 = closest;
-						minvX3 = v80.x;
-						minvY3 = v80.y;
-						minvZ3 = v80.z;
-					}
-					if(d232 < 0) {
-						var v119;
-						var v1X12;
-						var v1Y12;
-						var v1Z12;
-						var v218;
-						var v2X12;
-						var v2Y12;
-						var v2Z12;
-						var v81 = vec31;
-						v1X12 = v81.x;
-						v1Y12 = v81.y;
-						v1Z12 = v81.z;
-						var v82 = vec4;
-						v2X12 = v82.x;
-						v2Y12 = v82.y;
-						v2Z12 = v82.z;
-						var v1212;
-						var v12X12;
-						var v12Y12;
-						var v12Z12;
-						v12X12 = v2X12 - v1X12;
-						v12Y12 = v2Y12 - v1Y12;
-						v12Z12 = v2Z12 - v1Z12;
-						var d17 = v12X12 * v12X12 + v12Y12 * v12Y12 + v12Z12 * v12Z12;
-						var t8 = v12X12 * v1X12 + v12Y12 * v1Y12 + v12Z12 * v1Z12;
-						t8 = -t8 / d17;
-						var b8;
-						if(t8 < 0) {
-							var v83 = closest;
-							v83.x = v1X12;
-							v83.y = v1Y12;
-							v83.z = v1Z12;
-							b8 = 1;
-						} else if(t8 > 1) {
-							var v84 = closest;
-							v84.x = v2X12;
-							v84.y = v2Y12;
-							v84.z = v2Z12;
-							b8 = 2;
-						} else {
-							var p8;
-							var pX8;
-							var pY8;
-							var pZ8;
-							pX8 = v1X12 + v12X12 * t8;
-							pY8 = v1Y12 + v12Y12 * t8;
-							pZ8 = v1Z12 + v12Z12 * t8;
-							var v85 = closest;
-							v85.x = pX8;
-							v85.y = pY8;
-							v85.z = pZ8;
-							b8 = 3;
-						}
-						var d18 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind3 < 0 || d18 < mind3) {
-							mini3 = b8 << 1;
-							mind3 = d18;
-							var v86 = closest;
-							minvX3 = v86.x;
-							minvY3 = v86.y;
-							minvZ3 = v86.z;
-						}
-					}
-					if(d312 < 0) {
-						var v120;
-						var v1X13;
-						var v1Y13;
-						var v1Z13;
-						var v219;
-						var v2X13;
-						var v2Y13;
-						var v2Z13;
-						var v87 = vec11;
-						v1X13 = v87.x;
-						v1Y13 = v87.y;
-						v1Z13 = v87.z;
-						var v88 = vec4;
-						v2X13 = v88.x;
-						v2Y13 = v88.y;
-						v2Z13 = v88.z;
-						var v1213;
-						var v12X13;
-						var v12Y13;
-						var v12Z13;
-						v12X13 = v2X13 - v1X13;
-						v12Y13 = v2Y13 - v1Y13;
-						v12Z13 = v2Z13 - v1Z13;
-						var d19 = v12X13 * v12X13 + v12Y13 * v12Y13 + v12Z13 * v12Z13;
-						var t9 = v12X13 * v1X13 + v12Y13 * v1Y13 + v12Z13 * v1Z13;
-						t9 = -t9 / d19;
-						var b9;
-						if(t9 < 0) {
-							var v89 = closest;
-							v89.x = v1X13;
-							v89.y = v1Y13;
-							v89.z = v1Z13;
-							b9 = 1;
-						} else if(t9 > 1) {
-							var v90 = closest;
-							v90.x = v2X13;
-							v90.y = v2Y13;
-							v90.z = v2Z13;
-							b9 = 2;
-						} else {
-							var p9;
-							var pX9;
-							var pY9;
-							var pZ9;
-							pX9 = v1X13 + v12X13 * t9;
-							pY9 = v1Y13 + v12Y13 * t9;
-							pZ9 = v1Z13 + v12Z13 * t9;
-							var v91 = closest;
-							v91.x = pX9;
-							v91.y = pY9;
-							v91.z = pZ9;
-							b9 = 3;
-						}
-						var d20 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind3 < 0 || d20 < mind3) {
-							mini3 = b9 & 1 | (b9 & 2) << 1;
-							mind3 = d20;
-							var v92 = closest;
-							minvX3 = v92.x;
-							minvY3 = v92.y;
-							minvZ3 = v92.z;
-						}
-					}
-					var b10;
-					if(mind3 > 0) {
-						var v93 = closest;
-						v93.x = minvX3;
-						v93.y = minvY3;
-						v93.z = minvZ3;
-						b10 = mini3;
-					} else {
-						var l3 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
-						if(l3 > 0) {
-							l3 = 1 / Math.sqrt(l3);
-						}
-						nX3 *= l3;
-						nY3 *= l3;
-						nZ3 *= l3;
-						var dn2 = v1X10 * nX3 + v1Y10 * nY3 + v1Z10 * nZ3;
-						var l22 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
-						l22 = dn2 / l22;
-						minvX3 = nX3 * l22;
-						minvY3 = nY3 * l22;
-						minvZ3 = nZ3 * l22;
-						var v94 = closest;
-						v94.x = minvX3;
-						v94.y = minvY3;
-						v94.z = minvZ3;
-						b10 = 7;
-					}
-					var d21 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind1 < 0 || d21 < mind1) {
-						mini1 = b10 & 1 | (b10 & 6) << 1;
-						mind1 = d21;
-						var v95 = closest;
-						minvX1 = v95.x;
-						minvY1 = v95.y;
-						minvZ1 = v95.z;
-					}
-				}
-				if(d142 * sign < 0) {
-					var v130;
-					var v1X14;
-					var v1Y14;
-					var v1Z14;
-					var v220;
-					var v2X14;
-					var v2Y14;
-					var v2Z14;
-					var v316;
-					var v3X4;
-					var v3Y4;
-					var v3Z4;
-					var v1214;
-					var v12X14;
-					var v12Y14;
-					var v12Z14;
-					var v234;
-					var v23X4;
-					var v23Y4;
-					var v23Z4;
-					var v317;
-					var v31X3;
-					var v31Y3;
-					var v31Z3;
-					var v96 = vec11;
-					v1X14 = v96.x;
-					v1Y14 = v96.y;
-					v1Z14 = v96.z;
-					var v97 = vec21;
-					v2X14 = v97.x;
-					v2Y14 = v97.y;
-					v2Z14 = v97.z;
-					var v98 = vec4;
-					v3X4 = v98.x;
-					v3Y4 = v98.y;
-					v3Z4 = v98.z;
-					v12X14 = v2X14 - v1X14;
-					v12Y14 = v2Y14 - v1Y14;
-					v12Z14 = v2Z14 - v1Z14;
-					v23X4 = v3X4 - v2X14;
-					v23Y4 = v3Y4 - v2Y14;
-					v23Z4 = v3Z4 - v2Z14;
-					v31X3 = v1X14 - v3X4;
-					v31Y3 = v1Y14 - v3Y4;
-					v31Z3 = v1Z14 - v3Z4;
-					var n4;
-					var nX4;
-					var nY4;
-					var nZ4;
-					nX4 = v12Y14 * v23Z4 - v12Z14 * v23Y4;
-					nY4 = v12Z14 * v23X4 - v12X14 * v23Z4;
-					nZ4 = v12X14 * v23Y4 - v12Y14 * v23X4;
-					var n124;
-					var n12X3;
-					var n12Y3;
-					var n12Z3;
-					var n233;
-					var n23X3;
-					var n23Y3;
-					var n23Z3;
-					var n313;
-					var n31X3;
-					var n31Y3;
-					var n31Z3;
-					n12X3 = v12Y14 * nZ4 - v12Z14 * nY4;
-					n12Y3 = v12Z14 * nX4 - v12X14 * nZ4;
-					n12Z3 = v12X14 * nY4 - v12Y14 * nX4;
-					n23X3 = v23Y4 * nZ4 - v23Z4 * nY4;
-					n23Y3 = v23Z4 * nX4 - v23X4 * nZ4;
-					n23Z3 = v23X4 * nY4 - v23Y4 * nX4;
-					n31X3 = v31Y3 * nZ4 - v31Z3 * nY4;
-					n31Y3 = v31Z3 * nX4 - v31X3 * nZ4;
-					n31Z3 = v31X3 * nY4 - v31Y3 * nX4;
-					var d124 = v1X14 * n12X3 + v1Y14 * n12Y3 + v1Z14 * n12Z3;
-					var d233 = v2X14 * n23X3 + v2Y14 * n23Y3 + v2Z14 * n23Z3;
-					var d313 = v3X4 * n31X3 + v3Y4 * n31Y3 + v3Z4 * n31Z3;
-					var mind4 = -1;
-					var minv4;
-					var minvX4;
-					var minvY4;
-					var minvZ4;
-					var mini4 = 0;
-					minvX4 = 0;
-					minvY4 = 0;
-					minvZ4 = 0;
-					if(d124 < 0) {
-						var v132;
-						var v1X15;
-						var v1Y15;
-						var v1Z15;
-						var v221;
-						var v2X15;
-						var v2Y15;
-						var v2Z15;
-						var v99 = vec11;
-						v1X15 = v99.x;
-						v1Y15 = v99.y;
-						v1Z15 = v99.z;
-						var v100 = vec21;
-						v2X15 = v100.x;
-						v2Y15 = v100.y;
-						v2Z15 = v100.z;
-						var v1215;
-						var v12X15;
-						var v12Y15;
-						var v12Z15;
-						v12X15 = v2X15 - v1X15;
-						v12Y15 = v2Y15 - v1Y15;
-						v12Z15 = v2Z15 - v1Z15;
-						var d22 = v12X15 * v12X15 + v12Y15 * v12Y15 + v12Z15 * v12Z15;
-						var t10 = v12X15 * v1X15 + v12Y15 * v1Y15 + v12Z15 * v1Z15;
-						t10 = -t10 / d22;
-						var b11;
-						if(t10 < 0) {
-							var v101 = closest;
-							v101.x = v1X15;
-							v101.y = v1Y15;
-							v101.z = v1Z15;
-							b11 = 1;
-						} else if(t10 > 1) {
-							var v102 = closest;
-							v102.x = v2X15;
-							v102.y = v2Y15;
-							v102.z = v2Z15;
-							b11 = 2;
-						} else {
-							var p10;
-							var pX10;
-							var pY10;
-							var pZ10;
-							pX10 = v1X15 + v12X15 * t10;
-							pY10 = v1Y15 + v12Y15 * t10;
-							pZ10 = v1Z15 + v12Z15 * t10;
-							var v103 = closest;
-							v103.x = pX10;
-							v103.y = pY10;
-							v103.z = pZ10;
-							b11 = 3;
-						}
-						var d24 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						mini4 = b11;
-						mind4 = d24;
-						var v104 = closest;
-						minvX4 = v104.x;
-						minvY4 = v104.y;
-						minvZ4 = v104.z;
-					}
-					if(d233 < 0) {
-						var v133;
-						var v1X16;
-						var v1Y16;
-						var v1Z16;
-						var v222;
-						var v2X16;
-						var v2Y16;
-						var v2Z16;
-						var v105 = vec21;
-						v1X16 = v105.x;
-						v1Y16 = v105.y;
-						v1Z16 = v105.z;
-						var v106 = vec4;
-						v2X16 = v106.x;
-						v2Y16 = v106.y;
-						v2Z16 = v106.z;
-						var v1216;
-						var v12X16;
-						var v12Y16;
-						var v12Z16;
-						v12X16 = v2X16 - v1X16;
-						v12Y16 = v2Y16 - v1Y16;
-						v12Z16 = v2Z16 - v1Z16;
-						var d25 = v12X16 * v12X16 + v12Y16 * v12Y16 + v12Z16 * v12Z16;
-						var t11 = v12X16 * v1X16 + v12Y16 * v1Y16 + v12Z16 * v1Z16;
-						t11 = -t11 / d25;
-						var b12;
-						if(t11 < 0) {
-							var v107 = closest;
-							v107.x = v1X16;
-							v107.y = v1Y16;
-							v107.z = v1Z16;
-							b12 = 1;
-						} else if(t11 > 1) {
-							var v108 = closest;
-							v108.x = v2X16;
-							v108.y = v2Y16;
-							v108.z = v2Z16;
-							b12 = 2;
-						} else {
-							var p11;
-							var pX11;
-							var pY11;
-							var pZ11;
-							pX11 = v1X16 + v12X16 * t11;
-							pY11 = v1Y16 + v12Y16 * t11;
-							pZ11 = v1Z16 + v12Z16 * t11;
-							var v109 = closest;
-							v109.x = pX11;
-							v109.y = pY11;
-							v109.z = pZ11;
-							b12 = 3;
-						}
-						var d26 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind4 < 0 || d26 < mind4) {
-							mini4 = b12 << 1;
-							mind4 = d26;
-							var v134 = closest;
-							minvX4 = v134.x;
-							minvY4 = v134.y;
-							minvZ4 = v134.z;
-						}
-					}
-					if(d313 < 0) {
-						var v135;
-						var v1X17;
-						var v1Y17;
-						var v1Z17;
-						var v223;
-						var v2X17;
-						var v2Y17;
-						var v2Z17;
-						var v136 = vec11;
-						v1X17 = v136.x;
-						v1Y17 = v136.y;
-						v1Z17 = v136.z;
-						var v137 = vec4;
-						v2X17 = v137.x;
-						v2Y17 = v137.y;
-						v2Z17 = v137.z;
-						var v1217;
-						var v12X17;
-						var v12Y17;
-						var v12Z17;
-						v12X17 = v2X17 - v1X17;
-						v12Y17 = v2Y17 - v1Y17;
-						v12Z17 = v2Z17 - v1Z17;
-						var d27 = v12X17 * v12X17 + v12Y17 * v12Y17 + v12Z17 * v12Z17;
-						var t12 = v12X17 * v1X17 + v12Y17 * v1Y17 + v12Z17 * v1Z17;
-						t12 = -t12 / d27;
-						var b13;
-						if(t12 < 0) {
-							var v138 = closest;
-							v138.x = v1X17;
-							v138.y = v1Y17;
-							v138.z = v1Z17;
-							b13 = 1;
-						} else if(t12 > 1) {
-							var v139 = closest;
-							v139.x = v2X17;
-							v139.y = v2Y17;
-							v139.z = v2Z17;
-							b13 = 2;
-						} else {
-							var p12;
-							var pX12;
-							var pY12;
-							var pZ12;
-							pX12 = v1X17 + v12X17 * t12;
-							pY12 = v1Y17 + v12Y17 * t12;
-							pZ12 = v1Z17 + v12Z17 * t12;
-							var v140 = closest;
-							v140.x = pX12;
-							v140.y = pY12;
-							v140.z = pZ12;
-							b13 = 3;
-						}
-						var d28 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind4 < 0 || d28 < mind4) {
-							mini4 = b13 & 1 | (b13 & 2) << 1;
-							mind4 = d28;
-							var v142 = closest;
-							minvX4 = v142.x;
-							minvY4 = v142.y;
-							minvZ4 = v142.z;
-						}
-					}
-					var b14;
-					if(mind4 > 0) {
-						var v143 = closest;
-						v143.x = minvX4;
-						v143.y = minvY4;
-						v143.z = minvZ4;
-						b14 = mini4;
-					} else {
-						var l4 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
-						if(l4 > 0) {
-							l4 = 1 / Math.sqrt(l4);
-						}
-						nX4 *= l4;
-						nY4 *= l4;
-						nZ4 *= l4;
-						var dn3 = v1X14 * nX4 + v1Y14 * nY4 + v1Z14 * nZ4;
-						var l23 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
-						l23 = dn3 / l23;
-						minvX4 = nX4 * l23;
-						minvY4 = nY4 * l23;
-						minvZ4 = nZ4 * l23;
-						var v144 = closest;
-						v144.x = minvX4;
-						v144.y = minvY4;
-						v144.z = minvZ4;
-						b14 = 7;
-					}
-					var d29 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind1 < 0 || d29 < mind1) {
-						mini1 = b14 & 3 | (b14 & 4) << 1;
-						mind1 = d29;
-						var v145 = closest;
-						minvX1 = v145.x;
-						minvY1 = v145.y;
-						minvZ1 = v145.z;
-					}
-				}
-				if(d243 * sign < 0) {
-					var v146;
-					var v1X18;
-					var v1Y18;
-					var v1Z18;
-					var v224;
-					var v2X18;
-					var v2Y18;
-					var v2Z18;
-					var v318;
-					var v3X5;
-					var v3Y5;
-					var v3Z5;
-					var v1218;
-					var v12X18;
-					var v12Y18;
-					var v12Z18;
-					var v235;
-					var v23X5;
-					var v23Y5;
-					var v23Z5;
-					var v319;
-					var v31X4;
-					var v31Y4;
-					var v31Z4;
-					var v147 = vec21;
-					v1X18 = v147.x;
-					v1Y18 = v147.y;
-					v1Z18 = v147.z;
-					var v148 = vec31;
-					v2X18 = v148.x;
-					v2Y18 = v148.y;
-					v2Z18 = v148.z;
-					var v149 = vec4;
-					v3X5 = v149.x;
-					v3Y5 = v149.y;
-					v3Z5 = v149.z;
-					v12X18 = v2X18 - v1X18;
-					v12Y18 = v2Y18 - v1Y18;
-					v12Z18 = v2Z18 - v1Z18;
-					v23X5 = v3X5 - v2X18;
-					v23Y5 = v3Y5 - v2Y18;
-					v23Z5 = v3Z5 - v2Z18;
-					v31X4 = v1X18 - v3X5;
-					v31Y4 = v1Y18 - v3Y5;
-					v31Z4 = v1Z18 - v3Z5;
-					var n5;
-					var nX5;
-					var nY5;
-					var nZ5;
-					nX5 = v12Y18 * v23Z5 - v12Z18 * v23Y5;
-					nY5 = v12Z18 * v23X5 - v12X18 * v23Z5;
-					nZ5 = v12X18 * v23Y5 - v12Y18 * v23X5;
-					var n125;
-					var n12X4;
-					var n12Y4;
-					var n12Z4;
-					var n234;
-					var n23X4;
-					var n23Y4;
-					var n23Z4;
-					var n314;
-					var n31X4;
-					var n31Y4;
-					var n31Z4;
-					n12X4 = v12Y18 * nZ5 - v12Z18 * nY5;
-					n12Y4 = v12Z18 * nX5 - v12X18 * nZ5;
-					n12Z4 = v12X18 * nY5 - v12Y18 * nX5;
-					n23X4 = v23Y5 * nZ5 - v23Z5 * nY5;
-					n23Y4 = v23Z5 * nX5 - v23X5 * nZ5;
-					n23Z4 = v23X5 * nY5 - v23Y5 * nX5;
-					n31X4 = v31Y4 * nZ5 - v31Z4 * nY5;
-					n31Y4 = v31Z4 * nX5 - v31X4 * nZ5;
-					n31Z4 = v31X4 * nY5 - v31Y4 * nX5;
-					var d125 = v1X18 * n12X4 + v1Y18 * n12Y4 + v1Z18 * n12Z4;
-					var d234 = v2X18 * n23X4 + v2Y18 * n23Y4 + v2Z18 * n23Z4;
-					var d314 = v3X5 * n31X4 + v3Y5 * n31Y4 + v3Z5 * n31Z4;
-					var mind5 = -1;
-					var minv5;
-					var minvX5;
-					var minvY5;
-					var minvZ5;
-					var mini5 = 0;
-					minvX5 = 0;
-					minvY5 = 0;
-					minvZ5 = 0;
-					if(d125 < 0) {
-						var v150;
-						var v1X19;
-						var v1Y19;
-						var v1Z19;
-						var v225;
-						var v2X19;
-						var v2Y19;
-						var v2Z19;
-						var v151 = vec21;
-						v1X19 = v151.x;
-						v1Y19 = v151.y;
-						v1Z19 = v151.z;
-						var v152 = vec31;
-						v2X19 = v152.x;
-						v2Y19 = v152.y;
-						v2Z19 = v152.z;
-						var v1219;
-						var v12X19;
-						var v12Y19;
-						var v12Z19;
-						v12X19 = v2X19 - v1X19;
-						v12Y19 = v2Y19 - v1Y19;
-						v12Z19 = v2Z19 - v1Z19;
-						var d30 = v12X19 * v12X19 + v12Y19 * v12Y19 + v12Z19 * v12Z19;
-						var t13 = v12X19 * v1X19 + v12Y19 * v1Y19 + v12Z19 * v1Z19;
-						t13 = -t13 / d30;
-						var b15;
-						if(t13 < 0) {
-							var v153 = closest;
-							v153.x = v1X19;
-							v153.y = v1Y19;
-							v153.z = v1Z19;
-							b15 = 1;
-						} else if(t13 > 1) {
-							var v154 = closest;
-							v154.x = v2X19;
-							v154.y = v2Y19;
-							v154.z = v2Z19;
-							b15 = 2;
-						} else {
-							var p13;
-							var pX13;
-							var pY13;
-							var pZ13;
-							pX13 = v1X19 + v12X19 * t13;
-							pY13 = v1Y19 + v12Y19 * t13;
-							pZ13 = v1Z19 + v12Z19 * t13;
-							var v155 = closest;
-							v155.x = pX13;
-							v155.y = pY13;
-							v155.z = pZ13;
-							b15 = 3;
-						}
-						var d32 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						mini5 = b15;
-						mind5 = d32;
-						var v156 = closest;
-						minvX5 = v156.x;
-						minvY5 = v156.y;
-						minvZ5 = v156.z;
-					}
-					if(d234 < 0) {
-						var v157;
-						var v1X20;
-						var v1Y20;
-						var v1Z20;
-						var v226;
-						var v2X20;
-						var v2Y20;
-						var v2Z20;
-						var v158 = vec31;
-						v1X20 = v158.x;
-						v1Y20 = v158.y;
-						v1Z20 = v158.z;
-						var v159 = vec4;
-						v2X20 = v159.x;
-						v2Y20 = v159.y;
-						v2Z20 = v159.z;
-						var v1220;
-						var v12X20;
-						var v12Y20;
-						var v12Z20;
-						v12X20 = v2X20 - v1X20;
-						v12Y20 = v2Y20 - v1Y20;
-						v12Z20 = v2Z20 - v1Z20;
-						var d33 = v12X20 * v12X20 + v12Y20 * v12Y20 + v12Z20 * v12Z20;
-						var t14 = v12X20 * v1X20 + v12Y20 * v1Y20 + v12Z20 * v1Z20;
-						t14 = -t14 / d33;
-						var b16;
-						if(t14 < 0) {
-							var v160 = closest;
-							v160.x = v1X20;
-							v160.y = v1Y20;
-							v160.z = v1Z20;
-							b16 = 1;
-						} else if(t14 > 1) {
-							var v161 = closest;
-							v161.x = v2X20;
-							v161.y = v2Y20;
-							v161.z = v2Z20;
-							b16 = 2;
-						} else {
-							var p14;
-							var pX14;
-							var pY14;
-							var pZ14;
-							pX14 = v1X20 + v12X20 * t14;
-							pY14 = v1Y20 + v12Y20 * t14;
-							pZ14 = v1Z20 + v12Z20 * t14;
-							var v162 = closest;
-							v162.x = pX14;
-							v162.y = pY14;
-							v162.z = pZ14;
-							b16 = 3;
-						}
-						var d34 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind5 < 0 || d34 < mind5) {
-							mini5 = b16 << 1;
-							mind5 = d34;
-							var v163 = closest;
-							minvX5 = v163.x;
-							minvY5 = v163.y;
-							minvZ5 = v163.z;
-						}
-					}
-					if(d314 < 0) {
-						var v164;
-						var v1X21;
-						var v1Y21;
-						var v1Z21;
-						var v227;
-						var v2X21;
-						var v2Y21;
-						var v2Z21;
-						var v165 = vec21;
-						v1X21 = v165.x;
-						v1Y21 = v165.y;
-						v1Z21 = v165.z;
-						var v166 = vec4;
-						v2X21 = v166.x;
-						v2Y21 = v166.y;
-						v2Z21 = v166.z;
-						var v1221;
-						var v12X21;
-						var v12Y21;
-						var v12Z21;
-						v12X21 = v2X21 - v1X21;
-						v12Y21 = v2Y21 - v1Y21;
-						v12Z21 = v2Z21 - v1Z21;
-						var d35 = v12X21 * v12X21 + v12Y21 * v12Y21 + v12Z21 * v12Z21;
-						var t15 = v12X21 * v1X21 + v12Y21 * v1Y21 + v12Z21 * v1Z21;
-						t15 = -t15 / d35;
-						var b17;
-						if(t15 < 0) {
-							var v167 = closest;
-							v167.x = v1X21;
-							v167.y = v1Y21;
-							v167.z = v1Z21;
-							b17 = 1;
-						} else if(t15 > 1) {
-							var v168 = closest;
-							v168.x = v2X21;
-							v168.y = v2Y21;
-							v168.z = v2Z21;
-							b17 = 2;
-						} else {
-							var p15;
-							var pX15;
-							var pY15;
-							var pZ15;
-							pX15 = v1X21 + v12X21 * t15;
-							pY15 = v1Y21 + v12Y21 * t15;
-							pZ15 = v1Z21 + v12Z21 * t15;
-							var v169 = closest;
-							v169.x = pX15;
-							v169.y = pY15;
-							v169.z = pZ15;
-							b17 = 3;
-						}
-						var d36 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind5 < 0 || d36 < mind5) {
-							mini5 = b17 & 1 | (b17 & 2) << 1;
-							mind5 = d36;
-							var v170 = closest;
-							minvX5 = v170.x;
-							minvY5 = v170.y;
-							minvZ5 = v170.z;
-						}
-					}
-					var b18;
-					if(mind5 > 0) {
-						var v171 = closest;
-						v171.x = minvX5;
-						v171.y = minvY5;
-						v171.z = minvZ5;
-						b18 = mini5;
-					} else {
-						var l5 = nX5 * nX5 + nY5 * nY5 + nZ5 * nZ5;
-						if(l5 > 0) {
-							l5 = 1 / Math.sqrt(l5);
-						}
-						nX5 *= l5;
-						nY5 *= l5;
-						nZ5 *= l5;
-						var dn4 = v1X18 * nX5 + v1Y18 * nY5 + v1Z18 * nZ5;
-						var l24 = nX5 * nX5 + nY5 * nY5 + nZ5 * nZ5;
-						l24 = dn4 / l24;
-						minvX5 = nX5 * l24;
-						minvY5 = nY5 * l24;
-						minvZ5 = nZ5 * l24;
-						var v172 = closest;
-						v172.x = minvX5;
-						v172.y = minvY5;
-						v172.z = minvZ5;
-						b18 = 7;
-					}
-					var d37 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind1 < 0 || d37 < mind1) {
-						mini1 = b18 << 1;
-						mind1 = d37;
-						var v173 = closest;
-						minvX1 = v173.x;
-						minvY1 = v173.y;
-						minvZ1 = v173.z;
-					}
-				}
-				if(mind1 > 0) {
-					var v174 = closest;
-					v174.x = minvX1;
-					v174.y = minvY1;
-					v174.z = minvZ1;
-					v3 = mini1;
-				} else {
-					closest.zero();
-					v3 = 15;
-				}
-				break;
-			}
-			if(closest.x * closest.x + closest.y * closest.y + closest.z * closest.z < eps2) {
-				if(!useEpa) {
-					this.distance = 0;
-					return 0;
-				}
-				switch(this.simplexSize) {
-				case 1:
-					this.pointToTetrahedron();
-					break;
-				case 2:
-					this.lineToTetrahedron();
-					break;
-				case 3:
-					this.triangleToTetrahedron();
-					break;
-				}
-				if(this.simplexSize == 4) {
-					var epaState = this.computeDepth(c1,c2,tf1,tf2,s,w1,w2);
-					if(epaState != 0) {
-						this.distance = 0;
-						return epaState;
-					}
-					this.distance = -this.depth;
-					return 0;
-				}
-				this.distance = 0;
-				return 1;
-			}
-			this.shrinkSimplex(v3);
-			dir.x = closest.x;
-			dir.y = closest.y;
-			dir.z = closest.z;
-			var _this2 = dir;
-			var tx1 = -_this2.x;
-			var ty1 = -_this2.y;
-			var tz1 = -_this2.z;
-			_this2.x = tx1;
-			_this2.y = ty1;
-			_this2.z = tz1;
-			this.computeWitnessPoint1(false);
-			this.computeWitnessPoint2(false);
-			var _this3 = this.s[this.simplexSize];
-			var v175 = this.w1[this.simplexSize];
-			_this3.x = v175.x;
-			_this3.y = v175.y;
-			_this3.z = v175.z;
-			var _this4 = _this3;
-			var v176 = this.w2[this.simplexSize];
-			var tx2 = _this4.x - v176.x;
-			var ty2 = _this4.y - v176.y;
-			var tz2 = _this4.z - v176.z;
-			_this4.x = tx2;
-			_this4.y = ty2;
-			_this4.z = tz2;
-			if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z < eps2) {
-				throw new Error("!?");
-			}
-			var d110 = closest.x * dir.x + closest.y * dir.y + closest.z * dir.z;
-			var _this5 = s[this.simplexSize];
-			var d210 = _this5.x * dir.x + _this5.y * dir.y + _this5.z * dir.z;
-			if(d210 - d110 < eps2) {
-				this.interpolateClosestPoints();
-				this.distance = Math.sqrt(closest.x * closest.x + closest.y * closest.y + closest.z * closest.z);
-				if(cache != null && cache._gjkCache != null) {
-					this.saveCache(cache._gjkCache);
-				}
-				return 0;
-			}
-			this.simplexSize++;
-			++count;
-		}
-		return 2;
-	}
-	convexCastImpl(c1,c2,tf1,tf2,tl1,tl2,hit) {
-		this.c1 = c1;
-		this.c2 = c2;
-		this.tf1 = tf1;
-		this.tf2 = tf2;
-		var s = this.s;
-		var w1 = this.w1;
-		var w2 = this.w2;
-		var closest = this.closest;
-		var dir = this.dir;
-		var firstDir;
-		var firstDirX;
-		var firstDirY;
-		var firstDirZ;
-		firstDirX = tf2._positionX - tf1._positionX;
-		firstDirY = tf2._positionY - tf1._positionY;
-		firstDirZ = tf2._positionZ - tf1._positionZ;
-		var v = dir;
-		v.x = firstDirX;
-		v.y = firstDirY;
-		v.z = firstDirZ;
-		if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z < 1e-6) {
-			dir.init(1,0,0);
-		}
-		this.simplexSize = 0;
-		if(this.c1 != null) {
-			this.computeWitnessPoint1(true);
-		} else {
-			var v1 = this.w1[this.simplexSize];
-			v1.x = this.tf1._positionX;
-			v1.y = this.tf1._positionY;
-			v1.z = this.tf1._positionZ;
-		}
-		this.computeWitnessPoint2(true);
-		var _this = this.s[this.simplexSize];
-		var v2 = this.w1[this.simplexSize];
-		_this.x = v2.x;
-		_this.y = v2.y;
-		_this.z = v2.z;
-		var _this1 = _this;
-		var v3 = this.w2[this.simplexSize];
-		var tx = _this1.x - v3.x;
-		var ty = _this1.y - v3.y;
-		var tz = _this1.z - v3.z;
-		_this1.x = tx;
-		_this1.y = ty;
-		_this1.z = tz;
-		this.simplexSize = 1;
-		var count = 0;
-		var max = 40;
-		var lambda = 0.0;
-		var rayX = this.rayX;
-		var rayR = this.rayR;
-		rayX.zero();
-		rayR.x = tl2.x;
-		rayR.y = tl2.y;
-		rayR.z = tl2.z;
-		var _this2 = rayR;
-		var tx1 = _this2.x - tl1.x;
-		var ty1 = _this2.y - tl1.y;
-		var tz1 = _this2.z - tl1.z;
-		_this2.x = tx1;
-		_this2.y = ty1;
-		_this2.z = tz1;
-		var eps = 1e-4;
-		var eps2 = eps * eps;
-		while(count < max) {
-			var v4 = 0;
-			switch(this.simplexSize) {
-			case 1:
-				var v5 = s[0];
-				closest.x = v5.x;
-				closest.y = v5.y;
-				closest.z = v5.z;
-				v4 = 1;
-				break;
-			case 2:
-				var v11;
-				var v1X;
-				var v1Y;
-				var v1Z;
-				var v21;
-				var v2X;
-				var v2Y;
-				var v2Z;
-				var v6 = s[0];
-				v1X = v6.x;
-				v1Y = v6.y;
-				v1Z = v6.z;
-				var v7 = s[1];
-				v2X = v7.x;
-				v2Y = v7.y;
-				v2Z = v7.z;
-				var v12;
-				var v12X;
-				var v12Y;
-				var v12Z;
-				v12X = v2X - v1X;
-				v12Y = v2Y - v1Y;
-				v12Z = v2Z - v1Z;
-				var d = v12X * v12X + v12Y * v12Y + v12Z * v12Z;
-				var t = v12X * v1X + v12Y * v1Y + v12Z * v1Z;
-				t = -t / d;
-				if(t < 0) {
-					var v8 = closest;
-					v8.x = v1X;
-					v8.y = v1Y;
-					v8.z = v1Z;
-					v4 = 1;
-				} else if(t > 1) {
-					var v9 = closest;
-					v9.x = v2X;
-					v9.y = v2Y;
-					v9.z = v2Z;
-					v4 = 2;
-				} else {
-					var p;
-					var pX;
-					var pY;
-					var pZ;
-					pX = v1X + v12X * t;
-					pY = v1Y + v12Y * t;
-					pZ = v1Z + v12Z * t;
-					var v10 = closest;
-					v10.x = pX;
-					v10.y = pY;
-					v10.z = pZ;
-					v4 = 3;
-				}
-				break;
-			case 3:
-				var vec1 = s[0];
-				var vec2 = s[1];
-				var vec3 = s[2];
-				var v13;
-				var v1X1;
-				var v1Y1;
-				var v1Z1;
-				var v22;
-				var v2X1;
-				var v2Y1;
-				var v2Z1;
-				var v31;
-				var v3X;
-				var v3Y;
-				var v3Z;
-				var v121;
-				var v12X1;
-				var v12Y1;
-				var v12Z1;
-				var v23;
-				var v23X;
-				var v23Y;
-				var v23Z;
-				var v311;
-				var v31X;
-				var v31Y;
-				var v31Z;
-				var v14 = vec1;
-				v1X1 = v14.x;
-				v1Y1 = v14.y;
-				v1Z1 = v14.z;
-				var v15 = vec2;
-				v2X1 = v15.x;
-				v2Y1 = v15.y;
-				v2Z1 = v15.z;
-				var v16 = vec3;
-				v3X = v16.x;
-				v3Y = v16.y;
-				v3Z = v16.z;
-				v12X1 = v2X1 - v1X1;
-				v12Y1 = v2Y1 - v1Y1;
-				v12Z1 = v2Z1 - v1Z1;
-				v23X = v3X - v2X1;
-				v23Y = v3Y - v2Y1;
-				v23Z = v3Z - v2Z1;
-				v31X = v1X1 - v3X;
-				v31Y = v1Y1 - v3Y;
-				v31Z = v1Z1 - v3Z;
-				var n;
-				var nX;
-				var nY;
-				var nZ;
-				nX = v12Y1 * v23Z - v12Z1 * v23Y;
-				nY = v12Z1 * v23X - v12X1 * v23Z;
-				nZ = v12X1 * v23Y - v12Y1 * v23X;
-				var n12;
-				var n12X;
-				var n12Y;
-				var n12Z;
-				var n23;
-				var n23X;
-				var n23Y;
-				var n23Z;
-				var n31;
-				var n31X;
-				var n31Y;
-				var n31Z;
-				n12X = v12Y1 * nZ - v12Z1 * nY;
-				n12Y = v12Z1 * nX - v12X1 * nZ;
-				n12Z = v12X1 * nY - v12Y1 * nX;
-				n23X = v23Y * nZ - v23Z * nY;
-				n23Y = v23Z * nX - v23X * nZ;
-				n23Z = v23X * nY - v23Y * nX;
-				n31X = v31Y * nZ - v31Z * nY;
-				n31Y = v31Z * nX - v31X * nZ;
-				n31Z = v31X * nY - v31Y * nX;
-				var d12 = v1X1 * n12X + v1Y1 * n12Y + v1Z1 * n12Z;
-				var d23 = v2X1 * n23X + v2Y1 * n23Y + v2Z1 * n23Z;
-				var d31 = v3X * n31X + v3Y * n31Y + v3Z * n31Z;
-				var mind = -1;
-				var minv;
-				var minvX;
-				var minvY;
-				var minvZ;
-				var mini = 0;
-				minvX = 0;
-				minvY = 0;
-				minvZ = 0;
-				if(d12 < 0) {
-					var v17;
-					var v1X2;
-					var v1Y2;
-					var v1Z2;
-					var v24;
-					var v2X2;
-					var v2Y2;
-					var v2Z2;
-					var v18 = vec1;
-					v1X2 = v18.x;
-					v1Y2 = v18.y;
-					v1Z2 = v18.z;
-					var v19 = vec2;
-					v2X2 = v19.x;
-					v2Y2 = v19.y;
-					v2Z2 = v19.z;
-					var v122;
-					var v12X2;
-					var v12Y2;
-					var v12Z2;
-					v12X2 = v2X2 - v1X2;
-					v12Y2 = v2Y2 - v1Y2;
-					v12Z2 = v2Z2 - v1Z2;
-					var d1 = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
-					var t1 = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
-					t1 = -t1 / d1;
-					var b;
-					if(t1 < 0) {
-						var v20 = closest;
-						v20.x = v1X2;
-						v20.y = v1Y2;
-						v20.z = v1Z2;
-						b = 1;
-					} else if(t1 > 1) {
-						var v25 = closest;
-						v25.x = v2X2;
-						v25.y = v2Y2;
-						v25.z = v2Z2;
-						b = 2;
-					} else {
-						var p1;
-						var pX1;
-						var pY1;
-						var pZ1;
-						pX1 = v1X2 + v12X2 * t1;
-						pY1 = v1Y2 + v12Y2 * t1;
-						pZ1 = v1Z2 + v12Z2 * t1;
-						var v26 = closest;
-						v26.x = pX1;
-						v26.y = pY1;
-						v26.z = pZ1;
-						b = 3;
-					}
-					var d2 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					mini = b;
-					mind = d2;
-					var v27 = closest;
-					minvX = v27.x;
-					minvY = v27.y;
-					minvZ = v27.z;
-				}
-				if(d23 < 0) {
-					var v110;
-					var v1X3;
-					var v1Y3;
-					var v1Z3;
-					var v28;
-					var v2X3;
-					var v2Y3;
-					var v2Z3;
-					var v29 = vec2;
-					v1X3 = v29.x;
-					v1Y3 = v29.y;
-					v1Z3 = v29.z;
-					var v30 = vec3;
-					v2X3 = v30.x;
-					v2Y3 = v30.y;
-					v2Z3 = v30.z;
-					var v123;
-					var v12X3;
-					var v12Y3;
-					var v12Z3;
-					v12X3 = v2X3 - v1X3;
-					v12Y3 = v2Y3 - v1Y3;
-					v12Z3 = v2Z3 - v1Z3;
-					var d3 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
-					var t2 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
-					t2 = -t2 / d3;
-					var b1;
-					if(t2 < 0) {
-						var v32 = closest;
-						v32.x = v1X3;
-						v32.y = v1Y3;
-						v32.z = v1Z3;
-						b1 = 1;
-					} else if(t2 > 1) {
-						var v33 = closest;
-						v33.x = v2X3;
-						v33.y = v2Y3;
-						v33.z = v2Z3;
-						b1 = 2;
-					} else {
-						var p2;
-						var pX2;
-						var pY2;
-						var pZ2;
-						pX2 = v1X3 + v12X3 * t2;
-						pY2 = v1Y3 + v12Y3 * t2;
-						pZ2 = v1Z3 + v12Z3 * t2;
-						var v34 = closest;
-						v34.x = pX2;
-						v34.y = pY2;
-						v34.z = pZ2;
-						b1 = 3;
-					}
-					var d4 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind < 0 || d4 < mind) {
-						mini = b1 << 1;
-						mind = d4;
-						var v35 = closest;
-						minvX = v35.x;
-						minvY = v35.y;
-						minvZ = v35.z;
-					}
-				}
-				if(d31 < 0) {
-					var v111;
-					var v1X4;
-					var v1Y4;
-					var v1Z4;
-					var v210;
-					var v2X4;
-					var v2Y4;
-					var v2Z4;
-					var v36 = vec1;
-					v1X4 = v36.x;
-					v1Y4 = v36.y;
-					v1Z4 = v36.z;
-					var v37 = vec3;
-					v2X4 = v37.x;
-					v2Y4 = v37.y;
-					v2Z4 = v37.z;
-					var v124;
-					var v12X4;
-					var v12Y4;
-					var v12Z4;
-					v12X4 = v2X4 - v1X4;
-					v12Y4 = v2Y4 - v1Y4;
-					v12Z4 = v2Z4 - v1Z4;
-					var d5 = v12X4 * v12X4 + v12Y4 * v12Y4 + v12Z4 * v12Z4;
-					var t3 = v12X4 * v1X4 + v12Y4 * v1Y4 + v12Z4 * v1Z4;
-					t3 = -t3 / d5;
-					var b2;
-					if(t3 < 0) {
-						var v38 = closest;
-						v38.x = v1X4;
-						v38.y = v1Y4;
-						v38.z = v1Z4;
-						b2 = 1;
-					} else if(t3 > 1) {
-						var v39 = closest;
-						v39.x = v2X4;
-						v39.y = v2Y4;
-						v39.z = v2Z4;
-						b2 = 2;
-					} else {
-						var p3;
-						var pX3;
-						var pY3;
-						var pZ3;
-						pX3 = v1X4 + v12X4 * t3;
-						pY3 = v1Y4 + v12Y4 * t3;
-						pZ3 = v1Z4 + v12Z4 * t3;
-						var v40 = closest;
-						v40.x = pX3;
-						v40.y = pY3;
-						v40.z = pZ3;
-						b2 = 3;
-					}
-					var d6 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind < 0 || d6 < mind) {
-						mini = b2 & 1 | (b2 & 2) << 1;
-						mind = d6;
-						var v41 = closest;
-						minvX = v41.x;
-						minvY = v41.y;
-						minvZ = v41.z;
-					}
-				}
-				if(mind > 0) {
-					var v42 = closest;
-					v42.x = minvX;
-					v42.y = minvY;
-					v42.z = minvZ;
-					v4 = mini;
-				} else {
-					var l = nX * nX + nY * nY + nZ * nZ;
-					if(l > 0) {
-						l = 1 / Math.sqrt(l);
-					}
-					nX *= l;
-					nY *= l;
-					nZ *= l;
-					var dn = v1X1 * nX + v1Y1 * nY + v1Z1 * nZ;
-					var l2 = nX * nX + nY * nY + nZ * nZ;
-					l2 = dn / l2;
-					minvX = nX * l2;
-					minvY = nY * l2;
-					minvZ = nZ * l2;
-					var v43 = closest;
-					v43.x = minvX;
-					v43.y = minvY;
-					v43.z = minvZ;
-					v4 = 7;
-				}
-				break;
-			case 4:
-				var vec11 = s[0];
-				var vec21 = s[1];
-				var vec31 = s[2];
-				var vec4 = s[3];
-				var v112;
-				var v1X5;
-				var v1Y5;
-				var v1Z5;
-				var v211;
-				var v2X5;
-				var v2Y5;
-				var v2Z5;
-				var v310;
-				var v3X1;
-				var v3Y1;
-				var v3Z1;
-				var v44;
-				var v4X;
-				var v4Y;
-				var v4Z;
-				var v125;
-				var v12X5;
-				var v12Y5;
-				var v12Z5;
-				var v131;
-				var v13X;
-				var v13Y;
-				var v13Z;
-				var v141;
-				var v14X;
-				var v14Y;
-				var v14Z;
-				var v231;
-				var v23X1;
-				var v23Y1;
-				var v23Z1;
-				var v241;
-				var v24X;
-				var v24Y;
-				var v24Z;
-				var v341;
-				var v34X;
-				var v34Y;
-				var v34Z;
-				var v45 = vec11;
-				v1X5 = v45.x;
-				v1Y5 = v45.y;
-				v1Z5 = v45.z;
-				var v46 = vec21;
-				v2X5 = v46.x;
-				v2Y5 = v46.y;
-				v2Z5 = v46.z;
-				var v47 = vec31;
-				v3X1 = v47.x;
-				v3Y1 = v47.y;
-				v3Z1 = v47.z;
-				var v48 = vec4;
-				v4X = v48.x;
-				v4Y = v48.y;
-				v4Z = v48.z;
-				v12X5 = v2X5 - v1X5;
-				v12Y5 = v2Y5 - v1Y5;
-				v12Z5 = v2Z5 - v1Z5;
-				v13X = v3X1 - v1X5;
-				v13Y = v3Y1 - v1Y5;
-				v13Z = v3Z1 - v1Z5;
-				v14X = v4X - v1X5;
-				v14Y = v4Y - v1Y5;
-				v14Z = v4Z - v1Z5;
-				v23X1 = v3X1 - v2X5;
-				v23Y1 = v3Y1 - v2Y5;
-				v23Z1 = v3Z1 - v2Z5;
-				v24X = v4X - v2X5;
-				v24Y = v4Y - v2Y5;
-				v24Z = v4Z - v2Z5;
-				v34X = v4X - v3X1;
-				v34Y = v4Y - v3Y1;
-				v34Z = v4Z - v3Z1;
-				var rev;
-				var n123;
-				var n123X;
-				var n123Y;
-				var n123Z;
-				var n134;
-				var n134X;
-				var n134Y;
-				var n134Z;
-				var n142;
-				var n142X;
-				var n142Y;
-				var n142Z;
-				var n243;
-				var n243X;
-				var n243Y;
-				var n243Z;
-				var n1;
-				var nX1;
-				var nY1;
-				var nZ1;
-				n123X = v12Y5 * v13Z - v12Z5 * v13Y;
-				n123Y = v12Z5 * v13X - v12X5 * v13Z;
-				n123Z = v12X5 * v13Y - v12Y5 * v13X;
-				n134X = v13Y * v14Z - v13Z * v14Y;
-				n134Y = v13Z * v14X - v13X * v14Z;
-				n134Z = v13X * v14Y - v13Y * v14X;
-				n142X = v14Y * v12Z5 - v14Z * v12Y5;
-				n142Y = v14Z * v12X5 - v14X * v12Z5;
-				n142Z = v14X * v12Y5 - v14Y * v12X5;
-				n243X = v24Y * v23Z1 - v24Z * v23Y1;
-				n243Y = v24Z * v23X1 - v24X * v23Z1;
-				n243Z = v24X * v23Y1 - v24Y * v23X1;
-				var sign = v12X5 * n243X + v12Y5 * n243Y + v12Z5 * n243Z > 0 ? 1 : -1;
-				var d123 = v1X5 * n123X + v1Y5 * n123Y + v1Z5 * n123Z;
-				var d134 = v1X5 * n134X + v1Y5 * n134Y + v1Z5 * n134Z;
-				var d142 = v1X5 * n142X + v1Y5 * n142Y + v1Z5 * n142Z;
-				var d243 = v2X5 * n243X + v2Y5 * n243Y + v2Z5 * n243Z;
-				var mind1 = -1;
-				var minv1;
-				var minvX1;
-				var minvY1;
-				var minvZ1;
-				var mini1 = 0;
-				minvX1 = 0;
-				minvY1 = 0;
-				minvZ1 = 0;
-				if(d123 * sign < 0) {
-					var v113;
-					var v1X6;
-					var v1Y6;
-					var v1Z6;
-					var v212;
-					var v2X6;
-					var v2Y6;
-					var v2Z6;
-					var v312;
-					var v3X2;
-					var v3Y2;
-					var v3Z2;
-					var v126;
-					var v12X6;
-					var v12Y6;
-					var v12Z6;
-					var v232;
-					var v23X2;
-					var v23Y2;
-					var v23Z2;
-					var v313;
-					var v31X1;
-					var v31Y1;
-					var v31Z1;
-					var v49 = vec11;
-					v1X6 = v49.x;
-					v1Y6 = v49.y;
-					v1Z6 = v49.z;
-					var v50 = vec21;
-					v2X6 = v50.x;
-					v2Y6 = v50.y;
-					v2Z6 = v50.z;
-					var v51 = vec31;
-					v3X2 = v51.x;
-					v3Y2 = v51.y;
-					v3Z2 = v51.z;
-					v12X6 = v2X6 - v1X6;
-					v12Y6 = v2Y6 - v1Y6;
-					v12Z6 = v2Z6 - v1Z6;
-					v23X2 = v3X2 - v2X6;
-					v23Y2 = v3Y2 - v2Y6;
-					v23Z2 = v3Z2 - v2Z6;
-					v31X1 = v1X6 - v3X2;
-					v31Y1 = v1Y6 - v3Y2;
-					v31Z1 = v1Z6 - v3Z2;
-					var n2;
-					var nX2;
-					var nY2;
-					var nZ2;
-					nX2 = v12Y6 * v23Z2 - v12Z6 * v23Y2;
-					nY2 = v12Z6 * v23X2 - v12X6 * v23Z2;
-					nZ2 = v12X6 * v23Y2 - v12Y6 * v23X2;
-					var n121;
-					var n12X1;
-					var n12Y1;
-					var n12Z1;
-					var n231;
-					var n23X1;
-					var n23Y1;
-					var n23Z1;
-					var n311;
-					var n31X1;
-					var n31Y1;
-					var n31Z1;
-					n12X1 = v12Y6 * nZ2 - v12Z6 * nY2;
-					n12Y1 = v12Z6 * nX2 - v12X6 * nZ2;
-					n12Z1 = v12X6 * nY2 - v12Y6 * nX2;
-					n23X1 = v23Y2 * nZ2 - v23Z2 * nY2;
-					n23Y1 = v23Z2 * nX2 - v23X2 * nZ2;
-					n23Z1 = v23X2 * nY2 - v23Y2 * nX2;
-					n31X1 = v31Y1 * nZ2 - v31Z1 * nY2;
-					n31Y1 = v31Z1 * nX2 - v31X1 * nZ2;
-					n31Z1 = v31X1 * nY2 - v31Y1 * nX2;
-					var d121 = v1X6 * n12X1 + v1Y6 * n12Y1 + v1Z6 * n12Z1;
-					var d231 = v2X6 * n23X1 + v2Y6 * n23Y1 + v2Z6 * n23Z1;
-					var d311 = v3X2 * n31X1 + v3Y2 * n31Y1 + v3Z2 * n31Z1;
-					var mind2 = -1;
-					var minv2;
-					var minvX2;
-					var minvY2;
-					var minvZ2;
-					var mini2 = 0;
-					minvX2 = 0;
-					minvY2 = 0;
-					minvZ2 = 0;
-					if(d121 < 0) {
-						var v114;
-						var v1X7;
-						var v1Y7;
-						var v1Z7;
-						var v213;
-						var v2X7;
-						var v2Y7;
-						var v2Z7;
-						var v52 = vec11;
-						v1X7 = v52.x;
-						v1Y7 = v52.y;
-						v1Z7 = v52.z;
-						var v53 = vec21;
-						v2X7 = v53.x;
-						v2Y7 = v53.y;
-						v2Z7 = v53.z;
-						var v127;
-						var v12X7;
-						var v12Y7;
-						var v12Z7;
-						v12X7 = v2X7 - v1X7;
-						v12Y7 = v2Y7 - v1Y7;
-						v12Z7 = v2Z7 - v1Z7;
-						var d7 = v12X7 * v12X7 + v12Y7 * v12Y7 + v12Z7 * v12Z7;
-						var t4 = v12X7 * v1X7 + v12Y7 * v1Y7 + v12Z7 * v1Z7;
-						t4 = -t4 / d7;
-						var b3;
-						if(t4 < 0) {
-							var v54 = closest;
-							v54.x = v1X7;
-							v54.y = v1Y7;
-							v54.z = v1Z7;
-							b3 = 1;
-						} else if(t4 > 1) {
-							var v55 = closest;
-							v55.x = v2X7;
-							v55.y = v2Y7;
-							v55.z = v2Z7;
-							b3 = 2;
-						} else {
-							var p4;
-							var pX4;
-							var pY4;
-							var pZ4;
-							pX4 = v1X7 + v12X7 * t4;
-							pY4 = v1Y7 + v12Y7 * t4;
-							pZ4 = v1Z7 + v12Z7 * t4;
-							var v56 = closest;
-							v56.x = pX4;
-							v56.y = pY4;
-							v56.z = pZ4;
-							b3 = 3;
-						}
-						var d8 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						mini2 = b3;
-						mind2 = d8;
-						var v57 = closest;
-						minvX2 = v57.x;
-						minvY2 = v57.y;
-						minvZ2 = v57.z;
-					}
-					if(d231 < 0) {
-						var v115;
-						var v1X8;
-						var v1Y8;
-						var v1Z8;
-						var v214;
-						var v2X8;
-						var v2Y8;
-						var v2Z8;
-						var v58 = vec21;
-						v1X8 = v58.x;
-						v1Y8 = v58.y;
-						v1Z8 = v58.z;
-						var v59 = vec31;
-						v2X8 = v59.x;
-						v2Y8 = v59.y;
-						v2Z8 = v59.z;
-						var v128;
-						var v12X8;
-						var v12Y8;
-						var v12Z8;
-						v12X8 = v2X8 - v1X8;
-						v12Y8 = v2Y8 - v1Y8;
-						v12Z8 = v2Z8 - v1Z8;
-						var d9 = v12X8 * v12X8 + v12Y8 * v12Y8 + v12Z8 * v12Z8;
-						var t5 = v12X8 * v1X8 + v12Y8 * v1Y8 + v12Z8 * v1Z8;
-						t5 = -t5 / d9;
-						var b4;
-						if(t5 < 0) {
-							var v60 = closest;
-							v60.x = v1X8;
-							v60.y = v1Y8;
-							v60.z = v1Z8;
-							b4 = 1;
-						} else if(t5 > 1) {
-							var v61 = closest;
-							v61.x = v2X8;
-							v61.y = v2Y8;
-							v61.z = v2Z8;
-							b4 = 2;
-						} else {
-							var p5;
-							var pX5;
-							var pY5;
-							var pZ5;
-							pX5 = v1X8 + v12X8 * t5;
-							pY5 = v1Y8 + v12Y8 * t5;
-							pZ5 = v1Z8 + v12Z8 * t5;
-							var v62 = closest;
-							v62.x = pX5;
-							v62.y = pY5;
-							v62.z = pZ5;
-							b4 = 3;
-						}
-						var d10 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind2 < 0 || d10 < mind2) {
-							mini2 = b4 << 1;
-							mind2 = d10;
-							var v63 = closest;
-							minvX2 = v63.x;
-							minvY2 = v63.y;
-							minvZ2 = v63.z;
-						}
-					}
-					if(d311 < 0) {
-						var v116;
-						var v1X9;
-						var v1Y9;
-						var v1Z9;
-						var v215;
-						var v2X9;
-						var v2Y9;
-						var v2Z9;
-						var v64 = vec11;
-						v1X9 = v64.x;
-						v1Y9 = v64.y;
-						v1Z9 = v64.z;
-						var v65 = vec31;
-						v2X9 = v65.x;
-						v2Y9 = v65.y;
-						v2Z9 = v65.z;
-						var v129;
-						var v12X9;
-						var v12Y9;
-						var v12Z9;
-						v12X9 = v2X9 - v1X9;
-						v12Y9 = v2Y9 - v1Y9;
-						v12Z9 = v2Z9 - v1Z9;
-						var d11 = v12X9 * v12X9 + v12Y9 * v12Y9 + v12Z9 * v12Z9;
-						var t6 = v12X9 * v1X9 + v12Y9 * v1Y9 + v12Z9 * v1Z9;
-						t6 = -t6 / d11;
-						var b5;
-						if(t6 < 0) {
-							var v66 = closest;
-							v66.x = v1X9;
-							v66.y = v1Y9;
-							v66.z = v1Z9;
-							b5 = 1;
-						} else if(t6 > 1) {
-							var v67 = closest;
-							v67.x = v2X9;
-							v67.y = v2Y9;
-							v67.z = v2Z9;
-							b5 = 2;
-						} else {
-							var p6;
-							var pX6;
-							var pY6;
-							var pZ6;
-							pX6 = v1X9 + v12X9 * t6;
-							pY6 = v1Y9 + v12Y9 * t6;
-							pZ6 = v1Z9 + v12Z9 * t6;
-							var v68 = closest;
-							v68.x = pX6;
-							v68.y = pY6;
-							v68.z = pZ6;
-							b5 = 3;
-						}
-						var d13 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind2 < 0 || d13 < mind2) {
-							mini2 = b5 & 1 | (b5 & 2) << 1;
-							mind2 = d13;
-							var v69 = closest;
-							minvX2 = v69.x;
-							minvY2 = v69.y;
-							minvZ2 = v69.z;
-						}
-					}
-					var b6;
-					if(mind2 > 0) {
-						var v70 = closest;
-						v70.x = minvX2;
-						v70.y = minvY2;
-						v70.z = minvZ2;
-						b6 = mini2;
-					} else {
-						var l1 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
-						if(l1 > 0) {
-							l1 = 1 / Math.sqrt(l1);
-						}
-						nX2 *= l1;
-						nY2 *= l1;
-						nZ2 *= l1;
-						var dn1 = v1X6 * nX2 + v1Y6 * nY2 + v1Z6 * nZ2;
-						var l21 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
-						l21 = dn1 / l21;
-						minvX2 = nX2 * l21;
-						minvY2 = nY2 * l21;
-						minvZ2 = nZ2 * l21;
-						var v71 = closest;
-						v71.x = minvX2;
-						v71.y = minvY2;
-						v71.z = minvZ2;
-						b6 = 7;
-					}
-					var d14 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					mini1 = b6;
-					mind1 = d14;
-					var v72 = closest;
-					minvX1 = v72.x;
-					minvY1 = v72.y;
-					minvZ1 = v72.z;
-				}
-				if(d134 * sign < 0) {
-					var v117;
-					var v1X10;
-					var v1Y10;
-					var v1Z10;
-					var v216;
-					var v2X10;
-					var v2Y10;
-					var v2Z10;
-					var v314;
-					var v3X3;
-					var v3Y3;
-					var v3Z3;
-					var v1210;
-					var v12X10;
-					var v12Y10;
-					var v12Z10;
-					var v233;
-					var v23X3;
-					var v23Y3;
-					var v23Z3;
-					var v315;
-					var v31X2;
-					var v31Y2;
-					var v31Z2;
-					var v73 = vec11;
-					v1X10 = v73.x;
-					v1Y10 = v73.y;
-					v1Z10 = v73.z;
-					var v74 = vec31;
-					v2X10 = v74.x;
-					v2Y10 = v74.y;
-					v2Z10 = v74.z;
-					var v75 = vec4;
-					v3X3 = v75.x;
-					v3Y3 = v75.y;
-					v3Z3 = v75.z;
-					v12X10 = v2X10 - v1X10;
-					v12Y10 = v2Y10 - v1Y10;
-					v12Z10 = v2Z10 - v1Z10;
-					v23X3 = v3X3 - v2X10;
-					v23Y3 = v3Y3 - v2Y10;
-					v23Z3 = v3Z3 - v2Z10;
-					v31X2 = v1X10 - v3X3;
-					v31Y2 = v1Y10 - v3Y3;
-					v31Z2 = v1Z10 - v3Z3;
-					var n3;
-					var nX3;
-					var nY3;
-					var nZ3;
-					nX3 = v12Y10 * v23Z3 - v12Z10 * v23Y3;
-					nY3 = v12Z10 * v23X3 - v12X10 * v23Z3;
-					nZ3 = v12X10 * v23Y3 - v12Y10 * v23X3;
-					var n122;
-					var n12X2;
-					var n12Y2;
-					var n12Z2;
-					var n232;
-					var n23X2;
-					var n23Y2;
-					var n23Z2;
-					var n312;
-					var n31X2;
-					var n31Y2;
-					var n31Z2;
-					n12X2 = v12Y10 * nZ3 - v12Z10 * nY3;
-					n12Y2 = v12Z10 * nX3 - v12X10 * nZ3;
-					n12Z2 = v12X10 * nY3 - v12Y10 * nX3;
-					n23X2 = v23Y3 * nZ3 - v23Z3 * nY3;
-					n23Y2 = v23Z3 * nX3 - v23X3 * nZ3;
-					n23Z2 = v23X3 * nY3 - v23Y3 * nX3;
-					n31X2 = v31Y2 * nZ3 - v31Z2 * nY3;
-					n31Y2 = v31Z2 * nX3 - v31X2 * nZ3;
-					n31Z2 = v31X2 * nY3 - v31Y2 * nX3;
-					var d122 = v1X10 * n12X2 + v1Y10 * n12Y2 + v1Z10 * n12Z2;
-					var d232 = v2X10 * n23X2 + v2Y10 * n23Y2 + v2Z10 * n23Z2;
-					var d312 = v3X3 * n31X2 + v3Y3 * n31Y2 + v3Z3 * n31Z2;
-					var mind3 = -1;
-					var minv3;
-					var minvX3;
-					var minvY3;
-					var minvZ3;
-					var mini3 = 0;
-					minvX3 = 0;
-					minvY3 = 0;
-					minvZ3 = 0;
-					if(d122 < 0) {
-						var v118;
-						var v1X11;
-						var v1Y11;
-						var v1Z11;
-						var v217;
-						var v2X11;
-						var v2Y11;
-						var v2Z11;
-						var v76 = vec11;
-						v1X11 = v76.x;
-						v1Y11 = v76.y;
-						v1Z11 = v76.z;
-						var v77 = vec31;
-						v2X11 = v77.x;
-						v2Y11 = v77.y;
-						v2Z11 = v77.z;
-						var v1211;
-						var v12X11;
-						var v12Y11;
-						var v12Z11;
-						v12X11 = v2X11 - v1X11;
-						v12Y11 = v2Y11 - v1Y11;
-						v12Z11 = v2Z11 - v1Z11;
-						var d15 = v12X11 * v12X11 + v12Y11 * v12Y11 + v12Z11 * v12Z11;
-						var t7 = v12X11 * v1X11 + v12Y11 * v1Y11 + v12Z11 * v1Z11;
-						t7 = -t7 / d15;
-						var b7;
-						if(t7 < 0) {
-							var v78 = closest;
-							v78.x = v1X11;
-							v78.y = v1Y11;
-							v78.z = v1Z11;
-							b7 = 1;
-						} else if(t7 > 1) {
-							var v79 = closest;
-							v79.x = v2X11;
-							v79.y = v2Y11;
-							v79.z = v2Z11;
-							b7 = 2;
-						} else {
-							var p7;
-							var pX7;
-							var pY7;
-							var pZ7;
-							pX7 = v1X11 + v12X11 * t7;
-							pY7 = v1Y11 + v12Y11 * t7;
-							pZ7 = v1Z11 + v12Z11 * t7;
-							var v80 = closest;
-							v80.x = pX7;
-							v80.y = pY7;
-							v80.z = pZ7;
-							b7 = 3;
-						}
-						var d16 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						mini3 = b7;
-						mind3 = d16;
-						var v81 = closest;
-						minvX3 = v81.x;
-						minvY3 = v81.y;
-						minvZ3 = v81.z;
-					}
-					if(d232 < 0) {
-						var v119;
-						var v1X12;
-						var v1Y12;
-						var v1Z12;
-						var v218;
-						var v2X12;
-						var v2Y12;
-						var v2Z12;
-						var v82 = vec31;
-						v1X12 = v82.x;
-						v1Y12 = v82.y;
-						v1Z12 = v82.z;
-						var v83 = vec4;
-						v2X12 = v83.x;
-						v2Y12 = v83.y;
-						v2Z12 = v83.z;
-						var v1212;
-						var v12X12;
-						var v12Y12;
-						var v12Z12;
-						v12X12 = v2X12 - v1X12;
-						v12Y12 = v2Y12 - v1Y12;
-						v12Z12 = v2Z12 - v1Z12;
-						var d17 = v12X12 * v12X12 + v12Y12 * v12Y12 + v12Z12 * v12Z12;
-						var t8 = v12X12 * v1X12 + v12Y12 * v1Y12 + v12Z12 * v1Z12;
-						t8 = -t8 / d17;
-						var b8;
-						if(t8 < 0) {
-							var v84 = closest;
-							v84.x = v1X12;
-							v84.y = v1Y12;
-							v84.z = v1Z12;
-							b8 = 1;
-						} else if(t8 > 1) {
-							var v85 = closest;
-							v85.x = v2X12;
-							v85.y = v2Y12;
-							v85.z = v2Z12;
-							b8 = 2;
-						} else {
-							var p8;
-							var pX8;
-							var pY8;
-							var pZ8;
-							pX8 = v1X12 + v12X12 * t8;
-							pY8 = v1Y12 + v12Y12 * t8;
-							pZ8 = v1Z12 + v12Z12 * t8;
-							var v86 = closest;
-							v86.x = pX8;
-							v86.y = pY8;
-							v86.z = pZ8;
-							b8 = 3;
-						}
-						var d18 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind3 < 0 || d18 < mind3) {
-							mini3 = b8 << 1;
-							mind3 = d18;
-							var v87 = closest;
-							minvX3 = v87.x;
-							minvY3 = v87.y;
-							minvZ3 = v87.z;
-						}
-					}
-					if(d312 < 0) {
-						var v120;
-						var v1X13;
-						var v1Y13;
-						var v1Z13;
-						var v219;
-						var v2X13;
-						var v2Y13;
-						var v2Z13;
-						var v88 = vec11;
-						v1X13 = v88.x;
-						v1Y13 = v88.y;
-						v1Z13 = v88.z;
-						var v89 = vec4;
-						v2X13 = v89.x;
-						v2Y13 = v89.y;
-						v2Z13 = v89.z;
-						var v1213;
-						var v12X13;
-						var v12Y13;
-						var v12Z13;
-						v12X13 = v2X13 - v1X13;
-						v12Y13 = v2Y13 - v1Y13;
-						v12Z13 = v2Z13 - v1Z13;
-						var d19 = v12X13 * v12X13 + v12Y13 * v12Y13 + v12Z13 * v12Z13;
-						var t9 = v12X13 * v1X13 + v12Y13 * v1Y13 + v12Z13 * v1Z13;
-						t9 = -t9 / d19;
-						var b9;
-						if(t9 < 0) {
-							var v90 = closest;
-							v90.x = v1X13;
-							v90.y = v1Y13;
-							v90.z = v1Z13;
-							b9 = 1;
-						} else if(t9 > 1) {
-							var v91 = closest;
-							v91.x = v2X13;
-							v91.y = v2Y13;
-							v91.z = v2Z13;
-							b9 = 2;
-						} else {
-							var p9;
-							var pX9;
-							var pY9;
-							var pZ9;
-							pX9 = v1X13 + v12X13 * t9;
-							pY9 = v1Y13 + v12Y13 * t9;
-							pZ9 = v1Z13 + v12Z13 * t9;
-							var v92 = closest;
-							v92.x = pX9;
-							v92.y = pY9;
-							v92.z = pZ9;
-							b9 = 3;
-						}
-						var d20 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind3 < 0 || d20 < mind3) {
-							mini3 = b9 & 1 | (b9 & 2) << 1;
-							mind3 = d20;
-							var v93 = closest;
-							minvX3 = v93.x;
-							minvY3 = v93.y;
-							minvZ3 = v93.z;
-						}
-					}
-					var b10;
-					if(mind3 > 0) {
-						var v94 = closest;
-						v94.x = minvX3;
-						v94.y = minvY3;
-						v94.z = minvZ3;
-						b10 = mini3;
-					} else {
-						var l3 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
-						if(l3 > 0) {
-							l3 = 1 / Math.sqrt(l3);
-						}
-						nX3 *= l3;
-						nY3 *= l3;
-						nZ3 *= l3;
-						var dn2 = v1X10 * nX3 + v1Y10 * nY3 + v1Z10 * nZ3;
-						var l22 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
-						l22 = dn2 / l22;
-						minvX3 = nX3 * l22;
-						minvY3 = nY3 * l22;
-						minvZ3 = nZ3 * l22;
-						var v95 = closest;
-						v95.x = minvX3;
-						v95.y = minvY3;
-						v95.z = minvZ3;
-						b10 = 7;
-					}
-					var d21 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind1 < 0 || d21 < mind1) {
-						mini1 = b10 & 1 | (b10 & 6) << 1;
-						mind1 = d21;
-						var v96 = closest;
-						minvX1 = v96.x;
-						minvY1 = v96.y;
-						minvZ1 = v96.z;
-					}
-				}
-				if(d142 * sign < 0) {
-					var v130;
-					var v1X14;
-					var v1Y14;
-					var v1Z14;
-					var v220;
-					var v2X14;
-					var v2Y14;
-					var v2Z14;
-					var v316;
-					var v3X4;
-					var v3Y4;
-					var v3Z4;
-					var v1214;
-					var v12X14;
-					var v12Y14;
-					var v12Z14;
-					var v234;
-					var v23X4;
-					var v23Y4;
-					var v23Z4;
-					var v317;
-					var v31X3;
-					var v31Y3;
-					var v31Z3;
-					var v97 = vec11;
-					v1X14 = v97.x;
-					v1Y14 = v97.y;
-					v1Z14 = v97.z;
-					var v98 = vec21;
-					v2X14 = v98.x;
-					v2Y14 = v98.y;
-					v2Z14 = v98.z;
-					var v99 = vec4;
-					v3X4 = v99.x;
-					v3Y4 = v99.y;
-					v3Z4 = v99.z;
-					v12X14 = v2X14 - v1X14;
-					v12Y14 = v2Y14 - v1Y14;
-					v12Z14 = v2Z14 - v1Z14;
-					v23X4 = v3X4 - v2X14;
-					v23Y4 = v3Y4 - v2Y14;
-					v23Z4 = v3Z4 - v2Z14;
-					v31X3 = v1X14 - v3X4;
-					v31Y3 = v1Y14 - v3Y4;
-					v31Z3 = v1Z14 - v3Z4;
-					var n4;
-					var nX4;
-					var nY4;
-					var nZ4;
-					nX4 = v12Y14 * v23Z4 - v12Z14 * v23Y4;
-					nY4 = v12Z14 * v23X4 - v12X14 * v23Z4;
-					nZ4 = v12X14 * v23Y4 - v12Y14 * v23X4;
-					var n124;
-					var n12X3;
-					var n12Y3;
-					var n12Z3;
-					var n233;
-					var n23X3;
-					var n23Y3;
-					var n23Z3;
-					var n313;
-					var n31X3;
-					var n31Y3;
-					var n31Z3;
-					n12X3 = v12Y14 * nZ4 - v12Z14 * nY4;
-					n12Y3 = v12Z14 * nX4 - v12X14 * nZ4;
-					n12Z3 = v12X14 * nY4 - v12Y14 * nX4;
-					n23X3 = v23Y4 * nZ4 - v23Z4 * nY4;
-					n23Y3 = v23Z4 * nX4 - v23X4 * nZ4;
-					n23Z3 = v23X4 * nY4 - v23Y4 * nX4;
-					n31X3 = v31Y3 * nZ4 - v31Z3 * nY4;
-					n31Y3 = v31Z3 * nX4 - v31X3 * nZ4;
-					n31Z3 = v31X3 * nY4 - v31Y3 * nX4;
-					var d124 = v1X14 * n12X3 + v1Y14 * n12Y3 + v1Z14 * n12Z3;
-					var d233 = v2X14 * n23X3 + v2Y14 * n23Y3 + v2Z14 * n23Z3;
-					var d313 = v3X4 * n31X3 + v3Y4 * n31Y3 + v3Z4 * n31Z3;
-					var mind4 = -1;
-					var minv4;
-					var minvX4;
-					var minvY4;
-					var minvZ4;
-					var mini4 = 0;
-					minvX4 = 0;
-					minvY4 = 0;
-					minvZ4 = 0;
-					if(d124 < 0) {
-						var v132;
-						var v1X15;
-						var v1Y15;
-						var v1Z15;
-						var v221;
-						var v2X15;
-						var v2Y15;
-						var v2Z15;
-						var v100 = vec11;
-						v1X15 = v100.x;
-						v1Y15 = v100.y;
-						v1Z15 = v100.z;
-						var v101 = vec21;
-						v2X15 = v101.x;
-						v2Y15 = v101.y;
-						v2Z15 = v101.z;
-						var v1215;
-						var v12X15;
-						var v12Y15;
-						var v12Z15;
-						v12X15 = v2X15 - v1X15;
-						v12Y15 = v2Y15 - v1Y15;
-						v12Z15 = v2Z15 - v1Z15;
-						var d22 = v12X15 * v12X15 + v12Y15 * v12Y15 + v12Z15 * v12Z15;
-						var t10 = v12X15 * v1X15 + v12Y15 * v1Y15 + v12Z15 * v1Z15;
-						t10 = -t10 / d22;
-						var b11;
-						if(t10 < 0) {
-							var v102 = closest;
-							v102.x = v1X15;
-							v102.y = v1Y15;
-							v102.z = v1Z15;
-							b11 = 1;
-						} else if(t10 > 1) {
-							var v103 = closest;
-							v103.x = v2X15;
-							v103.y = v2Y15;
-							v103.z = v2Z15;
-							b11 = 2;
-						} else {
-							var p10;
-							var pX10;
-							var pY10;
-							var pZ10;
-							pX10 = v1X15 + v12X15 * t10;
-							pY10 = v1Y15 + v12Y15 * t10;
-							pZ10 = v1Z15 + v12Z15 * t10;
-							var v104 = closest;
-							v104.x = pX10;
-							v104.y = pY10;
-							v104.z = pZ10;
-							b11 = 3;
-						}
-						var d24 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						mini4 = b11;
-						mind4 = d24;
-						var v105 = closest;
-						minvX4 = v105.x;
-						minvY4 = v105.y;
-						minvZ4 = v105.z;
-					}
-					if(d233 < 0) {
-						var v133;
-						var v1X16;
-						var v1Y16;
-						var v1Z16;
-						var v222;
-						var v2X16;
-						var v2Y16;
-						var v2Z16;
-						var v106 = vec21;
-						v1X16 = v106.x;
-						v1Y16 = v106.y;
-						v1Z16 = v106.z;
-						var v107 = vec4;
-						v2X16 = v107.x;
-						v2Y16 = v107.y;
-						v2Z16 = v107.z;
-						var v1216;
-						var v12X16;
-						var v12Y16;
-						var v12Z16;
-						v12X16 = v2X16 - v1X16;
-						v12Y16 = v2Y16 - v1Y16;
-						v12Z16 = v2Z16 - v1Z16;
-						var d25 = v12X16 * v12X16 + v12Y16 * v12Y16 + v12Z16 * v12Z16;
-						var t11 = v12X16 * v1X16 + v12Y16 * v1Y16 + v12Z16 * v1Z16;
-						t11 = -t11 / d25;
-						var b12;
-						if(t11 < 0) {
-							var v108 = closest;
-							v108.x = v1X16;
-							v108.y = v1Y16;
-							v108.z = v1Z16;
-							b12 = 1;
-						} else if(t11 > 1) {
-							var v109 = closest;
-							v109.x = v2X16;
-							v109.y = v2Y16;
-							v109.z = v2Z16;
-							b12 = 2;
-						} else {
-							var p11;
-							var pX11;
-							var pY11;
-							var pZ11;
-							pX11 = v1X16 + v12X16 * t11;
-							pY11 = v1Y16 + v12Y16 * t11;
-							pZ11 = v1Z16 + v12Z16 * t11;
-							var v134 = closest;
-							v134.x = pX11;
-							v134.y = pY11;
-							v134.z = pZ11;
-							b12 = 3;
-						}
-						var d26 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind4 < 0 || d26 < mind4) {
-							mini4 = b12 << 1;
-							mind4 = d26;
-							var v135 = closest;
-							minvX4 = v135.x;
-							minvY4 = v135.y;
-							minvZ4 = v135.z;
-						}
-					}
-					if(d313 < 0) {
-						var v136;
-						var v1X17;
-						var v1Y17;
-						var v1Z17;
-						var v223;
-						var v2X17;
-						var v2Y17;
-						var v2Z17;
-						var v137 = vec11;
-						v1X17 = v137.x;
-						v1Y17 = v137.y;
-						v1Z17 = v137.z;
-						var v138 = vec4;
-						v2X17 = v138.x;
-						v2Y17 = v138.y;
-						v2Z17 = v138.z;
-						var v1217;
-						var v12X17;
-						var v12Y17;
-						var v12Z17;
-						v12X17 = v2X17 - v1X17;
-						v12Y17 = v2Y17 - v1Y17;
-						v12Z17 = v2Z17 - v1Z17;
-						var d27 = v12X17 * v12X17 + v12Y17 * v12Y17 + v12Z17 * v12Z17;
-						var t12 = v12X17 * v1X17 + v12Y17 * v1Y17 + v12Z17 * v1Z17;
-						t12 = -t12 / d27;
-						var b13;
-						if(t12 < 0) {
-							var v139 = closest;
-							v139.x = v1X17;
-							v139.y = v1Y17;
-							v139.z = v1Z17;
-							b13 = 1;
-						} else if(t12 > 1) {
-							var v140 = closest;
-							v140.x = v2X17;
-							v140.y = v2Y17;
-							v140.z = v2Z17;
-							b13 = 2;
-						} else {
-							var p12;
-							var pX12;
-							var pY12;
-							var pZ12;
-							pX12 = v1X17 + v12X17 * t12;
-							pY12 = v1Y17 + v12Y17 * t12;
-							pZ12 = v1Z17 + v12Z17 * t12;
-							var v142 = closest;
-							v142.x = pX12;
-							v142.y = pY12;
-							v142.z = pZ12;
-							b13 = 3;
-						}
-						var d28 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind4 < 0 || d28 < mind4) {
-							mini4 = b13 & 1 | (b13 & 2) << 1;
-							mind4 = d28;
-							var v143 = closest;
-							minvX4 = v143.x;
-							minvY4 = v143.y;
-							minvZ4 = v143.z;
-						}
-					}
-					var b14;
-					if(mind4 > 0) {
-						var v144 = closest;
-						v144.x = minvX4;
-						v144.y = minvY4;
-						v144.z = minvZ4;
-						b14 = mini4;
-					} else {
-						var l4 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
-						if(l4 > 0) {
-							l4 = 1 / Math.sqrt(l4);
-						}
-						nX4 *= l4;
-						nY4 *= l4;
-						nZ4 *= l4;
-						var dn3 = v1X14 * nX4 + v1Y14 * nY4 + v1Z14 * nZ4;
-						var l23 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
-						l23 = dn3 / l23;
-						minvX4 = nX4 * l23;
-						minvY4 = nY4 * l23;
-						minvZ4 = nZ4 * l23;
-						var v145 = closest;
-						v145.x = minvX4;
-						v145.y = minvY4;
-						v145.z = minvZ4;
-						b14 = 7;
-					}
-					var d29 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind1 < 0 || d29 < mind1) {
-						mini1 = b14 & 3 | (b14 & 4) << 1;
-						mind1 = d29;
-						var v146 = closest;
-						minvX1 = v146.x;
-						minvY1 = v146.y;
-						minvZ1 = v146.z;
-					}
-				}
-				if(d243 * sign < 0) {
-					var v147;
-					var v1X18;
-					var v1Y18;
-					var v1Z18;
-					var v224;
-					var v2X18;
-					var v2Y18;
-					var v2Z18;
-					var v318;
-					var v3X5;
-					var v3Y5;
-					var v3Z5;
-					var v1218;
-					var v12X18;
-					var v12Y18;
-					var v12Z18;
-					var v235;
-					var v23X5;
-					var v23Y5;
-					var v23Z5;
-					var v319;
-					var v31X4;
-					var v31Y4;
-					var v31Z4;
-					var v148 = vec21;
-					v1X18 = v148.x;
-					v1Y18 = v148.y;
-					v1Z18 = v148.z;
-					var v149 = vec31;
-					v2X18 = v149.x;
-					v2Y18 = v149.y;
-					v2Z18 = v149.z;
-					var v150 = vec4;
-					v3X5 = v150.x;
-					v3Y5 = v150.y;
-					v3Z5 = v150.z;
-					v12X18 = v2X18 - v1X18;
-					v12Y18 = v2Y18 - v1Y18;
-					v12Z18 = v2Z18 - v1Z18;
-					v23X5 = v3X5 - v2X18;
-					v23Y5 = v3Y5 - v2Y18;
-					v23Z5 = v3Z5 - v2Z18;
-					v31X4 = v1X18 - v3X5;
-					v31Y4 = v1Y18 - v3Y5;
-					v31Z4 = v1Z18 - v3Z5;
-					var n5;
-					var nX5;
-					var nY5;
-					var nZ5;
-					nX5 = v12Y18 * v23Z5 - v12Z18 * v23Y5;
-					nY5 = v12Z18 * v23X5 - v12X18 * v23Z5;
-					nZ5 = v12X18 * v23Y5 - v12Y18 * v23X5;
-					var n125;
-					var n12X4;
-					var n12Y4;
-					var n12Z4;
-					var n234;
-					var n23X4;
-					var n23Y4;
-					var n23Z4;
-					var n314;
-					var n31X4;
-					var n31Y4;
-					var n31Z4;
-					n12X4 = v12Y18 * nZ5 - v12Z18 * nY5;
-					n12Y4 = v12Z18 * nX5 - v12X18 * nZ5;
-					n12Z4 = v12X18 * nY5 - v12Y18 * nX5;
-					n23X4 = v23Y5 * nZ5 - v23Z5 * nY5;
-					n23Y4 = v23Z5 * nX5 - v23X5 * nZ5;
-					n23Z4 = v23X5 * nY5 - v23Y5 * nX5;
-					n31X4 = v31Y4 * nZ5 - v31Z4 * nY5;
-					n31Y4 = v31Z4 * nX5 - v31X4 * nZ5;
-					n31Z4 = v31X4 * nY5 - v31Y4 * nX5;
-					var d125 = v1X18 * n12X4 + v1Y18 * n12Y4 + v1Z18 * n12Z4;
-					var d234 = v2X18 * n23X4 + v2Y18 * n23Y4 + v2Z18 * n23Z4;
-					var d314 = v3X5 * n31X4 + v3Y5 * n31Y4 + v3Z5 * n31Z4;
-					var mind5 = -1;
-					var minv5;
-					var minvX5;
-					var minvY5;
-					var minvZ5;
-					var mini5 = 0;
-					minvX5 = 0;
-					minvY5 = 0;
-					minvZ5 = 0;
-					if(d125 < 0) {
-						var v151;
-						var v1X19;
-						var v1Y19;
-						var v1Z19;
-						var v225;
-						var v2X19;
-						var v2Y19;
-						var v2Z19;
-						var v152 = vec21;
-						v1X19 = v152.x;
-						v1Y19 = v152.y;
-						v1Z19 = v152.z;
-						var v153 = vec31;
-						v2X19 = v153.x;
-						v2Y19 = v153.y;
-						v2Z19 = v153.z;
-						var v1219;
-						var v12X19;
-						var v12Y19;
-						var v12Z19;
-						v12X19 = v2X19 - v1X19;
-						v12Y19 = v2Y19 - v1Y19;
-						v12Z19 = v2Z19 - v1Z19;
-						var d30 = v12X19 * v12X19 + v12Y19 * v12Y19 + v12Z19 * v12Z19;
-						var t13 = v12X19 * v1X19 + v12Y19 * v1Y19 + v12Z19 * v1Z19;
-						t13 = -t13 / d30;
-						var b15;
-						if(t13 < 0) {
-							var v154 = closest;
-							v154.x = v1X19;
-							v154.y = v1Y19;
-							v154.z = v1Z19;
-							b15 = 1;
-						} else if(t13 > 1) {
-							var v155 = closest;
-							v155.x = v2X19;
-							v155.y = v2Y19;
-							v155.z = v2Z19;
-							b15 = 2;
-						} else {
-							var p13;
-							var pX13;
-							var pY13;
-							var pZ13;
-							pX13 = v1X19 + v12X19 * t13;
-							pY13 = v1Y19 + v12Y19 * t13;
-							pZ13 = v1Z19 + v12Z19 * t13;
-							var v156 = closest;
-							v156.x = pX13;
-							v156.y = pY13;
-							v156.z = pZ13;
-							b15 = 3;
-						}
-						var d32 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						mini5 = b15;
-						mind5 = d32;
-						var v157 = closest;
-						minvX5 = v157.x;
-						minvY5 = v157.y;
-						minvZ5 = v157.z;
-					}
-					if(d234 < 0) {
-						var v158;
-						var v1X20;
-						var v1Y20;
-						var v1Z20;
-						var v226;
-						var v2X20;
-						var v2Y20;
-						var v2Z20;
-						var v159 = vec31;
-						v1X20 = v159.x;
-						v1Y20 = v159.y;
-						v1Z20 = v159.z;
-						var v160 = vec4;
-						v2X20 = v160.x;
-						v2Y20 = v160.y;
-						v2Z20 = v160.z;
-						var v1220;
-						var v12X20;
-						var v12Y20;
-						var v12Z20;
-						v12X20 = v2X20 - v1X20;
-						v12Y20 = v2Y20 - v1Y20;
-						v12Z20 = v2Z20 - v1Z20;
-						var d33 = v12X20 * v12X20 + v12Y20 * v12Y20 + v12Z20 * v12Z20;
-						var t14 = v12X20 * v1X20 + v12Y20 * v1Y20 + v12Z20 * v1Z20;
-						t14 = -t14 / d33;
-						var b16;
-						if(t14 < 0) {
-							var v161 = closest;
-							v161.x = v1X20;
-							v161.y = v1Y20;
-							v161.z = v1Z20;
-							b16 = 1;
-						} else if(t14 > 1) {
-							var v162 = closest;
-							v162.x = v2X20;
-							v162.y = v2Y20;
-							v162.z = v2Z20;
-							b16 = 2;
-						} else {
-							var p14;
-							var pX14;
-							var pY14;
-							var pZ14;
-							pX14 = v1X20 + v12X20 * t14;
-							pY14 = v1Y20 + v12Y20 * t14;
-							pZ14 = v1Z20 + v12Z20 * t14;
-							var v163 = closest;
-							v163.x = pX14;
-							v163.y = pY14;
-							v163.z = pZ14;
-							b16 = 3;
-						}
-						var d34 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind5 < 0 || d34 < mind5) {
-							mini5 = b16 << 1;
-							mind5 = d34;
-							var v164 = closest;
-							minvX5 = v164.x;
-							minvY5 = v164.y;
-							minvZ5 = v164.z;
-						}
-					}
-					if(d314 < 0) {
-						var v165;
-						var v1X21;
-						var v1Y21;
-						var v1Z21;
-						var v227;
-						var v2X21;
-						var v2Y21;
-						var v2Z21;
-						var v166 = vec21;
-						v1X21 = v166.x;
-						v1Y21 = v166.y;
-						v1Z21 = v166.z;
-						var v167 = vec4;
-						v2X21 = v167.x;
-						v2Y21 = v167.y;
-						v2Z21 = v167.z;
-						var v1221;
-						var v12X21;
-						var v12Y21;
-						var v12Z21;
-						v12X21 = v2X21 - v1X21;
-						v12Y21 = v2Y21 - v1Y21;
-						v12Z21 = v2Z21 - v1Z21;
-						var d35 = v12X21 * v12X21 + v12Y21 * v12Y21 + v12Z21 * v12Z21;
-						var t15 = v12X21 * v1X21 + v12Y21 * v1Y21 + v12Z21 * v1Z21;
-						t15 = -t15 / d35;
-						var b17;
-						if(t15 < 0) {
-							var v168 = closest;
-							v168.x = v1X21;
-							v168.y = v1Y21;
-							v168.z = v1Z21;
-							b17 = 1;
-						} else if(t15 > 1) {
-							var v169 = closest;
-							v169.x = v2X21;
-							v169.y = v2Y21;
-							v169.z = v2Z21;
-							b17 = 2;
-						} else {
-							var p15;
-							var pX15;
-							var pY15;
-							var pZ15;
-							pX15 = v1X21 + v12X21 * t15;
-							pY15 = v1Y21 + v12Y21 * t15;
-							pZ15 = v1Z21 + v12Z21 * t15;
-							var v170 = closest;
-							v170.x = pX15;
-							v170.y = pY15;
-							v170.z = pZ15;
-							b17 = 3;
-						}
-						var d36 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-						if(mind5 < 0 || d36 < mind5) {
-							mini5 = b17 & 1 | (b17 & 2) << 1;
-							mind5 = d36;
-							var v171 = closest;
-							minvX5 = v171.x;
-							minvY5 = v171.y;
-							minvZ5 = v171.z;
-						}
-					}
-					var b18;
-					if(mind5 > 0) {
-						var v172 = closest;
-						v172.x = minvX5;
-						v172.y = minvY5;
-						v172.z = minvZ5;
-						b18 = mini5;
-					} else {
-						var l5 = nX5 * nX5 + nY5 * nY5 + nZ5 * nZ5;
-						if(l5 > 0) {
-							l5 = 1 / Math.sqrt(l5);
-						}
-						nX5 *= l5;
-						nY5 *= l5;
-						nZ5 *= l5;
-						var dn4 = v1X18 * nX5 + v1Y18 * nY5 + v1Z18 * nZ5;
-						var l24 = nX5 * nX5 + nY5 * nY5 + nZ5 * nZ5;
-						l24 = dn4 / l24;
-						minvX5 = nX5 * l24;
-						minvY5 = nY5 * l24;
-						minvZ5 = nZ5 * l24;
-						var v173 = closest;
-						v173.x = minvX5;
-						v173.y = minvY5;
-						v173.z = minvZ5;
-						b18 = 7;
-					}
-					var d37 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
-					if(mind1 < 0 || d37 < mind1) {
-						mini1 = b18 << 1;
-						mind1 = d37;
-						var v174 = closest;
-						minvX1 = v174.x;
-						minvY1 = v174.y;
-						minvZ1 = v174.z;
-					}
-				}
-				if(mind1 > 0) {
-					var v175 = closest;
-					v175.x = minvX1;
-					v175.y = minvY1;
-					v175.z = minvZ1;
-					v4 = mini1;
-				} else {
-					closest.zero();
-					v4 = 15;
-				}
-				break;
-			}
-			this.shrinkSimplex(v4);
-			if(closest.x * closest.x + closest.y * closest.y + closest.z * closest.z < eps2) {
-				if(lambda == 0 || this.simplexSize == 4) {
-					hit.fraction = lambda;
-					return false;
-				}
-				this.interpolateClosestPoints();
-				hit.fraction = lambda;
-				var _this3 = hit.normal;
-				_this3.x = dir.x;
-				_this3.y = dir.y;
-				_this3.z = dir.z;
-				var _this4 = _this3;
-				var invLen = Math.sqrt(_this4.x * _this4.x + _this4.y * _this4.y + _this4.z * _this4.z);
-				if(invLen > 0) {
-					invLen = 1 / invLen;
-				}
-				var tx2 = _this4.x * invLen;
-				var ty2 = _this4.y * invLen;
-				var tz2 = _this4.z * invLen;
-				_this4.x = tx2;
-				_this4.y = ty2;
-				_this4.z = tz2;
-				var _this5 = hit.position;
-				var v176 = this.closestPoint1;
-				_this5.x = v176.x;
-				_this5.y = v176.y;
-				_this5.z = v176.z;
-				var _this6 = _this5;
-				var tx3 = _this6.x + tl1.x * lambda;
-				var ty3 = _this6.y + tl1.y * lambda;
-				var tz3 = _this6.z + tl1.z * lambda;
-				_this6.x = tx3;
-				_this6.y = ty3;
-				_this6.z = tz3;
-				return true;
-			}
-			dir.x = closest.x;
-			dir.y = closest.y;
-			dir.z = closest.z;
-			var _this7 = dir;
-			var tx4 = -_this7.x;
-			var ty4 = -_this7.y;
-			var tz4 = -_this7.z;
-			_this7.x = tx4;
-			_this7.y = ty4;
-			_this7.z = tz4;
-			if(this.c1 != null) {
-				this.computeWitnessPoint1(true);
-			} else {
-				var v177 = this.w1[this.simplexSize];
-				v177.x = this.tf1._positionX;
-				v177.y = this.tf1._positionY;
-				v177.z = this.tf1._positionZ;
-			}
-			this.computeWitnessPoint2(true);
-			var _this8 = this.s[this.simplexSize];
-			var v178 = this.w1[this.simplexSize];
-			_this8.x = v178.x;
-			_this8.y = v178.y;
-			_this8.z = v178.z;
-			var _this9 = _this8;
-			var v179 = this.w2[this.simplexSize];
-			var tx5 = _this9.x - v179.x;
-			var ty5 = _this9.y - v179.y;
-			var tz5 = _this9.z - v179.z;
-			_this9.x = tx5;
-			_this9.y = ty5;
-			_this9.z = tz5;
-			var _this10 = s[this.simplexSize];
-			var tx6 = _this10.x - rayX.x;
-			var ty6 = _this10.y - rayX.y;
-			var tz6 = _this10.z - rayX.z;
-			_this10.x = tx6;
-			_this10.y = ty6;
-			_this10.z = tz6;
-			if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z < eps2) {
-				throw new Error("!?");
-			}
-			var p16 = s[this.simplexSize];
-			var n6 = dir;
-			var pn = p16.x * n6.x + p16.y * n6.y + p16.z * n6.z;
-			if(pn < 0) {
-				if(rayR.x * n6.x + rayR.y * n6.y + rayR.z * n6.z >= 0) {
-					return false;
-				}
-				var dLambda = pn / (rayR.x * n6.x + rayR.y * n6.y + rayR.z * n6.z);
-				lambda += dLambda;
-				if(lambda >= 1) {
-					return false;
-				}
-				var tx7 = rayX.x + rayR.x * dLambda;
-				var ty7 = rayX.y + rayR.y * dLambda;
-				var tz7 = rayX.z + rayR.z * dLambda;
-				rayX.x = tx7;
-				rayX.y = ty7;
-				rayX.z = tz7;
-				var _g1 = 0;
-				var _g2 = this.simplexSize + 1;
-				while(_g1 < _g2) {
-					var i = _g1++;
-					var _this11 = s[i];
-					var s1 = -dLambda;
-					var tx8 = _this11.x + rayR.x * s1;
-					var ty8 = _this11.y + rayR.y * s1;
-					var tz8 = _this11.z + rayR.z * s1;
-					_this11.x = tx8;
-					_this11.y = ty8;
-					_this11.z = tz8;
-				}
-			}
-			var duplicate = false;
-			var _g11 = 0;
-			var _g21 = this.simplexSize;
-			while(_g11 < _g21) {
-				var i1 = _g11++;
-				var dx = s[i1].x - s[this.simplexSize].x;
-				var dy = s[i1].y - s[this.simplexSize].y;
-				var dz = s[i1].z - s[this.simplexSize].z;
-				if(dx * dx + dy * dy + dz * dz < eps2) {
-					duplicate = true;
-					break;
-				}
-			}
-			if(!duplicate) {
-				this.simplexSize++;
-			}
-			++count;
-		}
-		return false;
-	}
-	interpolateClosestPoints() {
-		switch(this.simplexSize) {
-		case 1:
-			var _this = this.closestPoint1;
-			var v = this.w1[0];
-			_this.x = v.x;
-			_this.y = v.y;
-			_this.z = v.z;
-			var _this1 = this.closestPoint2;
-			var v1 = this.w2[0];
-			_this1.x = v1.x;
-			_this1.y = v1.y;
-			_this1.z = v1.z;
-			break;
-		case 2:
-			var c;
-			var cX;
-			var cY;
-			var cZ;
-			var v2 = this.closest;
-			cX = v2.x;
-			cY = v2.y;
-			cZ = v2.z;
-			var s0;
-			var s0X;
-			var s0Y;
-			var s0Z;
-			var w10;
-			var w10X;
-			var w10Y;
-			var w10Z;
-			var w20;
-			var w20X;
-			var w20Y;
-			var w20Z;
-			var s1;
-			var s1X;
-			var s1Y;
-			var s1Z;
-			var w11;
-			var w11X;
-			var w11Y;
-			var w11Z;
-			var w21;
-			var w21X;
-			var w21Y;
-			var w21Z;
-			var s2;
-			var s2X;
-			var s2Y;
-			var s2Z;
-			var w12;
-			var w12X;
-			var w12Y;
-			var w12Z;
-			var w22;
-			var w22X;
-			var w22Y;
-			var w22Z;
-			var v3 = this.s[0];
-			s0X = v3.x;
-			s0Y = v3.y;
-			s0Z = v3.z;
-			var v4 = this.w1[0];
-			w10X = v4.x;
-			w10Y = v4.y;
-			w10Z = v4.z;
-			var v5 = this.w2[0];
-			w20X = v5.x;
-			w20Y = v5.y;
-			w20Z = v5.z;
-			var v6 = this.s[1];
-			s1X = v6.x;
-			s1Y = v6.y;
-			s1Z = v6.z;
-			var v7 = this.w1[1];
-			w11X = v7.x;
-			w11Y = v7.y;
-			w11Z = v7.z;
-			var v8 = this.w2[1];
-			w21X = v8.x;
-			w21Y = v8.y;
-			w21Z = v8.z;
-			var v9 = this.s[2];
-			s2X = v9.x;
-			s2Y = v9.y;
-			s2Z = v9.z;
-			var v10 = this.w1[2];
-			w12X = v10.x;
-			w12Y = v10.y;
-			w12Z = v10.z;
-			var v11 = this.w2[2];
-			w22X = v11.x;
-			w22Y = v11.y;
-			w22Z = v11.z;
-			var s01;
-			var s01X;
-			var s01Y;
-			var s01Z;
-			s01X = s1X - s0X;
-			s01Y = s1Y - s0Y;
-			s01Z = s1Z - s0Z;
-			var invDet = s01X * s01X + s01Y * s01Y + s01Z * s01Z;
-			if(invDet != 0) {
-				invDet = 1 / invDet;
-			}
-			var s0c;
-			var s0cX;
-			var s0cY;
-			var s0cZ;
-			s0cX = cX - s0X;
-			s0cY = cY - s0Y;
-			s0cZ = cZ - s0Z;
-			var t = (s0cX * s01X + s0cY * s01Y + s0cZ * s01Z) * invDet;
-			var diff;
-			var diffX;
-			var diffY;
-			var diffZ;
-			var cp1;
-			var cp1X;
-			var cp1Y;
-			var cp1Z;
-			var cp2;
-			var cp2X;
-			var cp2Y;
-			var cp2Z;
-			diffX = w11X - w10X;
-			diffY = w11Y - w10Y;
-			diffZ = w11Z - w10Z;
-			cp1X = w10X + diffX * t;
-			cp1Y = w10Y + diffY * t;
-			cp1Z = w10Z + diffZ * t;
-			diffX = w21X - w20X;
-			diffY = w21Y - w20Y;
-			diffZ = w21Z - w20Z;
-			cp2X = w20X + diffX * t;
-			cp2Y = w20Y + diffY * t;
-			cp2Z = w20Z + diffZ * t;
-			var v12 = this.closestPoint1;
-			v12.x = cp1X;
-			v12.y = cp1Y;
-			v12.z = cp1Z;
-			var v13 = this.closestPoint2;
-			v13.x = cp2X;
-			v13.y = cp2Y;
-			v13.z = cp2Z;
-			break;
-		case 3:
-			var c1;
-			var cX1;
-			var cY1;
-			var cZ1;
-			var v14 = this.closest;
-			cX1 = v14.x;
-			cY1 = v14.y;
-			cZ1 = v14.z;
-			var s02;
-			var s0X1;
-			var s0Y1;
-			var s0Z1;
-			var w101;
-			var w10X1;
-			var w10Y1;
-			var w10Z1;
-			var w201;
-			var w20X1;
-			var w20Y1;
-			var w20Z1;
-			var s11;
-			var s1X1;
-			var s1Y1;
-			var s1Z1;
-			var w111;
-			var w11X1;
-			var w11Y1;
-			var w11Z1;
-			var w211;
-			var w21X1;
-			var w21Y1;
-			var w21Z1;
-			var s21;
-			var s2X1;
-			var s2Y1;
-			var s2Z1;
-			var w121;
-			var w12X1;
-			var w12Y1;
-			var w12Z1;
-			var w221;
-			var w22X1;
-			var w22Y1;
-			var w22Z1;
-			var v15 = this.s[0];
-			s0X1 = v15.x;
-			s0Y1 = v15.y;
-			s0Z1 = v15.z;
-			var v16 = this.w1[0];
-			w10X1 = v16.x;
-			w10Y1 = v16.y;
-			w10Z1 = v16.z;
-			var v17 = this.w2[0];
-			w20X1 = v17.x;
-			w20Y1 = v17.y;
-			w20Z1 = v17.z;
-			var v18 = this.s[1];
-			s1X1 = v18.x;
-			s1Y1 = v18.y;
-			s1Z1 = v18.z;
-			var v19 = this.w1[1];
-			w11X1 = v19.x;
-			w11Y1 = v19.y;
-			w11Z1 = v19.z;
-			var v20 = this.w2[1];
-			w21X1 = v20.x;
-			w21Y1 = v20.y;
-			w21Z1 = v20.z;
-			var v21 = this.s[2];
-			s2X1 = v21.x;
-			s2Y1 = v21.y;
-			s2Z1 = v21.z;
-			var v22 = this.w1[2];
-			w12X1 = v22.x;
-			w12Y1 = v22.y;
-			w12Z1 = v22.z;
-			var v23 = this.w2[2];
-			w22X1 = v23.x;
-			w22Y1 = v23.y;
-			w22Z1 = v23.z;
-			var s011;
-			var s01X1;
-			var s01Y1;
-			var s01Z1;
-			var s021;
-			var s02X;
-			var s02Y;
-			var s02Z;
-			var s0c1;
-			var s0cX1;
-			var s0cY1;
-			var s0cZ1;
-			s01X1 = s1X1 - s0X1;
-			s01Y1 = s1Y1 - s0Y1;
-			s01Z1 = s1Z1 - s0Z1;
-			s02X = s2X1 - s0X1;
-			s02Y = s2Y1 - s0Y1;
-			s02Z = s2Z1 - s0Z1;
-			s0cX1 = cX1 - s0X1;
-			s0cY1 = cY1 - s0Y1;
-			s0cZ1 = cZ1 - s0Z1;
-			var d11 = s01X1 * s01X1 + s01Y1 * s01Y1 + s01Z1 * s01Z1;
-			var d12 = s01X1 * s02X + s01Y1 * s02Y + s01Z1 * s02Z;
-			var d22 = s02X * s02X + s02Y * s02Y + s02Z * s02Z;
-			var d1c = s01X1 * s0cX1 + s01Y1 * s0cY1 + s01Z1 * s0cZ1;
-			var d2c = s02X * s0cX1 + s02Y * s0cY1 + s02Z * s0cZ1;
-			var invDet1 = d11 * d22 - d12 * d12;
-			if(invDet1 != 0) {
-				invDet1 = 1 / invDet1;
-			}
-			var s = (d1c * d22 - d2c * d12) * invDet1;
-			var t1 = (-d1c * d12 + d2c * d11) * invDet1;
-			var diff1;
-			var diffX1;
-			var diffY1;
-			var diffZ1;
-			var cp11;
-			var cp1X1;
-			var cp1Y1;
-			var cp1Z1;
-			var cp21;
-			var cp2X1;
-			var cp2Y1;
-			var cp2Z1;
-			diffX1 = w11X1 - w10X1;
-			diffY1 = w11Y1 - w10Y1;
-			diffZ1 = w11Z1 - w10Z1;
-			cp1X1 = w10X1 + diffX1 * s;
-			cp1Y1 = w10Y1 + diffY1 * s;
-			cp1Z1 = w10Z1 + diffZ1 * s;
-			diffX1 = w12X1 - w10X1;
-			diffY1 = w12Y1 - w10Y1;
-			diffZ1 = w12Z1 - w10Z1;
-			cp1X1 += diffX1 * t1;
-			cp1Y1 += diffY1 * t1;
-			cp1Z1 += diffZ1 * t1;
-			diffX1 = w21X1 - w20X1;
-			diffY1 = w21Y1 - w20Y1;
-			diffZ1 = w21Z1 - w20Z1;
-			cp2X1 = w20X1 + diffX1 * s;
-			cp2Y1 = w20Y1 + diffY1 * s;
-			cp2Z1 = w20Z1 + diffZ1 * s;
-			diffX1 = w22X1 - w20X1;
-			diffY1 = w22Y1 - w20Y1;
-			diffZ1 = w22Z1 - w20Z1;
-			cp2X1 += diffX1 * t1;
-			cp2Y1 += diffY1 * t1;
-			cp2Z1 += diffZ1 * t1;
-			var v24 = this.closestPoint1;
-			v24.x = cp1X1;
-			v24.y = cp1Y1;
-			v24.z = cp1Z1;
-			var v25 = this.closestPoint2;
-			v25.x = cp2X1;
-			v25.y = cp2Y1;
-			v25.z = cp2Z1;
-			break;
-		default:
-			throw new Error("!?");
-		}
-	}
-	loadCache(gjkCache) {
-		var _this = this.dir;
-		var v = gjkCache.prevClosestDir;
-		_this.x = v.x;
-		_this.y = v.y;
-		_this.z = v.z;
-	}
-	saveCache(gjkCache) {
-		var _this = gjkCache.prevClosestDir;
-		var v = this.closest;
-		_this.x = v.x;
-		_this.y = v.y;
-		_this.z = v.z;
-		var _this1 = _this;
-		var tx = -_this1.x;
-		var ty = -_this1.y;
-		var tz = -_this1.z;
-		_this1.x = tx;
-		_this1.y = ty;
-		_this1.z = tz;
-	}
-	shrinkSimplex(vertexBits) {
-		this.simplexSize = vertexBits;
-		this.simplexSize = (this.simplexSize & 5) + (this.simplexSize >> 1 & 5);
-		this.simplexSize = (this.simplexSize & 3) + (this.simplexSize >> 2 & 3);
-		switch(vertexBits) {
-		case 2:
-			var _this = this.s[0];
-			var v = this.s[1];
-			_this.x = v.x;
-			_this.y = v.y;
-			_this.z = v.z;
-			var _this1 = this.w1[0];
-			var v1 = this.w1[1];
-			_this1.x = v1.x;
-			_this1.y = v1.y;
-			_this1.z = v1.z;
-			var _this2 = this.w2[0];
-			var v2 = this.w2[1];
-			_this2.x = v2.x;
-			_this2.y = v2.y;
-			_this2.z = v2.z;
-			break;
-		case 4:
-			var _this3 = this.s[0];
-			var v3 = this.s[2];
-			_this3.x = v3.x;
-			_this3.y = v3.y;
-			_this3.z = v3.z;
-			var _this4 = this.w1[0];
-			var v4 = this.w1[2];
-			_this4.x = v4.x;
-			_this4.y = v4.y;
-			_this4.z = v4.z;
-			var _this5 = this.w2[0];
-			var v5 = this.w2[2];
-			_this5.x = v5.x;
-			_this5.y = v5.y;
-			_this5.z = v5.z;
-			break;
-		case 5:
-			var _this6 = this.s[1];
-			var v6 = this.s[2];
-			_this6.x = v6.x;
-			_this6.y = v6.y;
-			_this6.z = v6.z;
-			var _this7 = this.w1[1];
-			var v7 = this.w1[2];
-			_this7.x = v7.x;
-			_this7.y = v7.y;
-			_this7.z = v7.z;
-			var _this8 = this.w2[1];
-			var v8 = this.w2[2];
-			_this8.x = v8.x;
-			_this8.y = v8.y;
-			_this8.z = v8.z;
-			break;
-		case 6:
-			var _this9 = this.s[0];
-			var v9 = this.s[2];
-			_this9.x = v9.x;
-			_this9.y = v9.y;
-			_this9.z = v9.z;
-			var _this10 = this.w1[0];
-			var v10 = this.w1[2];
-			_this10.x = v10.x;
-			_this10.y = v10.y;
-			_this10.z = v10.z;
-			var _this11 = this.w2[0];
-			var v11 = this.w2[2];
-			_this11.x = v11.x;
-			_this11.y = v11.y;
-			_this11.z = v11.z;
-			break;
-		case 8:
-			var _this12 = this.s[0];
-			var v12 = this.s[3];
-			_this12.x = v12.x;
-			_this12.y = v12.y;
-			_this12.z = v12.z;
-			var _this13 = this.w1[0];
-			var v13 = this.w1[3];
-			_this13.x = v13.x;
-			_this13.y = v13.y;
-			_this13.z = v13.z;
-			var _this14 = this.w2[0];
-			var v14 = this.w2[3];
-			_this14.x = v14.x;
-			_this14.y = v14.y;
-			_this14.z = v14.z;
-			break;
-		case 9:
-			var _this15 = this.s[1];
-			var v15 = this.s[3];
-			_this15.x = v15.x;
-			_this15.y = v15.y;
-			_this15.z = v15.z;
-			var _this16 = this.w1[1];
-			var v16 = this.w1[3];
-			_this16.x = v16.x;
-			_this16.y = v16.y;
-			_this16.z = v16.z;
-			var _this17 = this.w2[1];
-			var v17 = this.w2[3];
-			_this17.x = v17.x;
-			_this17.y = v17.y;
-			_this17.z = v17.z;
-			break;
-		case 10:
-			var _this18 = this.s[0];
-			var v18 = this.s[3];
-			_this18.x = v18.x;
-			_this18.y = v18.y;
-			_this18.z = v18.z;
-			var _this19 = this.w1[0];
-			var v19 = this.w1[3];
-			_this19.x = v19.x;
-			_this19.y = v19.y;
-			_this19.z = v19.z;
-			var _this20 = this.w2[0];
-			var v20 = this.w2[3];
-			_this20.x = v20.x;
-			_this20.y = v20.y;
-			_this20.z = v20.z;
-			break;
-		case 11:
-			var _this21 = this.s[2];
-			var v21 = this.s[3];
-			_this21.x = v21.x;
-			_this21.y = v21.y;
-			_this21.z = v21.z;
-			var _this22 = this.w1[2];
-			var v22 = this.w1[3];
-			_this22.x = v22.x;
-			_this22.y = v22.y;
-			_this22.z = v22.z;
-			var _this23 = this.w2[2];
-			var v23 = this.w2[3];
-			_this23.x = v23.x;
-			_this23.y = v23.y;
-			_this23.z = v23.z;
-			break;
-		case 12:
-			var _this24 = this.s[0];
-			var v24 = this.s[2];
-			_this24.x = v24.x;
-			_this24.y = v24.y;
-			_this24.z = v24.z;
-			var _this25 = this.w1[0];
-			var v25 = this.w1[2];
-			_this25.x = v25.x;
-			_this25.y = v25.y;
-			_this25.z = v25.z;
-			var _this26 = this.w2[0];
-			var v26 = this.w2[2];
-			_this26.x = v26.x;
-			_this26.y = v26.y;
-			_this26.z = v26.z;
-			var _this27 = this.s[1];
-			var v27 = this.s[3];
-			_this27.x = v27.x;
-			_this27.y = v27.y;
-			_this27.z = v27.z;
-			var _this28 = this.w1[1];
-			var v28 = this.w1[3];
-			_this28.x = v28.x;
-			_this28.y = v28.y;
-			_this28.z = v28.z;
-			var _this29 = this.w2[1];
-			var v29 = this.w2[3];
-			_this29.x = v29.x;
-			_this29.y = v29.y;
-			_this29.z = v29.z;
-			break;
-		case 13:
-			var _this30 = this.s[1];
-			var v30 = this.s[3];
-			_this30.x = v30.x;
-			_this30.y = v30.y;
-			_this30.z = v30.z;
-			var _this31 = this.w1[1];
-			var v31 = this.w1[3];
-			_this31.x = v31.x;
-			_this31.y = v31.y;
-			_this31.z = v31.z;
-			var _this32 = this.w2[1];
-			var v32 = this.w2[3];
-			_this32.x = v32.x;
-			_this32.y = v32.y;
-			_this32.z = v32.z;
-			break;
-		case 14:
-			var _this33 = this.s[0];
-			var v33 = this.s[3];
-			_this33.x = v33.x;
-			_this33.y = v33.y;
-			_this33.z = v33.z;
-			var _this34 = this.w1[0];
-			var v34 = this.w1[3];
-			_this34.x = v34.x;
-			_this34.y = v34.y;
-			_this34.z = v34.z;
-			var _this35 = this.w2[0];
-			var v35 = this.w2[3];
-			_this35.x = v35.x;
-			_this35.y = v35.y;
-			_this35.z = v35.z;
-			break;
-		}
-	}
-	computeWitnessPoint1(addMargin) {
-		var tmp;
-		var tmpX;
-		var tmpY;
-		var tmpZ;
-		var idir;
-		var idirX;
-		var idirY;
-		var idirZ;
-		var v = this.dir;
-		idirX = v.x;
-		idirY = v.y;
-		idirZ = v.z;
-		var ldir1;
-		var ldir1X;
-		var ldir1Y;
-		var ldir1Z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this.tf1._rotation00 * idirX + this.tf1._rotation10 * idirY + this.tf1._rotation20 * idirZ;
-		__tmp__Y = this.tf1._rotation01 * idirX + this.tf1._rotation11 * idirY + this.tf1._rotation21 * idirZ;
-		__tmp__Z = this.tf1._rotation02 * idirX + this.tf1._rotation12 * idirY + this.tf1._rotation22 * idirZ;
-		ldir1X = __tmp__X;
-		ldir1Y = __tmp__Y;
-		ldir1Z = __tmp__Z;
-		var iw1;
-		var iw1X;
-		var iw1Y;
-		var iw1Z;
-		var v1 = this.dir;
-		v1.x = ldir1X;
-		v1.y = ldir1Y;
-		v1.z = ldir1Z;
-		this.c1.computeLocalSupportingVertex(this.dir,this.w1[this.simplexSize]);
-		if(addMargin) {
-			var _this = this.dir;
-			var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
-			if(invLen > 0) {
-				invLen = 1 / invLen;
-			}
-			var tx = _this.x * invLen;
-			var ty = _this.y * invLen;
-			var tz = _this.z * invLen;
-			_this.x = tx;
-			_this.y = ty;
-			_this.z = tz;
-			var _this1 = this.w1[this.simplexSize];
-			var v2 = this.dir;
-			var s = this.c1._gjkMargin;
-			var tx1 = _this1.x + v2.x * s;
-			var ty1 = _this1.y + v2.y * s;
-			var tz1 = _this1.z + v2.z * s;
-			_this1.x = tx1;
-			_this1.y = ty1;
-			_this1.z = tz1;
-		}
-		var v3 = this.w1[this.simplexSize];
-		tmpX = v3.x;
-		tmpY = v3.y;
-		tmpZ = v3.z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = this.tf1._rotation00 * tmpX + this.tf1._rotation01 * tmpY + this.tf1._rotation02 * tmpZ;
-		__tmp__Y1 = this.tf1._rotation10 * tmpX + this.tf1._rotation11 * tmpY + this.tf1._rotation12 * tmpZ;
-		__tmp__Z1 = this.tf1._rotation20 * tmpX + this.tf1._rotation21 * tmpY + this.tf1._rotation22 * tmpZ;
-		iw1X = __tmp__X1;
-		iw1Y = __tmp__Y1;
-		iw1Z = __tmp__Z1;
-		iw1X += this.tf1._positionX;
-		iw1Y += this.tf1._positionY;
-		iw1Z += this.tf1._positionZ;
-		var v4 = this.w1[this.simplexSize];
-		v4.x = iw1X;
-		v4.y = iw1Y;
-		v4.z = iw1Z;
-		var v5 = this.dir;
-		v5.x = idirX;
-		v5.y = idirY;
-		v5.z = idirZ;
-	}
-	computeWitnessPoint2(addMargin) {
-		var tmp;
-		var tmpX;
-		var tmpY;
-		var tmpZ;
-		var idir;
-		var idirX;
-		var idirY;
-		var idirZ;
-		var v = this.dir;
-		idirX = v.x;
-		idirY = v.y;
-		idirZ = v.z;
-		var ldir2;
-		var ldir2X;
-		var ldir2Y;
-		var ldir2Z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this.tf2._rotation00 * idirX + this.tf2._rotation10 * idirY + this.tf2._rotation20 * idirZ;
-		__tmp__Y = this.tf2._rotation01 * idirX + this.tf2._rotation11 * idirY + this.tf2._rotation21 * idirZ;
-		__tmp__Z = this.tf2._rotation02 * idirX + this.tf2._rotation12 * idirY + this.tf2._rotation22 * idirZ;
-		ldir2X = __tmp__X;
-		ldir2Y = __tmp__Y;
-		ldir2Z = __tmp__Z;
-		ldir2X = -ldir2X;
-		ldir2Y = -ldir2Y;
-		ldir2Z = -ldir2Z;
-		var iw2;
-		var iw2X;
-		var iw2Y;
-		var iw2Z;
-		var v1 = this.dir;
-		v1.x = ldir2X;
-		v1.y = ldir2Y;
-		v1.z = ldir2Z;
-		this.c2.computeLocalSupportingVertex(this.dir,this.w2[this.simplexSize]);
-		if(addMargin) {
-			var _this = this.dir;
-			var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
-			if(invLen > 0) {
-				invLen = 1 / invLen;
-			}
-			var tx = _this.x * invLen;
-			var ty = _this.y * invLen;
-			var tz = _this.z * invLen;
-			_this.x = tx;
-			_this.y = ty;
-			_this.z = tz;
-			var _this1 = this.w2[this.simplexSize];
-			var v2 = this.dir;
-			var s = this.c2._gjkMargin;
-			var tx1 = _this1.x + v2.x * s;
-			var ty1 = _this1.y + v2.y * s;
-			var tz1 = _this1.z + v2.z * s;
-			_this1.x = tx1;
-			_this1.y = ty1;
-			_this1.z = tz1;
-		}
-		var v3 = this.w2[this.simplexSize];
-		tmpX = v3.x;
-		tmpY = v3.y;
-		tmpZ = v3.z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = this.tf2._rotation00 * tmpX + this.tf2._rotation01 * tmpY + this.tf2._rotation02 * tmpZ;
-		__tmp__Y1 = this.tf2._rotation10 * tmpX + this.tf2._rotation11 * tmpY + this.tf2._rotation12 * tmpZ;
-		__tmp__Z1 = this.tf2._rotation20 * tmpX + this.tf2._rotation21 * tmpY + this.tf2._rotation22 * tmpZ;
-		iw2X = __tmp__X1;
-		iw2Y = __tmp__Y1;
-		iw2Z = __tmp__Z1;
-		iw2X += this.tf2._positionX;
-		iw2Y += this.tf2._positionY;
-		iw2Z += this.tf2._positionZ;
-		var v4 = this.w2[this.simplexSize];
-		v4.x = iw2X;
-		v4.y = iw2Y;
-		v4.z = iw2Z;
-		var v5 = this.dir;
-		v5.x = idirX;
-		v5.y = idirY;
-		v5.z = idirZ;
-	}
-	pointToTetrahedron() {
-		var _g = 0;
-		while(_g < 3) {
-			var i = _g++;
-			var _this = this.dir;
-			var v = this.baseDirs[i];
-			_this.x = v.x;
-			_this.y = v.y;
-			_this.z = v.z;
-			this.computeWitnessPoint1(false);
-			this.computeWitnessPoint2(false);
-			var _this1 = this.s[this.simplexSize];
-			var v1 = this.w1[this.simplexSize];
-			_this1.x = v1.x;
-			_this1.y = v1.y;
-			_this1.z = v1.z;
-			var _this2 = _this1;
-			var v2 = this.w2[this.simplexSize];
-			var tx = _this2.x - v2.x;
-			var ty = _this2.y - v2.y;
-			var tz = _this2.z - v2.z;
-			_this2.x = tx;
-			_this2.y = ty;
-			_this2.z = tz;
-			this.simplexSize++;
-			this.lineToTetrahedron();
-			if(this.simplexSize == 4) {
-				break;
-			}
-			this.simplexSize--;
-			var _this3 = this.dir;
-			var tx1 = -_this3.x;
-			var ty1 = -_this3.y;
-			var tz1 = -_this3.z;
-			_this3.x = tx1;
-			_this3.y = ty1;
-			_this3.z = tz1;
-			this.computeWitnessPoint1(false);
-			this.computeWitnessPoint2(false);
-			var _this4 = this.s[this.simplexSize];
-			var v3 = this.w1[this.simplexSize];
-			_this4.x = v3.x;
-			_this4.y = v3.y;
-			_this4.z = v3.z;
-			var _this5 = _this4;
-			var v4 = this.w2[this.simplexSize];
-			var tx2 = _this5.x - v4.x;
-			var ty2 = _this5.y - v4.y;
-			var tz2 = _this5.z - v4.z;
-			_this5.x = tx2;
-			_this5.y = ty2;
-			_this5.z = tz2;
-			this.simplexSize++;
-			this.lineToTetrahedron();
-			if(this.simplexSize == 4) {
-				break;
-			}
-			this.simplexSize--;
-		}
-	}
-	lineToTetrahedron() {
-		var oldDir;
-		var oldDirX;
-		var oldDirY;
-		var oldDirZ;
-		var v = this.dir;
-		oldDirX = v.x;
-		oldDirY = v.y;
-		oldDirZ = v.z;
-		var s0;
-		var s0X;
-		var s0Y;
-		var s0Z;
-		var s1;
-		var s1X;
-		var s1Y;
-		var s1Z;
-		var lineDir;
-		var lineDirX;
-		var lineDirY;
-		var lineDirZ;
-		var v1 = this.s[0];
-		s0X = v1.x;
-		s0Y = v1.y;
-		s0Z = v1.z;
-		var v2 = this.s[1];
-		s1X = v2.x;
-		s1Y = v2.y;
-		s1Z = v2.z;
-		lineDirX = s0X - s1X;
-		lineDirY = s0Y - s1Y;
-		lineDirZ = s0Z - s1Z;
-		var _g = 0;
-		while(_g < 3) {
-			var i = _g++;
-			var baseDir;
-			var baseDirX;
-			var baseDirY;
-			var baseDirZ;
-			var v3 = this.baseDirs[i];
-			baseDirX = v3.x;
-			baseDirY = v3.y;
-			baseDirZ = v3.z;
-			var newDir;
-			var newDirX;
-			var newDirY;
-			var newDirZ;
-			newDirX = lineDirY * baseDirZ - lineDirZ * baseDirY;
-			newDirY = lineDirZ * baseDirX - lineDirX * baseDirZ;
-			newDirZ = lineDirX * baseDirY - lineDirY * baseDirX;
-			var v4 = this.dir;
-			v4.x = newDirX;
-			v4.y = newDirY;
-			v4.z = newDirZ;
-			this.computeWitnessPoint1(false);
-			this.computeWitnessPoint2(false);
-			var _this = this.s[this.simplexSize];
-			var v5 = this.w1[this.simplexSize];
-			_this.x = v5.x;
-			_this.y = v5.y;
-			_this.z = v5.z;
-			var _this1 = _this;
-			var v6 = this.w2[this.simplexSize];
-			var tx = _this1.x - v6.x;
-			var ty = _this1.y - v6.y;
-			var tz = _this1.z - v6.z;
-			_this1.x = tx;
-			_this1.y = ty;
-			_this1.z = tz;
-			this.simplexSize++;
-			this.triangleToTetrahedron();
-			if(this.simplexSize == 4) {
-				break;
-			}
-			this.simplexSize--;
-			var _this2 = this.dir;
-			var tx1 = -_this2.x;
-			var ty1 = -_this2.y;
-			var tz1 = -_this2.z;
-			_this2.x = tx1;
-			_this2.y = ty1;
-			_this2.z = tz1;
-			this.computeWitnessPoint1(false);
-			this.computeWitnessPoint2(false);
-			var _this3 = this.s[this.simplexSize];
-			var v7 = this.w1[this.simplexSize];
-			_this3.x = v7.x;
-			_this3.y = v7.y;
-			_this3.z = v7.z;
-			var _this4 = _this3;
-			var v8 = this.w2[this.simplexSize];
-			var tx2 = _this4.x - v8.x;
-			var ty2 = _this4.y - v8.y;
-			var tz2 = _this4.z - v8.z;
-			_this4.x = tx2;
-			_this4.y = ty2;
-			_this4.z = tz2;
-			this.simplexSize++;
-			this.triangleToTetrahedron();
-			if(this.simplexSize == 4) {
-				break;
-			}
-			this.simplexSize--;
-		}
-		var v9 = this.dir;
-		v9.x = oldDirX;
-		v9.y = oldDirY;
-		v9.z = oldDirZ;
-	}
-	triangleToTetrahedron() {
-		var oldDir;
-		var oldDirX;
-		var oldDirY;
-		var oldDirZ;
-		var v = this.dir;
-		oldDirX = v.x;
-		oldDirY = v.y;
-		oldDirZ = v.z;
-		while(true) {
-			var s0;
-			var s0X;
-			var s0Y;
-			var s0Z;
-			var s1;
-			var s1X;
-			var s1Y;
-			var s1Z;
-			var s2;
-			var s2X;
-			var s2Y;
-			var s2Z;
-			var s01;
-			var s01X;
-			var s01Y;
-			var s01Z;
-			var s02;
-			var s02X;
-			var s02Y;
-			var s02Z;
-			var v1 = this.s[0];
-			s0X = v1.x;
-			s0Y = v1.y;
-			s0Z = v1.z;
-			var v2 = this.s[1];
-			s1X = v2.x;
-			s1Y = v2.y;
-			s1Z = v2.z;
-			var v3 = this.s[2];
-			s2X = v3.x;
-			s2Y = v3.y;
-			s2Z = v3.z;
-			s01X = s1X - s0X;
-			s01Y = s1Y - s0Y;
-			s01Z = s1Z - s0Z;
-			s02X = s2X - s0X;
-			s02Y = s2Y - s0Y;
-			s02Z = s2Z - s0Z;
-			var n;
-			var nX;
-			var nY;
-			var nZ;
-			nX = s01Y * s02Z - s01Z * s02Y;
-			nY = s01Z * s02X - s01X * s02Z;
-			nZ = s01X * s02Y - s01Y * s02X;
-			var v4 = this.dir;
-			v4.x = nX;
-			v4.y = nY;
-			v4.z = nZ;
-			this.computeWitnessPoint1(false);
-			this.computeWitnessPoint2(false);
-			var _this = this.s[this.simplexSize];
-			var v5 = this.w1[this.simplexSize];
-			_this.x = v5.x;
-			_this.y = v5.y;
-			_this.z = v5.z;
-			var _this1 = _this;
-			var v6 = this.w2[this.simplexSize];
-			var tx = _this1.x - v6.x;
-			var ty = _this1.y - v6.y;
-			var tz = _this1.z - v6.z;
-			_this1.x = tx;
-			_this1.y = ty;
-			_this1.z = tz;
-			this.simplexSize++;
-			if(this.isValidTetrahedron()) {
-				break;
-			}
-			this.simplexSize--;
-			var _this2 = this.dir;
-			var tx1 = -_this2.x;
-			var ty1 = -_this2.y;
-			var tz1 = -_this2.z;
-			_this2.x = tx1;
-			_this2.y = ty1;
-			_this2.z = tz1;
-			this.computeWitnessPoint1(false);
-			this.computeWitnessPoint2(false);
-			var _this3 = this.s[this.simplexSize];
-			var v7 = this.w1[this.simplexSize];
-			_this3.x = v7.x;
-			_this3.y = v7.y;
-			_this3.z = v7.z;
-			var _this4 = _this3;
-			var v8 = this.w2[this.simplexSize];
-			var tx2 = _this4.x - v8.x;
-			var ty2 = _this4.y - v8.y;
-			var tz2 = _this4.z - v8.z;
-			_this4.x = tx2;
-			_this4.y = ty2;
-			_this4.z = tz2;
-			this.simplexSize++;
-			if(this.isValidTetrahedron()) {
-				break;
-			}
-			this.simplexSize--;
-			if(!false) {
-				break;
-			}
-		}
-		var v9 = this.dir;
-		v9.x = oldDirX;
-		v9.y = oldDirY;
-		v9.z = oldDirZ;
-	}
-	isValidTetrahedron() {
-		var e00 = this.s[1].x - this.s[0].x;
-		var e01 = this.s[1].y - this.s[0].y;
-		var e02 = this.s[1].z - this.s[0].z;
-		var e10 = this.s[2].x - this.s[0].x;
-		var e11 = this.s[2].y - this.s[0].y;
-		var e12 = this.s[2].z - this.s[0].z;
-		var e20 = this.s[3].x - this.s[0].x;
-		var e21 = this.s[3].y - this.s[0].y;
-		var e22 = this.s[3].z - this.s[0].z;
-		var det = e00 * (e11 * e22 - e12 * e21) - e01 * (e10 * e22 - e12 * e20) + e02 * (e10 * e21 - e11 * e20);
-		if(!(det > 1e-12)) {
-			return det < -1e-12;
-		} else {
-			return true;
-		}
-	}
-	computeDepth(convex1,convex2,tf1,tf2,initialPolyhedron,initialPolyhedron1,initialPolyhedron2) {
-		var _this = this.polyhedron;
-		while(_this._numTriangles > 0) {
-			var t = _this._triangleList;
-			_this._numTriangles--;
-			var prev = t._prev;
-			var next = t._next;
-			if(prev != null) {
-				prev._next = next;
-			}
-			if(next != null) {
-				next._prev = prev;
-			}
-			if(t == _this._triangleList) {
-				_this._triangleList = _this._triangleList._next;
-			}
-			if(t == _this._triangleListLast) {
-				_this._triangleListLast = _this._triangleListLast._prev;
-			}
-			t._next = null;
-			t._prev = null;
-			t.removeReferences();
-			t._next = _this._trianglePool;
-			_this._trianglePool = t;
-		}
-		while(_this._numVertices > 0) {
-			var v = _this._vertices[--_this._numVertices];
-			v.removeReferences();
-			v._next = _this._vertexPool;
-			_this._vertexPool = v;
-		}
-		var tmp = this.polyhedron;
-		var _this1 = this.polyhedron;
-		var first = _this1._vertexPool;
-		if(first != null) {
-			_this1._vertexPool = first._next;
-			first._next = null;
-		} else {
-			first = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
-		}
-		var tmp1 = first.init(initialPolyhedron[0],initialPolyhedron1[0],initialPolyhedron2[0]);
-		var _this2 = this.polyhedron;
-		var first1 = _this2._vertexPool;
-		if(first1 != null) {
-			_this2._vertexPool = first1._next;
-			first1._next = null;
-		} else {
-			first1 = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
-		}
-		var tmp2 = first1.init(initialPolyhedron[1],initialPolyhedron1[1],initialPolyhedron2[1]);
-		var _this3 = this.polyhedron;
-		var first2 = _this3._vertexPool;
-		if(first2 != null) {
-			_this3._vertexPool = first2._next;
-			first2._next = null;
-		} else {
-			first2 = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
-		}
-		var tmp3 = first2.init(initialPolyhedron[2],initialPolyhedron1[2],initialPolyhedron2[2]);
-		var _this4 = this.polyhedron;
-		var first3 = _this4._vertexPool;
-		if(first3 != null) {
-			_this4._vertexPool = first3._next;
-			first3._next = null;
-		} else {
-			first3 = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
-		}
-		if(!tmp._init(tmp1,tmp2,tmp3,first3.init(initialPolyhedron[3],initialPolyhedron1[3],initialPolyhedron2[3]))) {
-			return oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_FAILED_TO_INIT;
-		}
-		this.simplexSize = 0;
-		var supportingVertex = this.s[0];
-		var witness1 = this.w1[0];
-		var witness2 = this.w2[0];
-		var count = 0;
-		var maxIterations = 40;
-		while(count < maxIterations) {
-			var f = this.polyhedron._triangleList;
-			var mind = 1e65536;
-			var minf = null;
-			while(f != null) {
-				var n = f._next;
-				if(f._distanceSq < mind) {
-					mind = f._distanceSq;
-					minf = f;
-				}
-				f = n;
-			}
-			var face = minf;
-			var _this5 = this.dir;
-			var v1 = face._normal;
-			_this5.x = v1.x;
-			_this5.y = v1.y;
-			_this5.z = v1.z;
-			var _this6 = _this5;
-			var invLen = Math.sqrt(_this6.x * _this6.x + _this6.y * _this6.y + _this6.z * _this6.z);
-			if(invLen > 0) {
-				invLen = 1 / invLen;
-			}
-			var tx = _this6.x * invLen;
-			var ty = _this6.y * invLen;
-			var tz = _this6.z * invLen;
-			_this6.x = tx;
-			_this6.y = ty;
-			_this6.z = tz;
-			this.computeWitnessPoint1(false);
-			this.computeWitnessPoint2(false);
-			var _this7 = this.s[this.simplexSize];
-			var v2 = this.w1[this.simplexSize];
-			_this7.x = v2.x;
-			_this7.y = v2.y;
-			_this7.z = v2.z;
-			var _this8 = _this7;
-			var v3 = this.w2[this.simplexSize];
-			var tx1 = _this8.x - v3.x;
-			var ty1 = _this8.y - v3.y;
-			var tz1 = _this8.z - v3.z;
-			_this8.x = tx1;
-			_this8.y = ty1;
-			_this8.z = tz1;
-			var v0 = face._vertices[0];
-			var v11 = face._vertices[1];
-			var v21 = face._vertices[2];
-			var _this9 = v0.v;
-			var v4 = this.dir;
-			var dot1 = _this9.x * v4.x + _this9.y * v4.y + _this9.z * v4.z;
-			var v5 = this.dir;
-			var dot2 = supportingVertex.x * v5.x + supportingVertex.y * v5.y + supportingVertex.z * v5.z;
-			if(dot2 - dot1 < 1e-6 || count == maxIterations - 1) {
-				var _this10 = this.closest;
-				var v6 = this.dir;
-				_this10.x = v6.x;
-				_this10.y = v6.y;
-				_this10.z = v6.z;
-				var _this11 = _this10;
-				var _this12 = this.dir;
-				var v7 = v0.v;
-				var _this13 = this.dir;
-				var s = (_this12.x * v7.x + _this12.y * v7.y + _this12.z * v7.z) / (_this13.x * _this13.x + _this13.y * _this13.y + _this13.z * _this13.z);
-				var tx2 = _this11.x * s;
-				var ty2 = _this11.y * s;
-				var tz2 = _this11.z * s;
-				_this11.x = tx2;
-				_this11.y = ty2;
-				_this11.z = tz2;
-				var c;
-				var cX;
-				var cY;
-				var cZ;
-				var v8 = this.closest;
-				cX = v8.x;
-				cY = v8.y;
-				cZ = v8.z;
-				var s0;
-				var s0X;
-				var s0Y;
-				var s0Z;
-				var w10;
-				var w10X;
-				var w10Y;
-				var w10Z;
-				var w20;
-				var w20X;
-				var w20Y;
-				var w20Z;
-				var s1;
-				var s1X;
-				var s1Y;
-				var s1Z;
-				var w11;
-				var w11X;
-				var w11Y;
-				var w11Z;
-				var w21;
-				var w21X;
-				var w21Y;
-				var w21Z;
-				var s2;
-				var s2X;
-				var s2Y;
-				var s2Z;
-				var w12;
-				var w12X;
-				var w12Y;
-				var w12Z;
-				var w22;
-				var w22X;
-				var w22Y;
-				var w22Z;
-				var v9 = v0.v;
-				s0X = v9.x;
-				s0Y = v9.y;
-				s0Z = v9.z;
-				var v10 = v0.w1;
-				w10X = v10.x;
-				w10Y = v10.y;
-				w10Z = v10.z;
-				var v12 = v0.w2;
-				w20X = v12.x;
-				w20Y = v12.y;
-				w20Z = v12.z;
-				var v13 = v11.v;
-				s1X = v13.x;
-				s1Y = v13.y;
-				s1Z = v13.z;
-				var v14 = v11.w1;
-				w11X = v14.x;
-				w11Y = v14.y;
-				w11Z = v14.z;
-				var v15 = v11.w2;
-				w21X = v15.x;
-				w21Y = v15.y;
-				w21Z = v15.z;
-				var v16 = v21.v;
-				s2X = v16.x;
-				s2Y = v16.y;
-				s2Z = v16.z;
-				var v17 = v21.w1;
-				w12X = v17.x;
-				w12Y = v17.y;
-				w12Z = v17.z;
-				var v18 = v21.w2;
-				w22X = v18.x;
-				w22Y = v18.y;
-				w22Z = v18.z;
-				var s01;
-				var s01X;
-				var s01Y;
-				var s01Z;
-				var s02;
-				var s02X;
-				var s02Y;
-				var s02Z;
-				var s0c;
-				var s0cX;
-				var s0cY;
-				var s0cZ;
-				s01X = s1X - s0X;
-				s01Y = s1Y - s0Y;
-				s01Z = s1Z - s0Z;
-				s02X = s2X - s0X;
-				s02Y = s2Y - s0Y;
-				s02Z = s2Z - s0Z;
-				s0cX = cX - s0X;
-				s0cY = cY - s0Y;
-				s0cZ = cZ - s0Z;
-				var d11 = s01X * s01X + s01Y * s01Y + s01Z * s01Z;
-				var d12 = s01X * s02X + s01Y * s02Y + s01Z * s02Z;
-				var d22 = s02X * s02X + s02Y * s02Y + s02Z * s02Z;
-				var d1c = s01X * s0cX + s01Y * s0cY + s01Z * s0cZ;
-				var d2c = s02X * s0cX + s02Y * s0cY + s02Z * s0cZ;
-				var invDet = d11 * d22 - d12 * d12;
-				if(invDet != 0) {
-					invDet = 1 / invDet;
-				}
-				var s3 = (d1c * d22 - d2c * d12) * invDet;
-				var t1 = (-d1c * d12 + d2c * d11) * invDet;
-				var diff;
-				var diffX;
-				var diffY;
-				var diffZ;
-				var cp1;
-				var cp1X;
-				var cp1Y;
-				var cp1Z;
-				var cp2;
-				var cp2X;
-				var cp2Y;
-				var cp2Z;
-				diffX = w11X - w10X;
-				diffY = w11Y - w10Y;
-				diffZ = w11Z - w10Z;
-				cp1X = w10X + diffX * s3;
-				cp1Y = w10Y + diffY * s3;
-				cp1Z = w10Z + diffZ * s3;
-				diffX = w12X - w10X;
-				diffY = w12Y - w10Y;
-				diffZ = w12Z - w10Z;
-				cp1X += diffX * t1;
-				cp1Y += diffY * t1;
-				cp1Z += diffZ * t1;
-				diffX = w21X - w20X;
-				diffY = w21Y - w20Y;
-				diffZ = w21Z - w20Z;
-				cp2X = w20X + diffX * s3;
-				cp2Y = w20Y + diffY * s3;
-				cp2Z = w20Z + diffZ * s3;
-				diffX = w22X - w20X;
-				diffY = w22Y - w20Y;
-				diffZ = w22Z - w20Z;
-				cp2X += diffX * t1;
-				cp2Y += diffY * t1;
-				cp2Z += diffZ * t1;
-				var v19 = this.closestPoint1;
-				v19.x = cp1X;
-				v19.y = cp1Y;
-				v19.z = cp1Z;
-				var v20 = this.closestPoint2;
-				v20.x = cp2X;
-				v20.y = cp2Y;
-				v20.z = cp2Z;
-				var _this14 = this.closest;
-				this.depth = Math.sqrt(_this14.x * _this14.x + _this14.y * _this14.y + _this14.z * _this14.z);
-				return oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.SUCCEEDED;
-			}
-			var _this15 = this.polyhedron;
-			var first4 = _this15._vertexPool;
-			if(first4 != null) {
-				_this15._vertexPool = first4._next;
-				first4._next = null;
-			} else {
-				first4 = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
-			}
-			var epaVertex = first4.init(supportingVertex,witness1,witness2);
-			if(!this.polyhedron._addVertex(epaVertex,face)) {
-				return oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_FAILED_TO_ADD_VERTEX;
-			}
-			++count;
-		}
-		return oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_DID_NOT_CONVERGE;
-	}
-	computeClosestPoints(c1,c2,tf1,tf2,cache) {
-		return this.computeClosestPointsImpl(c1,c2,tf1,tf2,cache,true);
-	}
-	computeDistance(c1,c2,tf1,tf2,cache) {
-		return this.computeClosestPointsImpl(c1,c2,tf1,tf2,cache,false);
-	}
-	convexCast(c1,c2,tf1,tf2,tl1,tl2,hit) {
-		return this.convexCastImpl(c1,c2,tf1,tf2,tl1,tl2,hit);
-	}
-	rayCast(c,tf,begin,end,hit) {
-		var tf1 = this.tempTransform;
-		var tf2 = tf;
-		var v = begin;
-		tf1._positionX = v.x;
-		tf1._positionY = v.y;
-		tf1._positionZ = v.z;
-		var tl1 = this.tl1;
-		var tl2 = this.tl2;
-		tl1.x = end.x;
-		tl1.y = end.y;
-		tl1.z = end.z;
-		var _this = tl1;
-		var tx = _this.x - begin.x;
-		var ty = _this.y - begin.y;
-		var tz = _this.z - begin.z;
-		_this.x = tx;
-		_this.y = ty;
-		_this.z = tz;
-		tl2.zero();
-		return this.convexCastImpl(null,c,tf1,tf2,tl1,tl2,hit);
-	}
-	static getInstance() {
-		return oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance;
-	}
-}
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaLog = class oimo_collision_narrowphase_detector_gjkepa_GjkEpaLog {
-}
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState = class oimo_collision_narrowphase_detector_gjkepa_GjkEpaResultState {
-}
-oimo.collision.narrowphase.detector.gjkepa.SimplexUtil = class oimo_collision_narrowphase_detector_gjkepa_SimplexUtil {
-	static projectOrigin2(vec1,vec2,out) {
-		var v1;
-		var v1X;
-		var v1Y;
-		var v1Z;
-		var v2;
-		var v2X;
-		var v2Y;
-		var v2Z;
-		var v = vec1;
-		v1X = v.x;
-		v1Y = v.y;
-		v1Z = v.z;
-		var v3 = vec2;
-		v2X = v3.x;
-		v2Y = v3.y;
-		v2Z = v3.z;
-		var v12;
-		var v12X;
-		var v12Y;
-		var v12Z;
-		v12X = v2X - v1X;
-		v12Y = v2Y - v1Y;
-		v12Z = v2Z - v1Z;
-		var d = v12X * v12X + v12Y * v12Y + v12Z * v12Z;
-		var t = v12X * v1X + v12Y * v1Y + v12Z * v1Z;
-		t = -t / d;
-		if(t < 0) {
-			var v4 = out;
-			v4.x = v1X;
-			v4.y = v1Y;
-			v4.z = v1Z;
-			return 1;
-		}
-		if(t > 1) {
-			var v5 = out;
-			v5.x = v2X;
-			v5.y = v2Y;
-			v5.z = v2Z;
-			return 2;
-		}
-		var p;
-		var pX;
-		var pY;
-		var pZ;
-		pX = v1X + v12X * t;
-		pY = v1Y + v12Y * t;
-		pZ = v1Z + v12Z * t;
-		var v6 = out;
-		v6.x = pX;
-		v6.y = pY;
-		v6.z = pZ;
-		return 3;
-	}
-	static projectOrigin3(vec1,vec2,vec3,out) {
-		var v1;
-		var v1X;
-		var v1Y;
-		var v1Z;
-		var v2;
-		var v2X;
-		var v2Y;
-		var v2Z;
-		var v3;
-		var v3X;
-		var v3Y;
-		var v3Z;
-		var v12;
-		var v12X;
-		var v12Y;
-		var v12Z;
-		var v23;
-		var v23X;
-		var v23Y;
-		var v23Z;
-		var v31;
-		var v31X;
-		var v31Y;
-		var v31Z;
-		var v = vec1;
-		v1X = v.x;
-		v1Y = v.y;
-		v1Z = v.z;
-		var v4 = vec2;
-		v2X = v4.x;
-		v2Y = v4.y;
-		v2Z = v4.z;
-		var v5 = vec3;
-		v3X = v5.x;
-		v3Y = v5.y;
-		v3Z = v5.z;
-		v12X = v2X - v1X;
-		v12Y = v2Y - v1Y;
-		v12Z = v2Z - v1Z;
-		v23X = v3X - v2X;
-		v23Y = v3Y - v2Y;
-		v23Z = v3Z - v2Z;
-		v31X = v1X - v3X;
-		v31Y = v1Y - v3Y;
-		v31Z = v1Z - v3Z;
-		var n;
-		var nX;
-		var nY;
-		var nZ;
-		nX = v12Y * v23Z - v12Z * v23Y;
-		nY = v12Z * v23X - v12X * v23Z;
-		nZ = v12X * v23Y - v12Y * v23X;
-		var n12;
-		var n12X;
-		var n12Y;
-		var n12Z;
-		var n23;
-		var n23X;
-		var n23Y;
-		var n23Z;
-		var n31;
-		var n31X;
-		var n31Y;
-		var n31Z;
-		n12X = v12Y * nZ - v12Z * nY;
-		n12Y = v12Z * nX - v12X * nZ;
-		n12Z = v12X * nY - v12Y * nX;
-		n23X = v23Y * nZ - v23Z * nY;
-		n23Y = v23Z * nX - v23X * nZ;
-		n23Z = v23X * nY - v23Y * nX;
-		n31X = v31Y * nZ - v31Z * nY;
-		n31Y = v31Z * nX - v31X * nZ;
-		n31Z = v31X * nY - v31Y * nX;
-		var d12 = v1X * n12X + v1Y * n12Y + v1Z * n12Z;
-		var d23 = v2X * n23X + v2Y * n23Y + v2Z * n23Z;
-		var d31 = v3X * n31X + v3Y * n31Y + v3Z * n31Z;
-		var mind = -1;
-		var minv;
-		var minvX;
-		var minvY;
-		var minvZ;
-		var mini = 0;
-		minvX = 0;
-		minvY = 0;
-		minvZ = 0;
-		if(d12 < 0) {
-			var v11;
-			var v1X1;
-			var v1Y1;
-			var v1Z1;
-			var v21;
-			var v2X1;
-			var v2Y1;
-			var v2Z1;
-			var v6 = vec1;
-			v1X1 = v6.x;
-			v1Y1 = v6.y;
-			v1Z1 = v6.z;
-			var v7 = vec2;
-			v2X1 = v7.x;
-			v2Y1 = v7.y;
-			v2Z1 = v7.z;
-			var v121;
-			var v12X1;
-			var v12Y1;
-			var v12Z1;
-			v12X1 = v2X1 - v1X1;
-			v12Y1 = v2Y1 - v1Y1;
-			v12Z1 = v2Z1 - v1Z1;
-			var d = v12X1 * v12X1 + v12Y1 * v12Y1 + v12Z1 * v12Z1;
-			var t = v12X1 * v1X1 + v12Y1 * v1Y1 + v12Z1 * v1Z1;
-			t = -t / d;
-			var b;
-			if(t < 0) {
-				var v8 = out;
-				v8.x = v1X1;
-				v8.y = v1Y1;
-				v8.z = v1Z1;
-				b = 1;
-			} else if(t > 1) {
-				var v9 = out;
-				v9.x = v2X1;
-				v9.y = v2Y1;
-				v9.z = v2Z1;
-				b = 2;
-			} else {
-				var p;
-				var pX;
-				var pY;
-				var pZ;
-				pX = v1X1 + v12X1 * t;
-				pY = v1Y1 + v12Y1 * t;
-				pZ = v1Z1 + v12Z1 * t;
-				var v10 = out;
-				v10.x = pX;
-				v10.y = pY;
-				v10.z = pZ;
-				b = 3;
-			}
-			var d1 = out.x * out.x + out.y * out.y + out.z * out.z;
-			mini = b;
-			mind = d1;
-			var v13 = out;
-			minvX = v13.x;
-			minvY = v13.y;
-			minvZ = v13.z;
-		}
-		if(d23 < 0) {
-			var v14;
-			var v1X2;
-			var v1Y2;
-			var v1Z2;
-			var v22;
-			var v2X2;
-			var v2Y2;
-			var v2Z2;
-			var v15 = vec2;
-			v1X2 = v15.x;
-			v1Y2 = v15.y;
-			v1Z2 = v15.z;
-			var v16 = vec3;
-			v2X2 = v16.x;
-			v2Y2 = v16.y;
-			v2Z2 = v16.z;
-			var v122;
-			var v12X2;
-			var v12Y2;
-			var v12Z2;
-			v12X2 = v2X2 - v1X2;
-			v12Y2 = v2Y2 - v1Y2;
-			v12Z2 = v2Z2 - v1Z2;
-			var d2 = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
-			var t1 = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
-			t1 = -t1 / d2;
-			var b1;
-			if(t1 < 0) {
-				var v17 = out;
-				v17.x = v1X2;
-				v17.y = v1Y2;
-				v17.z = v1Z2;
-				b1 = 1;
-			} else if(t1 > 1) {
-				var v18 = out;
-				v18.x = v2X2;
-				v18.y = v2Y2;
-				v18.z = v2Z2;
-				b1 = 2;
-			} else {
-				var p1;
-				var pX1;
-				var pY1;
-				var pZ1;
-				pX1 = v1X2 + v12X2 * t1;
-				pY1 = v1Y2 + v12Y2 * t1;
-				pZ1 = v1Z2 + v12Z2 * t1;
-				var v19 = out;
-				v19.x = pX1;
-				v19.y = pY1;
-				v19.z = pZ1;
-				b1 = 3;
-			}
-			var d3 = out.x * out.x + out.y * out.y + out.z * out.z;
-			if(mind < 0 || d3 < mind) {
-				mini = b1 << 1;
-				mind = d3;
-				var v20 = out;
-				minvX = v20.x;
-				minvY = v20.y;
-				minvZ = v20.z;
-			}
-		}
-		if(d31 < 0) {
-			var v110;
-			var v1X3;
-			var v1Y3;
-			var v1Z3;
-			var v24;
-			var v2X3;
-			var v2Y3;
-			var v2Z3;
-			var v25 = vec1;
-			v1X3 = v25.x;
-			v1Y3 = v25.y;
-			v1Z3 = v25.z;
-			var v26 = vec3;
-			v2X3 = v26.x;
-			v2Y3 = v26.y;
-			v2Z3 = v26.z;
-			var v123;
-			var v12X3;
-			var v12Y3;
-			var v12Z3;
-			v12X3 = v2X3 - v1X3;
-			v12Y3 = v2Y3 - v1Y3;
-			v12Z3 = v2Z3 - v1Z3;
-			var d4 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
-			var t2 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
-			t2 = -t2 / d4;
-			var b2;
-			if(t2 < 0) {
-				var v27 = out;
-				v27.x = v1X3;
-				v27.y = v1Y3;
-				v27.z = v1Z3;
-				b2 = 1;
-			} else if(t2 > 1) {
-				var v28 = out;
-				v28.x = v2X3;
-				v28.y = v2Y3;
-				v28.z = v2Z3;
-				b2 = 2;
-			} else {
-				var p2;
-				var pX2;
-				var pY2;
-				var pZ2;
-				pX2 = v1X3 + v12X3 * t2;
-				pY2 = v1Y3 + v12Y3 * t2;
-				pZ2 = v1Z3 + v12Z3 * t2;
-				var v29 = out;
-				v29.x = pX2;
-				v29.y = pY2;
-				v29.z = pZ2;
-				b2 = 3;
-			}
-			var d5 = out.x * out.x + out.y * out.y + out.z * out.z;
-			if(mind < 0 || d5 < mind) {
-				mini = b2 & 1 | (b2 & 2) << 1;
-				mind = d5;
-				var v30 = out;
-				minvX = v30.x;
-				minvY = v30.y;
-				minvZ = v30.z;
-			}
-		}
-		if(mind > 0) {
-			var v32 = out;
-			v32.x = minvX;
-			v32.y = minvY;
-			v32.z = minvZ;
-			return mini;
-		}
-		var l = nX * nX + nY * nY + nZ * nZ;
-		if(l > 0) {
-			l = 1 / Math.sqrt(l);
-		}
-		nX *= l;
-		nY *= l;
-		nZ *= l;
-		var dn = v1X * nX + v1Y * nY + v1Z * nZ;
-		var l2 = nX * nX + nY * nY + nZ * nZ;
-		l2 = dn / l2;
-		minvX = nX * l2;
-		minvY = nY * l2;
-		minvZ = nZ * l2;
-		var v33 = out;
-		v33.x = minvX;
-		v33.y = minvY;
-		v33.z = minvZ;
-		return 7;
-	}
-	static projectOrigin4(vec1,vec2,vec3,vec4,out) {
-		var v1;
-		var v1X;
-		var v1Y;
-		var v1Z;
-		var v2;
-		var v2X;
-		var v2Y;
-		var v2Z;
-		var v3;
-		var v3X;
-		var v3Y;
-		var v3Z;
-		var v4;
-		var v4X;
-		var v4Y;
-		var v4Z;
-		var v12;
-		var v12X;
-		var v12Y;
-		var v12Z;
-		var v13;
-		var v13X;
-		var v13Y;
-		var v13Z;
-		var v14;
-		var v14X;
-		var v14Y;
-		var v14Z;
-		var v23;
-		var v23X;
-		var v23Y;
-		var v23Z;
-		var v24;
-		var v24X;
-		var v24Y;
-		var v24Z;
-		var v34;
-		var v34X;
-		var v34Y;
-		var v34Z;
-		var v = vec1;
-		v1X = v.x;
-		v1Y = v.y;
-		v1Z = v.z;
-		var v5 = vec2;
-		v2X = v5.x;
-		v2Y = v5.y;
-		v2Z = v5.z;
-		var v6 = vec3;
-		v3X = v6.x;
-		v3Y = v6.y;
-		v3Z = v6.z;
-		var v7 = vec4;
-		v4X = v7.x;
-		v4Y = v7.y;
-		v4Z = v7.z;
-		v12X = v2X - v1X;
-		v12Y = v2Y - v1Y;
-		v12Z = v2Z - v1Z;
-		v13X = v3X - v1X;
-		v13Y = v3Y - v1Y;
-		v13Z = v3Z - v1Z;
-		v14X = v4X - v1X;
-		v14Y = v4Y - v1Y;
-		v14Z = v4Z - v1Z;
-		v23X = v3X - v2X;
-		v23Y = v3Y - v2Y;
-		v23Z = v3Z - v2Z;
-		v24X = v4X - v2X;
-		v24Y = v4Y - v2Y;
-		v24Z = v4Z - v2Z;
-		v34X = v4X - v3X;
-		v34Y = v4Y - v3Y;
-		v34Z = v4Z - v3Z;
-		var rev;
-		var n123;
-		var n123X;
-		var n123Y;
-		var n123Z;
-		var n134;
-		var n134X;
-		var n134Y;
-		var n134Z;
-		var n142;
-		var n142X;
-		var n142Y;
-		var n142Z;
-		var n243;
-		var n243X;
-		var n243Y;
-		var n243Z;
-		var n;
-		var nX;
-		var nY;
-		var nZ;
-		n123X = v12Y * v13Z - v12Z * v13Y;
-		n123Y = v12Z * v13X - v12X * v13Z;
-		n123Z = v12X * v13Y - v12Y * v13X;
-		n134X = v13Y * v14Z - v13Z * v14Y;
-		n134Y = v13Z * v14X - v13X * v14Z;
-		n134Z = v13X * v14Y - v13Y * v14X;
-		n142X = v14Y * v12Z - v14Z * v12Y;
-		n142Y = v14Z * v12X - v14X * v12Z;
-		n142Z = v14X * v12Y - v14Y * v12X;
-		n243X = v24Y * v23Z - v24Z * v23Y;
-		n243Y = v24Z * v23X - v24X * v23Z;
-		n243Z = v24X * v23Y - v24Y * v23X;
-		var sign = v12X * n243X + v12Y * n243Y + v12Z * n243Z > 0 ? 1 : -1;
-		var d123 = v1X * n123X + v1Y * n123Y + v1Z * n123Z;
-		var d134 = v1X * n134X + v1Y * n134Y + v1Z * n134Z;
-		var d142 = v1X * n142X + v1Y * n142Y + v1Z * n142Z;
-		var d243 = v2X * n243X + v2Y * n243Y + v2Z * n243Z;
-		var mind = -1;
-		var minv;
-		var minvX;
-		var minvY;
-		var minvZ;
-		var mini = 0;
-		minvX = 0;
-		minvY = 0;
-		minvZ = 0;
-		if(d123 * sign < 0) {
-			var v11;
-			var v1X1;
-			var v1Y1;
-			var v1Z1;
-			var v21;
-			var v2X1;
-			var v2Y1;
-			var v2Z1;
-			var v31;
-			var v3X1;
-			var v3Y1;
-			var v3Z1;
-			var v121;
-			var v12X1;
-			var v12Y1;
-			var v12Z1;
-			var v231;
-			var v23X1;
-			var v23Y1;
-			var v23Z1;
-			var v311;
-			var v31X;
-			var v31Y;
-			var v31Z;
-			var v8 = vec1;
-			v1X1 = v8.x;
-			v1Y1 = v8.y;
-			v1Z1 = v8.z;
-			var v9 = vec2;
-			v2X1 = v9.x;
-			v2Y1 = v9.y;
-			v2Z1 = v9.z;
-			var v10 = vec3;
-			v3X1 = v10.x;
-			v3Y1 = v10.y;
-			v3Z1 = v10.z;
-			v12X1 = v2X1 - v1X1;
-			v12Y1 = v2Y1 - v1Y1;
-			v12Z1 = v2Z1 - v1Z1;
-			v23X1 = v3X1 - v2X1;
-			v23Y1 = v3Y1 - v2Y1;
-			v23Z1 = v3Z1 - v2Z1;
-			v31X = v1X1 - v3X1;
-			v31Y = v1Y1 - v3Y1;
-			v31Z = v1Z1 - v3Z1;
-			var n1;
-			var nX1;
-			var nY1;
-			var nZ1;
-			nX1 = v12Y1 * v23Z1 - v12Z1 * v23Y1;
-			nY1 = v12Z1 * v23X1 - v12X1 * v23Z1;
-			nZ1 = v12X1 * v23Y1 - v12Y1 * v23X1;
-			var n12;
-			var n12X;
-			var n12Y;
-			var n12Z;
-			var n23;
-			var n23X;
-			var n23Y;
-			var n23Z;
-			var n31;
-			var n31X;
-			var n31Y;
-			var n31Z;
-			n12X = v12Y1 * nZ1 - v12Z1 * nY1;
-			n12Y = v12Z1 * nX1 - v12X1 * nZ1;
-			n12Z = v12X1 * nY1 - v12Y1 * nX1;
-			n23X = v23Y1 * nZ1 - v23Z1 * nY1;
-			n23Y = v23Z1 * nX1 - v23X1 * nZ1;
-			n23Z = v23X1 * nY1 - v23Y1 * nX1;
-			n31X = v31Y * nZ1 - v31Z * nY1;
-			n31Y = v31Z * nX1 - v31X * nZ1;
-			n31Z = v31X * nY1 - v31Y * nX1;
-			var d12 = v1X1 * n12X + v1Y1 * n12Y + v1Z1 * n12Z;
-			var d23 = v2X1 * n23X + v2Y1 * n23Y + v2Z1 * n23Z;
-			var d31 = v3X1 * n31X + v3Y1 * n31Y + v3Z1 * n31Z;
-			var mind1 = -1;
-			var minv1;
-			var minvX1;
-			var minvY1;
-			var minvZ1;
-			var mini1 = 0;
-			minvX1 = 0;
-			minvY1 = 0;
-			minvZ1 = 0;
-			if(d12 < 0) {
-				var v15;
-				var v1X2;
-				var v1Y2;
-				var v1Z2;
-				var v22;
-				var v2X2;
-				var v2Y2;
-				var v2Z2;
-				var v16 = vec1;
-				v1X2 = v16.x;
-				v1Y2 = v16.y;
-				v1Z2 = v16.z;
-				var v17 = vec2;
-				v2X2 = v17.x;
-				v2Y2 = v17.y;
-				v2Z2 = v17.z;
-				var v122;
-				var v12X2;
-				var v12Y2;
-				var v12Z2;
-				v12X2 = v2X2 - v1X2;
-				v12Y2 = v2Y2 - v1Y2;
-				v12Z2 = v2Z2 - v1Z2;
-				var d = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
-				var t = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
-				t = -t / d;
-				var b;
-				if(t < 0) {
-					var v18 = out;
-					v18.x = v1X2;
-					v18.y = v1Y2;
-					v18.z = v1Z2;
-					b = 1;
-				} else if(t > 1) {
-					var v19 = out;
-					v19.x = v2X2;
-					v19.y = v2Y2;
-					v19.z = v2Z2;
-					b = 2;
-				} else {
-					var p;
-					var pX;
-					var pY;
-					var pZ;
-					pX = v1X2 + v12X2 * t;
-					pY = v1Y2 + v12Y2 * t;
-					pZ = v1Z2 + v12Z2 * t;
-					var v20 = out;
-					v20.x = pX;
-					v20.y = pY;
-					v20.z = pZ;
-					b = 3;
-				}
-				var d1 = out.x * out.x + out.y * out.y + out.z * out.z;
-				mini1 = b;
-				mind1 = d1;
-				var v25 = out;
-				minvX1 = v25.x;
-				minvY1 = v25.y;
-				minvZ1 = v25.z;
-			}
-			if(d23 < 0) {
-				var v110;
-				var v1X3;
-				var v1Y3;
-				var v1Z3;
-				var v26;
-				var v2X3;
-				var v2Y3;
-				var v2Z3;
-				var v27 = vec2;
-				v1X3 = v27.x;
-				v1Y3 = v27.y;
-				v1Z3 = v27.z;
-				var v28 = vec3;
-				v2X3 = v28.x;
-				v2Y3 = v28.y;
-				v2Z3 = v28.z;
-				var v123;
-				var v12X3;
-				var v12Y3;
-				var v12Z3;
-				v12X3 = v2X3 - v1X3;
-				v12Y3 = v2Y3 - v1Y3;
-				v12Z3 = v2Z3 - v1Z3;
-				var d2 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
-				var t1 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
-				t1 = -t1 / d2;
-				var b1;
-				if(t1 < 0) {
-					var v29 = out;
-					v29.x = v1X3;
-					v29.y = v1Y3;
-					v29.z = v1Z3;
-					b1 = 1;
-				} else if(t1 > 1) {
-					var v30 = out;
-					v30.x = v2X3;
-					v30.y = v2Y3;
-					v30.z = v2Z3;
-					b1 = 2;
-				} else {
-					var p1;
-					var pX1;
-					var pY1;
-					var pZ1;
-					pX1 = v1X3 + v12X3 * t1;
-					pY1 = v1Y3 + v12Y3 * t1;
-					pZ1 = v1Z3 + v12Z3 * t1;
-					var v32 = out;
-					v32.x = pX1;
-					v32.y = pY1;
-					v32.z = pZ1;
-					b1 = 3;
-				}
-				var d3 = out.x * out.x + out.y * out.y + out.z * out.z;
-				if(mind1 < 0 || d3 < mind1) {
-					mini1 = b1 << 1;
-					mind1 = d3;
-					var v33 = out;
-					minvX1 = v33.x;
-					minvY1 = v33.y;
-					minvZ1 = v33.z;
-				}
-			}
-			if(d31 < 0) {
-				var v111;
-				var v1X4;
-				var v1Y4;
-				var v1Z4;
-				var v210;
-				var v2X4;
-				var v2Y4;
-				var v2Z4;
-				var v35 = vec1;
-				v1X4 = v35.x;
-				v1Y4 = v35.y;
-				v1Z4 = v35.z;
-				var v36 = vec3;
-				v2X4 = v36.x;
-				v2Y4 = v36.y;
-				v2Z4 = v36.z;
-				var v124;
-				var v12X4;
-				var v12Y4;
-				var v12Z4;
-				v12X4 = v2X4 - v1X4;
-				v12Y4 = v2Y4 - v1Y4;
-				v12Z4 = v2Z4 - v1Z4;
-				var d4 = v12X4 * v12X4 + v12Y4 * v12Y4 + v12Z4 * v12Z4;
-				var t2 = v12X4 * v1X4 + v12Y4 * v1Y4 + v12Z4 * v1Z4;
-				t2 = -t2 / d4;
-				var b2;
-				if(t2 < 0) {
-					var v37 = out;
-					v37.x = v1X4;
-					v37.y = v1Y4;
-					v37.z = v1Z4;
-					b2 = 1;
-				} else if(t2 > 1) {
-					var v38 = out;
-					v38.x = v2X4;
-					v38.y = v2Y4;
-					v38.z = v2Z4;
-					b2 = 2;
-				} else {
-					var p2;
-					var pX2;
-					var pY2;
-					var pZ2;
-					pX2 = v1X4 + v12X4 * t2;
-					pY2 = v1Y4 + v12Y4 * t2;
-					pZ2 = v1Z4 + v12Z4 * t2;
-					var v39 = out;
-					v39.x = pX2;
-					v39.y = pY2;
-					v39.z = pZ2;
-					b2 = 3;
-				}
-				var d5 = out.x * out.x + out.y * out.y + out.z * out.z;
-				if(mind1 < 0 || d5 < mind1) {
-					mini1 = b2 & 1 | (b2 & 2) << 1;
-					mind1 = d5;
-					var v40 = out;
-					minvX1 = v40.x;
-					minvY1 = v40.y;
-					minvZ1 = v40.z;
-				}
-			}
-			var b3;
-			if(mind1 > 0) {
-				var v41 = out;
-				v41.x = minvX1;
-				v41.y = minvY1;
-				v41.z = minvZ1;
-				b3 = mini1;
-			} else {
-				var l = nX1 * nX1 + nY1 * nY1 + nZ1 * nZ1;
-				if(l > 0) {
-					l = 1 / Math.sqrt(l);
-				}
-				nX1 *= l;
-				nY1 *= l;
-				nZ1 *= l;
-				var dn = v1X1 * nX1 + v1Y1 * nY1 + v1Z1 * nZ1;
-				var l2 = nX1 * nX1 + nY1 * nY1 + nZ1 * nZ1;
-				l2 = dn / l2;
-				minvX1 = nX1 * l2;
-				minvY1 = nY1 * l2;
-				minvZ1 = nZ1 * l2;
-				var v42 = out;
-				v42.x = minvX1;
-				v42.y = minvY1;
-				v42.z = minvZ1;
-				b3 = 7;
-			}
-			var d6 = out.x * out.x + out.y * out.y + out.z * out.z;
-			mini = b3;
-			mind = d6;
-			var v43 = out;
-			minvX = v43.x;
-			minvY = v43.y;
-			minvZ = v43.z;
-		}
-		if(d134 * sign < 0) {
-			var v112;
-			var v1X5;
-			var v1Y5;
-			var v1Z5;
-			var v211;
-			var v2X5;
-			var v2Y5;
-			var v2Z5;
-			var v310;
-			var v3X2;
-			var v3Y2;
-			var v3Z2;
-			var v125;
-			var v12X5;
-			var v12Y5;
-			var v12Z5;
-			var v232;
-			var v23X2;
-			var v23Y2;
-			var v23Z2;
-			var v312;
-			var v31X1;
-			var v31Y1;
-			var v31Z1;
-			var v44 = vec1;
-			v1X5 = v44.x;
-			v1Y5 = v44.y;
-			v1Z5 = v44.z;
-			var v45 = vec3;
-			v2X5 = v45.x;
-			v2Y5 = v45.y;
-			v2Z5 = v45.z;
-			var v46 = vec4;
-			v3X2 = v46.x;
-			v3Y2 = v46.y;
-			v3Z2 = v46.z;
-			v12X5 = v2X5 - v1X5;
-			v12Y5 = v2Y5 - v1Y5;
-			v12Z5 = v2Z5 - v1Z5;
-			v23X2 = v3X2 - v2X5;
-			v23Y2 = v3Y2 - v2Y5;
-			v23Z2 = v3Z2 - v2Z5;
-			v31X1 = v1X5 - v3X2;
-			v31Y1 = v1Y5 - v3Y2;
-			v31Z1 = v1Z5 - v3Z2;
-			var n2;
-			var nX2;
-			var nY2;
-			var nZ2;
-			nX2 = v12Y5 * v23Z2 - v12Z5 * v23Y2;
-			nY2 = v12Z5 * v23X2 - v12X5 * v23Z2;
-			nZ2 = v12X5 * v23Y2 - v12Y5 * v23X2;
-			var n121;
-			var n12X1;
-			var n12Y1;
-			var n12Z1;
-			var n231;
-			var n23X1;
-			var n23Y1;
-			var n23Z1;
-			var n311;
-			var n31X1;
-			var n31Y1;
-			var n31Z1;
-			n12X1 = v12Y5 * nZ2 - v12Z5 * nY2;
-			n12Y1 = v12Z5 * nX2 - v12X5 * nZ2;
-			n12Z1 = v12X5 * nY2 - v12Y5 * nX2;
-			n23X1 = v23Y2 * nZ2 - v23Z2 * nY2;
-			n23Y1 = v23Z2 * nX2 - v23X2 * nZ2;
-			n23Z1 = v23X2 * nY2 - v23Y2 * nX2;
-			n31X1 = v31Y1 * nZ2 - v31Z1 * nY2;
-			n31Y1 = v31Z1 * nX2 - v31X1 * nZ2;
-			n31Z1 = v31X1 * nY2 - v31Y1 * nX2;
-			var d121 = v1X5 * n12X1 + v1Y5 * n12Y1 + v1Z5 * n12Z1;
-			var d231 = v2X5 * n23X1 + v2Y5 * n23Y1 + v2Z5 * n23Z1;
-			var d311 = v3X2 * n31X1 + v3Y2 * n31Y1 + v3Z2 * n31Z1;
-			var mind2 = -1;
-			var minv2;
-			var minvX2;
-			var minvY2;
-			var minvZ2;
-			var mini2 = 0;
-			minvX2 = 0;
-			minvY2 = 0;
-			minvZ2 = 0;
-			if(d121 < 0) {
-				var v113;
-				var v1X6;
-				var v1Y6;
-				var v1Z6;
-				var v212;
-				var v2X6;
-				var v2Y6;
-				var v2Z6;
-				var v47 = vec1;
-				v1X6 = v47.x;
-				v1Y6 = v47.y;
-				v1Z6 = v47.z;
-				var v48 = vec3;
-				v2X6 = v48.x;
-				v2Y6 = v48.y;
-				v2Z6 = v48.z;
-				var v126;
-				var v12X6;
-				var v12Y6;
-				var v12Z6;
-				v12X6 = v2X6 - v1X6;
-				v12Y6 = v2Y6 - v1Y6;
-				v12Z6 = v2Z6 - v1Z6;
-				var d7 = v12X6 * v12X6 + v12Y6 * v12Y6 + v12Z6 * v12Z6;
-				var t3 = v12X6 * v1X6 + v12Y6 * v1Y6 + v12Z6 * v1Z6;
-				t3 = -t3 / d7;
-				var b4;
-				if(t3 < 0) {
-					var v49 = out;
-					v49.x = v1X6;
-					v49.y = v1Y6;
-					v49.z = v1Z6;
-					b4 = 1;
-				} else if(t3 > 1) {
-					var v50 = out;
-					v50.x = v2X6;
-					v50.y = v2Y6;
-					v50.z = v2Z6;
-					b4 = 2;
-				} else {
-					var p3;
-					var pX3;
-					var pY3;
-					var pZ3;
-					pX3 = v1X6 + v12X6 * t3;
-					pY3 = v1Y6 + v12Y6 * t3;
-					pZ3 = v1Z6 + v12Z6 * t3;
-					var v51 = out;
-					v51.x = pX3;
-					v51.y = pY3;
-					v51.z = pZ3;
-					b4 = 3;
-				}
-				var d8 = out.x * out.x + out.y * out.y + out.z * out.z;
-				mini2 = b4;
-				mind2 = d8;
-				var v52 = out;
-				minvX2 = v52.x;
-				minvY2 = v52.y;
-				minvZ2 = v52.z;
-			}
-			if(d231 < 0) {
-				var v114;
-				var v1X7;
-				var v1Y7;
-				var v1Z7;
-				var v213;
-				var v2X7;
-				var v2Y7;
-				var v2Z7;
-				var v53 = vec3;
-				v1X7 = v53.x;
-				v1Y7 = v53.y;
-				v1Z7 = v53.z;
-				var v54 = vec4;
-				v2X7 = v54.x;
-				v2Y7 = v54.y;
-				v2Z7 = v54.z;
-				var v127;
-				var v12X7;
-				var v12Y7;
-				var v12Z7;
-				v12X7 = v2X7 - v1X7;
-				v12Y7 = v2Y7 - v1Y7;
-				v12Z7 = v2Z7 - v1Z7;
-				var d9 = v12X7 * v12X7 + v12Y7 * v12Y7 + v12Z7 * v12Z7;
-				var t4 = v12X7 * v1X7 + v12Y7 * v1Y7 + v12Z7 * v1Z7;
-				t4 = -t4 / d9;
-				var b5;
-				if(t4 < 0) {
-					var v55 = out;
-					v55.x = v1X7;
-					v55.y = v1Y7;
-					v55.z = v1Z7;
-					b5 = 1;
-				} else if(t4 > 1) {
-					var v56 = out;
-					v56.x = v2X7;
-					v56.y = v2Y7;
-					v56.z = v2Z7;
-					b5 = 2;
-				} else {
-					var p4;
-					var pX4;
-					var pY4;
-					var pZ4;
-					pX4 = v1X7 + v12X7 * t4;
-					pY4 = v1Y7 + v12Y7 * t4;
-					pZ4 = v1Z7 + v12Z7 * t4;
-					var v57 = out;
-					v57.x = pX4;
-					v57.y = pY4;
-					v57.z = pZ4;
-					b5 = 3;
-				}
-				var d10 = out.x * out.x + out.y * out.y + out.z * out.z;
-				if(mind2 < 0 || d10 < mind2) {
-					mini2 = b5 << 1;
-					mind2 = d10;
-					var v58 = out;
-					minvX2 = v58.x;
-					minvY2 = v58.y;
-					minvZ2 = v58.z;
-				}
-			}
-			if(d311 < 0) {
-				var v115;
-				var v1X8;
-				var v1Y8;
-				var v1Z8;
-				var v214;
-				var v2X8;
-				var v2Y8;
-				var v2Z8;
-				var v59 = vec1;
-				v1X8 = v59.x;
-				v1Y8 = v59.y;
-				v1Z8 = v59.z;
-				var v60 = vec4;
-				v2X8 = v60.x;
-				v2Y8 = v60.y;
-				v2Z8 = v60.z;
-				var v128;
-				var v12X8;
-				var v12Y8;
-				var v12Z8;
-				v12X8 = v2X8 - v1X8;
-				v12Y8 = v2Y8 - v1Y8;
-				v12Z8 = v2Z8 - v1Z8;
-				var d11 = v12X8 * v12X8 + v12Y8 * v12Y8 + v12Z8 * v12Z8;
-				var t5 = v12X8 * v1X8 + v12Y8 * v1Y8 + v12Z8 * v1Z8;
-				t5 = -t5 / d11;
-				var b6;
-				if(t5 < 0) {
-					var v61 = out;
-					v61.x = v1X8;
-					v61.y = v1Y8;
-					v61.z = v1Z8;
-					b6 = 1;
-				} else if(t5 > 1) {
-					var v62 = out;
-					v62.x = v2X8;
-					v62.y = v2Y8;
-					v62.z = v2Z8;
-					b6 = 2;
-				} else {
-					var p5;
-					var pX5;
-					var pY5;
-					var pZ5;
-					pX5 = v1X8 + v12X8 * t5;
-					pY5 = v1Y8 + v12Y8 * t5;
-					pZ5 = v1Z8 + v12Z8 * t5;
-					var v63 = out;
-					v63.x = pX5;
-					v63.y = pY5;
-					v63.z = pZ5;
-					b6 = 3;
-				}
-				var d13 = out.x * out.x + out.y * out.y + out.z * out.z;
-				if(mind2 < 0 || d13 < mind2) {
-					mini2 = b6 & 1 | (b6 & 2) << 1;
-					mind2 = d13;
-					var v64 = out;
-					minvX2 = v64.x;
-					minvY2 = v64.y;
-					minvZ2 = v64.z;
-				}
-			}
-			var b7;
-			if(mind2 > 0) {
-				var v65 = out;
-				v65.x = minvX2;
-				v65.y = minvY2;
-				v65.z = minvZ2;
-				b7 = mini2;
-			} else {
-				var l1 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
-				if(l1 > 0) {
-					l1 = 1 / Math.sqrt(l1);
-				}
-				nX2 *= l1;
-				nY2 *= l1;
-				nZ2 *= l1;
-				var dn1 = v1X5 * nX2 + v1Y5 * nY2 + v1Z5 * nZ2;
-				var l21 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
-				l21 = dn1 / l21;
-				minvX2 = nX2 * l21;
-				minvY2 = nY2 * l21;
-				minvZ2 = nZ2 * l21;
-				var v66 = out;
-				v66.x = minvX2;
-				v66.y = minvY2;
-				v66.z = minvZ2;
-				b7 = 7;
-			}
-			var d14 = out.x * out.x + out.y * out.y + out.z * out.z;
-			if(mind < 0 || d14 < mind) {
-				mini = b7 & 1 | (b7 & 6) << 1;
-				mind = d14;
-				var v67 = out;
-				minvX = v67.x;
-				minvY = v67.y;
-				minvZ = v67.z;
-			}
-		}
-		if(d142 * sign < 0) {
-			var v116;
-			var v1X9;
-			var v1Y9;
-			var v1Z9;
-			var v215;
-			var v2X9;
-			var v2Y9;
-			var v2Z9;
-			var v313;
-			var v3X3;
-			var v3Y3;
-			var v3Z3;
-			var v129;
-			var v12X9;
-			var v12Y9;
-			var v12Z9;
-			var v233;
-			var v23X3;
-			var v23Y3;
-			var v23Z3;
-			var v314;
-			var v31X2;
-			var v31Y2;
-			var v31Z2;
-			var v68 = vec1;
-			v1X9 = v68.x;
-			v1Y9 = v68.y;
-			v1Z9 = v68.z;
-			var v69 = vec2;
-			v2X9 = v69.x;
-			v2Y9 = v69.y;
-			v2Z9 = v69.z;
-			var v70 = vec4;
-			v3X3 = v70.x;
-			v3Y3 = v70.y;
-			v3Z3 = v70.z;
-			v12X9 = v2X9 - v1X9;
-			v12Y9 = v2Y9 - v1Y9;
-			v12Z9 = v2Z9 - v1Z9;
-			v23X3 = v3X3 - v2X9;
-			v23Y3 = v3Y3 - v2Y9;
-			v23Z3 = v3Z3 - v2Z9;
-			v31X2 = v1X9 - v3X3;
-			v31Y2 = v1Y9 - v3Y3;
-			v31Z2 = v1Z9 - v3Z3;
-			var n3;
-			var nX3;
-			var nY3;
-			var nZ3;
-			nX3 = v12Y9 * v23Z3 - v12Z9 * v23Y3;
-			nY3 = v12Z9 * v23X3 - v12X9 * v23Z3;
-			nZ3 = v12X9 * v23Y3 - v12Y9 * v23X3;
-			var n122;
-			var n12X2;
-			var n12Y2;
-			var n12Z2;
-			var n232;
-			var n23X2;
-			var n23Y2;
-			var n23Z2;
-			var n312;
-			var n31X2;
-			var n31Y2;
-			var n31Z2;
-			n12X2 = v12Y9 * nZ3 - v12Z9 * nY3;
-			n12Y2 = v12Z9 * nX3 - v12X9 * nZ3;
-			n12Z2 = v12X9 * nY3 - v12Y9 * nX3;
-			n23X2 = v23Y3 * nZ3 - v23Z3 * nY3;
-			n23Y2 = v23Z3 * nX3 - v23X3 * nZ3;
-			n23Z2 = v23X3 * nY3 - v23Y3 * nX3;
-			n31X2 = v31Y2 * nZ3 - v31Z2 * nY3;
-			n31Y2 = v31Z2 * nX3 - v31X2 * nZ3;
-			n31Z2 = v31X2 * nY3 - v31Y2 * nX3;
-			var d122 = v1X9 * n12X2 + v1Y9 * n12Y2 + v1Z9 * n12Z2;
-			var d232 = v2X9 * n23X2 + v2Y9 * n23Y2 + v2Z9 * n23Z2;
-			var d312 = v3X3 * n31X2 + v3Y3 * n31Y2 + v3Z3 * n31Z2;
-			var mind3 = -1;
-			var minv3;
-			var minvX3;
-			var minvY3;
-			var minvZ3;
-			var mini3 = 0;
-			minvX3 = 0;
-			minvY3 = 0;
-			minvZ3 = 0;
-			if(d122 < 0) {
-				var v117;
-				var v1X10;
-				var v1Y10;
-				var v1Z10;
-				var v216;
-				var v2X10;
-				var v2Y10;
-				var v2Z10;
-				var v71 = vec1;
-				v1X10 = v71.x;
-				v1Y10 = v71.y;
-				v1Z10 = v71.z;
-				var v72 = vec2;
-				v2X10 = v72.x;
-				v2Y10 = v72.y;
-				v2Z10 = v72.z;
-				var v1210;
-				var v12X10;
-				var v12Y10;
-				var v12Z10;
-				v12X10 = v2X10 - v1X10;
-				v12Y10 = v2Y10 - v1Y10;
-				v12Z10 = v2Z10 - v1Z10;
-				var d15 = v12X10 * v12X10 + v12Y10 * v12Y10 + v12Z10 * v12Z10;
-				var t6 = v12X10 * v1X10 + v12Y10 * v1Y10 + v12Z10 * v1Z10;
-				t6 = -t6 / d15;
-				var b8;
-				if(t6 < 0) {
-					var v73 = out;
-					v73.x = v1X10;
-					v73.y = v1Y10;
-					v73.z = v1Z10;
-					b8 = 1;
-				} else if(t6 > 1) {
-					var v74 = out;
-					v74.x = v2X10;
-					v74.y = v2Y10;
-					v74.z = v2Z10;
-					b8 = 2;
-				} else {
-					var p6;
-					var pX6;
-					var pY6;
-					var pZ6;
-					pX6 = v1X10 + v12X10 * t6;
-					pY6 = v1Y10 + v12Y10 * t6;
-					pZ6 = v1Z10 + v12Z10 * t6;
-					var v75 = out;
-					v75.x = pX6;
-					v75.y = pY6;
-					v75.z = pZ6;
-					b8 = 3;
-				}
-				var d16 = out.x * out.x + out.y * out.y + out.z * out.z;
-				mini3 = b8;
-				mind3 = d16;
-				var v76 = out;
-				minvX3 = v76.x;
-				minvY3 = v76.y;
-				minvZ3 = v76.z;
-			}
-			if(d232 < 0) {
-				var v118;
-				var v1X11;
-				var v1Y11;
-				var v1Z11;
-				var v217;
-				var v2X11;
-				var v2Y11;
-				var v2Z11;
-				var v77 = vec2;
-				v1X11 = v77.x;
-				v1Y11 = v77.y;
-				v1Z11 = v77.z;
-				var v78 = vec4;
-				v2X11 = v78.x;
-				v2Y11 = v78.y;
-				v2Z11 = v78.z;
-				var v1211;
-				var v12X11;
-				var v12Y11;
-				var v12Z11;
-				v12X11 = v2X11 - v1X11;
-				v12Y11 = v2Y11 - v1Y11;
-				v12Z11 = v2Z11 - v1Z11;
-				var d17 = v12X11 * v12X11 + v12Y11 * v12Y11 + v12Z11 * v12Z11;
-				var t7 = v12X11 * v1X11 + v12Y11 * v1Y11 + v12Z11 * v1Z11;
-				t7 = -t7 / d17;
-				var b9;
-				if(t7 < 0) {
-					var v79 = out;
-					v79.x = v1X11;
-					v79.y = v1Y11;
-					v79.z = v1Z11;
-					b9 = 1;
-				} else if(t7 > 1) {
-					var v80 = out;
-					v80.x = v2X11;
-					v80.y = v2Y11;
-					v80.z = v2Z11;
-					b9 = 2;
-				} else {
-					var p7;
-					var pX7;
-					var pY7;
-					var pZ7;
-					pX7 = v1X11 + v12X11 * t7;
-					pY7 = v1Y11 + v12Y11 * t7;
-					pZ7 = v1Z11 + v12Z11 * t7;
-					var v81 = out;
-					v81.x = pX7;
-					v81.y = pY7;
-					v81.z = pZ7;
-					b9 = 3;
-				}
-				var d18 = out.x * out.x + out.y * out.y + out.z * out.z;
-				if(mind3 < 0 || d18 < mind3) {
-					mini3 = b9 << 1;
-					mind3 = d18;
-					var v82 = out;
-					minvX3 = v82.x;
-					minvY3 = v82.y;
-					minvZ3 = v82.z;
-				}
-			}
-			if(d312 < 0) {
-				var v119;
-				var v1X12;
-				var v1Y12;
-				var v1Z12;
-				var v218;
-				var v2X12;
-				var v2Y12;
-				var v2Z12;
-				var v83 = vec1;
-				v1X12 = v83.x;
-				v1Y12 = v83.y;
-				v1Z12 = v83.z;
-				var v84 = vec4;
-				v2X12 = v84.x;
-				v2Y12 = v84.y;
-				v2Z12 = v84.z;
-				var v1212;
-				var v12X12;
-				var v12Y12;
-				var v12Z12;
-				v12X12 = v2X12 - v1X12;
-				v12Y12 = v2Y12 - v1Y12;
-				v12Z12 = v2Z12 - v1Z12;
-				var d19 = v12X12 * v12X12 + v12Y12 * v12Y12 + v12Z12 * v12Z12;
-				var t8 = v12X12 * v1X12 + v12Y12 * v1Y12 + v12Z12 * v1Z12;
-				t8 = -t8 / d19;
-				var b10;
-				if(t8 < 0) {
-					var v85 = out;
-					v85.x = v1X12;
-					v85.y = v1Y12;
-					v85.z = v1Z12;
-					b10 = 1;
-				} else if(t8 > 1) {
-					var v86 = out;
-					v86.x = v2X12;
-					v86.y = v2Y12;
-					v86.z = v2Z12;
-					b10 = 2;
-				} else {
-					var p8;
-					var pX8;
-					var pY8;
-					var pZ8;
-					pX8 = v1X12 + v12X12 * t8;
-					pY8 = v1Y12 + v12Y12 * t8;
-					pZ8 = v1Z12 + v12Z12 * t8;
-					var v87 = out;
-					v87.x = pX8;
-					v87.y = pY8;
-					v87.z = pZ8;
-					b10 = 3;
-				}
-				var d20 = out.x * out.x + out.y * out.y + out.z * out.z;
-				if(mind3 < 0 || d20 < mind3) {
-					mini3 = b10 & 1 | (b10 & 2) << 1;
-					mind3 = d20;
-					var v88 = out;
-					minvX3 = v88.x;
-					minvY3 = v88.y;
-					minvZ3 = v88.z;
-				}
-			}
-			var b11;
-			if(mind3 > 0) {
-				var v89 = out;
-				v89.x = minvX3;
-				v89.y = minvY3;
-				v89.z = minvZ3;
-				b11 = mini3;
-			} else {
-				var l3 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
-				if(l3 > 0) {
-					l3 = 1 / Math.sqrt(l3);
-				}
-				nX3 *= l3;
-				nY3 *= l3;
-				nZ3 *= l3;
-				var dn2 = v1X9 * nX3 + v1Y9 * nY3 + v1Z9 * nZ3;
-				var l22 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
-				l22 = dn2 / l22;
-				minvX3 = nX3 * l22;
-				minvY3 = nY3 * l22;
-				minvZ3 = nZ3 * l22;
-				var v90 = out;
-				v90.x = minvX3;
-				v90.y = minvY3;
-				v90.z = minvZ3;
-				b11 = 7;
-			}
-			var d21 = out.x * out.x + out.y * out.y + out.z * out.z;
-			if(mind < 0 || d21 < mind) {
-				mini = b11 & 3 | (b11 & 4) << 1;
-				mind = d21;
-				var v91 = out;
-				minvX = v91.x;
-				minvY = v91.y;
-				minvZ = v91.z;
-			}
-		}
-		if(d243 * sign < 0) {
-			var v120;
-			var v1X13;
-			var v1Y13;
-			var v1Z13;
-			var v219;
-			var v2X13;
-			var v2Y13;
-			var v2Z13;
-			var v315;
-			var v3X4;
-			var v3Y4;
-			var v3Z4;
-			var v1213;
-			var v12X13;
-			var v12Y13;
-			var v12Z13;
-			var v234;
-			var v23X4;
-			var v23Y4;
-			var v23Z4;
-			var v316;
-			var v31X3;
-			var v31Y3;
-			var v31Z3;
-			var v92 = vec2;
-			v1X13 = v92.x;
-			v1Y13 = v92.y;
-			v1Z13 = v92.z;
-			var v93 = vec3;
-			v2X13 = v93.x;
-			v2Y13 = v93.y;
-			v2Z13 = v93.z;
-			var v94 = vec4;
-			v3X4 = v94.x;
-			v3Y4 = v94.y;
-			v3Z4 = v94.z;
-			v12X13 = v2X13 - v1X13;
-			v12Y13 = v2Y13 - v1Y13;
-			v12Z13 = v2Z13 - v1Z13;
-			v23X4 = v3X4 - v2X13;
-			v23Y4 = v3Y4 - v2Y13;
-			v23Z4 = v3Z4 - v2Z13;
-			v31X3 = v1X13 - v3X4;
-			v31Y3 = v1Y13 - v3Y4;
-			v31Z3 = v1Z13 - v3Z4;
-			var n4;
-			var nX4;
-			var nY4;
-			var nZ4;
-			nX4 = v12Y13 * v23Z4 - v12Z13 * v23Y4;
-			nY4 = v12Z13 * v23X4 - v12X13 * v23Z4;
-			nZ4 = v12X13 * v23Y4 - v12Y13 * v23X4;
-			var n124;
-			var n12X3;
-			var n12Y3;
-			var n12Z3;
-			var n233;
-			var n23X3;
-			var n23Y3;
-			var n23Z3;
-			var n313;
-			var n31X3;
-			var n31Y3;
-			var n31Z3;
-			n12X3 = v12Y13 * nZ4 - v12Z13 * nY4;
-			n12Y3 = v12Z13 * nX4 - v12X13 * nZ4;
-			n12Z3 = v12X13 * nY4 - v12Y13 * nX4;
-			n23X3 = v23Y4 * nZ4 - v23Z4 * nY4;
-			n23Y3 = v23Z4 * nX4 - v23X4 * nZ4;
-			n23Z3 = v23X4 * nY4 - v23Y4 * nX4;
-			n31X3 = v31Y3 * nZ4 - v31Z3 * nY4;
-			n31Y3 = v31Z3 * nX4 - v31X3 * nZ4;
-			n31Z3 = v31X3 * nY4 - v31Y3 * nX4;
-			var d124 = v1X13 * n12X3 + v1Y13 * n12Y3 + v1Z13 * n12Z3;
-			var d233 = v2X13 * n23X3 + v2Y13 * n23Y3 + v2Z13 * n23Z3;
-			var d313 = v3X4 * n31X3 + v3Y4 * n31Y3 + v3Z4 * n31Z3;
-			var mind4 = -1;
-			var minv4;
-			var minvX4;
-			var minvY4;
-			var minvZ4;
-			var mini4 = 0;
-			minvX4 = 0;
-			minvY4 = 0;
-			minvZ4 = 0;
-			if(d124 < 0) {
-				var v130;
-				var v1X14;
-				var v1Y14;
-				var v1Z14;
-				var v220;
-				var v2X14;
-				var v2Y14;
-				var v2Z14;
-				var v95 = vec2;
-				v1X14 = v95.x;
-				v1Y14 = v95.y;
-				v1Z14 = v95.z;
-				var v96 = vec3;
-				v2X14 = v96.x;
-				v2Y14 = v96.y;
-				v2Z14 = v96.z;
-				var v1214;
-				var v12X14;
-				var v12Y14;
-				var v12Z14;
-				v12X14 = v2X14 - v1X14;
-				v12Y14 = v2Y14 - v1Y14;
-				v12Z14 = v2Z14 - v1Z14;
-				var d22 = v12X14 * v12X14 + v12Y14 * v12Y14 + v12Z14 * v12Z14;
-				var t9 = v12X14 * v1X14 + v12Y14 * v1Y14 + v12Z14 * v1Z14;
-				t9 = -t9 / d22;
-				var b12;
-				if(t9 < 0) {
-					var v97 = out;
-					v97.x = v1X14;
-					v97.y = v1Y14;
-					v97.z = v1Z14;
-					b12 = 1;
-				} else if(t9 > 1) {
-					var v98 = out;
-					v98.x = v2X14;
-					v98.y = v2Y14;
-					v98.z = v2Z14;
-					b12 = 2;
-				} else {
-					var p9;
-					var pX9;
-					var pY9;
-					var pZ9;
-					pX9 = v1X14 + v12X14 * t9;
-					pY9 = v1Y14 + v12Y14 * t9;
-					pZ9 = v1Z14 + v12Z14 * t9;
-					var v99 = out;
-					v99.x = pX9;
-					v99.y = pY9;
-					v99.z = pZ9;
-					b12 = 3;
-				}
-				var d24 = out.x * out.x + out.y * out.y + out.z * out.z;
-				mini4 = b12;
-				mind4 = d24;
-				var v100 = out;
-				minvX4 = v100.x;
-				minvY4 = v100.y;
-				minvZ4 = v100.z;
-			}
-			if(d233 < 0) {
-				var v131;
-				var v1X15;
-				var v1Y15;
-				var v1Z15;
-				var v221;
-				var v2X15;
-				var v2Y15;
-				var v2Z15;
-				var v101 = vec3;
-				v1X15 = v101.x;
-				v1Y15 = v101.y;
-				v1Z15 = v101.z;
-				var v102 = vec4;
-				v2X15 = v102.x;
-				v2Y15 = v102.y;
-				v2Z15 = v102.z;
-				var v1215;
-				var v12X15;
-				var v12Y15;
-				var v12Z15;
-				v12X15 = v2X15 - v1X15;
-				v12Y15 = v2Y15 - v1Y15;
-				v12Z15 = v2Z15 - v1Z15;
-				var d25 = v12X15 * v12X15 + v12Y15 * v12Y15 + v12Z15 * v12Z15;
-				var t10 = v12X15 * v1X15 + v12Y15 * v1Y15 + v12Z15 * v1Z15;
-				t10 = -t10 / d25;
-				var b13;
-				if(t10 < 0) {
-					var v103 = out;
-					v103.x = v1X15;
-					v103.y = v1Y15;
-					v103.z = v1Z15;
-					b13 = 1;
-				} else if(t10 > 1) {
-					var v104 = out;
-					v104.x = v2X15;
-					v104.y = v2Y15;
-					v104.z = v2Z15;
-					b13 = 2;
-				} else {
-					var p10;
-					var pX10;
-					var pY10;
-					var pZ10;
-					pX10 = v1X15 + v12X15 * t10;
-					pY10 = v1Y15 + v12Y15 * t10;
-					pZ10 = v1Z15 + v12Z15 * t10;
-					var v105 = out;
-					v105.x = pX10;
-					v105.y = pY10;
-					v105.z = pZ10;
-					b13 = 3;
-				}
-				var d26 = out.x * out.x + out.y * out.y + out.z * out.z;
-				if(mind4 < 0 || d26 < mind4) {
-					mini4 = b13 << 1;
-					mind4 = d26;
-					var v106 = out;
-					minvX4 = v106.x;
-					minvY4 = v106.y;
-					minvZ4 = v106.z;
-				}
-			}
-			if(d313 < 0) {
-				var v132;
-				var v1X16;
-				var v1Y16;
-				var v1Z16;
-				var v222;
-				var v2X16;
-				var v2Y16;
-				var v2Z16;
-				var v107 = vec2;
-				v1X16 = v107.x;
-				v1Y16 = v107.y;
-				v1Z16 = v107.z;
-				var v108 = vec4;
-				v2X16 = v108.x;
-				v2Y16 = v108.y;
-				v2Z16 = v108.z;
-				var v1216;
-				var v12X16;
-				var v12Y16;
-				var v12Z16;
-				v12X16 = v2X16 - v1X16;
-				v12Y16 = v2Y16 - v1Y16;
-				v12Z16 = v2Z16 - v1Z16;
-				var d27 = v12X16 * v12X16 + v12Y16 * v12Y16 + v12Z16 * v12Z16;
-				var t11 = v12X16 * v1X16 + v12Y16 * v1Y16 + v12Z16 * v1Z16;
-				t11 = -t11 / d27;
-				var b14;
-				if(t11 < 0) {
-					var v109 = out;
-					v109.x = v1X16;
-					v109.y = v1Y16;
-					v109.z = v1Z16;
-					b14 = 1;
-				} else if(t11 > 1) {
-					var v133 = out;
-					v133.x = v2X16;
-					v133.y = v2Y16;
-					v133.z = v2Z16;
-					b14 = 2;
-				} else {
-					var p11;
-					var pX11;
-					var pY11;
-					var pZ11;
-					pX11 = v1X16 + v12X16 * t11;
-					pY11 = v1Y16 + v12Y16 * t11;
-					pZ11 = v1Z16 + v12Z16 * t11;
-					var v134 = out;
-					v134.x = pX11;
-					v134.y = pY11;
-					v134.z = pZ11;
-					b14 = 3;
-				}
-				var d28 = out.x * out.x + out.y * out.y + out.z * out.z;
-				if(mind4 < 0 || d28 < mind4) {
-					mini4 = b14 & 1 | (b14 & 2) << 1;
-					mind4 = d28;
-					var v135 = out;
-					minvX4 = v135.x;
-					minvY4 = v135.y;
-					minvZ4 = v135.z;
-				}
-			}
-			var b15;
-			if(mind4 > 0) {
-				var v136 = out;
-				v136.x = minvX4;
-				v136.y = minvY4;
-				v136.z = minvZ4;
-				b15 = mini4;
-			} else {
-				var l4 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
-				if(l4 > 0) {
-					l4 = 1 / Math.sqrt(l4);
-				}
-				nX4 *= l4;
-				nY4 *= l4;
-				nZ4 *= l4;
-				var dn3 = v1X13 * nX4 + v1Y13 * nY4 + v1Z13 * nZ4;
-				var l23 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
-				l23 = dn3 / l23;
-				minvX4 = nX4 * l23;
-				minvY4 = nY4 * l23;
-				minvZ4 = nZ4 * l23;
-				var v137 = out;
-				v137.x = minvX4;
-				v137.y = minvY4;
-				v137.z = minvZ4;
-				b15 = 7;
-			}
-			var d29 = out.x * out.x + out.y * out.y + out.z * out.z;
-			if(mind < 0 || d29 < mind) {
-				mini = b15 << 1;
-				mind = d29;
-				var v138 = out;
-				minvX = v138.x;
-				minvY = v138.y;
-				minvZ = v138.z;
-			}
-		}
-		if(mind > 0) {
-			var v139 = out;
-			v139.x = minvX;
-			v139.y = minvY;
-			v139.z = minvZ;
-			return mini;
-		}
-		out.zero();
-		return 15;
-	}
-}
-oimo.common.Mat3 = class oimo_common_Mat3 {
-	constructor(e00,e01,e02,e10,e11,e12,e20,e21,e22) {
-		if(e22 == null) {
-			e22 = 1;
-		}
-		if(e21 == null) {
-			e21 = 0;
-		}
-		if(e20 == null) {
-			e20 = 0;
-		}
-		if(e12 == null) {
-			e12 = 0;
-		}
-		if(e11 == null) {
-			e11 = 1;
-		}
-		if(e10 == null) {
-			e10 = 0;
-		}
-		if(e02 == null) {
-			e02 = 0;
-		}
-		if(e01 == null) {
-			e01 = 0;
-		}
-		if(e00 == null) {
-			e00 = 1;
-		}
-		this.e00 = e00;
-		this.e01 = e01;
-		this.e02 = e02;
-		this.e10 = e10;
-		this.e11 = e11;
-		this.e12 = e12;
-		this.e20 = e20;
-		this.e21 = e21;
-		this.e22 = e22;
-		oimo.common.Mat3.numCreations++;
-	}
-	init(e00,e01,e02,e10,e11,e12,e20,e21,e22) {
-		this.e00 = e00;
-		this.e01 = e01;
-		this.e02 = e02;
-		this.e10 = e10;
-		this.e11 = e11;
-		this.e12 = e12;
-		this.e20 = e20;
-		this.e21 = e21;
-		this.e22 = e22;
-		return this;
-	}
-	identity() {
-		var t00 = 1;
-		var t01 = 0;
-		var t02 = 0;
-		var t10 = 0;
-		var t11 = 1;
-		var t12 = 0;
-		var t20 = 0;
-		var t21 = 0;
-		var t22 = 1;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	add(m) {
-		return new oimo.common.Mat3(this.e00 + m.e00,this.e01 + m.e01,this.e02 + m.e02,this.e10 + m.e10,this.e11 + m.e11,this.e12 + m.e12,this.e20 + m.e20,this.e21 + m.e21,this.e22 + m.e22);
-	}
-	sub(m) {
-		return new oimo.common.Mat3(this.e00 - m.e00,this.e01 - m.e01,this.e02 - m.e02,this.e10 - m.e10,this.e11 - m.e11,this.e12 - m.e12,this.e20 - m.e20,this.e21 - m.e21,this.e22 - m.e22);
-	}
-	scale(s) {
-		return new oimo.common.Mat3(this.e00 * s,this.e01 * s,this.e02 * s,this.e10 * s,this.e11 * s,this.e12 * s,this.e20 * s,this.e21 * s,this.e22 * s);
-	}
-	mul(m) {
-		return new oimo.common.Mat3(this.e00 * m.e00 + this.e01 * m.e10 + this.e02 * m.e20,this.e00 * m.e01 + this.e01 * m.e11 + this.e02 * m.e21,this.e00 * m.e02 + this.e01 * m.e12 + this.e02 * m.e22,this.e10 * m.e00 + this.e11 * m.e10 + this.e12 * m.e20,this.e10 * m.e01 + this.e11 * m.e11 + this.e12 * m.e21,this.e10 * m.e02 + this.e11 * m.e12 + this.e12 * m.e22,this.e20 * m.e00 + this.e21 * m.e10 + this.e22 * m.e20,this.e20 * m.e01 + this.e21 * m.e11 + this.e22 * m.e21,this.e20 * m.e02 + this.e21 * m.e12 + this.e22 * m.e22);
-	}
-	addEq(m) {
-		var t00 = this.e00 + m.e00;
-		var t01 = this.e01 + m.e01;
-		var t02 = this.e02 + m.e02;
-		var t10 = this.e10 + m.e10;
-		var t11 = this.e11 + m.e11;
-		var t12 = this.e12 + m.e12;
-		var t20 = this.e20 + m.e20;
-		var t21 = this.e21 + m.e21;
-		var t22 = this.e22 + m.e22;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	subEq(m) {
-		var t00 = this.e00 - m.e00;
-		var t01 = this.e01 - m.e01;
-		var t02 = this.e02 - m.e02;
-		var t10 = this.e10 - m.e10;
-		var t11 = this.e11 - m.e11;
-		var t12 = this.e12 - m.e12;
-		var t20 = this.e20 - m.e20;
-		var t21 = this.e21 - m.e21;
-		var t22 = this.e22 - m.e22;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	scaleEq(s) {
-		var t00 = this.e00 * s;
-		var t01 = this.e01 * s;
-		var t02 = this.e02 * s;
-		var t10 = this.e10 * s;
-		var t11 = this.e11 * s;
-		var t12 = this.e12 * s;
-		var t20 = this.e20 * s;
-		var t21 = this.e21 * s;
-		var t22 = this.e22 * s;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	mulEq(m) {
-		var t00 = this.e00 * m.e00 + this.e01 * m.e10 + this.e02 * m.e20;
-		var t01 = this.e00 * m.e01 + this.e01 * m.e11 + this.e02 * m.e21;
-		var t02 = this.e00 * m.e02 + this.e01 * m.e12 + this.e02 * m.e22;
-		var t10 = this.e10 * m.e00 + this.e11 * m.e10 + this.e12 * m.e20;
-		var t11 = this.e10 * m.e01 + this.e11 * m.e11 + this.e12 * m.e21;
-		var t12 = this.e10 * m.e02 + this.e11 * m.e12 + this.e12 * m.e22;
-		var t20 = this.e20 * m.e00 + this.e21 * m.e10 + this.e22 * m.e20;
-		var t21 = this.e20 * m.e01 + this.e21 * m.e11 + this.e22 * m.e21;
-		var t22 = this.e20 * m.e02 + this.e21 * m.e12 + this.e22 * m.e22;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	prependScale(sx,sy,sz) {
-		return new oimo.common.Mat3(this.e00 * sx,this.e01 * sx,this.e02 * sx,this.e10 * sy,this.e11 * sy,this.e12 * sy,this.e20 * sz,this.e21 * sz,this.e22 * sz);
-	}
-	appendScale(sx,sy,sz) {
-		return new oimo.common.Mat3(this.e00 * sx,this.e01 * sy,this.e02 * sz,this.e10 * sx,this.e11 * sy,this.e12 * sz,this.e20 * sx,this.e21 * sy,this.e22 * sz);
-	}
-	prependRotation(rad,axisX,axisY,axisZ) {
-		var s = Math.sin(rad);
-		var c = Math.cos(rad);
-		var c1 = 1 - c;
-		var r00 = axisX * axisX * c1 + c;
-		var r01 = axisX * axisY * c1 - axisZ * s;
-		var r02 = axisX * axisZ * c1 + axisY * s;
-		var r10 = axisY * axisX * c1 + axisZ * s;
-		var r11 = axisY * axisY * c1 + c;
-		var r12 = axisY * axisZ * c1 - axisX * s;
-		var r20 = axisZ * axisX * c1 - axisY * s;
-		var r21 = axisZ * axisY * c1 + axisX * s;
-		var r22 = axisZ * axisZ * c1 + c;
-		return new oimo.common.Mat3(r00 * this.e00 + r01 * this.e10 + r02 * this.e20,r00 * this.e01 + r01 * this.e11 + r02 * this.e21,r00 * this.e02 + r01 * this.e12 + r02 * this.e22,r10 * this.e00 + r11 * this.e10 + r12 * this.e20,r10 * this.e01 + r11 * this.e11 + r12 * this.e21,r10 * this.e02 + r11 * this.e12 + r12 * this.e22,r20 * this.e00 + r21 * this.e10 + r22 * this.e20,r20 * this.e01 + r21 * this.e11 + r22 * this.e21,r20 * this.e02 + r21 * this.e12 + r22 * this.e22);
-	}
-	appendRotation(rad,axisX,axisY,axisZ) {
-		var s = Math.sin(rad);
-		var c = Math.cos(rad);
-		var c1 = 1 - c;
-		var r00 = axisX * axisX * c1 + c;
-		var r01 = axisX * axisY * c1 - axisZ * s;
-		var r02 = axisX * axisZ * c1 + axisY * s;
-		var r10 = axisY * axisX * c1 + axisZ * s;
-		var r11 = axisY * axisY * c1 + c;
-		var r12 = axisY * axisZ * c1 - axisX * s;
-		var r20 = axisZ * axisX * c1 - axisY * s;
-		var r21 = axisZ * axisY * c1 + axisX * s;
-		var r22 = axisZ * axisZ * c1 + c;
-		return new oimo.common.Mat3(this.e00 * r00 + this.e01 * r10 + this.e02 * r20,this.e00 * r01 + this.e01 * r11 + this.e02 * r21,this.e00 * r02 + this.e01 * r12 + this.e02 * r22,this.e10 * r00 + this.e11 * r10 + this.e12 * r20,this.e10 * r01 + this.e11 * r11 + this.e12 * r21,this.e10 * r02 + this.e11 * r12 + this.e12 * r22,this.e20 * r00 + this.e21 * r10 + this.e22 * r20,this.e20 * r01 + this.e21 * r11 + this.e22 * r21,this.e20 * r02 + this.e21 * r12 + this.e22 * r22);
-	}
-	prependScaleEq(sx,sy,sz) {
-		var t00 = this.e00 * sx;
-		var t01 = this.e01 * sx;
-		var t02 = this.e02 * sx;
-		var t10 = this.e10 * sy;
-		var t11 = this.e11 * sy;
-		var t12 = this.e12 * sy;
-		var t20 = this.e20 * sz;
-		var t21 = this.e21 * sz;
-		var t22 = this.e22 * sz;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	appendScaleEq(sx,sy,sz) {
-		var t00 = this.e00 * sx;
-		var t01 = this.e01 * sy;
-		var t02 = this.e02 * sz;
-		var t10 = this.e10 * sx;
-		var t11 = this.e11 * sy;
-		var t12 = this.e12 * sz;
-		var t20 = this.e20 * sx;
-		var t21 = this.e21 * sy;
-		var t22 = this.e22 * sz;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	prependRotationEq(rad,axisX,axisY,axisZ) {
-		var s = Math.sin(rad);
-		var c = Math.cos(rad);
-		var c1 = 1 - c;
-		var r00 = axisX * axisX * c1 + c;
-		var r01 = axisX * axisY * c1 - axisZ * s;
-		var r02 = axisX * axisZ * c1 + axisY * s;
-		var r10 = axisY * axisX * c1 + axisZ * s;
-		var r11 = axisY * axisY * c1 + c;
-		var r12 = axisY * axisZ * c1 - axisX * s;
-		var r20 = axisZ * axisX * c1 - axisY * s;
-		var r21 = axisZ * axisY * c1 + axisX * s;
-		var r22 = axisZ * axisZ * c1 + c;
-		var t00 = r00 * this.e00 + r01 * this.e10 + r02 * this.e20;
-		var t01 = r00 * this.e01 + r01 * this.e11 + r02 * this.e21;
-		var t02 = r00 * this.e02 + r01 * this.e12 + r02 * this.e22;
-		var t10 = r10 * this.e00 + r11 * this.e10 + r12 * this.e20;
-		var t11 = r10 * this.e01 + r11 * this.e11 + r12 * this.e21;
-		var t12 = r10 * this.e02 + r11 * this.e12 + r12 * this.e22;
-		var t20 = r20 * this.e00 + r21 * this.e10 + r22 * this.e20;
-		var t21 = r20 * this.e01 + r21 * this.e11 + r22 * this.e21;
-		var t22 = r20 * this.e02 + r21 * this.e12 + r22 * this.e22;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	appendRotationEq(rad,axisX,axisY,axisZ) {
-		var s = Math.sin(rad);
-		var c = Math.cos(rad);
-		var c1 = 1 - c;
-		var r00 = axisX * axisX * c1 + c;
-		var r01 = axisX * axisY * c1 - axisZ * s;
-		var r02 = axisX * axisZ * c1 + axisY * s;
-		var r10 = axisY * axisX * c1 + axisZ * s;
-		var r11 = axisY * axisY * c1 + c;
-		var r12 = axisY * axisZ * c1 - axisX * s;
-		var r20 = axisZ * axisX * c1 - axisY * s;
-		var r21 = axisZ * axisY * c1 + axisX * s;
-		var r22 = axisZ * axisZ * c1 + c;
-		var t00 = this.e00 * r00 + this.e01 * r10 + this.e02 * r20;
-		var t01 = this.e00 * r01 + this.e01 * r11 + this.e02 * r21;
-		var t02 = this.e00 * r02 + this.e01 * r12 + this.e02 * r22;
-		var t10 = this.e10 * r00 + this.e11 * r10 + this.e12 * r20;
-		var t11 = this.e10 * r01 + this.e11 * r11 + this.e12 * r21;
-		var t12 = this.e10 * r02 + this.e11 * r12 + this.e12 * r22;
-		var t20 = this.e20 * r00 + this.e21 * r10 + this.e22 * r20;
-		var t21 = this.e20 * r01 + this.e21 * r11 + this.e22 * r21;
-		var t22 = this.e20 * r02 + this.e21 * r12 + this.e22 * r22;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	transpose() {
-		return new oimo.common.Mat3(this.e00,this.e10,this.e20,this.e01,this.e11,this.e21,this.e02,this.e12,this.e22);
-	}
-	transposeEq() {
-		var t00 = this.e00;
-		var t01 = this.e10;
-		var t02 = this.e20;
-		var t10 = this.e01;
-		var t11 = this.e11;
-		var t12 = this.e21;
-		var t20 = this.e02;
-		var t21 = this.e12;
-		var t22 = this.e22;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	determinant() {
-		return this.e00 * (this.e11 * this.e22 - this.e12 * this.e21) - this.e01 * (this.e10 * this.e22 - this.e12 * this.e20) + this.e02 * (this.e10 * this.e21 - this.e11 * this.e20);
-	}
-	trace() {
-		return this.e00 + this.e11 + this.e22;
-	}
-	inverse() {
-		var d00 = this.e11 * this.e22 - this.e12 * this.e21;
-		var d01 = this.e10 * this.e22 - this.e12 * this.e20;
-		var d02 = this.e10 * this.e21 - this.e11 * this.e20;
-		var d10 = this.e01 * this.e22 - this.e02 * this.e21;
-		var d11 = this.e00 * this.e22 - this.e02 * this.e20;
-		var d12 = this.e00 * this.e21 - this.e01 * this.e20;
-		var d20 = this.e01 * this.e12 - this.e02 * this.e11;
-		var d21 = this.e00 * this.e12 - this.e02 * this.e10;
-		var d22 = this.e00 * this.e11 - this.e01 * this.e10;
-		var invDet = this.e00 * d00 - this.e01 * d01 + this.e02 * d02;
-		if(invDet != 0) {
-			invDet = 1 / invDet;
-		}
-		return new oimo.common.Mat3(d00 * invDet,-d10 * invDet,d20 * invDet,-d01 * invDet,d11 * invDet,-d21 * invDet,d02 * invDet,-d12 * invDet,d22 * invDet);
-	}
-	inverseEq() {
-		var d00 = this.e11 * this.e22 - this.e12 * this.e21;
-		var d01 = this.e10 * this.e22 - this.e12 * this.e20;
-		var d02 = this.e10 * this.e21 - this.e11 * this.e20;
-		var d10 = this.e01 * this.e22 - this.e02 * this.e21;
-		var d11 = this.e00 * this.e22 - this.e02 * this.e20;
-		var d12 = this.e00 * this.e21 - this.e01 * this.e20;
-		var d20 = this.e01 * this.e12 - this.e02 * this.e11;
-		var d21 = this.e00 * this.e12 - this.e02 * this.e10;
-		var d22 = this.e00 * this.e11 - this.e01 * this.e10;
-		var invDet = this.e00 * d00 - this.e01 * d01 + this.e02 * d02;
-		if(invDet != 0) {
-			invDet = 1 / invDet;
-		}
-		var t00 = d00 * invDet;
-		var t01 = -d10 * invDet;
-		var t02 = d20 * invDet;
-		var t10 = -d01 * invDet;
-		var t11 = d11 * invDet;
-		var t12 = -d21 * invDet;
-		var t20 = d02 * invDet;
-		var t21 = -d12 * invDet;
-		var t22 = d22 * invDet;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	toArray(columnMajor) {
-		if(columnMajor == null) {
-			columnMajor = false;
-		}
-		if(columnMajor) {
-			return [this.e00,this.e10,this.e20,this.e01,this.e11,this.e21,this.e02,this.e12,this.e22];
-		} else {
-			return [this.e00,this.e01,this.e02,this.e10,this.e11,this.e12,this.e20,this.e21,this.e22];
-		}
-	}
-	copyFrom(m) {
-		this.e00 = m.e00;
-		this.e01 = m.e01;
-		this.e02 = m.e02;
-		this.e10 = m.e10;
-		this.e11 = m.e11;
-		this.e12 = m.e12;
-		this.e20 = m.e20;
-		this.e21 = m.e21;
-		this.e22 = m.e22;
-		return this;
-	}
-	clone() {
-		return new oimo.common.Mat3(this.e00,this.e01,this.e02,this.e10,this.e11,this.e12,this.e20,this.e21,this.e22);
-	}
-	fromQuat(q) {
-		var x = q.x;
-		var y = q.y;
-		var z = q.z;
-		var w = q.w;
-		var x2 = 2 * x;
-		var y2 = 2 * y;
-		var z2 = 2 * z;
-		var xx = x * x2;
-		var yy = y * y2;
-		var zz = z * z2;
-		var xy = x * y2;
-		var yz = y * z2;
-		var xz = x * z2;
-		var wx = w * x2;
-		var wy = w * y2;
-		var wz = w * z2;
-		this.e00 = 1 - yy - zz;
-		this.e01 = xy - wz;
-		this.e02 = xz + wy;
-		this.e10 = xy + wz;
-		this.e11 = 1 - xx - zz;
-		this.e12 = yz - wx;
-		this.e20 = xz - wy;
-		this.e21 = yz + wx;
-		this.e22 = 1 - xx - yy;
-		return this;
-	}
-	toQuat() {
-		var _this = new oimo.common.Quat();
-		var e00 = this.e00;
-		var e11 = this.e11;
-		var e22 = this.e22;
-		var t = e00 + e11 + e22;
-		var s;
-		if(t > 0) {
-			s = Math.sqrt(t + 1);
-			_this.w = 0.5 * s;
-			s = 0.5 / s;
-			_this.x = (this.e21 - this.e12) * s;
-			_this.y = (this.e02 - this.e20) * s;
-			_this.z = (this.e10 - this.e01) * s;
-		} else if(e00 > e11) {
-			if(e00 > e22) {
-				s = Math.sqrt(e00 - e11 - e22 + 1);
-				_this.x = 0.5 * s;
-				s = 0.5 / s;
-				_this.y = (this.e01 + this.e10) * s;
-				_this.z = (this.e02 + this.e20) * s;
-				_this.w = (this.e21 - this.e12) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				_this.z = 0.5 * s;
-				s = 0.5 / s;
-				_this.x = (this.e02 + this.e20) * s;
-				_this.y = (this.e12 + this.e21) * s;
-				_this.w = (this.e10 - this.e01) * s;
-			}
-		} else if(e11 > e22) {
-			s = Math.sqrt(e11 - e22 - e00 + 1);
-			_this.y = 0.5 * s;
-			s = 0.5 / s;
-			_this.x = (this.e01 + this.e10) * s;
-			_this.z = (this.e12 + this.e21) * s;
-			_this.w = (this.e02 - this.e20) * s;
-		} else {
-			s = Math.sqrt(e22 - e00 - e11 + 1);
-			_this.z = 0.5 * s;
-			s = 0.5 / s;
-			_this.x = (this.e02 + this.e20) * s;
-			_this.y = (this.e12 + this.e21) * s;
-			_this.w = (this.e10 - this.e01) * s;
-		}
-		return _this;
-	}
-	fromEulerXyz(eulerAngles) {
-		var sx = Math.sin(eulerAngles.x);
-		var sy = Math.sin(eulerAngles.y);
-		var sz = Math.sin(eulerAngles.z);
-		var cx = Math.cos(eulerAngles.x);
-		var cy = Math.cos(eulerAngles.y);
-		var cz = Math.cos(eulerAngles.z);
-		var t00 = cy * cz;
-		var t01 = -cy * sz;
-		var t02 = sy;
-		var t10 = cx * sz + cz * sx * sy;
-		var t11 = cx * cz - sx * sy * sz;
-		var t12 = -cy * sx;
-		var t20 = sx * sz - cx * cz * sy;
-		var t21 = cz * sx + cx * sy * sz;
-		var t22 = cx * cy;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	toEulerXyz() {
-		var sy = this.e02;
-		if(sy <= -1) {
-			var xSubZ = Math.atan2(this.e21,this.e11);
-			return new oimo.common.Vec3(xSubZ * 0.5,-1.570796326794895,-xSubZ * 0.5);
-		}
-		if(sy >= 1) {
-			var xAddZ = Math.atan2(this.e21,this.e11);
-			return new oimo.common.Vec3(xAddZ * 0.5,1.570796326794895,xAddZ * 0.5);
-		}
-		var y = Math.asin(sy);
-		var x = Math.atan2(-this.e12,this.e22);
-		var z = Math.atan2(-this.e01,this.e00);
-		return new oimo.common.Vec3(x,y,z);
-	}
-	getRow(index) {
-		if(index == 0) {
-			return new oimo.common.Vec3(this.e00,this.e01,this.e02);
-		} else if(index == 1) {
-			return new oimo.common.Vec3(this.e10,this.e11,this.e12);
-		} else if(index == 2) {
-			return new oimo.common.Vec3(this.e20,this.e21,this.e22);
-		} else {
-			return null;
-		}
-	}
-	getCol(index) {
-		if(index == 0) {
-			return new oimo.common.Vec3(this.e00,this.e10,this.e20);
-		} else if(index == 1) {
-			return new oimo.common.Vec3(this.e01,this.e11,this.e21);
-		} else if(index == 2) {
-			return new oimo.common.Vec3(this.e02,this.e12,this.e22);
-		} else {
-			return null;
-		}
-	}
-	getRowTo(index,dst) {
-		if(index == 0) {
-			dst.init(this.e00,this.e01,this.e02);
-		} else if(index == 1) {
-			dst.init(this.e10,this.e11,this.e12);
-		} else if(index == 2) {
-			dst.init(this.e20,this.e21,this.e22);
-		} else {
-			dst.zero();
-		}
-	}
-	getColTo(index,dst) {
-		if(index == 0) {
-			dst.init(this.e00,this.e10,this.e20);
-		} else if(index == 1) {
-			dst.init(this.e01,this.e11,this.e21);
-		} else if(index == 2) {
-			dst.init(this.e02,this.e12,this.e22);
-		} else {
-			dst.zero();
-		}
-	}
-	fromRows(row0,row1,row2) {
-		var t00 = row0.x;
-		var t01 = row0.y;
-		var t02 = row0.z;
-		var t10 = row1.x;
-		var t11 = row1.y;
-		var t12 = row1.z;
-		var t20 = row2.x;
-		var t21 = row2.y;
-		var t22 = row2.z;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	fromCols(col0,col1,col2) {
-		var t00 = col0.x;
-		var t01 = col1.x;
-		var t02 = col2.x;
-		var t10 = col0.y;
-		var t11 = col1.y;
-		var t12 = col2.y;
-		var t20 = col0.z;
-		var t21 = col1.z;
-		var t22 = col2.z;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		return this;
-	}
-	toString() {
-		return "Mat3[" + (this.e00 > 0 ? (this.e00 * 10000000 + 0.5 | 0) / 10000000 : (this.e00 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e01 > 0 ? (this.e01 * 10000000 + 0.5 | 0) / 10000000 : (this.e01 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e02 > 0 ? (this.e02 * 10000000 + 0.5 | 0) / 10000000 : (this.e02 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + "     " + (this.e10 > 0 ? (this.e10 * 10000000 + 0.5 | 0) / 10000000 : (this.e10 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e11 > 0 ? (this.e11 * 10000000 + 0.5 | 0) / 10000000 : (this.e11 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e12 > 0 ? (this.e12 * 10000000 + 0.5 | 0) / 10000000 : (this.e12 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + "     " + (this.e20 > 0 ? (this.e20 * 10000000 + 0.5 | 0) / 10000000 : (this.e20 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e21 > 0 ? (this.e21 * 10000000 + 0.5 | 0) / 10000000 : (this.e21 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e22 > 0 ? (this.e22 * 10000000 + 0.5 | 0) / 10000000 : (this.e22 * 10000000 - 0.5 | 0) / 10000000) + "]";
-	}
-}
-oimo.common.Mat4 = class oimo_common_Mat4 {
-	constructor(e00,e01,e02,e03,e10,e11,e12,e13,e20,e21,e22,e23,e30,e31,e32,e33) {
-		if(e33 == null) {
-			e33 = 1;
-		}
-		if(e32 == null) {
-			e32 = 0;
-		}
-		if(e31 == null) {
-			e31 = 0;
-		}
-		if(e30 == null) {
-			e30 = 0;
-		}
-		if(e23 == null) {
-			e23 = 0;
-		}
-		if(e22 == null) {
-			e22 = 1;
-		}
-		if(e21 == null) {
-			e21 = 0;
-		}
-		if(e20 == null) {
-			e20 = 0;
-		}
-		if(e13 == null) {
-			e13 = 0;
-		}
-		if(e12 == null) {
-			e12 = 0;
-		}
-		if(e11 == null) {
-			e11 = 1;
-		}
-		if(e10 == null) {
-			e10 = 0;
-		}
-		if(e03 == null) {
-			e03 = 0;
-		}
-		if(e02 == null) {
-			e02 = 0;
-		}
-		if(e01 == null) {
-			e01 = 0;
-		}
-		if(e00 == null) {
-			e00 = 1;
-		}
-		this.e00 = e00;
-		this.e01 = e01;
-		this.e02 = e02;
-		this.e03 = e03;
-		this.e10 = e10;
-		this.e11 = e11;
-		this.e12 = e12;
-		this.e13 = e13;
-		this.e20 = e20;
-		this.e21 = e21;
-		this.e22 = e22;
-		this.e23 = e23;
-		this.e30 = e30;
-		this.e31 = e31;
-		this.e32 = e32;
-		this.e33 = e33;
-		oimo.common.Mat4.numCreations++;
-	}
-	init(e00,e01,e02,e03,e10,e11,e12,e13,e20,e21,e22,e23,e30,e31,e32,e33) {
-		this.e00 = e00;
-		this.e01 = e01;
-		this.e02 = e02;
-		this.e03 = e03;
-		this.e10 = e10;
-		this.e11 = e11;
-		this.e12 = e12;
-		this.e13 = e13;
-		this.e20 = e20;
-		this.e21 = e21;
-		this.e22 = e22;
-		this.e23 = e23;
-		this.e30 = e30;
-		this.e31 = e31;
-		this.e32 = e32;
-		this.e33 = e33;
-		return this;
-	}
-	identity() {
-		var t00 = 1;
-		var t01 = 0;
-		var t02 = 0;
-		var t03 = 0;
-		var t10 = 0;
-		var t11 = 1;
-		var t12 = 0;
-		var t13 = 0;
-		var t20 = 0;
-		var t21 = 0;
-		var t22 = 1;
-		var t23 = 0;
-		var t30 = 0;
-		var t31 = 0;
-		var t32 = 0;
-		var t33 = 1;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	add(m) {
-		return new oimo.common.Mat4(this.e00 + m.e00,this.e01 + m.e01,this.e02 + m.e02,this.e03 + m.e03,this.e10 + m.e10,this.e11 + m.e11,this.e12 + m.e12,this.e13 + m.e13,this.e20 + m.e20,this.e21 + m.e21,this.e22 + m.e22,this.e23 + m.e23,this.e30 + m.e30,this.e31 + m.e31,this.e32 + m.e32,this.e33 + m.e33);
-	}
-	sub(m) {
-		return new oimo.common.Mat4(this.e00 - m.e00,this.e01 - m.e01,this.e02 - m.e02,this.e03 - m.e03,this.e10 - m.e10,this.e11 - m.e11,this.e12 - m.e12,this.e13 - m.e13,this.e20 - m.e20,this.e21 - m.e21,this.e22 - m.e22,this.e23 - m.e23,this.e30 - m.e30,this.e31 - m.e31,this.e32 - m.e32,this.e33 - m.e33);
-	}
-	scale(s) {
-		return new oimo.common.Mat4(this.e00 * s,this.e01 * s,this.e02 * s,this.e03 * s,this.e10 * s,this.e11 * s,this.e12 * s,this.e13 * s,this.e20 * s,this.e21 * s,this.e22 * s,this.e23 * s,this.e30 * s,this.e31 * s,this.e32 * s,this.e33 * s);
-	}
-	mul(m) {
-		return new oimo.common.Mat4(this.e00 * m.e00 + this.e01 * m.e10 + this.e02 * m.e20 + this.e03 * m.e30,this.e00 * m.e01 + this.e01 * m.e11 + this.e02 * m.e21 + this.e03 * m.e31,this.e00 * m.e02 + this.e01 * m.e12 + this.e02 * m.e22 + this.e03 * m.e32,this.e00 * m.e03 + this.e01 * m.e13 + this.e02 * m.e23 + this.e03 * m.e33,this.e10 * m.e00 + this.e11 * m.e10 + this.e12 * m.e20 + this.e13 * m.e30,this.e10 * m.e01 + this.e11 * m.e11 + this.e12 * m.e21 + this.e13 * m.e31,this.e10 * m.e02 + this.e11 * m.e12 + this.e12 * m.e22 + this.e13 * m.e32,this.e10 * m.e03 + this.e11 * m.e13 + this.e12 * m.e23 + this.e13 * m.e33,this.e20 * m.e00 + this.e21 * m.e10 + this.e22 * m.e20 + this.e23 * m.e30,this.e20 * m.e01 + this.e21 * m.e11 + this.e22 * m.e21 + this.e23 * m.e31,this.e20 * m.e02 + this.e21 * m.e12 + this.e22 * m.e22 + this.e23 * m.e32,this.e20 * m.e03 + this.e21 * m.e13 + this.e22 * m.e23 + this.e23 * m.e33,this.e30 * m.e00 + this.e31 * m.e10 + this.e32 * m.e20 + this.e33 * m.e30,this.e30 * m.e01 + this.e31 * m.e11 + this.e32 * m.e21 + this.e33 * m.e31,this.e30 * m.e02 + this.e31 * m.e12 + this.e32 * m.e22 + this.e33 * m.e32,this.e30 * m.e03 + this.e31 * m.e13 + this.e32 * m.e23 + this.e33 * m.e33);
-	}
-	addEq(m) {
-		var t00 = this.e00 + m.e00;
-		var t01 = this.e01 + m.e01;
-		var t02 = this.e02 + m.e02;
-		var t03 = this.e03 + m.e03;
-		var t10 = this.e10 + m.e10;
-		var t11 = this.e11 + m.e11;
-		var t12 = this.e12 + m.e12;
-		var t13 = this.e13 + m.e13;
-		var t20 = this.e20 + m.e20;
-		var t21 = this.e21 + m.e21;
-		var t22 = this.e22 + m.e22;
-		var t23 = this.e23 + m.e23;
-		var t30 = this.e30 + m.e30;
-		var t31 = this.e31 + m.e31;
-		var t32 = this.e32 + m.e32;
-		var t33 = this.e33 + m.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	subEq(m) {
-		var t00 = this.e00 - m.e00;
-		var t01 = this.e01 - m.e01;
-		var t02 = this.e02 - m.e02;
-		var t03 = this.e03 - m.e03;
-		var t10 = this.e10 - m.e10;
-		var t11 = this.e11 - m.e11;
-		var t12 = this.e12 - m.e12;
-		var t13 = this.e13 - m.e13;
-		var t20 = this.e20 - m.e20;
-		var t21 = this.e21 - m.e21;
-		var t22 = this.e22 - m.e22;
-		var t23 = this.e23 - m.e23;
-		var t30 = this.e30 - m.e30;
-		var t31 = this.e31 - m.e31;
-		var t32 = this.e32 - m.e32;
-		var t33 = this.e33 - m.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	scaleEq(s) {
-		var t00 = this.e00 * s;
-		var t01 = this.e01 * s;
-		var t02 = this.e02 * s;
-		var t03 = this.e03 * s;
-		var t10 = this.e10 * s;
-		var t11 = this.e11 * s;
-		var t12 = this.e12 * s;
-		var t13 = this.e13 * s;
-		var t20 = this.e20 * s;
-		var t21 = this.e21 * s;
-		var t22 = this.e22 * s;
-		var t23 = this.e23 * s;
-		var t30 = this.e30 * s;
-		var t31 = this.e31 * s;
-		var t32 = this.e32 * s;
-		var t33 = this.e33 * s;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	mulEq(m) {
-		var t00 = this.e00 * m.e00 + this.e01 * m.e10 + this.e02 * m.e20 + this.e03 * m.e30;
-		var t01 = this.e00 * m.e01 + this.e01 * m.e11 + this.e02 * m.e21 + this.e03 * m.e31;
-		var t02 = this.e00 * m.e02 + this.e01 * m.e12 + this.e02 * m.e22 + this.e03 * m.e32;
-		var t03 = this.e00 * m.e03 + this.e01 * m.e13 + this.e02 * m.e23 + this.e03 * m.e33;
-		var t10 = this.e10 * m.e00 + this.e11 * m.e10 + this.e12 * m.e20 + this.e13 * m.e30;
-		var t11 = this.e10 * m.e01 + this.e11 * m.e11 + this.e12 * m.e21 + this.e13 * m.e31;
-		var t12 = this.e10 * m.e02 + this.e11 * m.e12 + this.e12 * m.e22 + this.e13 * m.e32;
-		var t13 = this.e10 * m.e03 + this.e11 * m.e13 + this.e12 * m.e23 + this.e13 * m.e33;
-		var t20 = this.e20 * m.e00 + this.e21 * m.e10 + this.e22 * m.e20 + this.e23 * m.e30;
-		var t21 = this.e20 * m.e01 + this.e21 * m.e11 + this.e22 * m.e21 + this.e23 * m.e31;
-		var t22 = this.e20 * m.e02 + this.e21 * m.e12 + this.e22 * m.e22 + this.e23 * m.e32;
-		var t23 = this.e20 * m.e03 + this.e21 * m.e13 + this.e22 * m.e23 + this.e23 * m.e33;
-		var t30 = this.e30 * m.e00 + this.e31 * m.e10 + this.e32 * m.e20 + this.e33 * m.e30;
-		var t31 = this.e30 * m.e01 + this.e31 * m.e11 + this.e32 * m.e21 + this.e33 * m.e31;
-		var t32 = this.e30 * m.e02 + this.e31 * m.e12 + this.e32 * m.e22 + this.e33 * m.e32;
-		var t33 = this.e30 * m.e03 + this.e31 * m.e13 + this.e32 * m.e23 + this.e33 * m.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	prependScale(sx,sy,sz) {
-		return new oimo.common.Mat4(this.e00 * sx,this.e01 * sx,this.e02 * sx,this.e03 * sx,this.e10 * sy,this.e11 * sy,this.e12 * sy,this.e13 * sy,this.e20 * sz,this.e21 * sz,this.e22 * sz,this.e23 * sz,this.e30,this.e31,this.e32,this.e33);
-	}
-	appendScale(sx,sy,sz) {
-		return new oimo.common.Mat4(this.e00 * sx,this.e01 * sy,this.e02 * sz,this.e03,this.e10 * sx,this.e11 * sy,this.e12 * sz,this.e13,this.e20 * sx,this.e21 * sy,this.e22 * sz,this.e23,this.e30 * sx,this.e31 * sy,this.e32 * sz,this.e33);
-	}
-	prependRotation(rad,axisX,axisY,axisZ) {
-		var s = Math.sin(rad);
-		var c = Math.cos(rad);
-		var c1 = 1 - c;
-		var r00 = axisX * axisX * c1 + c;
-		var r01 = axisX * axisY * c1 - axisZ * s;
-		var r02 = axisX * axisZ * c1 + axisY * s;
-		var r10 = axisY * axisX * c1 + axisZ * s;
-		var r11 = axisY * axisY * c1 + c;
-		var r12 = axisY * axisZ * c1 - axisX * s;
-		var r20 = axisZ * axisX * c1 - axisY * s;
-		var r21 = axisZ * axisY * c1 + axisX * s;
-		var r22 = axisZ * axisZ * c1 + c;
-		return new oimo.common.Mat4(r00 * this.e00 + r01 * this.e10 + r02 * this.e20,r00 * this.e01 + r01 * this.e11 + r02 * this.e21,r00 * this.e02 + r01 * this.e12 + r02 * this.e22,r00 * this.e03 + r01 * this.e13 + r02 * this.e23,r10 * this.e00 + r11 * this.e10 + r12 * this.e20,r10 * this.e01 + r11 * this.e11 + r12 * this.e21,r10 * this.e02 + r11 * this.e12 + r12 * this.e22,r10 * this.e03 + r11 * this.e13 + r12 * this.e23,r20 * this.e00 + r21 * this.e10 + r22 * this.e20,r20 * this.e01 + r21 * this.e11 + r22 * this.e21,r20 * this.e02 + r21 * this.e12 + r22 * this.e22,r20 * this.e03 + r21 * this.e13 + r22 * this.e23,this.e30,this.e31,this.e32,this.e33);
-	}
-	appendRotation(rad,axisX,axisY,axisZ) {
-		var s = Math.sin(rad);
-		var c = Math.cos(rad);
-		var c1 = 1 - c;
-		var r00 = axisX * axisX * c1 + c;
-		var r01 = axisX * axisY * c1 - axisZ * s;
-		var r02 = axisX * axisZ * c1 + axisY * s;
-		var r10 = axisY * axisX * c1 + axisZ * s;
-		var r11 = axisY * axisY * c1 + c;
-		var r12 = axisY * axisZ * c1 - axisX * s;
-		var r20 = axisZ * axisX * c1 - axisY * s;
-		var r21 = axisZ * axisY * c1 + axisX * s;
-		var r22 = axisZ * axisZ * c1 + c;
-		return new oimo.common.Mat4(this.e00 * r00 + this.e01 * r10 + this.e02 * r20,this.e00 * r01 + this.e01 * r11 + this.e02 * r21,this.e00 * r02 + this.e01 * r12 + this.e02 * r22,this.e03,this.e10 * r00 + this.e11 * r10 + this.e12 * r20,this.e10 * r01 + this.e11 * r11 + this.e12 * r21,this.e10 * r02 + this.e11 * r12 + this.e12 * r22,this.e13,this.e20 * r00 + this.e21 * r10 + this.e22 * r20,this.e20 * r01 + this.e21 * r11 + this.e22 * r21,this.e20 * r02 + this.e21 * r12 + this.e22 * r22,this.e23,this.e30 * r00 + this.e31 * r10 + this.e32 * r20,this.e30 * r01 + this.e31 * r11 + this.e32 * r21,this.e30 * r02 + this.e31 * r12 + this.e32 * r22,this.e33);
-	}
-	prependTranslation(tx,ty,tz) {
-		return new oimo.common.Mat4(this.e00 + tx * this.e30,this.e01 + tx * this.e31,this.e02 + tx * this.e32,this.e03 + tx * this.e33,this.e10 + ty * this.e30,this.e11 + ty * this.e31,this.e12 + ty * this.e32,this.e13 + ty * this.e33,this.e20 + tz * this.e30,this.e21 + tz * this.e31,this.e22 + tz * this.e32,this.e23 + tz * this.e33,this.e30,this.e31,this.e32,this.e33);
-	}
-	appendTranslation(tx,ty,tz) {
-		return new oimo.common.Mat4(this.e00,this.e01,this.e02,this.e00 * tx + this.e01 * ty + this.e02 * tz + this.e03,this.e10,this.e11,this.e12,this.e10 * tx + this.e11 * ty + this.e12 * tz + this.e13,this.e20,this.e21,this.e22,this.e20 * tx + this.e21 * ty + this.e22 * tz + this.e23,this.e30,this.e31,this.e32,this.e30 * tx + this.e31 * ty + this.e32 * tz + this.e33);
-	}
-	prependScaleEq(sx,sy,sz) {
-		var t00 = this.e00 * sx;
-		var t01 = this.e01 * sx;
-		var t02 = this.e02 * sx;
-		var t03 = this.e03 * sx;
-		var t10 = this.e10 * sy;
-		var t11 = this.e11 * sy;
-		var t12 = this.e12 * sy;
-		var t13 = this.e13 * sy;
-		var t20 = this.e20 * sz;
-		var t21 = this.e21 * sz;
-		var t22 = this.e22 * sz;
-		var t23 = this.e23 * sz;
-		var t30 = this.e30;
-		var t31 = this.e31;
-		var t32 = this.e32;
-		var t33 = this.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	appendScaleEq(sx,sy,sz) {
-		var t00 = this.e00 * sx;
-		var t01 = this.e01 * sy;
-		var t02 = this.e02 * sz;
-		var t03 = this.e03;
-		var t10 = this.e10 * sx;
-		var t11 = this.e11 * sy;
-		var t12 = this.e12 * sz;
-		var t13 = this.e13;
-		var t20 = this.e20 * sx;
-		var t21 = this.e21 * sy;
-		var t22 = this.e22 * sz;
-		var t23 = this.e23;
-		var t30 = this.e30 * sx;
-		var t31 = this.e31 * sy;
-		var t32 = this.e32 * sz;
-		var t33 = this.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	prependRotationEq(rad,axisX,axisY,axisZ) {
-		var s = Math.sin(rad);
-		var c = Math.cos(rad);
-		var c1 = 1 - c;
-		var r00 = axisX * axisX * c1 + c;
-		var r01 = axisX * axisY * c1 - axisZ * s;
-		var r02 = axisX * axisZ * c1 + axisY * s;
-		var r10 = axisY * axisX * c1 + axisZ * s;
-		var r11 = axisY * axisY * c1 + c;
-		var r12 = axisY * axisZ * c1 - axisX * s;
-		var r20 = axisZ * axisX * c1 - axisY * s;
-		var r21 = axisZ * axisY * c1 + axisX * s;
-		var r22 = axisZ * axisZ * c1 + c;
-		var t00 = r00 * this.e00 + r01 * this.e10 + r02 * this.e20;
-		var t01 = r00 * this.e01 + r01 * this.e11 + r02 * this.e21;
-		var t02 = r00 * this.e02 + r01 * this.e12 + r02 * this.e22;
-		var t03 = r00 * this.e03 + r01 * this.e13 + r02 * this.e23;
-		var t10 = r10 * this.e00 + r11 * this.e10 + r12 * this.e20;
-		var t11 = r10 * this.e01 + r11 * this.e11 + r12 * this.e21;
-		var t12 = r10 * this.e02 + r11 * this.e12 + r12 * this.e22;
-		var t13 = r10 * this.e03 + r11 * this.e13 + r12 * this.e23;
-		var t20 = r20 * this.e00 + r21 * this.e10 + r22 * this.e20;
-		var t21 = r20 * this.e01 + r21 * this.e11 + r22 * this.e21;
-		var t22 = r20 * this.e02 + r21 * this.e12 + r22 * this.e22;
-		var t23 = r20 * this.e03 + r21 * this.e13 + r22 * this.e23;
-		var t30 = this.e30;
-		var t31 = this.e31;
-		var t32 = this.e32;
-		var t33 = this.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	appendRotationEq(rad,axisX,axisY,axisZ) {
-		var s = Math.sin(rad);
-		var c = Math.cos(rad);
-		var c1 = 1 - c;
-		var r00 = axisX * axisX * c1 + c;
-		var r01 = axisX * axisY * c1 - axisZ * s;
-		var r02 = axisX * axisZ * c1 + axisY * s;
-		var r10 = axisY * axisX * c1 + axisZ * s;
-		var r11 = axisY * axisY * c1 + c;
-		var r12 = axisY * axisZ * c1 - axisX * s;
-		var r20 = axisZ * axisX * c1 - axisY * s;
-		var r21 = axisZ * axisY * c1 + axisX * s;
-		var r22 = axisZ * axisZ * c1 + c;
-		var t00 = this.e00 * r00 + this.e01 * r10 + this.e02 * r20;
-		var t01 = this.e00 * r01 + this.e01 * r11 + this.e02 * r21;
-		var t02 = this.e00 * r02 + this.e01 * r12 + this.e02 * r22;
-		var t03 = this.e03;
-		var t10 = this.e10 * r00 + this.e11 * r10 + this.e12 * r20;
-		var t11 = this.e10 * r01 + this.e11 * r11 + this.e12 * r21;
-		var t12 = this.e10 * r02 + this.e11 * r12 + this.e12 * r22;
-		var t13 = this.e13;
-		var t20 = this.e20 * r00 + this.e21 * r10 + this.e22 * r20;
-		var t21 = this.e20 * r01 + this.e21 * r11 + this.e22 * r21;
-		var t22 = this.e20 * r02 + this.e21 * r12 + this.e22 * r22;
-		var t23 = this.e23;
-		var t30 = this.e30 * r00 + this.e31 * r10 + this.e32 * r20;
-		var t31 = this.e30 * r01 + this.e31 * r11 + this.e32 * r21;
-		var t32 = this.e30 * r02 + this.e31 * r12 + this.e32 * r22;
-		var t33 = this.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	prependTranslationEq(tx,ty,tz) {
-		var t00 = this.e00 + tx * this.e30;
-		var t01 = this.e01 + tx * this.e31;
-		var t02 = this.e02 + tx * this.e32;
-		var t03 = this.e03 + tx * this.e33;
-		var t10 = this.e10 + ty * this.e30;
-		var t11 = this.e11 + ty * this.e31;
-		var t12 = this.e12 + ty * this.e32;
-		var t13 = this.e13 + ty * this.e33;
-		var t20 = this.e20 + tz * this.e30;
-		var t21 = this.e21 + tz * this.e31;
-		var t22 = this.e22 + tz * this.e32;
-		var t23 = this.e23 + tz * this.e33;
-		var t30 = this.e30;
-		var t31 = this.e31;
-		var t32 = this.e32;
-		var t33 = this.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	appendTranslationEq(tx,ty,tz) {
-		var t00 = this.e00;
-		var t01 = this.e01;
-		var t02 = this.e02;
-		var t03 = this.e00 * tx + this.e01 * ty + this.e02 * tz + this.e03;
-		var t10 = this.e10;
-		var t11 = this.e11;
-		var t12 = this.e12;
-		var t13 = this.e10 * tx + this.e11 * ty + this.e12 * tz + this.e13;
-		var t20 = this.e20;
-		var t21 = this.e21;
-		var t22 = this.e22;
-		var t23 = this.e20 * tx + this.e21 * ty + this.e22 * tz + this.e23;
-		var t30 = this.e30;
-		var t31 = this.e31;
-		var t32 = this.e32;
-		var t33 = this.e30 * tx + this.e31 * ty + this.e32 * tz + this.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	transpose() {
-		return new oimo.common.Mat4(this.e00,this.e10,this.e20,this.e30,this.e01,this.e11,this.e21,this.e31,this.e02,this.e12,this.e22,this.e32,this.e03,this.e13,this.e23,this.e33);
-	}
-	transposeEq() {
-		var t00 = this.e00;
-		var t01 = this.e10;
-		var t02 = this.e20;
-		var t03 = this.e30;
-		var t10 = this.e01;
-		var t11 = this.e11;
-		var t12 = this.e21;
-		var t13 = this.e31;
-		var t20 = this.e02;
-		var t21 = this.e12;
-		var t22 = this.e22;
-		var t23 = this.e32;
-		var t30 = this.e03;
-		var t31 = this.e13;
-		var t32 = this.e23;
-		var t33 = this.e33;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	determinant() {
-		var d23_01 = this.e20 * this.e31 - this.e21 * this.e30;
-		var d23_02 = this.e20 * this.e32 - this.e22 * this.e30;
-		var d23_03 = this.e20 * this.e33 - this.e23 * this.e30;
-		var d23_12 = this.e21 * this.e32 - this.e22 * this.e31;
-		var d23_13 = this.e21 * this.e33 - this.e23 * this.e31;
-		var d23_23 = this.e22 * this.e33 - this.e23 * this.e32;
-		return this.e00 * (this.e11 * d23_23 - this.e12 * d23_13 + this.e13 * d23_12) - this.e01 * (this.e10 * d23_23 - this.e12 * d23_03 + this.e13 * d23_02) + this.e02 * (this.e10 * d23_13 - this.e11 * d23_03 + this.e13 * d23_01) - this.e03 * (this.e10 * d23_12 - this.e11 * d23_02 + this.e12 * d23_01);
-	}
-	trace() {
-		return this.e00 + this.e11 + this.e22 + this.e33;
-	}
-	inverse() {
-		var d01_01 = this.e00 * this.e11 - this.e01 * this.e10;
-		var d01_02 = this.e00 * this.e12 - this.e02 * this.e10;
-		var d01_03 = this.e00 * this.e13 - this.e03 * this.e10;
-		var d01_12 = this.e01 * this.e12 - this.e02 * this.e11;
-		var d01_13 = this.e01 * this.e13 - this.e03 * this.e11;
-		var d01_23 = this.e02 * this.e13 - this.e03 * this.e12;
-		var d23_01 = this.e20 * this.e31 - this.e21 * this.e30;
-		var d23_02 = this.e20 * this.e32 - this.e22 * this.e30;
-		var d23_03 = this.e20 * this.e33 - this.e23 * this.e30;
-		var d23_12 = this.e21 * this.e32 - this.e22 * this.e31;
-		var d23_13 = this.e21 * this.e33 - this.e23 * this.e31;
-		var d23_23 = this.e22 * this.e33 - this.e23 * this.e32;
-		var d00 = this.e11 * d23_23 - this.e12 * d23_13 + this.e13 * d23_12;
-		var d01 = this.e10 * d23_23 - this.e12 * d23_03 + this.e13 * d23_02;
-		var d02 = this.e10 * d23_13 - this.e11 * d23_03 + this.e13 * d23_01;
-		var d03 = this.e10 * d23_12 - this.e11 * d23_02 + this.e12 * d23_01;
-		var d10 = this.e01 * d23_23 - this.e02 * d23_13 + this.e03 * d23_12;
-		var d11 = this.e00 * d23_23 - this.e02 * d23_03 + this.e03 * d23_02;
-		var d12 = this.e00 * d23_13 - this.e01 * d23_03 + this.e03 * d23_01;
-		var d13 = this.e00 * d23_12 - this.e01 * d23_02 + this.e02 * d23_01;
-		var d20 = this.e31 * d01_23 - this.e32 * d01_13 + this.e33 * d01_12;
-		var d21 = this.e30 * d01_23 - this.e32 * d01_03 + this.e33 * d01_02;
-		var d22 = this.e30 * d01_13 - this.e31 * d01_03 + this.e33 * d01_01;
-		var d23 = this.e30 * d01_12 - this.e31 * d01_02 + this.e32 * d01_01;
-		var d30 = this.e21 * d01_23 - this.e22 * d01_13 + this.e23 * d01_12;
-		var d31 = this.e20 * d01_23 - this.e22 * d01_03 + this.e23 * d01_02;
-		var d32 = this.e20 * d01_13 - this.e21 * d01_03 + this.e23 * d01_01;
-		var d33 = this.e20 * d01_12 - this.e21 * d01_02 + this.e22 * d01_01;
-		var invDet = this.e00 * d00 - this.e01 * d01 + this.e02 * d02 - this.e03 * d03;
-		if(invDet != 0) {
-			invDet = 1 / invDet;
-		}
-		return new oimo.common.Mat4(d00 * invDet,-d10 * invDet,d20 * invDet,-d30 * invDet,-d01 * invDet,d11 * invDet,-d21 * invDet,d31 * invDet,d02 * invDet,-d12 * invDet,d22 * invDet,-d32 * invDet,-d03 * invDet,d13 * invDet,-d23 * invDet,d33 * invDet);
-	}
-	inverseEq() {
-		var d01_01 = this.e00 * this.e11 - this.e01 * this.e10;
-		var d01_02 = this.e00 * this.e12 - this.e02 * this.e10;
-		var d01_03 = this.e00 * this.e13 - this.e03 * this.e10;
-		var d01_12 = this.e01 * this.e12 - this.e02 * this.e11;
-		var d01_13 = this.e01 * this.e13 - this.e03 * this.e11;
-		var d01_23 = this.e02 * this.e13 - this.e03 * this.e12;
-		var d23_01 = this.e20 * this.e31 - this.e21 * this.e30;
-		var d23_02 = this.e20 * this.e32 - this.e22 * this.e30;
-		var d23_03 = this.e20 * this.e33 - this.e23 * this.e30;
-		var d23_12 = this.e21 * this.e32 - this.e22 * this.e31;
-		var d23_13 = this.e21 * this.e33 - this.e23 * this.e31;
-		var d23_23 = this.e22 * this.e33 - this.e23 * this.e32;
-		var d00 = this.e11 * d23_23 - this.e12 * d23_13 + this.e13 * d23_12;
-		var d01 = this.e10 * d23_23 - this.e12 * d23_03 + this.e13 * d23_02;
-		var d02 = this.e10 * d23_13 - this.e11 * d23_03 + this.e13 * d23_01;
-		var d03 = this.e10 * d23_12 - this.e11 * d23_02 + this.e12 * d23_01;
-		var d10 = this.e01 * d23_23 - this.e02 * d23_13 + this.e03 * d23_12;
-		var d11 = this.e00 * d23_23 - this.e02 * d23_03 + this.e03 * d23_02;
-		var d12 = this.e00 * d23_13 - this.e01 * d23_03 + this.e03 * d23_01;
-		var d13 = this.e00 * d23_12 - this.e01 * d23_02 + this.e02 * d23_01;
-		var d20 = this.e31 * d01_23 - this.e32 * d01_13 + this.e33 * d01_12;
-		var d21 = this.e30 * d01_23 - this.e32 * d01_03 + this.e33 * d01_02;
-		var d22 = this.e30 * d01_13 - this.e31 * d01_03 + this.e33 * d01_01;
-		var d23 = this.e30 * d01_12 - this.e31 * d01_02 + this.e32 * d01_01;
-		var d30 = this.e21 * d01_23 - this.e22 * d01_13 + this.e23 * d01_12;
-		var d31 = this.e20 * d01_23 - this.e22 * d01_03 + this.e23 * d01_02;
-		var d32 = this.e20 * d01_13 - this.e21 * d01_03 + this.e23 * d01_01;
-		var d33 = this.e20 * d01_12 - this.e21 * d01_02 + this.e22 * d01_01;
-		var invDet = this.e00 * d00 - this.e01 * d01 + this.e02 * d02 - this.e03 * d03;
-		if(invDet != 0) {
-			invDet = 1 / invDet;
-		}
-		var t00 = d00 * invDet;
-		var t01 = -d10 * invDet;
-		var t02 = d20 * invDet;
-		var t03 = -d30 * invDet;
-		var t10 = -d01 * invDet;
-		var t11 = d11 * invDet;
-		var t12 = -d21 * invDet;
-		var t13 = d31 * invDet;
-		var t20 = d02 * invDet;
-		var t21 = -d12 * invDet;
-		var t22 = d22 * invDet;
-		var t23 = -d32 * invDet;
-		var t30 = -d03 * invDet;
-		var t31 = d13 * invDet;
-		var t32 = -d23 * invDet;
-		var t33 = d33 * invDet;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	lookAt(eyeX,eyeY,eyeZ,atX,atY,atZ,upX,upY,upZ) {
-		var zx = eyeX - atX;
-		var zy = eyeY - atY;
-		var zz = eyeZ - atZ;
-		var tmp = 1 / Math.sqrt(zx * zx + zy * zy + zz * zz);
-		zx *= tmp;
-		zy *= tmp;
-		zz *= tmp;
-		var xx = upY * zz - upZ * zy;
-		var xy = upZ * zx - upX * zz;
-		var xz = upX * zy - upY * zx;
-		tmp = 1 / Math.sqrt(xx * xx + xy * xy + xz * xz);
-		xx *= tmp;
-		xy *= tmp;
-		xz *= tmp;
-		var yx = zy * xz - zz * xy;
-		var yy = zz * xx - zx * xz;
-		var yz = zx * xy - zy * xx;
-		this.e00 = xx;
-		this.e01 = xy;
-		this.e02 = xz;
-		this.e03 = -(xx * eyeX + xy * eyeY + xz * eyeZ);
-		this.e10 = yx;
-		this.e11 = yy;
-		this.e12 = yz;
-		this.e13 = -(yx * eyeX + yy * eyeY + yz * eyeZ);
-		this.e20 = zx;
-		this.e21 = zy;
-		this.e22 = zz;
-		this.e23 = -(zx * eyeX + zy * eyeY + zz * eyeZ);
-		this.e30 = 0;
-		this.e31 = 0;
-		this.e32 = 0;
-		this.e33 = 1;
-		return this;
-	}
-	perspective(fovY,aspect,near,far) {
-		var h = 1 / Math.tan(fovY * 0.5);
-		var fnf = far / (near - far);
-		this.e00 = h / aspect;
-		this.e01 = 0;
-		this.e02 = 0;
-		this.e03 = 0;
-		this.e10 = 0;
-		this.e11 = h;
-		this.e12 = 0;
-		this.e13 = 0;
-		this.e20 = 0;
-		this.e21 = 0;
-		this.e22 = fnf;
-		this.e23 = near * fnf;
-		this.e30 = 0;
-		this.e31 = 0;
-		this.e32 = -1;
-		this.e33 = 0;
-		return this;
-	}
-	ortho(width,height,near,far) {
-		var nf = 1 / (near - far);
-		this.e00 = 2 / width;
-		this.e01 = 0;
-		this.e02 = 0;
-		this.e03 = 0;
-		this.e10 = 0;
-		this.e11 = 2 / height;
-		this.e12 = 0;
-		this.e13 = 0;
-		this.e20 = 0;
-		this.e21 = 0;
-		this.e22 = nf;
-		this.e23 = near * nf;
-		this.e30 = 0;
-		this.e31 = 0;
-		this.e32 = 0;
-		this.e33 = 1;
-		return this;
-	}
-	toArray(columnMajor) {
-		if(columnMajor == null) {
-			columnMajor = false;
-		}
-		if(columnMajor) {
-			return [this.e00,this.e10,this.e20,this.e30,this.e01,this.e11,this.e21,this.e31,this.e02,this.e12,this.e22,this.e32,this.e03,this.e13,this.e23,this.e33];
-		} else {
-			return [this.e00,this.e01,this.e02,this.e03,this.e10,this.e11,this.e12,this.e13,this.e20,this.e21,this.e22,this.e23,this.e30,this.e31,this.e32,this.e33];
-		}
-	}
-	copyFrom(m) {
-		this.e00 = m.e00;
-		this.e01 = m.e01;
-		this.e02 = m.e02;
-		this.e03 = m.e03;
-		this.e10 = m.e10;
-		this.e11 = m.e11;
-		this.e12 = m.e12;
-		this.e13 = m.e13;
-		this.e20 = m.e20;
-		this.e21 = m.e21;
-		this.e22 = m.e22;
-		this.e23 = m.e23;
-		this.e30 = m.e30;
-		this.e31 = m.e31;
-		this.e32 = m.e32;
-		this.e33 = m.e33;
-		return this;
-	}
-	fromMat3(m) {
-		var t00 = m.e00;
-		var t01 = m.e01;
-		var t02 = m.e02;
-		var t03 = 0;
-		var t10 = m.e10;
-		var t11 = m.e11;
-		var t12 = m.e12;
-		var t13 = 0;
-		var t20 = m.e20;
-		var t21 = m.e21;
-		var t22 = m.e22;
-		var t23 = 0;
-		var t30 = 0;
-		var t31 = 0;
-		var t32 = 0;
-		var t33 = 1;
-		this.e00 = t00;
-		this.e01 = t01;
-		this.e02 = t02;
-		this.e03 = t03;
-		this.e10 = t10;
-		this.e11 = t11;
-		this.e12 = t12;
-		this.e13 = t13;
-		this.e20 = t20;
-		this.e21 = t21;
-		this.e22 = t22;
-		this.e23 = t23;
-		this.e30 = t30;
-		this.e31 = t31;
-		this.e32 = t32;
-		this.e33 = t33;
-		return this;
-	}
-	fromTransform(transform) {
-		var m = this;
-		m.e00 = transform._rotation00;
-		m.e01 = transform._rotation01;
-		m.e02 = transform._rotation02;
-		m.e10 = transform._rotation10;
-		m.e11 = transform._rotation11;
-		m.e12 = transform._rotation12;
-		m.e20 = transform._rotation20;
-		m.e21 = transform._rotation21;
-		m.e22 = transform._rotation22;
-		m.e03 = transform._positionX;
-		m.e13 = transform._positionY;
-		m.e23 = transform._positionZ;
-		m.e30 = 0;
-		m.e31 = 0;
-		m.e32 = 0;
-		m.e33 = 1;
-		return this;
-	}
-	clone() {
-		return new oimo.common.Mat4(this.e00,this.e01,this.e02,this.e03,this.e10,this.e11,this.e12,this.e13,this.e20,this.e21,this.e22,this.e23,this.e30,this.e31,this.e32,this.e33);
-	}
-	toString() {
-		return "Mat4[" + (this.e00 > 0 ? (this.e00 * 10000000 + 0.5 | 0) / 10000000 : (this.e00 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e01 > 0 ? (this.e01 * 10000000 + 0.5 | 0) / 10000000 : (this.e01 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e02 > 0 ? (this.e02 * 10000000 + 0.5 | 0) / 10000000 : (this.e02 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e03 > 0 ? (this.e03 * 10000000 + 0.5 | 0) / 10000000 : (this.e03 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + "    " + (this.e10 > 0 ? (this.e10 * 10000000 + 0.5 | 0) / 10000000 : (this.e10 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e11 > 0 ? (this.e11 * 10000000 + 0.5 | 0) / 10000000 : (this.e11 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e12 > 0 ? (this.e12 * 10000000 + 0.5 | 0) / 10000000 : (this.e12 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e13 > 0 ? (this.e13 * 10000000 + 0.5 | 0) / 10000000 : (this.e13 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + "    " + (this.e20 > 0 ? (this.e20 * 10000000 + 0.5 | 0) / 10000000 : (this.e20 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e21 > 0 ? (this.e21 * 10000000 + 0.5 | 0) / 10000000 : (this.e21 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e22 > 0 ? (this.e22 * 10000000 + 0.5 | 0) / 10000000 : (this.e22 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e23 > 0 ? (this.e23 * 10000000 + 0.5 | 0) / 10000000 : (this.e23 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + "    " + (this.e30 > 0 ? (this.e30 * 10000000 + 0.5 | 0) / 10000000 : (this.e30 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e31 > 0 ? (this.e31 * 10000000 + 0.5 | 0) / 10000000 : (this.e31 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e32 > 0 ? (this.e32 * 10000000 + 0.5 | 0) / 10000000 : (this.e32 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e33 > 0 ? (this.e33 * 10000000 + 0.5 | 0) / 10000000 : (this.e33 * 10000000 - 0.5 | 0) / 10000000) + "]";
-	}
-}
-oimo.common.MathUtil = class oimo_common_MathUtil {
-	static abs(x) {
-		if(x > 0) {
-			return x;
-		} else {
-			return -x;
-		}
-	}
-	static sin(x) {
-		return Math.sin(x);
-	}
-	static cos(x) {
-		return Math.cos(x);
-	}
-	static tan(x) {
-		return Math.tan(x);
-	}
-	static asin(x) {
-		return Math.asin(x);
-	}
-	static acos(x) {
-		return Math.acos(x);
-	}
-	static atan(x) {
-		return Math.atan(x);
-	}
-	static safeAsin(x) {
-		if(x <= -1) {
-			return -1.570796326794895;
-		}
-		if(x >= 1) {
-			return 1.570796326794895;
-		}
-		return Math.asin(x);
-	}
-	static safeAcos(x) {
-		if(x <= -1) {
-			return 3.14159265358979;
-		}
-		if(x >= 1) {
-			return 0;
-		}
-		return Math.acos(x);
-	}
-	static atan2(y,x) {
-		return Math.atan2(y,x);
-	}
-	static sqrt(x) {
-		return Math.sqrt(x);
-	}
-	static clamp(x,min,max) {
-		if(x < min) {
-			return min;
-		} else if(x > max) {
-			return max;
-		} else {
-			return x;
-		}
-	}
-	static rand() {
-		return Math.random();
-	}
-	static randIn(min,max) {
-		return min + Math.random() * (max - min);
-	}
-	static randVec3In(min,max) {
-		return new oimo.common.Vec3(min + Math.random() * (max - min),min + Math.random() * (max - min),min + Math.random() * (max - min));
-	}
-	static randVec3() {
-		return new oimo.common.Vec3(-1 + Math.random() * 2,-1 + Math.random() * 2,-1 + Math.random() * 2);
-	}
-}
-oimo.common.Pool = class oimo_common_Pool {
-	constructor() {
-		var this1 = new Array(256);
-		this.stackVec3 = this1;
-		this.sizeVec3 = 0;
-		var this2 = new Array(256);
-		this.stackMat3 = this2;
-		this.sizeMat3 = 0;
-		var this3 = new Array(256);
-		this.stackMat4 = this3;
-		this.sizeMat4 = 0;
-		var this4 = new Array(256);
-		this.stackQuat = this4;
-		this.sizeQuat = 0;
-	}
-	vec3() {
-		if(this.sizeVec3 == 0) {
-			return new oimo.common.Vec3();
-		} else {
-			return this.stackVec3[--this.sizeVec3];
-		}
-	}
-	mat3() {
-		if(this.sizeMat3 == 0) {
-			return new oimo.common.Mat3();
-		} else {
-			return this.stackMat3[--this.sizeMat3];
-		}
-	}
-	mat4() {
-		if(this.sizeMat4 == 0) {
-			return new oimo.common.Mat4();
-		} else {
-			return this.stackMat4[--this.sizeMat4];
-		}
-	}
-	quat() {
-		if(this.sizeQuat == 0) {
-			return new oimo.common.Quat();
-		} else {
-			return this.stackQuat[--this.sizeQuat];
-		}
-	}
-	dispose(vec3,mat3,mat4,quat) {
-		if(vec3 != null) {
-			vec3.zero();
-			if(this.sizeVec3 == this.stackVec3.length) {
-				var newLength = this.sizeVec3 << 1;
-				var this1 = new Array(newLength);
-				var newArray = this1;
-				var _g = 0;
-				var _g1 = this.sizeVec3;
-				while(_g < _g1) {
-					var i = _g++;
-					newArray[i] = this.stackVec3[i];
-					this.stackVec3[i] = null;
-				}
-				this.stackVec3 = newArray;
-			}
-			this.stackVec3[this.sizeVec3++] = vec3;
-		}
-		if(mat3 != null) {
-			var t00 = 1;
-			var t01 = 0;
-			var t02 = 0;
-			var t10 = 0;
-			var t11 = 1;
-			var t12 = 0;
-			var t20 = 0;
-			var t21 = 0;
-			var t22 = 1;
-			mat3.e00 = t00;
-			mat3.e01 = t01;
-			mat3.e02 = t02;
-			mat3.e10 = t10;
-			mat3.e11 = t11;
-			mat3.e12 = t12;
-			mat3.e20 = t20;
-			mat3.e21 = t21;
-			mat3.e22 = t22;
-			if(this.sizeMat3 == this.stackMat3.length) {
-				var newLength1 = this.sizeMat3 << 1;
-				var this2 = new Array(newLength1);
-				var newArray1 = this2;
-				var _g2 = 0;
-				var _g11 = this.sizeMat3;
-				while(_g2 < _g11) {
-					var i1 = _g2++;
-					newArray1[i1] = this.stackMat3[i1];
-					this.stackMat3[i1] = null;
-				}
-				this.stackMat3 = newArray1;
-			}
-			this.stackMat3[this.sizeMat3++] = mat3;
-		}
-		if(mat4 != null) {
-			var t001 = 1;
-			var t011 = 0;
-			var t021 = 0;
-			var t03 = 0;
-			var t101 = 0;
-			var t111 = 1;
-			var t121 = 0;
-			var t13 = 0;
-			var t201 = 0;
-			var t211 = 0;
-			var t221 = 1;
-			var t23 = 0;
-			var t30 = 0;
-			var t31 = 0;
-			var t32 = 0;
-			var t33 = 1;
-			mat4.e00 = t001;
-			mat4.e01 = t011;
-			mat4.e02 = t021;
-			mat4.e03 = t03;
-			mat4.e10 = t101;
-			mat4.e11 = t111;
-			mat4.e12 = t121;
-			mat4.e13 = t13;
-			mat4.e20 = t201;
-			mat4.e21 = t211;
-			mat4.e22 = t221;
-			mat4.e23 = t23;
-			mat4.e30 = t30;
-			mat4.e31 = t31;
-			mat4.e32 = t32;
-			mat4.e33 = t33;
-			if(this.sizeMat4 == this.stackMat4.length) {
-				var newLength2 = this.sizeMat4 << 1;
-				var this3 = new Array(newLength2);
-				var newArray2 = this3;
-				var _g3 = 0;
-				var _g12 = this.sizeMat4;
-				while(_g3 < _g12) {
-					var i2 = _g3++;
-					newArray2[i2] = this.stackMat4[i2];
-					this.stackMat4[i2] = null;
-				}
-				this.stackMat4 = newArray2;
-			}
-			this.stackMat4[this.sizeMat4++] = mat4;
-		}
-		if(quat != null) {
-			var tx = 0;
-			var ty = 0;
-			var tz = 0;
-			var tw = 1;
-			quat.x = tx;
-			quat.y = ty;
-			quat.z = tz;
-			quat.w = tw;
-			if(this.sizeQuat == this.stackQuat.length) {
-				var newLength3 = this.sizeQuat << 1;
-				var this4 = new Array(newLength3);
-				var newArray3 = this4;
-				var _g4 = 0;
-				var _g13 = this.sizeQuat;
-				while(_g4 < _g13) {
-					var i3 = _g4++;
-					newArray3[i3] = this.stackQuat[i3];
-					this.stackQuat[i3] = null;
-				}
-				this.stackQuat = newArray3;
-			}
-			this.stackQuat[this.sizeQuat++] = quat;
-		}
-	}
-	disposeVec3(v) {
-		v.zero();
-		if(this.sizeVec3 == this.stackVec3.length) {
-			var newLength = this.sizeVec3 << 1;
-			var this1 = new Array(newLength);
-			var newArray = this1;
-			var _g = 0;
-			var _g1 = this.sizeVec3;
-			while(_g < _g1) {
-				var i = _g++;
-				newArray[i] = this.stackVec3[i];
-				this.stackVec3[i] = null;
-			}
-			this.stackVec3 = newArray;
-		}
-		this.stackVec3[this.sizeVec3++] = v;
-	}
-	disposeMat3(m) {
-		var t00 = 1;
-		var t01 = 0;
-		var t02 = 0;
-		var t10 = 0;
-		var t11 = 1;
-		var t12 = 0;
-		var t20 = 0;
-		var t21 = 0;
-		var t22 = 1;
-		m.e00 = t00;
-		m.e01 = t01;
-		m.e02 = t02;
-		m.e10 = t10;
-		m.e11 = t11;
-		m.e12 = t12;
-		m.e20 = t20;
-		m.e21 = t21;
-		m.e22 = t22;
-		if(this.sizeMat3 == this.stackMat3.length) {
-			var newLength = this.sizeMat3 << 1;
-			var this1 = new Array(newLength);
-			var newArray = this1;
-			var _g = 0;
-			var _g1 = this.sizeMat3;
-			while(_g < _g1) {
-				var i = _g++;
-				newArray[i] = this.stackMat3[i];
-				this.stackMat3[i] = null;
-			}
-			this.stackMat3 = newArray;
-		}
-		this.stackMat3[this.sizeMat3++] = m;
-	}
-	disposeMat4(m) {
-		var t00 = 1;
-		var t01 = 0;
-		var t02 = 0;
-		var t03 = 0;
-		var t10 = 0;
-		var t11 = 1;
-		var t12 = 0;
-		var t13 = 0;
-		var t20 = 0;
-		var t21 = 0;
-		var t22 = 1;
-		var t23 = 0;
-		var t30 = 0;
-		var t31 = 0;
-		var t32 = 0;
-		var t33 = 1;
-		m.e00 = t00;
-		m.e01 = t01;
-		m.e02 = t02;
-		m.e03 = t03;
-		m.e10 = t10;
-		m.e11 = t11;
-		m.e12 = t12;
-		m.e13 = t13;
-		m.e20 = t20;
-		m.e21 = t21;
-		m.e22 = t22;
-		m.e23 = t23;
-		m.e30 = t30;
-		m.e31 = t31;
-		m.e32 = t32;
-		m.e33 = t33;
-		if(this.sizeMat4 == this.stackMat4.length) {
-			var newLength = this.sizeMat4 << 1;
-			var this1 = new Array(newLength);
-			var newArray = this1;
-			var _g = 0;
-			var _g1 = this.sizeMat4;
-			while(_g < _g1) {
-				var i = _g++;
-				newArray[i] = this.stackMat4[i];
-				this.stackMat4[i] = null;
-			}
-			this.stackMat4 = newArray;
-		}
-		this.stackMat4[this.sizeMat4++] = m;
-	}
-	disposeQuat(q) {
-		var tx = 0;
-		var ty = 0;
-		var tz = 0;
-		var tw = 1;
-		q.x = tx;
-		q.y = ty;
-		q.z = tz;
-		q.w = tw;
-		if(this.sizeQuat == this.stackQuat.length) {
-			var newLength = this.sizeQuat << 1;
-			var this1 = new Array(newLength);
-			var newArray = this1;
-			var _g = 0;
-			var _g1 = this.sizeQuat;
-			while(_g < _g1) {
-				var i = _g++;
-				newArray[i] = this.stackQuat[i];
-				this.stackQuat[i] = null;
-			}
-			this.stackQuat = newArray;
-		}
-		this.stackQuat[this.sizeQuat++] = q;
-	}
-}
-oimo.common.Quat = class oimo_common_Quat {
-	constructor(x,y,z,w) {
-		if(w == null) {
-			w = 1;
-		}
-		if(z == null) {
-			z = 0;
-		}
-		if(y == null) {
-			y = 0;
-		}
-		if(x == null) {
-			x = 0;
-		}
-		this.x = x;
-		this.y = y;
-		this.z = z;
-		this.w = w;
-		oimo.common.Quat.numCreations++;
-	}
-	identity() {
-		var tx = 0;
-		var ty = 0;
-		var tz = 0;
-		var tw = 1;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		this.w = tw;
-		return this;
-	}
-	init(x,y,z,w) {
-		this.x = x;
-		this.y = y;
-		this.z = z;
-		this.w = w;
-		return this;
-	}
-	add(q) {
-		return new oimo.common.Quat(this.x + q.x,this.y + q.y,this.z + q.z,this.w + q.w);
-	}
-	sub(q) {
-		return new oimo.common.Quat(this.x - q.x,this.y - q.y,this.z - q.z,this.w - q.w);
-	}
-	scale(s) {
-		return new oimo.common.Quat(this.x * s,this.y * s,this.z * s,this.w * s);
-	}
-	addEq(q) {
-		var tx = this.x + q.x;
-		var ty = this.y + q.y;
-		var tz = this.z + q.z;
-		var tw = this.w + q.w;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		this.w = tw;
-		return this;
-	}
-	subEq(q) {
-		var tx = this.x - q.x;
-		var ty = this.y - q.y;
-		var tz = this.z - q.z;
-		var tw = this.w - q.w;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		this.w = tw;
-		return this;
-	}
-	scaleEq(s) {
-		var tx = this.x * s;
-		var ty = this.y * s;
-		var tz = this.z * s;
-		var tw = this.w * s;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		this.w = tw;
-		return this;
-	}
-	length() {
-		return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
-	}
-	lengthSq() {
-		return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;
-	}
-	dot(q) {
-		return this.x * q.x + this.y * q.y + this.z * q.z + this.w * q.w;
-	}
-	normalized() {
-		var invLen = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
-		if(invLen > 0) {
-			invLen = 1 / invLen;
-		}
-		return new oimo.common.Quat(this.x * invLen,this.y * invLen,this.z * invLen,this.w * invLen);
-	}
-	normalize() {
-		var invLen = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
-		if(invLen > 0) {
-			invLen = 1 / invLen;
-		}
-		var tx = this.x * invLen;
-		var ty = this.y * invLen;
-		var tz = this.z * invLen;
-		var tw = this.w * invLen;
-		this.x = tx;
-		this.y = ty;
-		this.z = tz;
-		this.w = tw;
-		return this;
-	}
-	setArc(v1,v2) {
-		var x1 = v1.x;
-		var y1 = v1.y;
-		var z1 = v1.z;
-		var x2 = v2.x;
-		var y2 = v2.y;
-		var z2 = v2.z;
-		var d = x1 * x2 + y1 * y2 + z1 * z2;
-		this.w = Math.sqrt((1 + d) * 0.5);
-		if(this.w == 0) {
-			x2 = x1 * x1;
-			y2 = y1 * y1;
-			z2 = z1 * z1;
-			if(x2 < y2) {
-				if(x2 < z2) {
-					d = 1 / Math.sqrt(y2 + z2);
-					this.x = 0;
-					this.y = z1 * d;
-					this.z = -y1 * d;
-				} else {
-					d = 1 / Math.sqrt(x2 + y2);
-					this.z = 0;
-					this.x = y1 * d;
-					this.y = -x1 * d;
-				}
-			} else if(y2 < z2) {
-				d = 1 / Math.sqrt(z2 + x2);
-				this.y = 0;
-				this.z = x1 * d;
-				this.x = -z1 * d;
-			} else {
-				d = 1 / Math.sqrt(x2 + y2);
-				this.z = 0;
-				this.x = y1 * d;
-				this.y = -x1 * d;
-			}
-			return this;
-		}
-		d = 0.5 / this.w;
-		var cx = y1 * z2 - z1 * y2;
-		var cy = z1 * x2 - x1 * z2;
-		var cz = x1 * y2 - y1 * x2;
-		this.x = cx * d;
-		this.y = cy * d;
-		this.z = cz * d;
-		return this;
-	}
-	slerp(q,t) {
-		var qx;
-		var qy;
-		var qz;
-		var qw;
-		var d = this.x * q.x + this.y * q.y + this.z * q.z + this.w * q.w;
-		if(d < 0) {
-			d = -d;
-			qx = -q.x;
-			qy = -q.y;
-			qz = -q.z;
-			qw = -q.w;
-		} else {
-			qx = q.x;
-			qy = q.y;
-			qz = q.z;
-			qw = q.w;
-		}
-		if(d > 0.999999) {
-			var _this = new oimo.common.Quat(this.x + (qx - this.x) * t,this.y + (qy - this.y) * t,this.z + (qz - this.z) * t,this.w + (qw - this.w) * t);
-			var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z + _this.w * _this.w);
-			if(invLen > 0) {
-				invLen = 1 / invLen;
-			}
-			var tx = _this.x * invLen;
-			var ty = _this.y * invLen;
-			var tz = _this.z * invLen;
-			var tw = _this.w * invLen;
-			_this.x = tx;
-			_this.y = ty;
-			_this.z = tz;
-			_this.w = tw;
-			return _this;
-		}
-		var theta = t * Math.acos(d);
-		qx -= this.x * d;
-		qy -= this.y * d;
-		qz -= this.z * d;
-		qw -= this.w * d;
-		var invLen1 = 1 / Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);
-		qx *= invLen1;
-		qy *= invLen1;
-		qz *= invLen1;
-		qw *= invLen1;
-		var sin = Math.sin(theta);
-		var cos = Math.cos(theta);
-		return new oimo.common.Quat(this.x * cos + qx * sin,this.y * cos + qy * sin,this.z * cos + qz * sin,this.w * cos + qw * sin);
-	}
-	copyFrom(q) {
-		this.x = q.x;
-		this.y = q.y;
-		this.z = q.z;
-		this.w = q.w;
-		return this;
-	}
-	clone() {
-		return new oimo.common.Quat(this.x,this.y,this.z,this.w);
-	}
-	fromMat3(m) {
-		var e00 = m.e00;
-		var e11 = m.e11;
-		var e22 = m.e22;
-		var t = e00 + e11 + e22;
-		var s;
-		if(t > 0) {
-			s = Math.sqrt(t + 1);
-			this.w = 0.5 * s;
-			s = 0.5 / s;
-			this.x = (m.e21 - m.e12) * s;
-			this.y = (m.e02 - m.e20) * s;
-			this.z = (m.e10 - m.e01) * s;
-		} else if(e00 > e11) {
-			if(e00 > e22) {
-				s = Math.sqrt(e00 - e11 - e22 + 1);
-				this.x = 0.5 * s;
-				s = 0.5 / s;
-				this.y = (m.e01 + m.e10) * s;
-				this.z = (m.e02 + m.e20) * s;
-				this.w = (m.e21 - m.e12) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				this.z = 0.5 * s;
-				s = 0.5 / s;
-				this.x = (m.e02 + m.e20) * s;
-				this.y = (m.e12 + m.e21) * s;
-				this.w = (m.e10 - m.e01) * s;
-			}
-		} else if(e11 > e22) {
-			s = Math.sqrt(e11 - e22 - e00 + 1);
-			this.y = 0.5 * s;
-			s = 0.5 / s;
-			this.x = (m.e01 + m.e10) * s;
-			this.z = (m.e12 + m.e21) * s;
-			this.w = (m.e02 - m.e20) * s;
-		} else {
-			s = Math.sqrt(e22 - e00 - e11 + 1);
-			this.z = 0.5 * s;
-			s = 0.5 / s;
-			this.x = (m.e02 + m.e20) * s;
-			this.y = (m.e12 + m.e21) * s;
-			this.w = (m.e10 - m.e01) * s;
-		}
-		return this;
-	}
-	toMat3() {
-		var _this = new oimo.common.Mat3();
-		var x = this.x;
-		var y = this.y;
-		var z = this.z;
-		var w = this.w;
-		var x2 = 2 * x;
-		var y2 = 2 * y;
-		var z2 = 2 * z;
-		var xx = x * x2;
-		var yy = y * y2;
-		var zz = z * z2;
-		var xy = x * y2;
-		var yz = y * z2;
-		var xz = x * z2;
-		var wx = w * x2;
-		var wy = w * y2;
-		var wz = w * z2;
-		_this.e00 = 1 - yy - zz;
-		_this.e01 = xy - wz;
-		_this.e02 = xz + wy;
-		_this.e10 = xy + wz;
-		_this.e11 = 1 - xx - zz;
-		_this.e12 = yz - wx;
-		_this.e20 = xz - wy;
-		_this.e21 = yz + wx;
-		_this.e22 = 1 - xx - yy;
-		return _this;
-	}
-	toString() {
-		return "Quat[" + (this.x > 0 ? (this.x * 10000000 + 0.5 | 0) / 10000000 : (this.x * 10000000 - 0.5 | 0) / 10000000) + " i,\n" + "    " + (this.y > 0 ? (this.y * 10000000 + 0.5 | 0) / 10000000 : (this.y * 10000000 - 0.5 | 0) / 10000000) + " j,\n" + "    " + (this.z > 0 ? (this.z * 10000000 + 0.5 | 0) / 10000000 : (this.z * 10000000 - 0.5 | 0) / 10000000) + " k,\n" + "    " + (this.w > 0 ? (this.w * 10000000 + 0.5 | 0) / 10000000 : (this.w * 10000000 - 0.5 | 0) / 10000000) + "]";
-	}
-}
-if(!oimo.dynamics) oimo.dynamics = {};
-oimo.dynamics.Contact = class oimo_dynamics_Contact {
-	constructor() {
-		this._next = null;
-		this._prev = null;
-		this._link1 = new oimo.dynamics.ContactLink();
-		this._link2 = new oimo.dynamics.ContactLink();
-		this._s1 = null;
-		this._s2 = null;
-		this._b1 = null;
-		this._b2 = null;
-		this._detector = null;
-		this._cachedDetectorData = new oimo.collision.narrowphase.detector.CachedDetectorData();
-		this._detectorResult = new oimo.collision.narrowphase.DetectorResult();
-		this._latest = false;
-		this._shouldBeSkipped = false;
-		this._manifold = new oimo.dynamics.constraint.contact.Manifold();
-		this._updater = new oimo.dynamics.constraint.contact.ManifoldUpdater(this._manifold);
-		this._contactConstraint = new oimo.dynamics.constraint.contact.ContactConstraint(this._manifold);
-		this._touching = false;
-	}
-	_updateManifold() {
-		if(this._detector == null) {
-			return;
-		}
-		var ptouching = this._touching;
-		var result = this._detectorResult;
-		this._detector.detect(result,this._s1._geom,this._s2._geom,this._s1._transform,this._s2._transform,this._cachedDetectorData);
-		var num = result.numPoints;
-		this._touching = num > 0;
-		if(this._touching) {
-			this._manifold._buildBasis(result.normal);
-			if(result.getMaxDepth() > oimo.common.Setting.contactUseAlternativePositionCorrectionAlgorithmDepthThreshold) {
-				this._contactConstraint._positionCorrectionAlgorithm = oimo.common.Setting.alternativeContactPositionCorrectionAlgorithm;
-			} else {
-				this._contactConstraint._positionCorrectionAlgorithm = oimo.common.Setting.defaultContactPositionCorrectionAlgorithm;
-			}
-			if(result.incremental) {
-				this._updater.incrementalUpdate(result,this._b1._transform,this._b2._transform);
-			} else {
-				this._updater.totalUpdate(result,this._b1._transform,this._b2._transform);
-			}
-		} else {
-			this._manifold._clear();
-		}
-		if(this._touching && !ptouching) {
-			var cc1 = this._s1._contactCallback;
-			var cc2 = this._s2._contactCallback;
-			if(cc1 == cc2) {
-				cc2 = null;
-			}
-			if(cc1 != null) {
-				cc1.beginContact(this);
-			}
-			if(cc2 != null) {
-				cc2.beginContact(this);
-			}
-		}
-		if(!this._touching && ptouching) {
-			var cc11 = this._s1._contactCallback;
-			var cc21 = this._s2._contactCallback;
-			if(cc11 == cc21) {
-				cc21 = null;
-			}
-			if(cc11 != null) {
-				cc11.endContact(this);
-			}
-			if(cc21 != null) {
-				cc21.endContact(this);
-			}
-		}
-		if(this._touching) {
-			var cc12 = this._s1._contactCallback;
-			var cc22 = this._s2._contactCallback;
-			if(cc12 == cc22) {
-				cc22 = null;
-			}
-			if(cc12 != null) {
-				cc12.preSolve(this);
-			}
-			if(cc22 != null) {
-				cc22.preSolve(this);
-			}
-		}
-	}
-	_postSolve() {
-		var cc1 = this._s1._contactCallback;
-		var cc2 = this._s2._contactCallback;
-		if(cc1 == cc2) {
-			cc2 = null;
-		}
-		if(cc1 != null) {
-			cc1.postSolve(this);
-		}
-		if(cc2 != null) {
-			cc2.postSolve(this);
-		}
-	}
-	getShape1() {
-		return this._s1;
-	}
-	getShape2() {
-		return this._s2;
-	}
-	isTouching() {
-		return this._touching;
-	}
-	getManifold() {
-		return this._manifold;
-	}
-	getContactConstraint() {
-		return this._contactConstraint;
-	}
-	getPrev() {
-		return this._prev;
-	}
-	getNext() {
-		return this._next;
-	}
-}
-oimo.dynamics.ContactLink = class oimo_dynamics_ContactLink {
-	constructor() {
-		this._prev = null;
-		this._next = null;
-		this._contact = null;
-		this._other = null;
-	}
-	getContact() {
-		return this._contact;
-	}
-	getOther() {
-		return this._other;
-	}
-	getPrev() {
-		return this._prev;
-	}
-	getNext() {
-		return this._next;
-	}
-}
-oimo.dynamics.ContactManager = class oimo_dynamics_ContactManager {
-	constructor(broadPhase) {
-		this._broadPhase = broadPhase;
-		this._collisionMatrix = new oimo.collision.narrowphase.CollisionMatrix();
-		this._numContacts = 0;
-	}
-	createContacts() {
-		var pp = this._broadPhase._proxyPairList;
-		while(pp != null) {
-			var n = pp._next;
-			while(true) {
-				var s1;
-				var s2;
-				if(pp._p1._id < pp._p2._id) {
-					s1 = pp._p1.userData;
-					s2 = pp._p2.userData;
-				} else {
-					s1 = pp._p2.userData;
-					s2 = pp._p1.userData;
-				}
-				if(!this.shouldCollide(s1,s2)) {
-					break;
-				}
-				var b1 = s1._rigidBody;
-				var b2 = s2._rigidBody;
-				var n1 = b1._numContactLinks;
-				var n2 = b2._numContactLinks;
-				var l;
-				if(n1 < n2) {
-					l = b1._contactLinkList;
-				} else {
-					l = b2._contactLinkList;
-				}
-				var id1 = s1._id;
-				var id2 = s2._id;
-				var found = false;
-				while(l != null) {
-					var n3 = l._next;
-					var c = l._contact;
-					if(c._s1._id == id1 && c._s2._id == id2) {
-						c._latest = true;
-						found = true;
-						break;
-					}
-					l = n3;
-				}
-				if(!found) {
-					var first = this._contactPool;
-					if(first != null) {
-						this._contactPool = first._next;
-						first._next = null;
-					} else {
-						first = new oimo.dynamics.Contact();
-					}
-					var c1 = first;
-					if(this._contactList == null) {
-						this._contactList = c1;
-						this._contactListLast = c1;
-					} else {
-						this._contactListLast._next = c1;
-						c1._prev = this._contactListLast;
-						this._contactListLast = c1;
-					}
-					c1._latest = true;
-					var detector = this._collisionMatrix.detectors[s1._geom._type][s2._geom._type];
-					c1._s1 = s1;
-					c1._s2 = s2;
-					c1._b1 = s1._rigidBody;
-					c1._b2 = s2._rigidBody;
-					c1._touching = false;
-					if(c1._b1._contactLinkList == null) {
-						c1._b1._contactLinkList = c1._link1;
-						c1._b1._contactLinkListLast = c1._link1;
-					} else {
-						c1._b1._contactLinkListLast._next = c1._link1;
-						c1._link1._prev = c1._b1._contactLinkListLast;
-						c1._b1._contactLinkListLast = c1._link1;
-					}
-					if(c1._b2._contactLinkList == null) {
-						c1._b2._contactLinkList = c1._link2;
-						c1._b2._contactLinkListLast = c1._link2;
-					} else {
-						c1._b2._contactLinkListLast._next = c1._link2;
-						c1._link2._prev = c1._b2._contactLinkListLast;
-						c1._b2._contactLinkListLast = c1._link2;
-					}
-					c1._b1._numContactLinks++;
-					c1._b2._numContactLinks++;
-					c1._link1._other = c1._b2;
-					c1._link2._other = c1._b1;
-					c1._link1._contact = c1;
-					c1._link2._contact = c1;
-					c1._detector = detector;
-					var _this = c1._contactConstraint;
-					_this._s1 = s1;
-					_this._s2 = s2;
-					_this._b1 = _this._s1._rigidBody;
-					_this._b2 = _this._s2._rigidBody;
-					_this._tf1 = _this._b1._transform;
-					_this._tf2 = _this._b2._transform;
-					this._numContacts++;
-				}
-				if(!false) {
-					break;
-				}
-			}
-			pp = n;
-		}
-	}
-	destroyOutdatedContacts() {
-		var incremental = this._broadPhase._incremental;
-		var c = this._contactList;
-		while(c != null) {
-			var n = c._next;
-			while(true) {
-				if(c._latest) {
-					c._latest = false;
-					c._shouldBeSkipped = false;
-					break;
-				}
-				if(!incremental) {
-					var prev = c._prev;
-					var next = c._next;
-					if(prev != null) {
-						prev._next = next;
-					}
-					if(next != null) {
-						next._prev = prev;
-					}
-					if(c == this._contactList) {
-						this._contactList = this._contactList._next;
-					}
-					if(c == this._contactListLast) {
-						this._contactListLast = this._contactListLast._prev;
-					}
-					c._next = null;
-					c._prev = null;
-					if(c._touching) {
-						var cc1 = c._s1._contactCallback;
-						var cc2 = c._s2._contactCallback;
-						if(cc1 == cc2) {
-							cc2 = null;
-						}
-						if(cc1 != null) {
-							cc1.endContact(c);
-						}
-						if(cc2 != null) {
-							cc2.endContact(c);
-						}
-					}
-					var prev1 = c._link1._prev;
-					var next1 = c._link1._next;
-					if(prev1 != null) {
-						prev1._next = next1;
-					}
-					if(next1 != null) {
-						next1._prev = prev1;
-					}
-					if(c._link1 == c._b1._contactLinkList) {
-						c._b1._contactLinkList = c._b1._contactLinkList._next;
-					}
-					if(c._link1 == c._b1._contactLinkListLast) {
-						c._b1._contactLinkListLast = c._b1._contactLinkListLast._prev;
-					}
-					c._link1._next = null;
-					c._link1._prev = null;
-					var prev2 = c._link2._prev;
-					var next2 = c._link2._next;
-					if(prev2 != null) {
-						prev2._next = next2;
-					}
-					if(next2 != null) {
-						next2._prev = prev2;
-					}
-					if(c._link2 == c._b2._contactLinkList) {
-						c._b2._contactLinkList = c._b2._contactLinkList._next;
-					}
-					if(c._link2 == c._b2._contactLinkListLast) {
-						c._b2._contactLinkListLast = c._b2._contactLinkListLast._prev;
-					}
-					c._link2._next = null;
-					c._link2._prev = null;
-					c._b1._numContactLinks--;
-					c._b2._numContactLinks--;
-					c._link1._other = null;
-					c._link2._other = null;
-					c._link1._contact = null;
-					c._link2._contact = null;
-					c._s1 = null;
-					c._s2 = null;
-					c._b1 = null;
-					c._b2 = null;
-					c._touching = false;
-					c._cachedDetectorData._clear();
-					c._manifold._clear();
-					c._detector = null;
-					var _this = c._contactConstraint;
-					_this._s1 = null;
-					_this._s2 = null;
-					_this._b1 = null;
-					_this._b2 = null;
-					_this._tf1 = null;
-					_this._tf2 = null;
-					c._next = this._contactPool;
-					this._contactPool = c;
-					this._numContacts--;
-					break;
-				}
-				var s1 = c._s1;
-				var s2 = c._s2;
-				var r1 = s1._rigidBody;
-				var r2 = s2._rigidBody;
-				var active1 = !r1._sleeping && r1._type != 1;
-				var active2 = !r2._sleeping && r2._type != 1;
-				if(!active1 && !active2) {
-					c._shouldBeSkipped = true;
-					break;
-				}
-				var aabb1 = s1._aabb;
-				var aabb2 = s2._aabb;
-				var proxy1 = s1._proxy;
-				var proxy2 = s2._proxy;
-				if(!(proxy1._aabbMinX < proxy2._aabbMaxX && proxy1._aabbMaxX > proxy2._aabbMinX && proxy1._aabbMinY < proxy2._aabbMaxY && proxy1._aabbMaxY > proxy2._aabbMinY && proxy1._aabbMinZ < proxy2._aabbMaxZ && proxy1._aabbMaxZ > proxy2._aabbMinZ) || !this.shouldCollide(s1,s2)) {
-					var prev3 = c._prev;
-					var next3 = c._next;
-					if(prev3 != null) {
-						prev3._next = next3;
-					}
-					if(next3 != null) {
-						next3._prev = prev3;
-					}
-					if(c == this._contactList) {
-						this._contactList = this._contactList._next;
-					}
-					if(c == this._contactListLast) {
-						this._contactListLast = this._contactListLast._prev;
-					}
-					c._next = null;
-					c._prev = null;
-					if(c._touching) {
-						var cc11 = c._s1._contactCallback;
-						var cc21 = c._s2._contactCallback;
-						if(cc11 == cc21) {
-							cc21 = null;
-						}
-						if(cc11 != null) {
-							cc11.endContact(c);
-						}
-						if(cc21 != null) {
-							cc21.endContact(c);
-						}
-					}
-					var prev4 = c._link1._prev;
-					var next4 = c._link1._next;
-					if(prev4 != null) {
-						prev4._next = next4;
-					}
-					if(next4 != null) {
-						next4._prev = prev4;
-					}
-					if(c._link1 == c._b1._contactLinkList) {
-						c._b1._contactLinkList = c._b1._contactLinkList._next;
-					}
-					if(c._link1 == c._b1._contactLinkListLast) {
-						c._b1._contactLinkListLast = c._b1._contactLinkListLast._prev;
-					}
-					c._link1._next = null;
-					c._link1._prev = null;
-					var prev5 = c._link2._prev;
-					var next5 = c._link2._next;
-					if(prev5 != null) {
-						prev5._next = next5;
-					}
-					if(next5 != null) {
-						next5._prev = prev5;
-					}
-					if(c._link2 == c._b2._contactLinkList) {
-						c._b2._contactLinkList = c._b2._contactLinkList._next;
-					}
-					if(c._link2 == c._b2._contactLinkListLast) {
-						c._b2._contactLinkListLast = c._b2._contactLinkListLast._prev;
-					}
-					c._link2._next = null;
-					c._link2._prev = null;
-					c._b1._numContactLinks--;
-					c._b2._numContactLinks--;
-					c._link1._other = null;
-					c._link2._other = null;
-					c._link1._contact = null;
-					c._link2._contact = null;
-					c._s1 = null;
-					c._s2 = null;
-					c._b1 = null;
-					c._b2 = null;
-					c._touching = false;
-					c._cachedDetectorData._clear();
-					c._manifold._clear();
-					c._detector = null;
-					var _this1 = c._contactConstraint;
-					_this1._s1 = null;
-					_this1._s2 = null;
-					_this1._b1 = null;
-					_this1._b2 = null;
-					_this1._tf1 = null;
-					_this1._tf2 = null;
-					c._next = this._contactPool;
-					this._contactPool = c;
-					this._numContacts--;
-					break;
-				}
-				var aabbOverlapping = aabb1._minX < aabb2._maxX && aabb1._maxX > aabb2._minX && aabb1._minY < aabb2._maxY && aabb1._maxY > aabb2._minY && aabb1._minZ < aabb2._maxZ && aabb1._maxZ > aabb2._minZ;
-				c._shouldBeSkipped = !aabbOverlapping;
-				if(!false) {
-					break;
-				}
-			}
-			c = n;
-		}
-	}
-	shouldCollide(s1,s2) {
-		var r1 = s1._rigidBody;
-		var r2 = s2._rigidBody;
-		if(r1 == r2) {
-			return false;
-		}
-		if(r1._type != 0 && r2._type != 0) {
-			return false;
-		}
-		if((s1._collisionGroup & s2._collisionMask) == 0 || (s2._collisionGroup & s1._collisionMask) == 0) {
-			return false;
-		}
-		var jl;
-		var other;
-		if(r1._numJointLinks < r2._numJointLinks) {
-			jl = r1._jointLinkList;
-			other = r2;
-		} else {
-			jl = r2._jointLinkList;
-			other = r1;
-		}
-		while(jl != null) {
-			var n = jl._next;
-			if(jl._other == other && !jl._joint._allowCollision) {
-				return false;
-			}
-			jl = n;
-		}
-		return true;
-	}
-	_updateContacts() {
-		this._broadPhase.collectPairs();
-		this.createContacts();
-		this.destroyOutdatedContacts();
-	}
-	_postSolve() {
-		var c = this._contactList;
-		while(c != null) {
-			var n = c._next;
-			if(c._touching) {
-				c._postSolve();
-			}
-			c = n;
-		}
-	}
-	getNumContacts() {
-		return this._numContacts;
-	}
-	getContactList() {
-		return this._contactList;
-	}
-}
-oimo.dynamics.Island = class oimo_dynamics_Island {
-	constructor() {
-		var this1 = new Array(oimo.common.Setting.islandInitialRigidBodyArraySize);
-		this.rigidBodies = this1;
-		var this2 = new Array(oimo.common.Setting.islandInitialConstraintArraySize);
-		this.solvers = this2;
-		var this3 = new Array(oimo.common.Setting.islandInitialConstraintArraySize);
-		this.solversSi = this3;
-		var this4 = new Array(oimo.common.Setting.islandInitialConstraintArraySize);
-		this.solversNgs = this4;
-		this.numRigidBodies = 0;
-		this.numSolvers = 0;
-		this.numSolversSi = 0;
-		this.numSolversNgs = 0;
-	}
-	_clear() {
-		while(this.numRigidBodies > 0) this.rigidBodies[--this.numRigidBodies] = null;
-		while(this.numSolvers > 0) this.solvers[--this.numSolvers] = null;
-		while(this.numSolversSi > 0) this.solversSi[--this.numSolversSi] = null;
-		while(this.numSolversNgs > 0) this.solversNgs[--this.numSolversNgs] = null;
-	}
-	_addRigidBody(rigidBody) {
-		if(this.numRigidBodies == this.rigidBodies.length) {
-			var newLength = this.numRigidBodies << 1;
-			var this1 = new Array(newLength);
-			var newArray = this1;
-			var _g = 0;
-			var _g1 = this.numRigidBodies;
-			while(_g < _g1) {
-				var i = _g++;
-				newArray[i] = this.rigidBodies[i];
-				this.rigidBodies[i] = null;
-			}
-			this.rigidBodies = newArray;
-		}
-		rigidBody._addedToIsland = true;
-		this.rigidBodies[this.numRigidBodies++] = rigidBody;
-	}
-	_addConstraintSolver(solver,positionCorrection) {
-		if(this.numSolvers == this.solvers.length) {
-			var newLength = this.numSolvers << 1;
-			var this1 = new Array(newLength);
-			var newArray = this1;
-			var _g = 0;
-			var _g1 = this.numSolvers;
-			while(_g < _g1) {
-				var i = _g++;
-				newArray[i] = this.solvers[i];
-				this.solvers[i] = null;
-			}
-			this.solvers = newArray;
-		}
-		solver._addedToIsland = true;
-		this.solvers[this.numSolvers++] = solver;
-		if(positionCorrection == oimo.dynamics.constraint.PositionCorrectionAlgorithm.SPLIT_IMPULSE) {
-			if(this.numSolversSi == this.solversSi.length) {
-				var newLength1 = this.numSolversSi << 1;
-				var this2 = new Array(newLength1);
-				var newArray1 = this2;
-				var _g2 = 0;
-				var _g11 = this.numSolversSi;
-				while(_g2 < _g11) {
-					var i1 = _g2++;
-					newArray1[i1] = this.solversSi[i1];
-					this.solversSi[i1] = null;
-				}
-				this.solversSi = newArray1;
-			}
-			this.solversSi[this.numSolversSi++] = solver;
-		}
-		if(positionCorrection == oimo.dynamics.constraint.PositionCorrectionAlgorithm.NGS) {
-			if(this.numSolversNgs == this.solversNgs.length) {
-				var newLength2 = this.numSolversNgs << 1;
-				var this3 = new Array(newLength2);
-				var newArray2 = this3;
-				var _g3 = 0;
-				var _g12 = this.numSolversNgs;
-				while(_g3 < _g12) {
-					var i2 = _g3++;
-					newArray2[i2] = this.solversNgs[i2];
-					this.solversNgs[i2] = null;
-				}
-				this.solversNgs = newArray2;
-			}
-			this.solversNgs[this.numSolversNgs++] = solver;
-		}
-	}
-	_stepSingleRigidBody(timeStep,rb) {
-		var dt = timeStep.dt;
-		var dst = rb._ptransform;
-		var src = rb._transform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		rb._linearContactImpulseX = 0;
-		rb._linearContactImpulseY = 0;
-		rb._linearContactImpulseZ = 0;
-		rb._angularContactImpulseX = 0;
-		rb._angularContactImpulseY = 0;
-		rb._angularContactImpulseZ = 0;
-		if(rb._autoSleep && rb._velX * rb._velX + rb._velY * rb._velY + rb._velZ * rb._velZ < oimo.common.Setting.sleepingVelocityThreshold * oimo.common.Setting.sleepingVelocityThreshold && rb._angVelX * rb._angVelX + rb._angVelY * rb._angVelY + rb._angVelZ * rb._angVelZ < oimo.common.Setting.sleepingAngularVelocityThreshold * oimo.common.Setting.sleepingAngularVelocityThreshold) {
-			rb._sleepTime += dt;
-			if(rb._sleepTime > oimo.common.Setting.sleepingTimeThreshold) {
-				rb._sleeping = true;
-				rb._sleepTime = 0;
-			}
-		} else {
-			rb._sleepTime = 0;
-		}
-		if(!rb._sleeping) {
-			if(rb._type == 0) {
-				var x = dt * rb._linearDamping;
-				var x2 = x * x;
-				var linScale = 1 / (1 + x + x2 * (0.5 + x * 0.166666666666666657 + x2 * 0.0416666666666666644));
-				var x1 = dt * rb._angularDamping;
-				var x21 = x1 * x1;
-				var angScale = 1 / (1 + x1 + x21 * (0.5 + x1 * 0.166666666666666657 + x21 * 0.0416666666666666644));
-				var linAcc;
-				var linAccX;
-				var linAccY;
-				var linAccZ;
-				var angAcc;
-				var angAccX;
-				var angAccY;
-				var angAccZ;
-				linAccX = this.gravityX * rb._gravityScale;
-				linAccY = this.gravityY * rb._gravityScale;
-				linAccZ = this.gravityZ * rb._gravityScale;
-				linAccX += rb._forceX * rb._invMass;
-				linAccY += rb._forceY * rb._invMass;
-				linAccZ += rb._forceZ * rb._invMass;
-				var __tmp__X;
-				var __tmp__Y;
-				var __tmp__Z;
-				__tmp__X = rb._invInertia00 * rb._torqueX + rb._invInertia01 * rb._torqueY + rb._invInertia02 * rb._torqueZ;
-				__tmp__Y = rb._invInertia10 * rb._torqueX + rb._invInertia11 * rb._torqueY + rb._invInertia12 * rb._torqueZ;
-				__tmp__Z = rb._invInertia20 * rb._torqueX + rb._invInertia21 * rb._torqueY + rb._invInertia22 * rb._torqueZ;
-				angAccX = __tmp__X;
-				angAccY = __tmp__Y;
-				angAccZ = __tmp__Z;
-				rb._velX += linAccX * dt;
-				rb._velY += linAccY * dt;
-				rb._velZ += linAccZ * dt;
-				rb._velX *= linScale;
-				rb._velY *= linScale;
-				rb._velZ *= linScale;
-				rb._angVelX += angAccX * dt;
-				rb._angVelY += angAccY * dt;
-				rb._angVelZ += angAccZ * dt;
-				rb._angVelX *= angScale;
-				rb._angVelY *= angScale;
-				rb._angVelZ *= angScale;
-			}
-			rb._integrate(dt);
-			var s = rb._shapeList;
-			while(s != null) {
-				var n = s._next;
-				var dst1 = s._ptransform;
-				var src1 = s._localTransform;
-				var src2 = rb._ptransform;
-				var __tmp__00;
-				var __tmp__01;
-				var __tmp__02;
-				var __tmp__10;
-				var __tmp__11;
-				var __tmp__12;
-				var __tmp__20;
-				var __tmp__21;
-				var __tmp__22;
-				__tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-				__tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-				__tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-				__tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-				__tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-				__tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-				__tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-				__tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-				__tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-				dst1._rotation00 = __tmp__00;
-				dst1._rotation01 = __tmp__01;
-				dst1._rotation02 = __tmp__02;
-				dst1._rotation10 = __tmp__10;
-				dst1._rotation11 = __tmp__11;
-				dst1._rotation12 = __tmp__12;
-				dst1._rotation20 = __tmp__20;
-				dst1._rotation21 = __tmp__21;
-				dst1._rotation22 = __tmp__22;
-				var __tmp__X1;
-				var __tmp__Y1;
-				var __tmp__Z1;
-				__tmp__X1 = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-				__tmp__Y1 = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-				__tmp__Z1 = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-				dst1._positionX = __tmp__X1;
-				dst1._positionY = __tmp__Y1;
-				dst1._positionZ = __tmp__Z1;
-				dst1._positionX += src2._positionX;
-				dst1._positionY += src2._positionY;
-				dst1._positionZ += src2._positionZ;
-				var dst2 = s._transform;
-				var src11 = s._localTransform;
-				var src21 = rb._transform;
-				var __tmp__001;
-				var __tmp__011;
-				var __tmp__021;
-				var __tmp__101;
-				var __tmp__111;
-				var __tmp__121;
-				var __tmp__201;
-				var __tmp__211;
-				var __tmp__221;
-				__tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-				__tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-				__tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-				__tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-				__tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-				__tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-				__tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-				__tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-				__tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-				dst2._rotation00 = __tmp__001;
-				dst2._rotation01 = __tmp__011;
-				dst2._rotation02 = __tmp__021;
-				dst2._rotation10 = __tmp__101;
-				dst2._rotation11 = __tmp__111;
-				dst2._rotation12 = __tmp__121;
-				dst2._rotation20 = __tmp__201;
-				dst2._rotation21 = __tmp__211;
-				dst2._rotation22 = __tmp__221;
-				var __tmp__X2;
-				var __tmp__Y2;
-				var __tmp__Z2;
-				__tmp__X2 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-				__tmp__Y2 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-				__tmp__Z2 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-				dst2._positionX = __tmp__X2;
-				dst2._positionY = __tmp__Y2;
-				dst2._positionZ = __tmp__Z2;
-				dst2._positionX += src21._positionX;
-				dst2._positionY += src21._positionY;
-				dst2._positionZ += src21._positionZ;
-				var min;
-				var minX;
-				var minY;
-				var minZ;
-				var max;
-				var maxX;
-				var maxY;
-				var maxZ;
-				s._geom._computeAabb(s._aabb,s._ptransform);
-				minX = s._aabb._minX;
-				minY = s._aabb._minY;
-				minZ = s._aabb._minZ;
-				maxX = s._aabb._maxX;
-				maxY = s._aabb._maxY;
-				maxZ = s._aabb._maxZ;
-				s._geom._computeAabb(s._aabb,s._transform);
-				s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-				s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-				s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-				s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-				s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-				s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-				if(s._proxy != null) {
-					var d;
-					var dX;
-					var dY;
-					var dZ;
-					dX = s._transform._positionX - s._ptransform._positionX;
-					dY = s._transform._positionY - s._ptransform._positionY;
-					dZ = s._transform._positionZ - s._ptransform._positionZ;
-					var v = s.displacement;
-					v.x = dX;
-					v.y = dY;
-					v.z = dZ;
-					s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-				}
-				s = n;
-			}
-		}
-	}
-	_step(timeStep,numVelocityIterations,numPositionIterations) {
-		var dt = timeStep.dt;
-		var sleepIsland = true;
-		var _g = 0;
-		var _g1 = this.numRigidBodies;
-		while(_g < _g1) {
-			var i = _g++;
-			var rb = this.rigidBodies[i];
-			var dst = rb._ptransform;
-			var src = rb._transform;
-			dst._positionX = src._positionX;
-			dst._positionY = src._positionY;
-			dst._positionZ = src._positionZ;
-			dst._rotation00 = src._rotation00;
-			dst._rotation01 = src._rotation01;
-			dst._rotation02 = src._rotation02;
-			dst._rotation10 = src._rotation10;
-			dst._rotation11 = src._rotation11;
-			dst._rotation12 = src._rotation12;
-			dst._rotation20 = src._rotation20;
-			dst._rotation21 = src._rotation21;
-			dst._rotation22 = src._rotation22;
-			rb._linearContactImpulseX = 0;
-			rb._linearContactImpulseY = 0;
-			rb._linearContactImpulseZ = 0;
-			rb._angularContactImpulseX = 0;
-			rb._angularContactImpulseY = 0;
-			rb._angularContactImpulseZ = 0;
-			rb._sleeping = false;
-			if(rb._autoSleep && rb._velX * rb._velX + rb._velY * rb._velY + rb._velZ * rb._velZ < oimo.common.Setting.sleepingVelocityThreshold * oimo.common.Setting.sleepingVelocityThreshold && rb._angVelX * rb._angVelX + rb._angVelY * rb._angVelY + rb._angVelZ * rb._angVelZ < oimo.common.Setting.sleepingAngularVelocityThreshold * oimo.common.Setting.sleepingAngularVelocityThreshold) {
-				rb._sleepTime += dt;
-			} else {
-				rb._sleepTime = 0;
-			}
-			if(rb._sleepTime < oimo.common.Setting.sleepingTimeThreshold) {
-				sleepIsland = false;
-			}
-			if(rb._type == 0) {
-				var x = dt * rb._linearDamping;
-				var x2 = x * x;
-				var linScale = 1 / (1 + x + x2 * (0.5 + x * 0.166666666666666657 + x2 * 0.0416666666666666644));
-				var x1 = dt * rb._angularDamping;
-				var x21 = x1 * x1;
-				var angScale = 1 / (1 + x1 + x21 * (0.5 + x1 * 0.166666666666666657 + x21 * 0.0416666666666666644));
-				var linAcc;
-				var linAccX;
-				var linAccY;
-				var linAccZ;
-				var angAcc;
-				var angAccX;
-				var angAccY;
-				var angAccZ;
-				linAccX = this.gravityX * rb._gravityScale;
-				linAccY = this.gravityY * rb._gravityScale;
-				linAccZ = this.gravityZ * rb._gravityScale;
-				linAccX += rb._forceX * rb._invMass;
-				linAccY += rb._forceY * rb._invMass;
-				linAccZ += rb._forceZ * rb._invMass;
-				var __tmp__X;
-				var __tmp__Y;
-				var __tmp__Z;
-				__tmp__X = rb._invInertia00 * rb._torqueX + rb._invInertia01 * rb._torqueY + rb._invInertia02 * rb._torqueZ;
-				__tmp__Y = rb._invInertia10 * rb._torqueX + rb._invInertia11 * rb._torqueY + rb._invInertia12 * rb._torqueZ;
-				__tmp__Z = rb._invInertia20 * rb._torqueX + rb._invInertia21 * rb._torqueY + rb._invInertia22 * rb._torqueZ;
-				angAccX = __tmp__X;
-				angAccY = __tmp__Y;
-				angAccZ = __tmp__Z;
-				rb._velX += linAccX * dt;
-				rb._velY += linAccY * dt;
-				rb._velZ += linAccZ * dt;
-				rb._velX *= linScale;
-				rb._velY *= linScale;
-				rb._velZ *= linScale;
-				rb._angVelX += angAccX * dt;
-				rb._angVelY += angAccY * dt;
-				rb._angVelZ += angAccZ * dt;
-				rb._angVelX *= angScale;
-				rb._angVelY *= angScale;
-				rb._angVelZ *= angScale;
-			}
-		}
-		if(sleepIsland) {
-			var _g2 = 0;
-			var _g3 = this.numRigidBodies;
-			while(_g2 < _g3) {
-				var i1 = _g2++;
-				var rb1 = this.rigidBodies[i1];
-				rb1._sleeping = true;
-				rb1._sleepTime = 0;
-			}
-			return;
-		}
-		var _g21 = 0;
-		var _g31 = this.numSolvers;
-		while(_g21 < _g31) {
-			var i2 = _g21++;
-			var s = this.solvers[i2];
-			s.preSolveVelocity(timeStep);
-		}
-		var _g4 = 0;
-		var _g5 = this.numSolvers;
-		while(_g4 < _g5) {
-			var i3 = _g4++;
-			var s1 = this.solvers[i3];
-			s1.warmStart(timeStep);
-		}
-		var _g6 = 0;
-		var _g7 = numVelocityIterations;
-		while(_g6 < _g7) {
-			var t = _g6++;
-			var _g61 = 0;
-			var _g71 = this.numSolvers;
-			while(_g61 < _g71) {
-				var i4 = _g61++;
-				var s2 = this.solvers[i4];
-				s2.solveVelocity();
-			}
-		}
-		var _g8 = 0;
-		var _g9 = this.numSolvers;
-		while(_g8 < _g9) {
-			var i5 = _g8++;
-			var s3 = this.solvers[i5];
-			s3.postSolveVelocity(timeStep);
-		}
-		var _g10 = 0;
-		var _g11 = this.numRigidBodies;
-		while(_g10 < _g11) {
-			var i6 = _g10++;
-			var rb2 = this.rigidBodies[i6];
-			rb2._integrate(dt);
-		}
-		var _g12 = 0;
-		var _g13 = this.numSolversSi;
-		while(_g12 < _g13) {
-			var i7 = _g12++;
-			var s4 = this.solversSi[i7];
-			s4.preSolvePosition(timeStep);
-		}
-		var _g14 = 0;
-		var _g15 = numPositionIterations;
-		while(_g14 < _g15) {
-			var t1 = _g14++;
-			var _g141 = 0;
-			var _g151 = this.numSolversSi;
-			while(_g141 < _g151) {
-				var i8 = _g141++;
-				var s5 = this.solversSi[i8];
-				s5.solvePositionSplitImpulse();
-			}
-		}
-		var _g16 = 0;
-		var _g17 = this.numRigidBodies;
-		while(_g16 < _g17) {
-			var i9 = _g16++;
-			var rb3 = this.rigidBodies[i9];
-			rb3._integratePseudoVelocity();
-		}
-		var _g18 = 0;
-		var _g19 = this.numSolversNgs;
-		while(_g18 < _g19) {
-			var i10 = _g18++;
-			var s6 = this.solversNgs[i10];
-			s6.preSolvePosition(timeStep);
-		}
-		var _g20 = 0;
-		var _g211 = numPositionIterations;
-		while(_g20 < _g211) {
-			var t2 = _g20++;
-			var _g201 = 0;
-			var _g212 = this.numSolversNgs;
-			while(_g201 < _g212) {
-				var i11 = _g201++;
-				var s7 = this.solversNgs[i11];
-				s7.solvePositionNgs(timeStep);
-			}
-		}
-		var _g22 = 0;
-		var _g23 = this.numSolvers;
-		while(_g22 < _g23) {
-			var i12 = _g22++;
-			var s8 = this.solvers[i12];
-			s8.postSolve();
-		}
-		var _g24 = 0;
-		var _g25 = this.numRigidBodies;
-		while(_g24 < _g25) {
-			var i13 = _g24++;
-			var rb4 = this.rigidBodies[i13];
-			var s9 = rb4._shapeList;
-			while(s9 != null) {
-				var n = s9._next;
-				var dst1 = s9._ptransform;
-				var src1 = s9._localTransform;
-				var src2 = rb4._ptransform;
-				var __tmp__00;
-				var __tmp__01;
-				var __tmp__02;
-				var __tmp__10;
-				var __tmp__11;
-				var __tmp__12;
-				var __tmp__20;
-				var __tmp__21;
-				var __tmp__22;
-				__tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-				__tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-				__tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-				__tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-				__tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-				__tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-				__tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-				__tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-				__tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-				dst1._rotation00 = __tmp__00;
-				dst1._rotation01 = __tmp__01;
-				dst1._rotation02 = __tmp__02;
-				dst1._rotation10 = __tmp__10;
-				dst1._rotation11 = __tmp__11;
-				dst1._rotation12 = __tmp__12;
-				dst1._rotation20 = __tmp__20;
-				dst1._rotation21 = __tmp__21;
-				dst1._rotation22 = __tmp__22;
-				var __tmp__X1;
-				var __tmp__Y1;
-				var __tmp__Z1;
-				__tmp__X1 = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-				__tmp__Y1 = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-				__tmp__Z1 = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-				dst1._positionX = __tmp__X1;
-				dst1._positionY = __tmp__Y1;
-				dst1._positionZ = __tmp__Z1;
-				dst1._positionX += src2._positionX;
-				dst1._positionY += src2._positionY;
-				dst1._positionZ += src2._positionZ;
-				var dst2 = s9._transform;
-				var src11 = s9._localTransform;
-				var src21 = rb4._transform;
-				var __tmp__001;
-				var __tmp__011;
-				var __tmp__021;
-				var __tmp__101;
-				var __tmp__111;
-				var __tmp__121;
-				var __tmp__201;
-				var __tmp__211;
-				var __tmp__221;
-				__tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-				__tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-				__tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-				__tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-				__tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-				__tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-				__tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-				__tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-				__tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-				dst2._rotation00 = __tmp__001;
-				dst2._rotation01 = __tmp__011;
-				dst2._rotation02 = __tmp__021;
-				dst2._rotation10 = __tmp__101;
-				dst2._rotation11 = __tmp__111;
-				dst2._rotation12 = __tmp__121;
-				dst2._rotation20 = __tmp__201;
-				dst2._rotation21 = __tmp__211;
-				dst2._rotation22 = __tmp__221;
-				var __tmp__X2;
-				var __tmp__Y2;
-				var __tmp__Z2;
-				__tmp__X2 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-				__tmp__Y2 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-				__tmp__Z2 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-				dst2._positionX = __tmp__X2;
-				dst2._positionY = __tmp__Y2;
-				dst2._positionZ = __tmp__Z2;
-				dst2._positionX += src21._positionX;
-				dst2._positionY += src21._positionY;
-				dst2._positionZ += src21._positionZ;
-				var min;
-				var minX;
-				var minY;
-				var minZ;
-				var max;
-				var maxX;
-				var maxY;
-				var maxZ;
-				s9._geom._computeAabb(s9._aabb,s9._ptransform);
-				minX = s9._aabb._minX;
-				minY = s9._aabb._minY;
-				minZ = s9._aabb._minZ;
-				maxX = s9._aabb._maxX;
-				maxY = s9._aabb._maxY;
-				maxZ = s9._aabb._maxZ;
-				s9._geom._computeAabb(s9._aabb,s9._transform);
-				s9._aabb._minX = minX < s9._aabb._minX ? minX : s9._aabb._minX;
-				s9._aabb._minY = minY < s9._aabb._minY ? minY : s9._aabb._minY;
-				s9._aabb._minZ = minZ < s9._aabb._minZ ? minZ : s9._aabb._minZ;
-				s9._aabb._maxX = maxX > s9._aabb._maxX ? maxX : s9._aabb._maxX;
-				s9._aabb._maxY = maxY > s9._aabb._maxY ? maxY : s9._aabb._maxY;
-				s9._aabb._maxZ = maxZ > s9._aabb._maxZ ? maxZ : s9._aabb._maxZ;
-				if(s9._proxy != null) {
-					var d;
-					var dX;
-					var dY;
-					var dZ;
-					dX = s9._transform._positionX - s9._ptransform._positionX;
-					dY = s9._transform._positionY - s9._ptransform._positionY;
-					dZ = s9._transform._positionZ - s9._ptransform._positionZ;
-					var v = s9.displacement;
-					v.x = dX;
-					v.y = dY;
-					v.z = dZ;
-					s9._rigidBody._world._broadPhase.moveProxy(s9._proxy,s9._aabb,s9.displacement);
-				}
-				s9 = n;
-			}
-		}
-	}
-}
-oimo.dynamics.TimeStep = class oimo_dynamics_TimeStep {
-	constructor() {
-		this.dt = 0;
-		this.invDt = 0;
-		this.dtRatio = 1;
-	}
-}
-oimo.dynamics.World = class oimo_dynamics_World {
-	constructor(broadPhaseType,gravity) {
-		if(broadPhaseType == null) {
-			broadPhaseType = 2;
-		}
-		switch(broadPhaseType) {
-		case 1:
-			this._broadPhase = new oimo.collision.broadphase.bruteforce.BruteForceBroadPhase();
-			break;
-		case 2:
-			this._broadPhase = new oimo.collision.broadphase.bvh.BvhBroadPhase();
-			break;
-		}
-		this._contactManager = new oimo.dynamics.ContactManager(this._broadPhase);
-		if(gravity == null) {
-			gravity = new oimo.common.Vec3(0,-9.80665,0);
-		}
-		this._gravity = new oimo.common.Vec3(gravity.x,gravity.y,gravity.z);
-		this._rigidBodyList = null;
-		this._rigidBodyListLast = null;
-		this._jointList = null;
-		this._jointListLast = null;
-		this._numRigidBodies = 0;
-		this._numShapes = 0;
-		this._numJoints = 0;
-		this._numIslands = 0;
-		this._numVelocityIterations = 10;
-		this._numPositionIterations = 5;
-		this._rayCastWrapper = new oimo.dynamics._World.RayCastWrapper();
-		this._convexCastWrapper = new oimo.dynamics._World.ConvexCastWrapper();
-		this._aabbTestWrapper = new oimo.dynamics._World.AabbTestWrapper();
-		this._island = new oimo.dynamics.Island();
-		var this1 = new Array(oimo.common.Setting.islandInitialConstraintArraySize);
-		this._solversInIslands = this1;
-		var this2 = new Array(oimo.common.Setting.islandInitialRigidBodyArraySize);
-		this._rigidBodyStack = this2;
-		this._timeStep = new oimo.dynamics.TimeStep();
-		this._pool = new oimo.common.Pool();
-		this._shapeIdCount = 0;
-	}
-	_updateContacts() {
-		var st = Date.now() / 1000;
-		this._contactManager._updateContacts();
-		var en = Date.now() / 1000;
-		oimo.dynamics.common.Performance.broadPhaseCollisionTime = (en - st) * 1000;
-		var st1 = Date.now() / 1000;
-		var c = this._contactManager._contactList;
-		while(c != null) {
-			var n = c._next;
-			if(!c._shouldBeSkipped) {
-				c._updateManifold();
-			}
-			c = n;
-		}
-		var en1 = Date.now() / 1000;
-		oimo.dynamics.common.Performance.narrowPhaseCollisionTime = (en1 - st1) * 1000;
-	}
-	_solveIslands() {
-		var st = Date.now() / 1000;
-		if(oimo.common.Setting.disableSleeping) {
-			var b = this._rigidBodyList;
-			while(b != null) {
-				var n = b._next;
-				b._sleeping = false;
-				b._sleepTime = 0;
-				b = n;
-			}
-		}
-		if(this._rigidBodyStack.length < this._numRigidBodies) {
-			var newStackSize = this._rigidBodyStack.length << 1;
-			while(newStackSize < this._numRigidBodies) newStackSize <<= 1;
-			var this1 = new Array(newStackSize);
-			this._rigidBodyStack = this1;
-		}
-		this._numIslands = 0;
-		var _this = this._island;
-		var v = this._gravity;
-		_this.gravityX = v.x;
-		_this.gravityY = v.y;
-		_this.gravityZ = v.z;
-		var b1 = this._rigidBodyList;
-		this._numSolversInIslands = 0;
-		while(b1 != null) {
-			var n1 = b1._next;
-			while(!(b1._addedToIsland || b1._sleeping || b1._type == 1)) {
-				if(b1._numContactLinks == 0 && b1._numJointLinks == 0) {
-					this._island._stepSingleRigidBody(this._timeStep,b1);
-					this._numIslands++;
-					break;
-				}
-				this.buildIsland(b1);
-				this._island._step(this._timeStep,this._numVelocityIterations,this._numPositionIterations);
-				this._island._clear();
-				this._numIslands++;
-				if(!false) {
-					break;
-				}
-			}
-			b1 = n1;
-		}
-		this._contactManager._postSolve();
-		b1 = this._rigidBodyList;
-		while(b1 != null) {
-			var n2 = b1._next;
-			b1._addedToIsland = false;
-			b1 = n2;
-		}
-		b1 = this._rigidBodyList;
-		while(b1 != null) {
-			var n3 = b1._next;
-			b1._forceX = 0;
-			b1._forceY = 0;
-			b1._forceZ = 0;
-			b1._torqueX = 0;
-			b1._torqueY = 0;
-			b1._torqueZ = 0;
-			b1 = n3;
-		}
-		while(this._numSolversInIslands > 0) {
-			this._solversInIslands[--this._numSolversInIslands]._addedToIsland = false;
-			this._solversInIslands[this._numSolversInIslands] = null;
-		}
-		var en = Date.now() / 1000;
-		oimo.dynamics.common.Performance.dynamicsTime = (en - st) * 1000;
-	}
-	buildIsland(base) {
-		var stackCount = 1;
-		this._island._addRigidBody(base);
-		this._rigidBodyStack[0] = base;
-		while(stackCount > 0) {
-			var rb = this._rigidBodyStack[--stackCount];
-			this._rigidBodyStack[stackCount] = null;
-			if(rb._type == 1) {
-				continue;
-			}
-			var cl = rb._contactLinkList;
-			while(cl != null) {
-				var n = cl._next;
-				var cc = cl._contact._contactConstraint;
-				var ccs = cl._contact._contactConstraint._solver;
-				if(cc.isTouching() && !ccs._addedToIsland) {
-					if(this._solversInIslands.length == this._numSolversInIslands) {
-						var newLength = this._numSolversInIslands << 1;
-						var this1 = new Array(newLength);
-						var newArray = this1;
-						var _g = 0;
-						var _g1 = this._numSolversInIslands;
-						while(_g < _g1) {
-							var i = _g++;
-							newArray[i] = this._solversInIslands[i];
-							this._solversInIslands[i] = null;
-						}
-						this._solversInIslands = newArray;
-					}
-					this._solversInIslands[this._numSolversInIslands++] = ccs;
-					this._island._addConstraintSolver(ccs,cc._positionCorrectionAlgorithm);
-					var other = cl._other;
-					if(!other._addedToIsland) {
-						this._island._addRigidBody(other);
-						this._rigidBodyStack[stackCount++] = other;
-					}
-				}
-				cl = n;
-			}
-			var jl = rb._jointLinkList;
-			while(jl != null) {
-				var n1 = jl._next;
-				var j = jl._joint;
-				var js1 = j._solver;
-				if(!js1._addedToIsland) {
-					if(this._solversInIslands.length == this._numSolversInIslands) {
-						var newLength1 = this._numSolversInIslands << 1;
-						var this2 = new Array(newLength1);
-						var newArray1 = this2;
-						var _g2 = 0;
-						var _g11 = this._numSolversInIslands;
-						while(_g2 < _g11) {
-							var i1 = _g2++;
-							newArray1[i1] = this._solversInIslands[i1];
-							this._solversInIslands[i1] = null;
-						}
-						this._solversInIslands = newArray1;
-					}
-					this._solversInIslands[this._numSolversInIslands++] = js1;
-					this._island._addConstraintSolver(js1,j._positionCorrectionAlgorithm);
-					var other1 = jl._other;
-					if(!other1._addedToIsland) {
-						this._island._addRigidBody(other1);
-						this._rigidBodyStack[stackCount++] = other1;
-					}
-				}
-				jl = n1;
-			}
-		}
-	}
-	_drawBvh(d,tree) {
-		if(d.drawBvh) {
-			this._drawBvhNode(d,tree._root,0,d.style.bvhNodeColor);
-		}
-	}
-	_drawBvhNode(d,node,level,color) {
-		if(node == null) {
-			return;
-		}
-		if(level >= d.drawBvhMinLevel && level <= d.drawBvhMaxLevel) {
-			var _this = this._pool;
-			var min = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-			var _this1 = this._pool;
-			var max = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
-			var v = min;
-			v.x = node._aabbMinX;
-			v.y = node._aabbMinY;
-			v.z = node._aabbMinZ;
-			var v1 = max;
-			v1.x = node._aabbMaxX;
-			v1.y = node._aabbMaxY;
-			v1.z = node._aabbMaxZ;
-			d.aabb(min,max,color);
-			var _this2 = this._pool;
-			var mat3 = null;
-			var mat4 = null;
-			var quat = null;
-			if(min != null) {
-				min.zero();
-				if(_this2.sizeVec3 == _this2.stackVec3.length) {
-					var newLength = _this2.sizeVec3 << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g = 0;
-					var _g1 = _this2.sizeVec3;
-					while(_g < _g1) {
-						var i = _g++;
-						newArray[i] = _this2.stackVec3[i];
-						_this2.stackVec3[i] = null;
-					}
-					_this2.stackVec3 = newArray;
-				}
-				_this2.stackVec3[_this2.sizeVec3++] = min;
-			}
-			if(mat3 != null) {
-				var t00 = 1;
-				var t01 = 0;
-				var t02 = 0;
-				var t10 = 0;
-				var t11 = 1;
-				var t12 = 0;
-				var t20 = 0;
-				var t21 = 0;
-				var t22 = 1;
-				mat3.e00 = t00;
-				mat3.e01 = t01;
-				mat3.e02 = t02;
-				mat3.e10 = t10;
-				mat3.e11 = t11;
-				mat3.e12 = t12;
-				mat3.e20 = t20;
-				mat3.e21 = t21;
-				mat3.e22 = t22;
-				if(_this2.sizeMat3 == _this2.stackMat3.length) {
-					var newLength1 = _this2.sizeMat3 << 1;
-					var this2 = new Array(newLength1);
-					var newArray1 = this2;
-					var _g2 = 0;
-					var _g11 = _this2.sizeMat3;
-					while(_g2 < _g11) {
-						var i1 = _g2++;
-						newArray1[i1] = _this2.stackMat3[i1];
-						_this2.stackMat3[i1] = null;
-					}
-					_this2.stackMat3 = newArray1;
-				}
-				_this2.stackMat3[_this2.sizeMat3++] = mat3;
-			}
-			if(mat4 != null) {
-				var t001 = 1;
-				var t011 = 0;
-				var t021 = 0;
-				var t03 = 0;
-				var t101 = 0;
-				var t111 = 1;
-				var t121 = 0;
-				var t13 = 0;
-				var t201 = 0;
-				var t211 = 0;
-				var t221 = 1;
-				var t23 = 0;
-				var t30 = 0;
-				var t31 = 0;
-				var t32 = 0;
-				var t33 = 1;
-				mat4.e00 = t001;
-				mat4.e01 = t011;
-				mat4.e02 = t021;
-				mat4.e03 = t03;
-				mat4.e10 = t101;
-				mat4.e11 = t111;
-				mat4.e12 = t121;
-				mat4.e13 = t13;
-				mat4.e20 = t201;
-				mat4.e21 = t211;
-				mat4.e22 = t221;
-				mat4.e23 = t23;
-				mat4.e30 = t30;
-				mat4.e31 = t31;
-				mat4.e32 = t32;
-				mat4.e33 = t33;
-				if(_this2.sizeMat4 == _this2.stackMat4.length) {
-					var newLength2 = _this2.sizeMat4 << 1;
-					var this3 = new Array(newLength2);
-					var newArray2 = this3;
-					var _g3 = 0;
-					var _g12 = _this2.sizeMat4;
-					while(_g3 < _g12) {
-						var i2 = _g3++;
-						newArray2[i2] = _this2.stackMat4[i2];
-						_this2.stackMat4[i2] = null;
-					}
-					_this2.stackMat4 = newArray2;
-				}
-				_this2.stackMat4[_this2.sizeMat4++] = mat4;
-			}
-			if(quat != null) {
-				var tx = 0;
-				var ty = 0;
-				var tz = 0;
-				var tw = 1;
-				quat.x = tx;
-				quat.y = ty;
-				quat.z = tz;
-				quat.w = tw;
-				if(_this2.sizeQuat == _this2.stackQuat.length) {
-					var newLength3 = _this2.sizeQuat << 1;
-					var this4 = new Array(newLength3);
-					var newArray3 = this4;
-					var _g4 = 0;
-					var _g13 = _this2.sizeQuat;
-					while(_g4 < _g13) {
-						var i3 = _g4++;
-						newArray3[i3] = _this2.stackQuat[i3];
-						_this2.stackQuat[i3] = null;
-					}
-					_this2.stackQuat = newArray3;
-				}
-				_this2.stackQuat[_this2.sizeQuat++] = quat;
-			}
-			var _this3 = this._pool;
-			var mat31 = null;
-			var mat41 = null;
-			var quat1 = null;
-			if(max != null) {
-				max.zero();
-				if(_this3.sizeVec3 == _this3.stackVec3.length) {
-					var newLength4 = _this3.sizeVec3 << 1;
-					var this5 = new Array(newLength4);
-					var newArray4 = this5;
-					var _g5 = 0;
-					var _g14 = _this3.sizeVec3;
-					while(_g5 < _g14) {
-						var i4 = _g5++;
-						newArray4[i4] = _this3.stackVec3[i4];
-						_this3.stackVec3[i4] = null;
-					}
-					_this3.stackVec3 = newArray4;
-				}
-				_this3.stackVec3[_this3.sizeVec3++] = max;
-			}
-			if(mat31 != null) {
-				var t002 = 1;
-				var t012 = 0;
-				var t022 = 0;
-				var t102 = 0;
-				var t112 = 1;
-				var t122 = 0;
-				var t202 = 0;
-				var t212 = 0;
-				var t222 = 1;
-				mat31.e00 = t002;
-				mat31.e01 = t012;
-				mat31.e02 = t022;
-				mat31.e10 = t102;
-				mat31.e11 = t112;
-				mat31.e12 = t122;
-				mat31.e20 = t202;
-				mat31.e21 = t212;
-				mat31.e22 = t222;
-				if(_this3.sizeMat3 == _this3.stackMat3.length) {
-					var newLength5 = _this3.sizeMat3 << 1;
-					var this6 = new Array(newLength5);
-					var newArray5 = this6;
-					var _g6 = 0;
-					var _g15 = _this3.sizeMat3;
-					while(_g6 < _g15) {
-						var i5 = _g6++;
-						newArray5[i5] = _this3.stackMat3[i5];
-						_this3.stackMat3[i5] = null;
-					}
-					_this3.stackMat3 = newArray5;
-				}
-				_this3.stackMat3[_this3.sizeMat3++] = mat31;
-			}
-			if(mat41 != null) {
-				var t003 = 1;
-				var t013 = 0;
-				var t023 = 0;
-				var t031 = 0;
-				var t103 = 0;
-				var t113 = 1;
-				var t123 = 0;
-				var t131 = 0;
-				var t203 = 0;
-				var t213 = 0;
-				var t223 = 1;
-				var t231 = 0;
-				var t301 = 0;
-				var t311 = 0;
-				var t321 = 0;
-				var t331 = 1;
-				mat41.e00 = t003;
-				mat41.e01 = t013;
-				mat41.e02 = t023;
-				mat41.e03 = t031;
-				mat41.e10 = t103;
-				mat41.e11 = t113;
-				mat41.e12 = t123;
-				mat41.e13 = t131;
-				mat41.e20 = t203;
-				mat41.e21 = t213;
-				mat41.e22 = t223;
-				mat41.e23 = t231;
-				mat41.e30 = t301;
-				mat41.e31 = t311;
-				mat41.e32 = t321;
-				mat41.e33 = t331;
-				if(_this3.sizeMat4 == _this3.stackMat4.length) {
-					var newLength6 = _this3.sizeMat4 << 1;
-					var this7 = new Array(newLength6);
-					var newArray6 = this7;
-					var _g7 = 0;
-					var _g16 = _this3.sizeMat4;
-					while(_g7 < _g16) {
-						var i6 = _g7++;
-						newArray6[i6] = _this3.stackMat4[i6];
-						_this3.stackMat4[i6] = null;
-					}
-					_this3.stackMat4 = newArray6;
-				}
-				_this3.stackMat4[_this3.sizeMat4++] = mat41;
-			}
-			if(quat1 != null) {
-				var tx1 = 0;
-				var ty1 = 0;
-				var tz1 = 0;
-				var tw1 = 1;
-				quat1.x = tx1;
-				quat1.y = ty1;
-				quat1.z = tz1;
-				quat1.w = tw1;
-				if(_this3.sizeQuat == _this3.stackQuat.length) {
-					var newLength7 = _this3.sizeQuat << 1;
-					var this8 = new Array(newLength7);
-					var newArray7 = this8;
-					var _g8 = 0;
-					var _g17 = _this3.sizeQuat;
-					while(_g8 < _g17) {
-						var i7 = _g8++;
-						newArray7[i7] = _this3.stackQuat[i7];
-						_this3.stackQuat[i7] = null;
-					}
-					_this3.stackQuat = newArray7;
-				}
-				_this3.stackQuat[_this3.sizeQuat++] = quat1;
-			}
-		}
-		this._drawBvhNode(d,node._children[0],level + 1,color);
-		this._drawBvhNode(d,node._children[1],level + 1,color);
-	}
-	_drawRigidBodies(d) {
-		var style = d.style;
-		var r = this._rigidBodyList;
-		while(r != null) {
-			var n = r._next;
-			if(d.drawBases) {
-				var style1 = d.style;
-				d.basis(r._transform,style1.basisLength,style1.basisColorX,style1.basisColorY,style1.basisColorZ);
-			}
-			var shapeColor = null;
-			var isDynamic = r._type == 0;
-			if(!isDynamic) {
-				shapeColor = r._type == 2 ? style.kinematicShapeColor : style.staticShapeColor;
-			}
-			var s = r._shapeList;
-			while(s != null) {
-				var n1 = s._next;
-				if(isDynamic) {
-					if((s._id & 1) == 0) {
-						shapeColor = r._sleeping ? style.sleepingShapeColor1 : r._sleepTime > oimo.common.Setting.sleepingTimeThreshold ? style.sleepyShapeColor1 : style.shapeColor1;
-					} else {
-						shapeColor = r._sleeping ? style.sleepingShapeColor2 : r._sleepTime > oimo.common.Setting.sleepingTimeThreshold ? style.sleepyShapeColor2 : style.shapeColor2;
-					}
-				}
-				if(d.drawShapes) {
-					var geom = s._geom;
-					var tf = s._transform;
-					switch(geom._type) {
-					case 0:
-						d.sphere(tf,geom._radius,shapeColor);
-						break;
-					case 1:
-						var g = geom;
-						var _this = this._pool;
-						var hx = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-						var v = hx;
-						v.x = g._halfExtentsX;
-						v.y = g._halfExtentsY;
-						v.z = g._halfExtentsZ;
-						d.box(tf,hx,shapeColor);
-						var _this1 = this._pool;
-						var mat3 = null;
-						var mat4 = null;
-						var quat = null;
-						if(hx != null) {
-							hx.zero();
-							if(_this1.sizeVec3 == _this1.stackVec3.length) {
-								var newLength = _this1.sizeVec3 << 1;
-								var this1 = new Array(newLength);
-								var newArray = this1;
-								var _g = 0;
-								var _g1 = _this1.sizeVec3;
-								while(_g < _g1) {
-									var i = _g++;
-									newArray[i] = _this1.stackVec3[i];
-									_this1.stackVec3[i] = null;
-								}
-								_this1.stackVec3 = newArray;
-							}
-							_this1.stackVec3[_this1.sizeVec3++] = hx;
-						}
-						if(mat3 != null) {
-							var t00 = 1;
-							var t01 = 0;
-							var t02 = 0;
-							var t10 = 0;
-							var t11 = 1;
-							var t12 = 0;
-							var t20 = 0;
-							var t21 = 0;
-							var t22 = 1;
-							mat3.e00 = t00;
-							mat3.e01 = t01;
-							mat3.e02 = t02;
-							mat3.e10 = t10;
-							mat3.e11 = t11;
-							mat3.e12 = t12;
-							mat3.e20 = t20;
-							mat3.e21 = t21;
-							mat3.e22 = t22;
-							if(_this1.sizeMat3 == _this1.stackMat3.length) {
-								var newLength1 = _this1.sizeMat3 << 1;
-								var this2 = new Array(newLength1);
-								var newArray1 = this2;
-								var _g2 = 0;
-								var _g11 = _this1.sizeMat3;
-								while(_g2 < _g11) {
-									var i1 = _g2++;
-									newArray1[i1] = _this1.stackMat3[i1];
-									_this1.stackMat3[i1] = null;
-								}
-								_this1.stackMat3 = newArray1;
-							}
-							_this1.stackMat3[_this1.sizeMat3++] = mat3;
-						}
-						if(mat4 != null) {
-							var t001 = 1;
-							var t011 = 0;
-							var t021 = 0;
-							var t03 = 0;
-							var t101 = 0;
-							var t111 = 1;
-							var t121 = 0;
-							var t13 = 0;
-							var t201 = 0;
-							var t211 = 0;
-							var t221 = 1;
-							var t23 = 0;
-							var t30 = 0;
-							var t31 = 0;
-							var t32 = 0;
-							var t33 = 1;
-							mat4.e00 = t001;
-							mat4.e01 = t011;
-							mat4.e02 = t021;
-							mat4.e03 = t03;
-							mat4.e10 = t101;
-							mat4.e11 = t111;
-							mat4.e12 = t121;
-							mat4.e13 = t13;
-							mat4.e20 = t201;
-							mat4.e21 = t211;
-							mat4.e22 = t221;
-							mat4.e23 = t23;
-							mat4.e30 = t30;
-							mat4.e31 = t31;
-							mat4.e32 = t32;
-							mat4.e33 = t33;
-							if(_this1.sizeMat4 == _this1.stackMat4.length) {
-								var newLength2 = _this1.sizeMat4 << 1;
-								var this3 = new Array(newLength2);
-								var newArray2 = this3;
-								var _g3 = 0;
-								var _g12 = _this1.sizeMat4;
-								while(_g3 < _g12) {
-									var i2 = _g3++;
-									newArray2[i2] = _this1.stackMat4[i2];
-									_this1.stackMat4[i2] = null;
-								}
-								_this1.stackMat4 = newArray2;
-							}
-							_this1.stackMat4[_this1.sizeMat4++] = mat4;
-						}
-						if(quat != null) {
-							var tx = 0;
-							var ty = 0;
-							var tz = 0;
-							var tw = 1;
-							quat.x = tx;
-							quat.y = ty;
-							quat.z = tz;
-							quat.w = tw;
-							if(_this1.sizeQuat == _this1.stackQuat.length) {
-								var newLength3 = _this1.sizeQuat << 1;
-								var this4 = new Array(newLength3);
-								var newArray3 = this4;
-								var _g4 = 0;
-								var _g13 = _this1.sizeQuat;
-								while(_g4 < _g13) {
-									var i3 = _g4++;
-									newArray3[i3] = _this1.stackQuat[i3];
-									_this1.stackQuat[i3] = null;
-								}
-								_this1.stackQuat = newArray3;
-							}
-							_this1.stackQuat[_this1.sizeQuat++] = quat;
-						}
-						break;
-					case 2:
-						var g1 = geom;
-						d.cylinder(tf,g1._radius,g1._halfHeight,shapeColor);
-						break;
-					case 3:
-						var g2 = geom;
-						d.cone(tf,g2._radius,g2._halfHeight,shapeColor);
-						break;
-					case 4:
-						var g3 = geom;
-						d.capsule(tf,g3._radius,g3._halfHeight,shapeColor);
-						break;
-					case 5:
-						var g4 = geom;
-						var n2 = g4._numVertices;
-						var _this2 = this._pool;
-						var v1 = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
-						var _this3 = this._pool;
-						var v2 = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
-						var _this4 = this._pool;
-						var v3 = _this4.sizeVec3 == 0 ? new oimo.common.Vec3() : _this4.stackVec3[--_this4.sizeVec3];
-						var _this5 = this._pool;
-						var v12 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
-						var _this6 = this._pool;
-						var v13 = _this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3];
-						var _this7 = this._pool;
-						var normal = _this7.sizeVec3 == 0 ? new oimo.common.Vec3() : _this7.stackVec3[--_this7.sizeVec3];
-						var _this8 = this._pool;
-						var m = _this8.sizeMat3 == 0 ? new oimo.common.Mat3() : _this8.stackMat3[--_this8.sizeMat3];
-						var _this9 = this._pool;
-						var o = _this9.sizeVec3 == 0 ? new oimo.common.Vec3() : _this9.stackVec3[--_this9.sizeVec3];
-						var m1 = m;
-						m1.e00 = tf._rotation00;
-						m1.e01 = tf._rotation01;
-						m1.e02 = tf._rotation02;
-						m1.e10 = tf._rotation10;
-						m1.e11 = tf._rotation11;
-						m1.e12 = tf._rotation12;
-						m1.e20 = tf._rotation20;
-						m1.e21 = tf._rotation21;
-						m1.e22 = tf._rotation22;
-						var v4 = o;
-						v4.x = tf._positionX;
-						v4.y = tf._positionY;
-						v4.z = tf._positionZ;
-						var _g5 = 0;
-						var _g14 = n2;
-						while(_g5 < _g14) {
-							var i4 = _g5++;
-							var _this10 = g4._tmpVertices[i4];
-							var v5 = g4._vertices[i4];
-							_this10.x = v5.x;
-							_this10.y = v5.y;
-							_this10.z = v5.z;
-							var _this11 = _this10;
-							var tx1 = _this11.x * m.e00 + _this11.y * m.e01 + _this11.z * m.e02;
-							var ty1 = _this11.x * m.e10 + _this11.y * m.e11 + _this11.z * m.e12;
-							var tz1 = _this11.x * m.e20 + _this11.y * m.e21 + _this11.z * m.e22;
-							_this11.x = tx1;
-							_this11.y = ty1;
-							_this11.z = tz1;
-							var _this12 = _this11;
-							var tx2 = _this12.x + o.x;
-							var ty2 = _this12.y + o.y;
-							var tz2 = _this12.z + o.z;
-							_this12.x = tx2;
-							_this12.y = ty2;
-							_this12.z = tz2;
-						}
-						if(n2 > 30) {
-							var _g21 = 0;
-							var _g31 = n2;
-							while(_g21 < _g31) {
-								var i5 = _g21++;
-								var v6 = g4._tmpVertices[i5];
-								v1.x = v6.x;
-								v1.y = v6.y;
-								v1.z = v6.z;
-								var v7 = g4._tmpVertices[(i5 + 1) % n2];
-								v2.x = v7.x;
-								v2.y = v7.y;
-								v2.z = v7.z;
-								d.line(v1,v2,shapeColor);
-							}
-						} else if(this._debugDraw.wireframe || n2 > 10) {
-							var _g22 = 0;
-							var _g32 = n2;
-							while(_g22 < _g32) {
-								var i6 = _g22++;
-								var v8 = g4._tmpVertices[i6];
-								v1.x = v8.x;
-								v1.y = v8.y;
-								v1.z = v8.z;
-								var _g23 = 0;
-								var _g33 = i6;
-								while(_g23 < _g33) {
-									var j = _g23++;
-									var v9 = g4._tmpVertices[j];
-									v2.x = v9.x;
-									v2.y = v9.y;
-									v2.z = v9.z;
-									d.line(v1,v2,shapeColor);
-								}
-							}
-						} else {
-							var _g24 = 0;
-							var _g34 = n2;
-							while(_g24 < _g34) {
-								var i7 = _g24++;
-								var v10 = g4._tmpVertices[i7];
-								v1.x = v10.x;
-								v1.y = v10.y;
-								v1.z = v10.z;
-								var _g25 = 0;
-								var _g35 = i7;
-								while(_g25 < _g35) {
-									var j1 = _g25++;
-									var v11 = g4._tmpVertices[j1];
-									v2.x = v11.x;
-									v2.y = v11.y;
-									v2.z = v11.z;
-									var _g26 = 0;
-									var _g36 = j1;
-									while(_g26 < _g36) {
-										var k = _g26++;
-										var v14 = g4._tmpVertices[k];
-										v3.x = v14.x;
-										v3.y = v14.y;
-										v3.z = v14.z;
-										v12.x = v2.x;
-										v12.y = v2.y;
-										v12.z = v2.z;
-										var _this13 = v12;
-										var tx3 = _this13.x - v1.x;
-										var ty3 = _this13.y - v1.y;
-										var tz3 = _this13.z - v1.z;
-										_this13.x = tx3;
-										_this13.y = ty3;
-										_this13.z = tz3;
-										v13.x = v3.x;
-										v13.y = v3.y;
-										v13.z = v3.z;
-										var _this14 = v13;
-										var tx4 = _this14.x - v1.x;
-										var ty4 = _this14.y - v1.y;
-										var tz4 = _this14.z - v1.z;
-										_this14.x = tx4;
-										_this14.y = ty4;
-										_this14.z = tz4;
-										normal.x = v12.x;
-										normal.y = v12.y;
-										normal.z = v12.z;
-										var _this15 = normal;
-										var tx5 = _this15.y * v13.z - _this15.z * v13.y;
-										var ty5 = _this15.z * v13.x - _this15.x * v13.z;
-										var tz5 = _this15.x * v13.y - _this15.y * v13.x;
-										_this15.x = tx5;
-										_this15.y = ty5;
-										_this15.z = tz5;
-										var _this16 = _this15;
-										var invLen = Math.sqrt(_this16.x * _this16.x + _this16.y * _this16.y + _this16.z * _this16.z);
-										if(invLen > 0) {
-											invLen = 1 / invLen;
-										}
-										var tx6 = _this16.x * invLen;
-										var ty6 = _this16.y * invLen;
-										var tz6 = _this16.z * invLen;
-										_this16.x = tx6;
-										_this16.y = ty6;
-										_this16.z = tz6;
-										d.triangle(v1,v2,v3,normal,normal,normal,shapeColor);
-										var tx7 = -normal.x;
-										var ty7 = -normal.y;
-										var tz7 = -normal.z;
-										normal.x = tx7;
-										normal.y = ty7;
-										normal.z = tz7;
-										d.triangle(v1,v3,v2,normal,normal,normal,shapeColor);
-									}
-								}
-							}
-						}
-						var _this17 = this._pool;
-						var mat31 = null;
-						var mat41 = null;
-						var quat1 = null;
-						if(v1 != null) {
-							v1.zero();
-							if(_this17.sizeVec3 == _this17.stackVec3.length) {
-								var newLength4 = _this17.sizeVec3 << 1;
-								var this5 = new Array(newLength4);
-								var newArray4 = this5;
-								var _g6 = 0;
-								var _g15 = _this17.sizeVec3;
-								while(_g6 < _g15) {
-									var i8 = _g6++;
-									newArray4[i8] = _this17.stackVec3[i8];
-									_this17.stackVec3[i8] = null;
-								}
-								_this17.stackVec3 = newArray4;
-							}
-							_this17.stackVec3[_this17.sizeVec3++] = v1;
-						}
-						if(mat31 != null) {
-							var t002 = 1;
-							var t012 = 0;
-							var t022 = 0;
-							var t102 = 0;
-							var t112 = 1;
-							var t122 = 0;
-							var t202 = 0;
-							var t212 = 0;
-							var t222 = 1;
-							mat31.e00 = t002;
-							mat31.e01 = t012;
-							mat31.e02 = t022;
-							mat31.e10 = t102;
-							mat31.e11 = t112;
-							mat31.e12 = t122;
-							mat31.e20 = t202;
-							mat31.e21 = t212;
-							mat31.e22 = t222;
-							if(_this17.sizeMat3 == _this17.stackMat3.length) {
-								var newLength5 = _this17.sizeMat3 << 1;
-								var this6 = new Array(newLength5);
-								var newArray5 = this6;
-								var _g7 = 0;
-								var _g16 = _this17.sizeMat3;
-								while(_g7 < _g16) {
-									var i9 = _g7++;
-									newArray5[i9] = _this17.stackMat3[i9];
-									_this17.stackMat3[i9] = null;
-								}
-								_this17.stackMat3 = newArray5;
-							}
-							_this17.stackMat3[_this17.sizeMat3++] = mat31;
-						}
-						if(mat41 != null) {
-							var t003 = 1;
-							var t013 = 0;
-							var t023 = 0;
-							var t031 = 0;
-							var t103 = 0;
-							var t113 = 1;
-							var t123 = 0;
-							var t131 = 0;
-							var t203 = 0;
-							var t213 = 0;
-							var t223 = 1;
-							var t231 = 0;
-							var t301 = 0;
-							var t311 = 0;
-							var t321 = 0;
-							var t331 = 1;
-							mat41.e00 = t003;
-							mat41.e01 = t013;
-							mat41.e02 = t023;
-							mat41.e03 = t031;
-							mat41.e10 = t103;
-							mat41.e11 = t113;
-							mat41.e12 = t123;
-							mat41.e13 = t131;
-							mat41.e20 = t203;
-							mat41.e21 = t213;
-							mat41.e22 = t223;
-							mat41.e23 = t231;
-							mat41.e30 = t301;
-							mat41.e31 = t311;
-							mat41.e32 = t321;
-							mat41.e33 = t331;
-							if(_this17.sizeMat4 == _this17.stackMat4.length) {
-								var newLength6 = _this17.sizeMat4 << 1;
-								var this7 = new Array(newLength6);
-								var newArray6 = this7;
-								var _g8 = 0;
-								var _g17 = _this17.sizeMat4;
-								while(_g8 < _g17) {
-									var i10 = _g8++;
-									newArray6[i10] = _this17.stackMat4[i10];
-									_this17.stackMat4[i10] = null;
-								}
-								_this17.stackMat4 = newArray6;
-							}
-							_this17.stackMat4[_this17.sizeMat4++] = mat41;
-						}
-						if(quat1 != null) {
-							var tx8 = 0;
-							var ty8 = 0;
-							var tz8 = 0;
-							var tw1 = 1;
-							quat1.x = tx8;
-							quat1.y = ty8;
-							quat1.z = tz8;
-							quat1.w = tw1;
-							if(_this17.sizeQuat == _this17.stackQuat.length) {
-								var newLength7 = _this17.sizeQuat << 1;
-								var this8 = new Array(newLength7);
-								var newArray7 = this8;
-								var _g9 = 0;
-								var _g18 = _this17.sizeQuat;
-								while(_g9 < _g18) {
-									var i11 = _g9++;
-									newArray7[i11] = _this17.stackQuat[i11];
-									_this17.stackQuat[i11] = null;
-								}
-								_this17.stackQuat = newArray7;
-							}
-							_this17.stackQuat[_this17.sizeQuat++] = quat1;
-						}
-						var _this18 = this._pool;
-						var mat32 = null;
-						var mat42 = null;
-						var quat2 = null;
-						if(v2 != null) {
-							v2.zero();
-							if(_this18.sizeVec3 == _this18.stackVec3.length) {
-								var newLength8 = _this18.sizeVec3 << 1;
-								var this9 = new Array(newLength8);
-								var newArray8 = this9;
-								var _g10 = 0;
-								var _g19 = _this18.sizeVec3;
-								while(_g10 < _g19) {
-									var i12 = _g10++;
-									newArray8[i12] = _this18.stackVec3[i12];
-									_this18.stackVec3[i12] = null;
-								}
-								_this18.stackVec3 = newArray8;
-							}
-							_this18.stackVec3[_this18.sizeVec3++] = v2;
-						}
-						if(mat32 != null) {
-							var t004 = 1;
-							var t014 = 0;
-							var t024 = 0;
-							var t104 = 0;
-							var t114 = 1;
-							var t124 = 0;
-							var t204 = 0;
-							var t214 = 0;
-							var t224 = 1;
-							mat32.e00 = t004;
-							mat32.e01 = t014;
-							mat32.e02 = t024;
-							mat32.e10 = t104;
-							mat32.e11 = t114;
-							mat32.e12 = t124;
-							mat32.e20 = t204;
-							mat32.e21 = t214;
-							mat32.e22 = t224;
-							if(_this18.sizeMat3 == _this18.stackMat3.length) {
-								var newLength9 = _this18.sizeMat3 << 1;
-								var this10 = new Array(newLength9);
-								var newArray9 = this10;
-								var _g20 = 0;
-								var _g110 = _this18.sizeMat3;
-								while(_g20 < _g110) {
-									var i13 = _g20++;
-									newArray9[i13] = _this18.stackMat3[i13];
-									_this18.stackMat3[i13] = null;
-								}
-								_this18.stackMat3 = newArray9;
-							}
-							_this18.stackMat3[_this18.sizeMat3++] = mat32;
-						}
-						if(mat42 != null) {
-							var t005 = 1;
-							var t015 = 0;
-							var t025 = 0;
-							var t032 = 0;
-							var t105 = 0;
-							var t115 = 1;
-							var t125 = 0;
-							var t132 = 0;
-							var t205 = 0;
-							var t215 = 0;
-							var t225 = 1;
-							var t232 = 0;
-							var t302 = 0;
-							var t312 = 0;
-							var t322 = 0;
-							var t332 = 1;
-							mat42.e00 = t005;
-							mat42.e01 = t015;
-							mat42.e02 = t025;
-							mat42.e03 = t032;
-							mat42.e10 = t105;
-							mat42.e11 = t115;
-							mat42.e12 = t125;
-							mat42.e13 = t132;
-							mat42.e20 = t205;
-							mat42.e21 = t215;
-							mat42.e22 = t225;
-							mat42.e23 = t232;
-							mat42.e30 = t302;
-							mat42.e31 = t312;
-							mat42.e32 = t322;
-							mat42.e33 = t332;
-							if(_this18.sizeMat4 == _this18.stackMat4.length) {
-								var newLength10 = _this18.sizeMat4 << 1;
-								var this11 = new Array(newLength10);
-								var newArray10 = this11;
-								var _g27 = 0;
-								var _g111 = _this18.sizeMat4;
-								while(_g27 < _g111) {
-									var i14 = _g27++;
-									newArray10[i14] = _this18.stackMat4[i14];
-									_this18.stackMat4[i14] = null;
-								}
-								_this18.stackMat4 = newArray10;
-							}
-							_this18.stackMat4[_this18.sizeMat4++] = mat42;
-						}
-						if(quat2 != null) {
-							var tx9 = 0;
-							var ty9 = 0;
-							var tz9 = 0;
-							var tw2 = 1;
-							quat2.x = tx9;
-							quat2.y = ty9;
-							quat2.z = tz9;
-							quat2.w = tw2;
-							if(_this18.sizeQuat == _this18.stackQuat.length) {
-								var newLength11 = _this18.sizeQuat << 1;
-								var this12 = new Array(newLength11);
-								var newArray11 = this12;
-								var _g28 = 0;
-								var _g112 = _this18.sizeQuat;
-								while(_g28 < _g112) {
-									var i15 = _g28++;
-									newArray11[i15] = _this18.stackQuat[i15];
-									_this18.stackQuat[i15] = null;
-								}
-								_this18.stackQuat = newArray11;
-							}
-							_this18.stackQuat[_this18.sizeQuat++] = quat2;
-						}
-						var _this19 = this._pool;
-						var mat33 = null;
-						var mat43 = null;
-						var quat3 = null;
-						if(v3 != null) {
-							v3.zero();
-							if(_this19.sizeVec3 == _this19.stackVec3.length) {
-								var newLength12 = _this19.sizeVec3 << 1;
-								var this13 = new Array(newLength12);
-								var newArray12 = this13;
-								var _g29 = 0;
-								var _g113 = _this19.sizeVec3;
-								while(_g29 < _g113) {
-									var i16 = _g29++;
-									newArray12[i16] = _this19.stackVec3[i16];
-									_this19.stackVec3[i16] = null;
-								}
-								_this19.stackVec3 = newArray12;
-							}
-							_this19.stackVec3[_this19.sizeVec3++] = v3;
-						}
-						if(mat33 != null) {
-							var t006 = 1;
-							var t016 = 0;
-							var t026 = 0;
-							var t106 = 0;
-							var t116 = 1;
-							var t126 = 0;
-							var t206 = 0;
-							var t216 = 0;
-							var t226 = 1;
-							mat33.e00 = t006;
-							mat33.e01 = t016;
-							mat33.e02 = t026;
-							mat33.e10 = t106;
-							mat33.e11 = t116;
-							mat33.e12 = t126;
-							mat33.e20 = t206;
-							mat33.e21 = t216;
-							mat33.e22 = t226;
-							if(_this19.sizeMat3 == _this19.stackMat3.length) {
-								var newLength13 = _this19.sizeMat3 << 1;
-								var this14 = new Array(newLength13);
-								var newArray13 = this14;
-								var _g30 = 0;
-								var _g114 = _this19.sizeMat3;
-								while(_g30 < _g114) {
-									var i17 = _g30++;
-									newArray13[i17] = _this19.stackMat3[i17];
-									_this19.stackMat3[i17] = null;
-								}
-								_this19.stackMat3 = newArray13;
-							}
-							_this19.stackMat3[_this19.sizeMat3++] = mat33;
-						}
-						if(mat43 != null) {
-							var t007 = 1;
-							var t017 = 0;
-							var t027 = 0;
-							var t033 = 0;
-							var t107 = 0;
-							var t117 = 1;
-							var t127 = 0;
-							var t133 = 0;
-							var t207 = 0;
-							var t217 = 0;
-							var t227 = 1;
-							var t233 = 0;
-							var t303 = 0;
-							var t313 = 0;
-							var t323 = 0;
-							var t333 = 1;
-							mat43.e00 = t007;
-							mat43.e01 = t017;
-							mat43.e02 = t027;
-							mat43.e03 = t033;
-							mat43.e10 = t107;
-							mat43.e11 = t117;
-							mat43.e12 = t127;
-							mat43.e13 = t133;
-							mat43.e20 = t207;
-							mat43.e21 = t217;
-							mat43.e22 = t227;
-							mat43.e23 = t233;
-							mat43.e30 = t303;
-							mat43.e31 = t313;
-							mat43.e32 = t323;
-							mat43.e33 = t333;
-							if(_this19.sizeMat4 == _this19.stackMat4.length) {
-								var newLength14 = _this19.sizeMat4 << 1;
-								var this15 = new Array(newLength14);
-								var newArray14 = this15;
-								var _g37 = 0;
-								var _g115 = _this19.sizeMat4;
-								while(_g37 < _g115) {
-									var i18 = _g37++;
-									newArray14[i18] = _this19.stackMat4[i18];
-									_this19.stackMat4[i18] = null;
-								}
-								_this19.stackMat4 = newArray14;
-							}
-							_this19.stackMat4[_this19.sizeMat4++] = mat43;
-						}
-						if(quat3 != null) {
-							var tx10 = 0;
-							var ty10 = 0;
-							var tz10 = 0;
-							var tw3 = 1;
-							quat3.x = tx10;
-							quat3.y = ty10;
-							quat3.z = tz10;
-							quat3.w = tw3;
-							if(_this19.sizeQuat == _this19.stackQuat.length) {
-								var newLength15 = _this19.sizeQuat << 1;
-								var this16 = new Array(newLength15);
-								var newArray15 = this16;
-								var _g38 = 0;
-								var _g116 = _this19.sizeQuat;
-								while(_g38 < _g116) {
-									var i19 = _g38++;
-									newArray15[i19] = _this19.stackQuat[i19];
-									_this19.stackQuat[i19] = null;
-								}
-								_this19.stackQuat = newArray15;
-							}
-							_this19.stackQuat[_this19.sizeQuat++] = quat3;
-						}
-						var _this20 = this._pool;
-						var mat34 = null;
-						var mat44 = null;
-						var quat4 = null;
-						if(v12 != null) {
-							v12.zero();
-							if(_this20.sizeVec3 == _this20.stackVec3.length) {
-								var newLength16 = _this20.sizeVec3 << 1;
-								var this17 = new Array(newLength16);
-								var newArray16 = this17;
-								var _g39 = 0;
-								var _g117 = _this20.sizeVec3;
-								while(_g39 < _g117) {
-									var i20 = _g39++;
-									newArray16[i20] = _this20.stackVec3[i20];
-									_this20.stackVec3[i20] = null;
-								}
-								_this20.stackVec3 = newArray16;
-							}
-							_this20.stackVec3[_this20.sizeVec3++] = v12;
-						}
-						if(mat34 != null) {
-							var t008 = 1;
-							var t018 = 0;
-							var t028 = 0;
-							var t108 = 0;
-							var t118 = 1;
-							var t128 = 0;
-							var t208 = 0;
-							var t218 = 0;
-							var t228 = 1;
-							mat34.e00 = t008;
-							mat34.e01 = t018;
-							mat34.e02 = t028;
-							mat34.e10 = t108;
-							mat34.e11 = t118;
-							mat34.e12 = t128;
-							mat34.e20 = t208;
-							mat34.e21 = t218;
-							mat34.e22 = t228;
-							if(_this20.sizeMat3 == _this20.stackMat3.length) {
-								var newLength17 = _this20.sizeMat3 << 1;
-								var this18 = new Array(newLength17);
-								var newArray17 = this18;
-								var _g40 = 0;
-								var _g118 = _this20.sizeMat3;
-								while(_g40 < _g118) {
-									var i21 = _g40++;
-									newArray17[i21] = _this20.stackMat3[i21];
-									_this20.stackMat3[i21] = null;
-								}
-								_this20.stackMat3 = newArray17;
-							}
-							_this20.stackMat3[_this20.sizeMat3++] = mat34;
-						}
-						if(mat44 != null) {
-							var t009 = 1;
-							var t019 = 0;
-							var t029 = 0;
-							var t034 = 0;
-							var t109 = 0;
-							var t119 = 1;
-							var t129 = 0;
-							var t134 = 0;
-							var t209 = 0;
-							var t219 = 0;
-							var t229 = 1;
-							var t234 = 0;
-							var t304 = 0;
-							var t314 = 0;
-							var t324 = 0;
-							var t334 = 1;
-							mat44.e00 = t009;
-							mat44.e01 = t019;
-							mat44.e02 = t029;
-							mat44.e03 = t034;
-							mat44.e10 = t109;
-							mat44.e11 = t119;
-							mat44.e12 = t129;
-							mat44.e13 = t134;
-							mat44.e20 = t209;
-							mat44.e21 = t219;
-							mat44.e22 = t229;
-							mat44.e23 = t234;
-							mat44.e30 = t304;
-							mat44.e31 = t314;
-							mat44.e32 = t324;
-							mat44.e33 = t334;
-							if(_this20.sizeMat4 == _this20.stackMat4.length) {
-								var newLength18 = _this20.sizeMat4 << 1;
-								var this19 = new Array(newLength18);
-								var newArray18 = this19;
-								var _g41 = 0;
-								var _g119 = _this20.sizeMat4;
-								while(_g41 < _g119) {
-									var i22 = _g41++;
-									newArray18[i22] = _this20.stackMat4[i22];
-									_this20.stackMat4[i22] = null;
-								}
-								_this20.stackMat4 = newArray18;
-							}
-							_this20.stackMat4[_this20.sizeMat4++] = mat44;
-						}
-						if(quat4 != null) {
-							var tx11 = 0;
-							var ty11 = 0;
-							var tz11 = 0;
-							var tw4 = 1;
-							quat4.x = tx11;
-							quat4.y = ty11;
-							quat4.z = tz11;
-							quat4.w = tw4;
-							if(_this20.sizeQuat == _this20.stackQuat.length) {
-								var newLength19 = _this20.sizeQuat << 1;
-								var this20 = new Array(newLength19);
-								var newArray19 = this20;
-								var _g42 = 0;
-								var _g120 = _this20.sizeQuat;
-								while(_g42 < _g120) {
-									var i23 = _g42++;
-									newArray19[i23] = _this20.stackQuat[i23];
-									_this20.stackQuat[i23] = null;
-								}
-								_this20.stackQuat = newArray19;
-							}
-							_this20.stackQuat[_this20.sizeQuat++] = quat4;
-						}
-						var _this21 = this._pool;
-						var mat35 = null;
-						var mat45 = null;
-						var quat5 = null;
-						if(v13 != null) {
-							v13.zero();
-							if(_this21.sizeVec3 == _this21.stackVec3.length) {
-								var newLength20 = _this21.sizeVec3 << 1;
-								var this21 = new Array(newLength20);
-								var newArray20 = this21;
-								var _g43 = 0;
-								var _g121 = _this21.sizeVec3;
-								while(_g43 < _g121) {
-									var i24 = _g43++;
-									newArray20[i24] = _this21.stackVec3[i24];
-									_this21.stackVec3[i24] = null;
-								}
-								_this21.stackVec3 = newArray20;
-							}
-							_this21.stackVec3[_this21.sizeVec3++] = v13;
-						}
-						if(mat35 != null) {
-							var t0010 = 1;
-							var t0110 = 0;
-							var t0210 = 0;
-							var t1010 = 0;
-							var t1110 = 1;
-							var t1210 = 0;
-							var t2010 = 0;
-							var t2110 = 0;
-							var t2210 = 1;
-							mat35.e00 = t0010;
-							mat35.e01 = t0110;
-							mat35.e02 = t0210;
-							mat35.e10 = t1010;
-							mat35.e11 = t1110;
-							mat35.e12 = t1210;
-							mat35.e20 = t2010;
-							mat35.e21 = t2110;
-							mat35.e22 = t2210;
-							if(_this21.sizeMat3 == _this21.stackMat3.length) {
-								var newLength21 = _this21.sizeMat3 << 1;
-								var this22 = new Array(newLength21);
-								var newArray21 = this22;
-								var _g44 = 0;
-								var _g122 = _this21.sizeMat3;
-								while(_g44 < _g122) {
-									var i25 = _g44++;
-									newArray21[i25] = _this21.stackMat3[i25];
-									_this21.stackMat3[i25] = null;
-								}
-								_this21.stackMat3 = newArray21;
-							}
-							_this21.stackMat3[_this21.sizeMat3++] = mat35;
-						}
-						if(mat45 != null) {
-							var t0011 = 1;
-							var t0111 = 0;
-							var t0211 = 0;
-							var t035 = 0;
-							var t1011 = 0;
-							var t1111 = 1;
-							var t1211 = 0;
-							var t135 = 0;
-							var t2011 = 0;
-							var t2111 = 0;
-							var t2211 = 1;
-							var t235 = 0;
-							var t305 = 0;
-							var t315 = 0;
-							var t325 = 0;
-							var t335 = 1;
-							mat45.e00 = t0011;
-							mat45.e01 = t0111;
-							mat45.e02 = t0211;
-							mat45.e03 = t035;
-							mat45.e10 = t1011;
-							mat45.e11 = t1111;
-							mat45.e12 = t1211;
-							mat45.e13 = t135;
-							mat45.e20 = t2011;
-							mat45.e21 = t2111;
-							mat45.e22 = t2211;
-							mat45.e23 = t235;
-							mat45.e30 = t305;
-							mat45.e31 = t315;
-							mat45.e32 = t325;
-							mat45.e33 = t335;
-							if(_this21.sizeMat4 == _this21.stackMat4.length) {
-								var newLength22 = _this21.sizeMat4 << 1;
-								var this23 = new Array(newLength22);
-								var newArray22 = this23;
-								var _g45 = 0;
-								var _g123 = _this21.sizeMat4;
-								while(_g45 < _g123) {
-									var i26 = _g45++;
-									newArray22[i26] = _this21.stackMat4[i26];
-									_this21.stackMat4[i26] = null;
-								}
-								_this21.stackMat4 = newArray22;
-							}
-							_this21.stackMat4[_this21.sizeMat4++] = mat45;
-						}
-						if(quat5 != null) {
-							var tx12 = 0;
-							var ty12 = 0;
-							var tz12 = 0;
-							var tw5 = 1;
-							quat5.x = tx12;
-							quat5.y = ty12;
-							quat5.z = tz12;
-							quat5.w = tw5;
-							if(_this21.sizeQuat == _this21.stackQuat.length) {
-								var newLength23 = _this21.sizeQuat << 1;
-								var this24 = new Array(newLength23);
-								var newArray23 = this24;
-								var _g46 = 0;
-								var _g124 = _this21.sizeQuat;
-								while(_g46 < _g124) {
-									var i27 = _g46++;
-									newArray23[i27] = _this21.stackQuat[i27];
-									_this21.stackQuat[i27] = null;
-								}
-								_this21.stackQuat = newArray23;
-							}
-							_this21.stackQuat[_this21.sizeQuat++] = quat5;
-						}
-						var _this22 = this._pool;
-						var mat36 = null;
-						var mat46 = null;
-						var quat6 = null;
-						if(normal != null) {
-							normal.zero();
-							if(_this22.sizeVec3 == _this22.stackVec3.length) {
-								var newLength24 = _this22.sizeVec3 << 1;
-								var this25 = new Array(newLength24);
-								var newArray24 = this25;
-								var _g47 = 0;
-								var _g125 = _this22.sizeVec3;
-								while(_g47 < _g125) {
-									var i28 = _g47++;
-									newArray24[i28] = _this22.stackVec3[i28];
-									_this22.stackVec3[i28] = null;
-								}
-								_this22.stackVec3 = newArray24;
-							}
-							_this22.stackVec3[_this22.sizeVec3++] = normal;
-						}
-						if(mat36 != null) {
-							var t0012 = 1;
-							var t0112 = 0;
-							var t0212 = 0;
-							var t1012 = 0;
-							var t1112 = 1;
-							var t1212 = 0;
-							var t2012 = 0;
-							var t2112 = 0;
-							var t2212 = 1;
-							mat36.e00 = t0012;
-							mat36.e01 = t0112;
-							mat36.e02 = t0212;
-							mat36.e10 = t1012;
-							mat36.e11 = t1112;
-							mat36.e12 = t1212;
-							mat36.e20 = t2012;
-							mat36.e21 = t2112;
-							mat36.e22 = t2212;
-							if(_this22.sizeMat3 == _this22.stackMat3.length) {
-								var newLength25 = _this22.sizeMat3 << 1;
-								var this26 = new Array(newLength25);
-								var newArray25 = this26;
-								var _g48 = 0;
-								var _g126 = _this22.sizeMat3;
-								while(_g48 < _g126) {
-									var i29 = _g48++;
-									newArray25[i29] = _this22.stackMat3[i29];
-									_this22.stackMat3[i29] = null;
-								}
-								_this22.stackMat3 = newArray25;
-							}
-							_this22.stackMat3[_this22.sizeMat3++] = mat36;
-						}
-						if(mat46 != null) {
-							var t0013 = 1;
-							var t0113 = 0;
-							var t0213 = 0;
-							var t036 = 0;
-							var t1013 = 0;
-							var t1113 = 1;
-							var t1213 = 0;
-							var t136 = 0;
-							var t2013 = 0;
-							var t2113 = 0;
-							var t2213 = 1;
-							var t236 = 0;
-							var t306 = 0;
-							var t316 = 0;
-							var t326 = 0;
-							var t336 = 1;
-							mat46.e00 = t0013;
-							mat46.e01 = t0113;
-							mat46.e02 = t0213;
-							mat46.e03 = t036;
-							mat46.e10 = t1013;
-							mat46.e11 = t1113;
-							mat46.e12 = t1213;
-							mat46.e13 = t136;
-							mat46.e20 = t2013;
-							mat46.e21 = t2113;
-							mat46.e22 = t2213;
-							mat46.e23 = t236;
-							mat46.e30 = t306;
-							mat46.e31 = t316;
-							mat46.e32 = t326;
-							mat46.e33 = t336;
-							if(_this22.sizeMat4 == _this22.stackMat4.length) {
-								var newLength26 = _this22.sizeMat4 << 1;
-								var this27 = new Array(newLength26);
-								var newArray26 = this27;
-								var _g49 = 0;
-								var _g127 = _this22.sizeMat4;
-								while(_g49 < _g127) {
-									var i30 = _g49++;
-									newArray26[i30] = _this22.stackMat4[i30];
-									_this22.stackMat4[i30] = null;
-								}
-								_this22.stackMat4 = newArray26;
-							}
-							_this22.stackMat4[_this22.sizeMat4++] = mat46;
-						}
-						if(quat6 != null) {
-							var tx13 = 0;
-							var ty13 = 0;
-							var tz13 = 0;
-							var tw6 = 1;
-							quat6.x = tx13;
-							quat6.y = ty13;
-							quat6.z = tz13;
-							quat6.w = tw6;
-							if(_this22.sizeQuat == _this22.stackQuat.length) {
-								var newLength27 = _this22.sizeQuat << 1;
-								var this28 = new Array(newLength27);
-								var newArray27 = this28;
-								var _g50 = 0;
-								var _g128 = _this22.sizeQuat;
-								while(_g50 < _g128) {
-									var i31 = _g50++;
-									newArray27[i31] = _this22.stackQuat[i31];
-									_this22.stackQuat[i31] = null;
-								}
-								_this22.stackQuat = newArray27;
-							}
-							_this22.stackQuat[_this22.sizeQuat++] = quat6;
-						}
-						var _this23 = this._pool;
-						var vec3 = null;
-						var mat47 = null;
-						var quat7 = null;
-						if(vec3 != null) {
-							vec3.zero();
-							if(_this23.sizeVec3 == _this23.stackVec3.length) {
-								var newLength28 = _this23.sizeVec3 << 1;
-								var this29 = new Array(newLength28);
-								var newArray28 = this29;
-								var _g51 = 0;
-								var _g129 = _this23.sizeVec3;
-								while(_g51 < _g129) {
-									var i32 = _g51++;
-									newArray28[i32] = _this23.stackVec3[i32];
-									_this23.stackVec3[i32] = null;
-								}
-								_this23.stackVec3 = newArray28;
-							}
-							_this23.stackVec3[_this23.sizeVec3++] = vec3;
-						}
-						if(m != null) {
-							var t0014 = 1;
-							var t0114 = 0;
-							var t0214 = 0;
-							var t1014 = 0;
-							var t1114 = 1;
-							var t1214 = 0;
-							var t2014 = 0;
-							var t2114 = 0;
-							var t2214 = 1;
-							m.e00 = t0014;
-							m.e01 = t0114;
-							m.e02 = t0214;
-							m.e10 = t1014;
-							m.e11 = t1114;
-							m.e12 = t1214;
-							m.e20 = t2014;
-							m.e21 = t2114;
-							m.e22 = t2214;
-							if(_this23.sizeMat3 == _this23.stackMat3.length) {
-								var newLength29 = _this23.sizeMat3 << 1;
-								var this30 = new Array(newLength29);
-								var newArray29 = this30;
-								var _g52 = 0;
-								var _g130 = _this23.sizeMat3;
-								while(_g52 < _g130) {
-									var i33 = _g52++;
-									newArray29[i33] = _this23.stackMat3[i33];
-									_this23.stackMat3[i33] = null;
-								}
-								_this23.stackMat3 = newArray29;
-							}
-							_this23.stackMat3[_this23.sizeMat3++] = m;
-						}
-						if(mat47 != null) {
-							var t0015 = 1;
-							var t0115 = 0;
-							var t0215 = 0;
-							var t037 = 0;
-							var t1015 = 0;
-							var t1115 = 1;
-							var t1215 = 0;
-							var t137 = 0;
-							var t2015 = 0;
-							var t2115 = 0;
-							var t2215 = 1;
-							var t237 = 0;
-							var t307 = 0;
-							var t317 = 0;
-							var t327 = 0;
-							var t337 = 1;
-							mat47.e00 = t0015;
-							mat47.e01 = t0115;
-							mat47.e02 = t0215;
-							mat47.e03 = t037;
-							mat47.e10 = t1015;
-							mat47.e11 = t1115;
-							mat47.e12 = t1215;
-							mat47.e13 = t137;
-							mat47.e20 = t2015;
-							mat47.e21 = t2115;
-							mat47.e22 = t2215;
-							mat47.e23 = t237;
-							mat47.e30 = t307;
-							mat47.e31 = t317;
-							mat47.e32 = t327;
-							mat47.e33 = t337;
-							if(_this23.sizeMat4 == _this23.stackMat4.length) {
-								var newLength30 = _this23.sizeMat4 << 1;
-								var this31 = new Array(newLength30);
-								var newArray30 = this31;
-								var _g53 = 0;
-								var _g131 = _this23.sizeMat4;
-								while(_g53 < _g131) {
-									var i34 = _g53++;
-									newArray30[i34] = _this23.stackMat4[i34];
-									_this23.stackMat4[i34] = null;
-								}
-								_this23.stackMat4 = newArray30;
-							}
-							_this23.stackMat4[_this23.sizeMat4++] = mat47;
-						}
-						if(quat7 != null) {
-							var tx14 = 0;
-							var ty14 = 0;
-							var tz14 = 0;
-							var tw7 = 1;
-							quat7.x = tx14;
-							quat7.y = ty14;
-							quat7.z = tz14;
-							quat7.w = tw7;
-							if(_this23.sizeQuat == _this23.stackQuat.length) {
-								var newLength31 = _this23.sizeQuat << 1;
-								var this32 = new Array(newLength31);
-								var newArray31 = this32;
-								var _g54 = 0;
-								var _g132 = _this23.sizeQuat;
-								while(_g54 < _g132) {
-									var i35 = _g54++;
-									newArray31[i35] = _this23.stackQuat[i35];
-									_this23.stackQuat[i35] = null;
-								}
-								_this23.stackQuat = newArray31;
-							}
-							_this23.stackQuat[_this23.sizeQuat++] = quat7;
-						}
-						var _this24 = this._pool;
-						var mat37 = null;
-						var mat48 = null;
-						var quat8 = null;
-						if(o != null) {
-							o.zero();
-							if(_this24.sizeVec3 == _this24.stackVec3.length) {
-								var newLength32 = _this24.sizeVec3 << 1;
-								var this33 = new Array(newLength32);
-								var newArray32 = this33;
-								var _g55 = 0;
-								var _g133 = _this24.sizeVec3;
-								while(_g55 < _g133) {
-									var i36 = _g55++;
-									newArray32[i36] = _this24.stackVec3[i36];
-									_this24.stackVec3[i36] = null;
-								}
-								_this24.stackVec3 = newArray32;
-							}
-							_this24.stackVec3[_this24.sizeVec3++] = o;
-						}
-						if(mat37 != null) {
-							var t0016 = 1;
-							var t0116 = 0;
-							var t0216 = 0;
-							var t1016 = 0;
-							var t1116 = 1;
-							var t1216 = 0;
-							var t2016 = 0;
-							var t2116 = 0;
-							var t2216 = 1;
-							mat37.e00 = t0016;
-							mat37.e01 = t0116;
-							mat37.e02 = t0216;
-							mat37.e10 = t1016;
-							mat37.e11 = t1116;
-							mat37.e12 = t1216;
-							mat37.e20 = t2016;
-							mat37.e21 = t2116;
-							mat37.e22 = t2216;
-							if(_this24.sizeMat3 == _this24.stackMat3.length) {
-								var newLength33 = _this24.sizeMat3 << 1;
-								var this34 = new Array(newLength33);
-								var newArray33 = this34;
-								var _g56 = 0;
-								var _g134 = _this24.sizeMat3;
-								while(_g56 < _g134) {
-									var i37 = _g56++;
-									newArray33[i37] = _this24.stackMat3[i37];
-									_this24.stackMat3[i37] = null;
-								}
-								_this24.stackMat3 = newArray33;
-							}
-							_this24.stackMat3[_this24.sizeMat3++] = mat37;
-						}
-						if(mat48 != null) {
-							var t0017 = 1;
-							var t0117 = 0;
-							var t0217 = 0;
-							var t038 = 0;
-							var t1017 = 0;
-							var t1117 = 1;
-							var t1217 = 0;
-							var t138 = 0;
-							var t2017 = 0;
-							var t2117 = 0;
-							var t2217 = 1;
-							var t238 = 0;
-							var t308 = 0;
-							var t318 = 0;
-							var t328 = 0;
-							var t338 = 1;
-							mat48.e00 = t0017;
-							mat48.e01 = t0117;
-							mat48.e02 = t0217;
-							mat48.e03 = t038;
-							mat48.e10 = t1017;
-							mat48.e11 = t1117;
-							mat48.e12 = t1217;
-							mat48.e13 = t138;
-							mat48.e20 = t2017;
-							mat48.e21 = t2117;
-							mat48.e22 = t2217;
-							mat48.e23 = t238;
-							mat48.e30 = t308;
-							mat48.e31 = t318;
-							mat48.e32 = t328;
-							mat48.e33 = t338;
-							if(_this24.sizeMat4 == _this24.stackMat4.length) {
-								var newLength34 = _this24.sizeMat4 << 1;
-								var this35 = new Array(newLength34);
-								var newArray34 = this35;
-								var _g57 = 0;
-								var _g135 = _this24.sizeMat4;
-								while(_g57 < _g135) {
-									var i38 = _g57++;
-									newArray34[i38] = _this24.stackMat4[i38];
-									_this24.stackMat4[i38] = null;
-								}
-								_this24.stackMat4 = newArray34;
-							}
-							_this24.stackMat4[_this24.sizeMat4++] = mat48;
-						}
-						if(quat8 != null) {
-							var tx15 = 0;
-							var ty15 = 0;
-							var tz15 = 0;
-							var tw8 = 1;
-							quat8.x = tx15;
-							quat8.y = ty15;
-							quat8.z = tz15;
-							quat8.w = tw8;
-							if(_this24.sizeQuat == _this24.stackQuat.length) {
-								var newLength35 = _this24.sizeQuat << 1;
-								var this36 = new Array(newLength35);
-								var newArray35 = this36;
-								var _g58 = 0;
-								var _g136 = _this24.sizeQuat;
-								while(_g58 < _g136) {
-									var i39 = _g58++;
-									newArray35[i39] = _this24.stackQuat[i39];
-									_this24.stackQuat[i39] = null;
-								}
-								_this24.stackQuat = newArray35;
-							}
-							_this24.stackQuat[_this24.sizeQuat++] = quat8;
-						}
-						break;
-					}
-				}
-				if(d.drawAabbs) {
-					var aabb = s._aabb;
-					var color = style.aabbColor;
-					var _this25 = this._pool;
-					var min = _this25.sizeVec3 == 0 ? new oimo.common.Vec3() : _this25.stackVec3[--_this25.sizeVec3];
-					var _this26 = this._pool;
-					var max = _this26.sizeVec3 == 0 ? new oimo.common.Vec3() : _this26.stackVec3[--_this26.sizeVec3];
-					var v15 = min;
-					v15.x = aabb._minX;
-					v15.y = aabb._minY;
-					v15.z = aabb._minZ;
-					var v16 = max;
-					v16.x = aabb._maxX;
-					v16.y = aabb._maxY;
-					v16.z = aabb._maxZ;
-					d.aabb(min,max,color);
-					var _this27 = this._pool;
-					var mat38 = null;
-					var mat49 = null;
-					var quat9 = null;
-					if(min != null) {
-						min.zero();
-						if(_this27.sizeVec3 == _this27.stackVec3.length) {
-							var newLength36 = _this27.sizeVec3 << 1;
-							var this37 = new Array(newLength36);
-							var newArray36 = this37;
-							var _g59 = 0;
-							var _g137 = _this27.sizeVec3;
-							while(_g59 < _g137) {
-								var i40 = _g59++;
-								newArray36[i40] = _this27.stackVec3[i40];
-								_this27.stackVec3[i40] = null;
-							}
-							_this27.stackVec3 = newArray36;
-						}
-						_this27.stackVec3[_this27.sizeVec3++] = min;
-					}
-					if(mat38 != null) {
-						var t0018 = 1;
-						var t0118 = 0;
-						var t0218 = 0;
-						var t1018 = 0;
-						var t1118 = 1;
-						var t1218 = 0;
-						var t2018 = 0;
-						var t2118 = 0;
-						var t2218 = 1;
-						mat38.e00 = t0018;
-						mat38.e01 = t0118;
-						mat38.e02 = t0218;
-						mat38.e10 = t1018;
-						mat38.e11 = t1118;
-						mat38.e12 = t1218;
-						mat38.e20 = t2018;
-						mat38.e21 = t2118;
-						mat38.e22 = t2218;
-						if(_this27.sizeMat3 == _this27.stackMat3.length) {
-							var newLength37 = _this27.sizeMat3 << 1;
-							var this38 = new Array(newLength37);
-							var newArray37 = this38;
-							var _g60 = 0;
-							var _g138 = _this27.sizeMat3;
-							while(_g60 < _g138) {
-								var i41 = _g60++;
-								newArray37[i41] = _this27.stackMat3[i41];
-								_this27.stackMat3[i41] = null;
-							}
-							_this27.stackMat3 = newArray37;
-						}
-						_this27.stackMat3[_this27.sizeMat3++] = mat38;
-					}
-					if(mat49 != null) {
-						var t0019 = 1;
-						var t0119 = 0;
-						var t0219 = 0;
-						var t039 = 0;
-						var t1019 = 0;
-						var t1119 = 1;
-						var t1219 = 0;
-						var t139 = 0;
-						var t2019 = 0;
-						var t2119 = 0;
-						var t2219 = 1;
-						var t239 = 0;
-						var t309 = 0;
-						var t319 = 0;
-						var t329 = 0;
-						var t339 = 1;
-						mat49.e00 = t0019;
-						mat49.e01 = t0119;
-						mat49.e02 = t0219;
-						mat49.e03 = t039;
-						mat49.e10 = t1019;
-						mat49.e11 = t1119;
-						mat49.e12 = t1219;
-						mat49.e13 = t139;
-						mat49.e20 = t2019;
-						mat49.e21 = t2119;
-						mat49.e22 = t2219;
-						mat49.e23 = t239;
-						mat49.e30 = t309;
-						mat49.e31 = t319;
-						mat49.e32 = t329;
-						mat49.e33 = t339;
-						if(_this27.sizeMat4 == _this27.stackMat4.length) {
-							var newLength38 = _this27.sizeMat4 << 1;
-							var this39 = new Array(newLength38);
-							var newArray38 = this39;
-							var _g61 = 0;
-							var _g139 = _this27.sizeMat4;
-							while(_g61 < _g139) {
-								var i42 = _g61++;
-								newArray38[i42] = _this27.stackMat4[i42];
-								_this27.stackMat4[i42] = null;
-							}
-							_this27.stackMat4 = newArray38;
-						}
-						_this27.stackMat4[_this27.sizeMat4++] = mat49;
-					}
-					if(quat9 != null) {
-						var tx16 = 0;
-						var ty16 = 0;
-						var tz16 = 0;
-						var tw9 = 1;
-						quat9.x = tx16;
-						quat9.y = ty16;
-						quat9.z = tz16;
-						quat9.w = tw9;
-						if(_this27.sizeQuat == _this27.stackQuat.length) {
-							var newLength39 = _this27.sizeQuat << 1;
-							var this40 = new Array(newLength39);
-							var newArray39 = this40;
-							var _g62 = 0;
-							var _g140 = _this27.sizeQuat;
-							while(_g62 < _g140) {
-								var i43 = _g62++;
-								newArray39[i43] = _this27.stackQuat[i43];
-								_this27.stackQuat[i43] = null;
-							}
-							_this27.stackQuat = newArray39;
-						}
-						_this27.stackQuat[_this27.sizeQuat++] = quat9;
-					}
-					var _this28 = this._pool;
-					var mat39 = null;
-					var mat410 = null;
-					var quat10 = null;
-					if(max != null) {
-						max.zero();
-						if(_this28.sizeVec3 == _this28.stackVec3.length) {
-							var newLength40 = _this28.sizeVec3 << 1;
-							var this41 = new Array(newLength40);
-							var newArray40 = this41;
-							var _g63 = 0;
-							var _g141 = _this28.sizeVec3;
-							while(_g63 < _g141) {
-								var i44 = _g63++;
-								newArray40[i44] = _this28.stackVec3[i44];
-								_this28.stackVec3[i44] = null;
-							}
-							_this28.stackVec3 = newArray40;
-						}
-						_this28.stackVec3[_this28.sizeVec3++] = max;
-					}
-					if(mat39 != null) {
-						var t0020 = 1;
-						var t0120 = 0;
-						var t0220 = 0;
-						var t1020 = 0;
-						var t1120 = 1;
-						var t1220 = 0;
-						var t2020 = 0;
-						var t2120 = 0;
-						var t2220 = 1;
-						mat39.e00 = t0020;
-						mat39.e01 = t0120;
-						mat39.e02 = t0220;
-						mat39.e10 = t1020;
-						mat39.e11 = t1120;
-						mat39.e12 = t1220;
-						mat39.e20 = t2020;
-						mat39.e21 = t2120;
-						mat39.e22 = t2220;
-						if(_this28.sizeMat3 == _this28.stackMat3.length) {
-							var newLength41 = _this28.sizeMat3 << 1;
-							var this42 = new Array(newLength41);
-							var newArray41 = this42;
-							var _g64 = 0;
-							var _g142 = _this28.sizeMat3;
-							while(_g64 < _g142) {
-								var i45 = _g64++;
-								newArray41[i45] = _this28.stackMat3[i45];
-								_this28.stackMat3[i45] = null;
-							}
-							_this28.stackMat3 = newArray41;
-						}
-						_this28.stackMat3[_this28.sizeMat3++] = mat39;
-					}
-					if(mat410 != null) {
-						var t0021 = 1;
-						var t0121 = 0;
-						var t0221 = 0;
-						var t0310 = 0;
-						var t1021 = 0;
-						var t1121 = 1;
-						var t1221 = 0;
-						var t1310 = 0;
-						var t2021 = 0;
-						var t2121 = 0;
-						var t2221 = 1;
-						var t2310 = 0;
-						var t3010 = 0;
-						var t3110 = 0;
-						var t3210 = 0;
-						var t3310 = 1;
-						mat410.e00 = t0021;
-						mat410.e01 = t0121;
-						mat410.e02 = t0221;
-						mat410.e03 = t0310;
-						mat410.e10 = t1021;
-						mat410.e11 = t1121;
-						mat410.e12 = t1221;
-						mat410.e13 = t1310;
-						mat410.e20 = t2021;
-						mat410.e21 = t2121;
-						mat410.e22 = t2221;
-						mat410.e23 = t2310;
-						mat410.e30 = t3010;
-						mat410.e31 = t3110;
-						mat410.e32 = t3210;
-						mat410.e33 = t3310;
-						if(_this28.sizeMat4 == _this28.stackMat4.length) {
-							var newLength42 = _this28.sizeMat4 << 1;
-							var this43 = new Array(newLength42);
-							var newArray42 = this43;
-							var _g65 = 0;
-							var _g143 = _this28.sizeMat4;
-							while(_g65 < _g143) {
-								var i46 = _g65++;
-								newArray42[i46] = _this28.stackMat4[i46];
-								_this28.stackMat4[i46] = null;
-							}
-							_this28.stackMat4 = newArray42;
-						}
-						_this28.stackMat4[_this28.sizeMat4++] = mat410;
-					}
-					if(quat10 != null) {
-						var tx17 = 0;
-						var ty17 = 0;
-						var tz17 = 0;
-						var tw10 = 1;
-						quat10.x = tx17;
-						quat10.y = ty17;
-						quat10.z = tz17;
-						quat10.w = tw10;
-						if(_this28.sizeQuat == _this28.stackQuat.length) {
-							var newLength43 = _this28.sizeQuat << 1;
-							var this44 = new Array(newLength43);
-							var newArray43 = this44;
-							var _g66 = 0;
-							var _g144 = _this28.sizeQuat;
-							while(_g66 < _g144) {
-								var i47 = _g66++;
-								newArray43[i47] = _this28.stackQuat[i47];
-								_this28.stackQuat[i47] = null;
-							}
-							_this28.stackQuat = newArray43;
-						}
-						_this28.stackQuat[_this28.sizeQuat++] = quat10;
-					}
-				}
-				s = n1;
-			}
-			r = n;
-		}
-	}
-	_drawConstraints(d) {
-		var style = d.style;
-		if(d.drawPairs || d.drawContacts) {
-			var c = this._contactManager._contactList;
-			while(c != null) {
-				var n = c._next;
-				if(d.drawPairs) {
-					var color = style.pairColor;
-					var _this = this._pool;
-					var v1 = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-					var _this1 = this._pool;
-					var v2 = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
-					var v = v1;
-					v.x = c._s1._transform._positionX;
-					v.y = c._s1._transform._positionY;
-					v.z = c._s1._transform._positionZ;
-					var v3 = v2;
-					v3.x = c._s2._transform._positionX;
-					v3.y = c._s2._transform._positionY;
-					v3.z = c._s2._transform._positionZ;
-					d.line(v1,v2,color);
-					var _this2 = this._pool;
-					var mat3 = null;
-					var mat4 = null;
-					var quat = null;
-					if(v1 != null) {
-						v1.zero();
-						if(_this2.sizeVec3 == _this2.stackVec3.length) {
-							var newLength = _this2.sizeVec3 << 1;
-							var this1 = new Array(newLength);
-							var newArray = this1;
-							var _g = 0;
-							var _g1 = _this2.sizeVec3;
-							while(_g < _g1) {
-								var i = _g++;
-								newArray[i] = _this2.stackVec3[i];
-								_this2.stackVec3[i] = null;
-							}
-							_this2.stackVec3 = newArray;
-						}
-						_this2.stackVec3[_this2.sizeVec3++] = v1;
-					}
-					if(mat3 != null) {
-						var t00 = 1;
-						var t01 = 0;
-						var t02 = 0;
-						var t10 = 0;
-						var t11 = 1;
-						var t12 = 0;
-						var t20 = 0;
-						var t21 = 0;
-						var t22 = 1;
-						mat3.e00 = t00;
-						mat3.e01 = t01;
-						mat3.e02 = t02;
-						mat3.e10 = t10;
-						mat3.e11 = t11;
-						mat3.e12 = t12;
-						mat3.e20 = t20;
-						mat3.e21 = t21;
-						mat3.e22 = t22;
-						if(_this2.sizeMat3 == _this2.stackMat3.length) {
-							var newLength1 = _this2.sizeMat3 << 1;
-							var this2 = new Array(newLength1);
-							var newArray1 = this2;
-							var _g2 = 0;
-							var _g11 = _this2.sizeMat3;
-							while(_g2 < _g11) {
-								var i1 = _g2++;
-								newArray1[i1] = _this2.stackMat3[i1];
-								_this2.stackMat3[i1] = null;
-							}
-							_this2.stackMat3 = newArray1;
-						}
-						_this2.stackMat3[_this2.sizeMat3++] = mat3;
-					}
-					if(mat4 != null) {
-						var t001 = 1;
-						var t011 = 0;
-						var t021 = 0;
-						var t03 = 0;
-						var t101 = 0;
-						var t111 = 1;
-						var t121 = 0;
-						var t13 = 0;
-						var t201 = 0;
-						var t211 = 0;
-						var t221 = 1;
-						var t23 = 0;
-						var t30 = 0;
-						var t31 = 0;
-						var t32 = 0;
-						var t33 = 1;
-						mat4.e00 = t001;
-						mat4.e01 = t011;
-						mat4.e02 = t021;
-						mat4.e03 = t03;
-						mat4.e10 = t101;
-						mat4.e11 = t111;
-						mat4.e12 = t121;
-						mat4.e13 = t13;
-						mat4.e20 = t201;
-						mat4.e21 = t211;
-						mat4.e22 = t221;
-						mat4.e23 = t23;
-						mat4.e30 = t30;
-						mat4.e31 = t31;
-						mat4.e32 = t32;
-						mat4.e33 = t33;
-						if(_this2.sizeMat4 == _this2.stackMat4.length) {
-							var newLength2 = _this2.sizeMat4 << 1;
-							var this3 = new Array(newLength2);
-							var newArray2 = this3;
-							var _g3 = 0;
-							var _g12 = _this2.sizeMat4;
-							while(_g3 < _g12) {
-								var i2 = _g3++;
-								newArray2[i2] = _this2.stackMat4[i2];
-								_this2.stackMat4[i2] = null;
-							}
-							_this2.stackMat4 = newArray2;
-						}
-						_this2.stackMat4[_this2.sizeMat4++] = mat4;
-					}
-					if(quat != null) {
-						var tx = 0;
-						var ty = 0;
-						var tz = 0;
-						var tw = 1;
-						quat.x = tx;
-						quat.y = ty;
-						quat.z = tz;
-						quat.w = tw;
-						if(_this2.sizeQuat == _this2.stackQuat.length) {
-							var newLength3 = _this2.sizeQuat << 1;
-							var this4 = new Array(newLength3);
-							var newArray3 = this4;
-							var _g4 = 0;
-							var _g13 = _this2.sizeQuat;
-							while(_g4 < _g13) {
-								var i3 = _g4++;
-								newArray3[i3] = _this2.stackQuat[i3];
-								_this2.stackQuat[i3] = null;
-							}
-							_this2.stackQuat = newArray3;
-						}
-						_this2.stackQuat[_this2.sizeQuat++] = quat;
-					}
-					var _this3 = this._pool;
-					var mat31 = null;
-					var mat41 = null;
-					var quat1 = null;
-					if(v2 != null) {
-						v2.zero();
-						if(_this3.sizeVec3 == _this3.stackVec3.length) {
-							var newLength4 = _this3.sizeVec3 << 1;
-							var this5 = new Array(newLength4);
-							var newArray4 = this5;
-							var _g5 = 0;
-							var _g14 = _this3.sizeVec3;
-							while(_g5 < _g14) {
-								var i4 = _g5++;
-								newArray4[i4] = _this3.stackVec3[i4];
-								_this3.stackVec3[i4] = null;
-							}
-							_this3.stackVec3 = newArray4;
-						}
-						_this3.stackVec3[_this3.sizeVec3++] = v2;
-					}
-					if(mat31 != null) {
-						var t002 = 1;
-						var t012 = 0;
-						var t022 = 0;
-						var t102 = 0;
-						var t112 = 1;
-						var t122 = 0;
-						var t202 = 0;
-						var t212 = 0;
-						var t222 = 1;
-						mat31.e00 = t002;
-						mat31.e01 = t012;
-						mat31.e02 = t022;
-						mat31.e10 = t102;
-						mat31.e11 = t112;
-						mat31.e12 = t122;
-						mat31.e20 = t202;
-						mat31.e21 = t212;
-						mat31.e22 = t222;
-						if(_this3.sizeMat3 == _this3.stackMat3.length) {
-							var newLength5 = _this3.sizeMat3 << 1;
-							var this6 = new Array(newLength5);
-							var newArray5 = this6;
-							var _g6 = 0;
-							var _g15 = _this3.sizeMat3;
-							while(_g6 < _g15) {
-								var i5 = _g6++;
-								newArray5[i5] = _this3.stackMat3[i5];
-								_this3.stackMat3[i5] = null;
-							}
-							_this3.stackMat3 = newArray5;
-						}
-						_this3.stackMat3[_this3.sizeMat3++] = mat31;
-					}
-					if(mat41 != null) {
-						var t003 = 1;
-						var t013 = 0;
-						var t023 = 0;
-						var t031 = 0;
-						var t103 = 0;
-						var t113 = 1;
-						var t123 = 0;
-						var t131 = 0;
-						var t203 = 0;
-						var t213 = 0;
-						var t223 = 1;
-						var t231 = 0;
-						var t301 = 0;
-						var t311 = 0;
-						var t321 = 0;
-						var t331 = 1;
-						mat41.e00 = t003;
-						mat41.e01 = t013;
-						mat41.e02 = t023;
-						mat41.e03 = t031;
-						mat41.e10 = t103;
-						mat41.e11 = t113;
-						mat41.e12 = t123;
-						mat41.e13 = t131;
-						mat41.e20 = t203;
-						mat41.e21 = t213;
-						mat41.e22 = t223;
-						mat41.e23 = t231;
-						mat41.e30 = t301;
-						mat41.e31 = t311;
-						mat41.e32 = t321;
-						mat41.e33 = t331;
-						if(_this3.sizeMat4 == _this3.stackMat4.length) {
-							var newLength6 = _this3.sizeMat4 << 1;
-							var this7 = new Array(newLength6);
-							var newArray6 = this7;
-							var _g7 = 0;
-							var _g16 = _this3.sizeMat4;
-							while(_g7 < _g16) {
-								var i6 = _g7++;
-								newArray6[i6] = _this3.stackMat4[i6];
-								_this3.stackMat4[i6] = null;
-							}
-							_this3.stackMat4 = newArray6;
-						}
-						_this3.stackMat4[_this3.sizeMat4++] = mat41;
-					}
-					if(quat1 != null) {
-						var tx1 = 0;
-						var ty1 = 0;
-						var tz1 = 0;
-						var tw1 = 1;
-						quat1.x = tx1;
-						quat1.y = ty1;
-						quat1.z = tz1;
-						quat1.w = tw1;
-						if(_this3.sizeQuat == _this3.stackQuat.length) {
-							var newLength7 = _this3.sizeQuat << 1;
-							var this8 = new Array(newLength7);
-							var newArray7 = this8;
-							var _g8 = 0;
-							var _g17 = _this3.sizeQuat;
-							while(_g8 < _g17) {
-								var i7 = _g8++;
-								newArray7[i7] = _this3.stackQuat[i7];
-								_this3.stackQuat[i7] = null;
-							}
-							_this3.stackQuat = newArray7;
-						}
-						_this3.stackQuat[_this3.sizeQuat++] = quat1;
-					}
-				}
-				if(d.drawContacts) {
-					var cc = c._contactConstraint;
-					var ps = c._contactConstraint._manifold._points;
-					var _g9 = 0;
-					var _g18 = c._contactConstraint._manifold._numPoints;
-					while(_g9 < _g18) {
-						var i8 = _g9++;
-						var p = ps[i8];
-						var style1 = d.style;
-						var tf1 = cc._s1._transform;
-						var tf2 = cc._s2._transform;
-						var _this4 = this._pool;
-						var pos1 = _this4.sizeVec3 == 0 ? new oimo.common.Vec3() : _this4.stackVec3[--_this4.sizeVec3];
-						var _this5 = this._pool;
-						var pos2 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
-						var _this6 = this._pool;
-						var normal = _this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3];
-						var _this7 = this._pool;
-						var tangent = _this7.sizeVec3 == 0 ? new oimo.common.Vec3() : _this7.stackVec3[--_this7.sizeVec3];
-						var _this8 = this._pool;
-						var binormal = _this8.sizeVec3 == 0 ? new oimo.common.Vec3() : _this8.stackVec3[--_this8.sizeVec3];
-						var v4 = pos1;
-						v4.x = p._pos1X;
-						v4.y = p._pos1Y;
-						v4.z = p._pos1Z;
-						var v5 = pos2;
-						v5.x = p._pos2X;
-						v5.y = p._pos2Y;
-						v5.z = p._pos2Z;
-						var v6 = normal;
-						v6.x = cc._manifold._normalX;
-						v6.y = cc._manifold._normalY;
-						v6.z = cc._manifold._normalZ;
-						var v7 = tangent;
-						v7.x = cc._manifold._tangentX;
-						v7.y = cc._manifold._tangentY;
-						v7.z = cc._manifold._tangentZ;
-						var v8 = binormal;
-						v8.x = cc._manifold._binormalX;
-						v8.y = cc._manifold._binormalY;
-						v8.z = cc._manifold._binormalZ;
-						if(p._disabled) {
-							d.point(pos1,style1.disabledContactColor);
-							d.point(pos2,style1.disabledContactColor);
-							d.line(pos1,pos2,style1.disabledContactColor);
-						} else if(p._warmStarted) {
-							var color1;
-							switch(p._id & 3) {
-							case 0:
-								color1 = style1.contactColor;
-								break;
-							case 1:
-								color1 = style1.contactColor2;
-								break;
-							case 2:
-								color1 = style1.contactColor3;
-								break;
-							default:
-								color1 = style1.contactColor4;
-							}
-							d.point(pos1,color1);
-							d.point(pos2,color1);
-							d.line(pos1,pos2,style1.contactColor);
-						} else {
-							d.point(pos1,style1.newContactColor);
-							d.point(pos2,style1.newContactColor);
-							d.line(pos1,pos2,style1.newContactColor);
-						}
-						pos2.x = pos1.x;
-						pos2.y = pos1.y;
-						pos2.z = pos1.z;
-						var _this9 = pos2;
-						var s = style1.contactNormalLength;
-						var tx2 = _this9.x + normal.x * s;
-						var ty2 = _this9.y + normal.y * s;
-						var tz2 = _this9.z + normal.z * s;
-						_this9.x = tx2;
-						_this9.y = ty2;
-						_this9.z = tz2;
-						d.line(pos1,pos2,style1.contactNormalColor);
-						if(d.drawContactBases) {
-							pos2.x = pos1.x;
-							pos2.y = pos1.y;
-							pos2.z = pos1.z;
-							var _this10 = pos2;
-							var s1 = style1.contactTangentLength;
-							var tx3 = _this10.x + tangent.x * s1;
-							var ty3 = _this10.y + tangent.y * s1;
-							var tz3 = _this10.z + tangent.z * s1;
-							_this10.x = tx3;
-							_this10.y = ty3;
-							_this10.z = tz3;
-							d.line(pos1,pos2,style1.contactTangentColor);
-							pos2.x = pos1.x;
-							pos2.y = pos1.y;
-							pos2.z = pos1.z;
-							var _this11 = pos2;
-							var s2 = style1.contactBinormalLength;
-							var tx4 = _this11.x + binormal.x * s2;
-							var ty4 = _this11.y + binormal.y * s2;
-							var tz4 = _this11.z + binormal.z * s2;
-							_this11.x = tx4;
-							_this11.y = ty4;
-							_this11.z = tz4;
-							d.line(pos1,pos2,style1.contactBinormalColor);
-						}
-						var _this12 = this._pool;
-						var mat32 = null;
-						var mat42 = null;
-						var quat2 = null;
-						if(pos1 != null) {
-							pos1.zero();
-							if(_this12.sizeVec3 == _this12.stackVec3.length) {
-								var newLength8 = _this12.sizeVec3 << 1;
-								var this9 = new Array(newLength8);
-								var newArray8 = this9;
-								var _g10 = 0;
-								var _g19 = _this12.sizeVec3;
-								while(_g10 < _g19) {
-									var i9 = _g10++;
-									newArray8[i9] = _this12.stackVec3[i9];
-									_this12.stackVec3[i9] = null;
-								}
-								_this12.stackVec3 = newArray8;
-							}
-							_this12.stackVec3[_this12.sizeVec3++] = pos1;
-						}
-						if(mat32 != null) {
-							var t004 = 1;
-							var t014 = 0;
-							var t024 = 0;
-							var t104 = 0;
-							var t114 = 1;
-							var t124 = 0;
-							var t204 = 0;
-							var t214 = 0;
-							var t224 = 1;
-							mat32.e00 = t004;
-							mat32.e01 = t014;
-							mat32.e02 = t024;
-							mat32.e10 = t104;
-							mat32.e11 = t114;
-							mat32.e12 = t124;
-							mat32.e20 = t204;
-							mat32.e21 = t214;
-							mat32.e22 = t224;
-							if(_this12.sizeMat3 == _this12.stackMat3.length) {
-								var newLength9 = _this12.sizeMat3 << 1;
-								var this10 = new Array(newLength9);
-								var newArray9 = this10;
-								var _g20 = 0;
-								var _g110 = _this12.sizeMat3;
-								while(_g20 < _g110) {
-									var i10 = _g20++;
-									newArray9[i10] = _this12.stackMat3[i10];
-									_this12.stackMat3[i10] = null;
-								}
-								_this12.stackMat3 = newArray9;
-							}
-							_this12.stackMat3[_this12.sizeMat3++] = mat32;
-						}
-						if(mat42 != null) {
-							var t005 = 1;
-							var t015 = 0;
-							var t025 = 0;
-							var t032 = 0;
-							var t105 = 0;
-							var t115 = 1;
-							var t125 = 0;
-							var t132 = 0;
-							var t205 = 0;
-							var t215 = 0;
-							var t225 = 1;
-							var t232 = 0;
-							var t302 = 0;
-							var t312 = 0;
-							var t322 = 0;
-							var t332 = 1;
-							mat42.e00 = t005;
-							mat42.e01 = t015;
-							mat42.e02 = t025;
-							mat42.e03 = t032;
-							mat42.e10 = t105;
-							mat42.e11 = t115;
-							mat42.e12 = t125;
-							mat42.e13 = t132;
-							mat42.e20 = t205;
-							mat42.e21 = t215;
-							mat42.e22 = t225;
-							mat42.e23 = t232;
-							mat42.e30 = t302;
-							mat42.e31 = t312;
-							mat42.e32 = t322;
-							mat42.e33 = t332;
-							if(_this12.sizeMat4 == _this12.stackMat4.length) {
-								var newLength10 = _this12.sizeMat4 << 1;
-								var this11 = new Array(newLength10);
-								var newArray10 = this11;
-								var _g21 = 0;
-								var _g111 = _this12.sizeMat4;
-								while(_g21 < _g111) {
-									var i11 = _g21++;
-									newArray10[i11] = _this12.stackMat4[i11];
-									_this12.stackMat4[i11] = null;
-								}
-								_this12.stackMat4 = newArray10;
-							}
-							_this12.stackMat4[_this12.sizeMat4++] = mat42;
-						}
-						if(quat2 != null) {
-							var tx5 = 0;
-							var ty5 = 0;
-							var tz5 = 0;
-							var tw2 = 1;
-							quat2.x = tx5;
-							quat2.y = ty5;
-							quat2.z = tz5;
-							quat2.w = tw2;
-							if(_this12.sizeQuat == _this12.stackQuat.length) {
-								var newLength11 = _this12.sizeQuat << 1;
-								var this12 = new Array(newLength11);
-								var newArray11 = this12;
-								var _g22 = 0;
-								var _g112 = _this12.sizeQuat;
-								while(_g22 < _g112) {
-									var i12 = _g22++;
-									newArray11[i12] = _this12.stackQuat[i12];
-									_this12.stackQuat[i12] = null;
-								}
-								_this12.stackQuat = newArray11;
-							}
-							_this12.stackQuat[_this12.sizeQuat++] = quat2;
-						}
-						var _this13 = this._pool;
-						var mat33 = null;
-						var mat43 = null;
-						var quat3 = null;
-						if(pos2 != null) {
-							pos2.zero();
-							if(_this13.sizeVec3 == _this13.stackVec3.length) {
-								var newLength12 = _this13.sizeVec3 << 1;
-								var this13 = new Array(newLength12);
-								var newArray12 = this13;
-								var _g23 = 0;
-								var _g113 = _this13.sizeVec3;
-								while(_g23 < _g113) {
-									var i13 = _g23++;
-									newArray12[i13] = _this13.stackVec3[i13];
-									_this13.stackVec3[i13] = null;
-								}
-								_this13.stackVec3 = newArray12;
-							}
-							_this13.stackVec3[_this13.sizeVec3++] = pos2;
-						}
-						if(mat33 != null) {
-							var t006 = 1;
-							var t016 = 0;
-							var t026 = 0;
-							var t106 = 0;
-							var t116 = 1;
-							var t126 = 0;
-							var t206 = 0;
-							var t216 = 0;
-							var t226 = 1;
-							mat33.e00 = t006;
-							mat33.e01 = t016;
-							mat33.e02 = t026;
-							mat33.e10 = t106;
-							mat33.e11 = t116;
-							mat33.e12 = t126;
-							mat33.e20 = t206;
-							mat33.e21 = t216;
-							mat33.e22 = t226;
-							if(_this13.sizeMat3 == _this13.stackMat3.length) {
-								var newLength13 = _this13.sizeMat3 << 1;
-								var this14 = new Array(newLength13);
-								var newArray13 = this14;
-								var _g24 = 0;
-								var _g114 = _this13.sizeMat3;
-								while(_g24 < _g114) {
-									var i14 = _g24++;
-									newArray13[i14] = _this13.stackMat3[i14];
-									_this13.stackMat3[i14] = null;
-								}
-								_this13.stackMat3 = newArray13;
-							}
-							_this13.stackMat3[_this13.sizeMat3++] = mat33;
-						}
-						if(mat43 != null) {
-							var t007 = 1;
-							var t017 = 0;
-							var t027 = 0;
-							var t033 = 0;
-							var t107 = 0;
-							var t117 = 1;
-							var t127 = 0;
-							var t133 = 0;
-							var t207 = 0;
-							var t217 = 0;
-							var t227 = 1;
-							var t233 = 0;
-							var t303 = 0;
-							var t313 = 0;
-							var t323 = 0;
-							var t333 = 1;
-							mat43.e00 = t007;
-							mat43.e01 = t017;
-							mat43.e02 = t027;
-							mat43.e03 = t033;
-							mat43.e10 = t107;
-							mat43.e11 = t117;
-							mat43.e12 = t127;
-							mat43.e13 = t133;
-							mat43.e20 = t207;
-							mat43.e21 = t217;
-							mat43.e22 = t227;
-							mat43.e23 = t233;
-							mat43.e30 = t303;
-							mat43.e31 = t313;
-							mat43.e32 = t323;
-							mat43.e33 = t333;
-							if(_this13.sizeMat4 == _this13.stackMat4.length) {
-								var newLength14 = _this13.sizeMat4 << 1;
-								var this15 = new Array(newLength14);
-								var newArray14 = this15;
-								var _g25 = 0;
-								var _g115 = _this13.sizeMat4;
-								while(_g25 < _g115) {
-									var i15 = _g25++;
-									newArray14[i15] = _this13.stackMat4[i15];
-									_this13.stackMat4[i15] = null;
-								}
-								_this13.stackMat4 = newArray14;
-							}
-							_this13.stackMat4[_this13.sizeMat4++] = mat43;
-						}
-						if(quat3 != null) {
-							var tx6 = 0;
-							var ty6 = 0;
-							var tz6 = 0;
-							var tw3 = 1;
-							quat3.x = tx6;
-							quat3.y = ty6;
-							quat3.z = tz6;
-							quat3.w = tw3;
-							if(_this13.sizeQuat == _this13.stackQuat.length) {
-								var newLength15 = _this13.sizeQuat << 1;
-								var this16 = new Array(newLength15);
-								var newArray15 = this16;
-								var _g26 = 0;
-								var _g116 = _this13.sizeQuat;
-								while(_g26 < _g116) {
-									var i16 = _g26++;
-									newArray15[i16] = _this13.stackQuat[i16];
-									_this13.stackQuat[i16] = null;
-								}
-								_this13.stackQuat = newArray15;
-							}
-							_this13.stackQuat[_this13.sizeQuat++] = quat3;
-						}
-						var _this14 = this._pool;
-						var mat34 = null;
-						var mat44 = null;
-						var quat4 = null;
-						if(normal != null) {
-							normal.zero();
-							if(_this14.sizeVec3 == _this14.stackVec3.length) {
-								var newLength16 = _this14.sizeVec3 << 1;
-								var this17 = new Array(newLength16);
-								var newArray16 = this17;
-								var _g27 = 0;
-								var _g117 = _this14.sizeVec3;
-								while(_g27 < _g117) {
-									var i17 = _g27++;
-									newArray16[i17] = _this14.stackVec3[i17];
-									_this14.stackVec3[i17] = null;
-								}
-								_this14.stackVec3 = newArray16;
-							}
-							_this14.stackVec3[_this14.sizeVec3++] = normal;
-						}
-						if(mat34 != null) {
-							var t008 = 1;
-							var t018 = 0;
-							var t028 = 0;
-							var t108 = 0;
-							var t118 = 1;
-							var t128 = 0;
-							var t208 = 0;
-							var t218 = 0;
-							var t228 = 1;
-							mat34.e00 = t008;
-							mat34.e01 = t018;
-							mat34.e02 = t028;
-							mat34.e10 = t108;
-							mat34.e11 = t118;
-							mat34.e12 = t128;
-							mat34.e20 = t208;
-							mat34.e21 = t218;
-							mat34.e22 = t228;
-							if(_this14.sizeMat3 == _this14.stackMat3.length) {
-								var newLength17 = _this14.sizeMat3 << 1;
-								var this18 = new Array(newLength17);
-								var newArray17 = this18;
-								var _g28 = 0;
-								var _g118 = _this14.sizeMat3;
-								while(_g28 < _g118) {
-									var i18 = _g28++;
-									newArray17[i18] = _this14.stackMat3[i18];
-									_this14.stackMat3[i18] = null;
-								}
-								_this14.stackMat3 = newArray17;
-							}
-							_this14.stackMat3[_this14.sizeMat3++] = mat34;
-						}
-						if(mat44 != null) {
-							var t009 = 1;
-							var t019 = 0;
-							var t029 = 0;
-							var t034 = 0;
-							var t109 = 0;
-							var t119 = 1;
-							var t129 = 0;
-							var t134 = 0;
-							var t209 = 0;
-							var t219 = 0;
-							var t229 = 1;
-							var t234 = 0;
-							var t304 = 0;
-							var t314 = 0;
-							var t324 = 0;
-							var t334 = 1;
-							mat44.e00 = t009;
-							mat44.e01 = t019;
-							mat44.e02 = t029;
-							mat44.e03 = t034;
-							mat44.e10 = t109;
-							mat44.e11 = t119;
-							mat44.e12 = t129;
-							mat44.e13 = t134;
-							mat44.e20 = t209;
-							mat44.e21 = t219;
-							mat44.e22 = t229;
-							mat44.e23 = t234;
-							mat44.e30 = t304;
-							mat44.e31 = t314;
-							mat44.e32 = t324;
-							mat44.e33 = t334;
-							if(_this14.sizeMat4 == _this14.stackMat4.length) {
-								var newLength18 = _this14.sizeMat4 << 1;
-								var this19 = new Array(newLength18);
-								var newArray18 = this19;
-								var _g29 = 0;
-								var _g119 = _this14.sizeMat4;
-								while(_g29 < _g119) {
-									var i19 = _g29++;
-									newArray18[i19] = _this14.stackMat4[i19];
-									_this14.stackMat4[i19] = null;
-								}
-								_this14.stackMat4 = newArray18;
-							}
-							_this14.stackMat4[_this14.sizeMat4++] = mat44;
-						}
-						if(quat4 != null) {
-							var tx7 = 0;
-							var ty7 = 0;
-							var tz7 = 0;
-							var tw4 = 1;
-							quat4.x = tx7;
-							quat4.y = ty7;
-							quat4.z = tz7;
-							quat4.w = tw4;
-							if(_this14.sizeQuat == _this14.stackQuat.length) {
-								var newLength19 = _this14.sizeQuat << 1;
-								var this20 = new Array(newLength19);
-								var newArray19 = this20;
-								var _g30 = 0;
-								var _g120 = _this14.sizeQuat;
-								while(_g30 < _g120) {
-									var i20 = _g30++;
-									newArray19[i20] = _this14.stackQuat[i20];
-									_this14.stackQuat[i20] = null;
-								}
-								_this14.stackQuat = newArray19;
-							}
-							_this14.stackQuat[_this14.sizeQuat++] = quat4;
-						}
-						var _this15 = this._pool;
-						var mat35 = null;
-						var mat45 = null;
-						var quat5 = null;
-						if(tangent != null) {
-							tangent.zero();
-							if(_this15.sizeVec3 == _this15.stackVec3.length) {
-								var newLength20 = _this15.sizeVec3 << 1;
-								var this21 = new Array(newLength20);
-								var newArray20 = this21;
-								var _g31 = 0;
-								var _g121 = _this15.sizeVec3;
-								while(_g31 < _g121) {
-									var i21 = _g31++;
-									newArray20[i21] = _this15.stackVec3[i21];
-									_this15.stackVec3[i21] = null;
-								}
-								_this15.stackVec3 = newArray20;
-							}
-							_this15.stackVec3[_this15.sizeVec3++] = tangent;
-						}
-						if(mat35 != null) {
-							var t0010 = 1;
-							var t0110 = 0;
-							var t0210 = 0;
-							var t1010 = 0;
-							var t1110 = 1;
-							var t1210 = 0;
-							var t2010 = 0;
-							var t2110 = 0;
-							var t2210 = 1;
-							mat35.e00 = t0010;
-							mat35.e01 = t0110;
-							mat35.e02 = t0210;
-							mat35.e10 = t1010;
-							mat35.e11 = t1110;
-							mat35.e12 = t1210;
-							mat35.e20 = t2010;
-							mat35.e21 = t2110;
-							mat35.e22 = t2210;
-							if(_this15.sizeMat3 == _this15.stackMat3.length) {
-								var newLength21 = _this15.sizeMat3 << 1;
-								var this22 = new Array(newLength21);
-								var newArray21 = this22;
-								var _g32 = 0;
-								var _g122 = _this15.sizeMat3;
-								while(_g32 < _g122) {
-									var i22 = _g32++;
-									newArray21[i22] = _this15.stackMat3[i22];
-									_this15.stackMat3[i22] = null;
-								}
-								_this15.stackMat3 = newArray21;
-							}
-							_this15.stackMat3[_this15.sizeMat3++] = mat35;
-						}
-						if(mat45 != null) {
-							var t0011 = 1;
-							var t0111 = 0;
-							var t0211 = 0;
-							var t035 = 0;
-							var t1011 = 0;
-							var t1111 = 1;
-							var t1211 = 0;
-							var t135 = 0;
-							var t2011 = 0;
-							var t2111 = 0;
-							var t2211 = 1;
-							var t235 = 0;
-							var t305 = 0;
-							var t315 = 0;
-							var t325 = 0;
-							var t335 = 1;
-							mat45.e00 = t0011;
-							mat45.e01 = t0111;
-							mat45.e02 = t0211;
-							mat45.e03 = t035;
-							mat45.e10 = t1011;
-							mat45.e11 = t1111;
-							mat45.e12 = t1211;
-							mat45.e13 = t135;
-							mat45.e20 = t2011;
-							mat45.e21 = t2111;
-							mat45.e22 = t2211;
-							mat45.e23 = t235;
-							mat45.e30 = t305;
-							mat45.e31 = t315;
-							mat45.e32 = t325;
-							mat45.e33 = t335;
-							if(_this15.sizeMat4 == _this15.stackMat4.length) {
-								var newLength22 = _this15.sizeMat4 << 1;
-								var this23 = new Array(newLength22);
-								var newArray22 = this23;
-								var _g33 = 0;
-								var _g123 = _this15.sizeMat4;
-								while(_g33 < _g123) {
-									var i23 = _g33++;
-									newArray22[i23] = _this15.stackMat4[i23];
-									_this15.stackMat4[i23] = null;
-								}
-								_this15.stackMat4 = newArray22;
-							}
-							_this15.stackMat4[_this15.sizeMat4++] = mat45;
-						}
-						if(quat5 != null) {
-							var tx8 = 0;
-							var ty8 = 0;
-							var tz8 = 0;
-							var tw5 = 1;
-							quat5.x = tx8;
-							quat5.y = ty8;
-							quat5.z = tz8;
-							quat5.w = tw5;
-							if(_this15.sizeQuat == _this15.stackQuat.length) {
-								var newLength23 = _this15.sizeQuat << 1;
-								var this24 = new Array(newLength23);
-								var newArray23 = this24;
-								var _g34 = 0;
-								var _g124 = _this15.sizeQuat;
-								while(_g34 < _g124) {
-									var i24 = _g34++;
-									newArray23[i24] = _this15.stackQuat[i24];
-									_this15.stackQuat[i24] = null;
-								}
-								_this15.stackQuat = newArray23;
-							}
-							_this15.stackQuat[_this15.sizeQuat++] = quat5;
-						}
-						var _this16 = this._pool;
-						var mat36 = null;
-						var mat46 = null;
-						var quat6 = null;
-						if(binormal != null) {
-							binormal.zero();
-							if(_this16.sizeVec3 == _this16.stackVec3.length) {
-								var newLength24 = _this16.sizeVec3 << 1;
-								var this25 = new Array(newLength24);
-								var newArray24 = this25;
-								var _g35 = 0;
-								var _g125 = _this16.sizeVec3;
-								while(_g35 < _g125) {
-									var i25 = _g35++;
-									newArray24[i25] = _this16.stackVec3[i25];
-									_this16.stackVec3[i25] = null;
-								}
-								_this16.stackVec3 = newArray24;
-							}
-							_this16.stackVec3[_this16.sizeVec3++] = binormal;
-						}
-						if(mat36 != null) {
-							var t0012 = 1;
-							var t0112 = 0;
-							var t0212 = 0;
-							var t1012 = 0;
-							var t1112 = 1;
-							var t1212 = 0;
-							var t2012 = 0;
-							var t2112 = 0;
-							var t2212 = 1;
-							mat36.e00 = t0012;
-							mat36.e01 = t0112;
-							mat36.e02 = t0212;
-							mat36.e10 = t1012;
-							mat36.e11 = t1112;
-							mat36.e12 = t1212;
-							mat36.e20 = t2012;
-							mat36.e21 = t2112;
-							mat36.e22 = t2212;
-							if(_this16.sizeMat3 == _this16.stackMat3.length) {
-								var newLength25 = _this16.sizeMat3 << 1;
-								var this26 = new Array(newLength25);
-								var newArray25 = this26;
-								var _g36 = 0;
-								var _g126 = _this16.sizeMat3;
-								while(_g36 < _g126) {
-									var i26 = _g36++;
-									newArray25[i26] = _this16.stackMat3[i26];
-									_this16.stackMat3[i26] = null;
-								}
-								_this16.stackMat3 = newArray25;
-							}
-							_this16.stackMat3[_this16.sizeMat3++] = mat36;
-						}
-						if(mat46 != null) {
-							var t0013 = 1;
-							var t0113 = 0;
-							var t0213 = 0;
-							var t036 = 0;
-							var t1013 = 0;
-							var t1113 = 1;
-							var t1213 = 0;
-							var t136 = 0;
-							var t2013 = 0;
-							var t2113 = 0;
-							var t2213 = 1;
-							var t236 = 0;
-							var t306 = 0;
-							var t316 = 0;
-							var t326 = 0;
-							var t336 = 1;
-							mat46.e00 = t0013;
-							mat46.e01 = t0113;
-							mat46.e02 = t0213;
-							mat46.e03 = t036;
-							mat46.e10 = t1013;
-							mat46.e11 = t1113;
-							mat46.e12 = t1213;
-							mat46.e13 = t136;
-							mat46.e20 = t2013;
-							mat46.e21 = t2113;
-							mat46.e22 = t2213;
-							mat46.e23 = t236;
-							mat46.e30 = t306;
-							mat46.e31 = t316;
-							mat46.e32 = t326;
-							mat46.e33 = t336;
-							if(_this16.sizeMat4 == _this16.stackMat4.length) {
-								var newLength26 = _this16.sizeMat4 << 1;
-								var this27 = new Array(newLength26);
-								var newArray26 = this27;
-								var _g37 = 0;
-								var _g127 = _this16.sizeMat4;
-								while(_g37 < _g127) {
-									var i27 = _g37++;
-									newArray26[i27] = _this16.stackMat4[i27];
-									_this16.stackMat4[i27] = null;
-								}
-								_this16.stackMat4 = newArray26;
-							}
-							_this16.stackMat4[_this16.sizeMat4++] = mat46;
-						}
-						if(quat6 != null) {
-							var tx9 = 0;
-							var ty9 = 0;
-							var tz9 = 0;
-							var tw6 = 1;
-							quat6.x = tx9;
-							quat6.y = ty9;
-							quat6.z = tz9;
-							quat6.w = tw6;
-							if(_this16.sizeQuat == _this16.stackQuat.length) {
-								var newLength27 = _this16.sizeQuat << 1;
-								var this28 = new Array(newLength27);
-								var newArray27 = this28;
-								var _g38 = 0;
-								var _g128 = _this16.sizeQuat;
-								while(_g38 < _g128) {
-									var i28 = _g38++;
-									newArray27[i28] = _this16.stackQuat[i28];
-									_this16.stackQuat[i28] = null;
-								}
-								_this16.stackQuat = newArray27;
-							}
-							_this16.stackQuat[_this16.sizeQuat++] = quat6;
-						}
-					}
-				}
-				c = n;
-			}
-		}
-		if(d.drawJoints) {
-			var j = this._jointList;
-			while(j != null) {
-				var n1 = j._next;
-				var _this17 = this._pool;
-				var p1 = _this17.sizeVec3 == 0 ? new oimo.common.Vec3() : _this17.stackVec3[--_this17.sizeVec3];
-				var _this18 = this._pool;
-				var p2 = _this18.sizeVec3 == 0 ? new oimo.common.Vec3() : _this18.stackVec3[--_this18.sizeVec3];
-				var v9 = p1;
-				v9.x = j._b1._transform._positionX;
-				v9.y = j._b1._transform._positionY;
-				v9.z = j._b1._transform._positionZ;
-				var v10 = p2;
-				v10.x = j._b2._transform._positionX;
-				v10.y = j._b2._transform._positionY;
-				v10.z = j._b2._transform._positionZ;
-				var _this19 = this._pool;
-				var anchor1 = _this19.sizeVec3 == 0 ? new oimo.common.Vec3() : _this19.stackVec3[--_this19.sizeVec3];
-				var _this20 = this._pool;
-				var anchor2 = _this20.sizeVec3 == 0 ? new oimo.common.Vec3() : _this20.stackVec3[--_this20.sizeVec3];
-				var _this21 = this._pool;
-				var basisX1 = _this21.sizeVec3 == 0 ? new oimo.common.Vec3() : _this21.stackVec3[--_this21.sizeVec3];
-				var _this22 = this._pool;
-				var basisY1 = _this22.sizeVec3 == 0 ? new oimo.common.Vec3() : _this22.stackVec3[--_this22.sizeVec3];
-				var _this23 = this._pool;
-				var basisZ1 = _this23.sizeVec3 == 0 ? new oimo.common.Vec3() : _this23.stackVec3[--_this23.sizeVec3];
-				var _this24 = this._pool;
-				var basisX2 = _this24.sizeVec3 == 0 ? new oimo.common.Vec3() : _this24.stackVec3[--_this24.sizeVec3];
-				var _this25 = this._pool;
-				var basisY2 = _this25.sizeVec3 == 0 ? new oimo.common.Vec3() : _this25.stackVec3[--_this25.sizeVec3];
-				var _this26 = this._pool;
-				var basisZ2 = _this26.sizeVec3 == 0 ? new oimo.common.Vec3() : _this26.stackVec3[--_this26.sizeVec3];
-				var v11 = anchor1;
-				v11.x = j._anchor1X;
-				v11.y = j._anchor1Y;
-				v11.z = j._anchor1Z;
-				var v12 = anchor2;
-				v12.x = j._anchor2X;
-				v12.y = j._anchor2Y;
-				v12.z = j._anchor2Z;
-				var v13 = basisX1;
-				v13.x = j._basisX1X;
-				v13.y = j._basisX1Y;
-				v13.z = j._basisX1Z;
-				var v14 = basisY1;
-				v14.x = j._basisY1X;
-				v14.y = j._basisY1Y;
-				v14.z = j._basisY1Z;
-				var v15 = basisZ1;
-				v15.x = j._basisZ1X;
-				v15.y = j._basisZ1Y;
-				v15.z = j._basisZ1Z;
-				var v16 = basisX2;
-				v16.x = j._basisX2X;
-				v16.y = j._basisX2Y;
-				v16.z = j._basisX2Z;
-				var v17 = basisY2;
-				v17.x = j._basisY2X;
-				v17.y = j._basisY2Y;
-				v17.z = j._basisY2Z;
-				var v18 = basisZ2;
-				v18.x = j._basisZ2X;
-				v18.y = j._basisZ2Y;
-				v18.z = j._basisZ2Z;
-				d.line(p1,anchor1,d.style.jointLineColor);
-				d.line(p2,anchor2,d.style.jointLineColor);
-				if(d.drawJointLimits) {
-					switch(j._type) {
-					case 0:
-						break;
-					case 1:
-						var radius = d.style.jointRotationalConstraintRadius;
-						var color2 = d.style.jointLineColor;
-						var lm = j._lm;
-						this._drawRotationalLimit(d,anchor1,basisY1,basisZ1,basisY2,radius,lm.lowerLimit,lm.upperLimit,color2);
-						break;
-					case 2:
-						var j1 = j;
-						var radius1 = d.style.jointRotationalConstraintRadius;
-						var color3 = d.style.jointLineColor;
-						var rlm = j1._rotLm;
-						var tlm = j1._translLm;
-						this._drawRotationalLimit(d,anchor2,basisY1,basisZ1,basisY2,radius1,rlm.lowerLimit,rlm.upperLimit,color3);
-						this._drawTranslationalLimit(d,anchor1,basisX1,tlm.lowerLimit,tlm.upperLimit,color3);
-						break;
-					case 3:
-						var radius2 = d.style.jointRotationalConstraintRadius;
-						var color4 = d.style.jointLineColor;
-						var lm1 = j._lm;
-						this._drawTranslationalLimit(d,anchor1,basisX1,lm1.lowerLimit,lm1.upperLimit,color4);
-						break;
-					case 4:
-						var j2 = j;
-						var radius3 = d.style.jointRotationalConstraintRadius;
-						var color5 = d.style.jointLineColor;
-						var lm11 = j2._lm1;
-						var lm2 = j2._lm2;
-						this._drawRotationalLimit(d,anchor1,basisY1,basisZ1,basisY1,radius3,j2._angleX - lm11.upperLimit,j2._angleX - lm11.lowerLimit,color5);
-						this._drawRotationalLimit(d,anchor2,basisX2,basisY2,basisX2,radius3,lm2.lowerLimit - j2._angleZ,lm2.upperLimit - j2._angleZ,color5);
-						break;
-					case 5:
-						var j3 = j;
-						var radius4 = d.style.jointRotationalConstraintRadius;
-						var color6 = d.style.jointLineColor;
-						var lm3 = j3._twistLm;
-						this._drawRotationalLimit(d,anchor2,basisY2,basisZ2,basisY2,radius4,lm3.lowerLimit - j3._twistAngle,lm3.upperLimit - j3._twistAngle,color6);
-						this._drawEllipseOnSphere(d,anchor1,basisX1,basisY1,basisZ1,j3._maxSwingAngle1,j3._maxSwingAngle2,radius4,color6);
-						var _this27 = this._pool;
-						var _this28 = _this27.sizeVec3 == 0 ? new oimo.common.Vec3() : _this27.stackVec3[--_this27.sizeVec3];
-						_this28.x = anchor2.x;
-						_this28.y = anchor2.y;
-						_this28.z = anchor2.z;
-						var _this29 = _this28;
-						var tx10 = _this29.x + basisX2.x * radius4;
-						var ty10 = _this29.y + basisX2.y * radius4;
-						var tz10 = _this29.z + basisX2.z * radius4;
-						_this29.x = tx10;
-						_this29.y = ty10;
-						_this29.z = tz10;
-						var to = _this29;
-						d.line(anchor2,to,color6);
-						var _this30 = this._pool;
-						var mat37 = null;
-						var mat47 = null;
-						var quat7 = null;
-						if(to != null) {
-							to.zero();
-							if(_this30.sizeVec3 == _this30.stackVec3.length) {
-								var newLength28 = _this30.sizeVec3 << 1;
-								var this29 = new Array(newLength28);
-								var newArray28 = this29;
-								var _g39 = 0;
-								var _g129 = _this30.sizeVec3;
-								while(_g39 < _g129) {
-									var i29 = _g39++;
-									newArray28[i29] = _this30.stackVec3[i29];
-									_this30.stackVec3[i29] = null;
-								}
-								_this30.stackVec3 = newArray28;
-							}
-							_this30.stackVec3[_this30.sizeVec3++] = to;
-						}
-						if(mat37 != null) {
-							var t0014 = 1;
-							var t0114 = 0;
-							var t0214 = 0;
-							var t1014 = 0;
-							var t1114 = 1;
-							var t1214 = 0;
-							var t2014 = 0;
-							var t2114 = 0;
-							var t2214 = 1;
-							mat37.e00 = t0014;
-							mat37.e01 = t0114;
-							mat37.e02 = t0214;
-							mat37.e10 = t1014;
-							mat37.e11 = t1114;
-							mat37.e12 = t1214;
-							mat37.e20 = t2014;
-							mat37.e21 = t2114;
-							mat37.e22 = t2214;
-							if(_this30.sizeMat3 == _this30.stackMat3.length) {
-								var newLength29 = _this30.sizeMat3 << 1;
-								var this30 = new Array(newLength29);
-								var newArray29 = this30;
-								var _g40 = 0;
-								var _g130 = _this30.sizeMat3;
-								while(_g40 < _g130) {
-									var i30 = _g40++;
-									newArray29[i30] = _this30.stackMat3[i30];
-									_this30.stackMat3[i30] = null;
-								}
-								_this30.stackMat3 = newArray29;
-							}
-							_this30.stackMat3[_this30.sizeMat3++] = mat37;
-						}
-						if(mat47 != null) {
-							var t0015 = 1;
-							var t0115 = 0;
-							var t0215 = 0;
-							var t037 = 0;
-							var t1015 = 0;
-							var t1115 = 1;
-							var t1215 = 0;
-							var t137 = 0;
-							var t2015 = 0;
-							var t2115 = 0;
-							var t2215 = 1;
-							var t237 = 0;
-							var t307 = 0;
-							var t317 = 0;
-							var t327 = 0;
-							var t337 = 1;
-							mat47.e00 = t0015;
-							mat47.e01 = t0115;
-							mat47.e02 = t0215;
-							mat47.e03 = t037;
-							mat47.e10 = t1015;
-							mat47.e11 = t1115;
-							mat47.e12 = t1215;
-							mat47.e13 = t137;
-							mat47.e20 = t2015;
-							mat47.e21 = t2115;
-							mat47.e22 = t2215;
-							mat47.e23 = t237;
-							mat47.e30 = t307;
-							mat47.e31 = t317;
-							mat47.e32 = t327;
-							mat47.e33 = t337;
-							if(_this30.sizeMat4 == _this30.stackMat4.length) {
-								var newLength30 = _this30.sizeMat4 << 1;
-								var this31 = new Array(newLength30);
-								var newArray30 = this31;
-								var _g41 = 0;
-								var _g131 = _this30.sizeMat4;
-								while(_g41 < _g131) {
-									var i31 = _g41++;
-									newArray30[i31] = _this30.stackMat4[i31];
-									_this30.stackMat4[i31] = null;
-								}
-								_this30.stackMat4 = newArray30;
-							}
-							_this30.stackMat4[_this30.sizeMat4++] = mat47;
-						}
-						if(quat7 != null) {
-							var tx11 = 0;
-							var ty11 = 0;
-							var tz11 = 0;
-							var tw7 = 1;
-							quat7.x = tx11;
-							quat7.y = ty11;
-							quat7.z = tz11;
-							quat7.w = tw7;
-							if(_this30.sizeQuat == _this30.stackQuat.length) {
-								var newLength31 = _this30.sizeQuat << 1;
-								var this32 = new Array(newLength31);
-								var newArray31 = this32;
-								var _g42 = 0;
-								var _g132 = _this30.sizeQuat;
-								while(_g42 < _g132) {
-									var i32 = _g42++;
-									newArray31[i32] = _this30.stackQuat[i32];
-									_this30.stackQuat[i32] = null;
-								}
-								_this30.stackQuat = newArray31;
-							}
-							_this30.stackQuat[_this30.sizeQuat++] = quat7;
-						}
-						break;
-					case 6:
-						var j4 = j;
-						var radius5 = d.style.jointRotationalConstraintRadius;
-						var color7 = d.style.jointLineColor;
-						var txlm = j4._translLms[0];
-						var tylm = j4._translLms[1];
-						var tzlm = j4._translLms[2];
-						var rxlm = j4._rotLms[0];
-						var rylm = j4._rotLms[1];
-						var rzlm = j4._rotLms[2];
-						this._drawTranslationalLimit3D(d,anchor1,basisX1,basisY1,basisZ1,txlm,tylm,tzlm,color7);
-						var _this31 = this._pool;
-						var rotYAxis = _this31.sizeVec3 == 0 ? new oimo.common.Vec3() : _this31.stackVec3[--_this31.sizeVec3];
-						var v19 = rotYAxis;
-						v19.x = j4._axisYX;
-						v19.y = j4._axisYY;
-						v19.z = j4._axisYZ;
-						var _this32 = this._pool;
-						var _this33 = _this32.sizeVec3 == 0 ? new oimo.common.Vec3() : _this32.stackVec3[--_this32.sizeVec3];
-						_this33.x = basisX1.x;
-						_this33.y = basisX1.y;
-						_this33.z = basisX1.z;
-						var rotYBasisX = _this33;
-						var _this34 = this._pool;
-						var _this35 = _this34.sizeVec3 == 0 ? new oimo.common.Vec3() : _this34.stackVec3[--_this34.sizeVec3];
-						_this35.x = basisX1.x;
-						_this35.y = basisX1.y;
-						_this35.z = basisX1.z;
-						var _this36 = _this35;
-						var tx12 = _this36.y * rotYAxis.z - _this36.z * rotYAxis.y;
-						var ty12 = _this36.z * rotYAxis.x - _this36.x * rotYAxis.z;
-						var tz12 = _this36.x * rotYAxis.y - _this36.y * rotYAxis.x;
-						_this36.x = tx12;
-						_this36.y = ty12;
-						_this36.z = tz12;
-						var rotYBasisY = _this36;
-						this._drawRotationalLimit(d,anchor2,basisY1,basisZ1,basisY1,radius5,j4._angleX - rxlm.upperLimit,j4._angleX - rxlm.lowerLimit,color7);
-						this._drawRotationalLimit(d,anchor2,rotYBasisX,rotYBasisY,rotYBasisX,radius5,rylm.lowerLimit - j4._angleY,rylm.upperLimit - j4._angleY,color7);
-						this._drawRotationalLimit(d,anchor2,basisX2,basisY2,basisX2,radius5,rzlm.lowerLimit - j4._angleZ,rzlm.upperLimit - j4._angleZ,color7);
-						break;
-					}
-				}
-				d.line(anchor1,anchor2,d.style.jointErrorColor);
-				var _this37 = this._pool;
-				var mat38 = null;
-				var mat48 = null;
-				var quat8 = null;
-				if(p1 != null) {
-					p1.zero();
-					if(_this37.sizeVec3 == _this37.stackVec3.length) {
-						var newLength32 = _this37.sizeVec3 << 1;
-						var this33 = new Array(newLength32);
-						var newArray32 = this33;
-						var _g43 = 0;
-						var _g133 = _this37.sizeVec3;
-						while(_g43 < _g133) {
-							var i33 = _g43++;
-							newArray32[i33] = _this37.stackVec3[i33];
-							_this37.stackVec3[i33] = null;
-						}
-						_this37.stackVec3 = newArray32;
-					}
-					_this37.stackVec3[_this37.sizeVec3++] = p1;
-				}
-				if(mat38 != null) {
-					var t0016 = 1;
-					var t0116 = 0;
-					var t0216 = 0;
-					var t1016 = 0;
-					var t1116 = 1;
-					var t1216 = 0;
-					var t2016 = 0;
-					var t2116 = 0;
-					var t2216 = 1;
-					mat38.e00 = t0016;
-					mat38.e01 = t0116;
-					mat38.e02 = t0216;
-					mat38.e10 = t1016;
-					mat38.e11 = t1116;
-					mat38.e12 = t1216;
-					mat38.e20 = t2016;
-					mat38.e21 = t2116;
-					mat38.e22 = t2216;
-					if(_this37.sizeMat3 == _this37.stackMat3.length) {
-						var newLength33 = _this37.sizeMat3 << 1;
-						var this34 = new Array(newLength33);
-						var newArray33 = this34;
-						var _g44 = 0;
-						var _g134 = _this37.sizeMat3;
-						while(_g44 < _g134) {
-							var i34 = _g44++;
-							newArray33[i34] = _this37.stackMat3[i34];
-							_this37.stackMat3[i34] = null;
-						}
-						_this37.stackMat3 = newArray33;
-					}
-					_this37.stackMat3[_this37.sizeMat3++] = mat38;
-				}
-				if(mat48 != null) {
-					var t0017 = 1;
-					var t0117 = 0;
-					var t0217 = 0;
-					var t038 = 0;
-					var t1017 = 0;
-					var t1117 = 1;
-					var t1217 = 0;
-					var t138 = 0;
-					var t2017 = 0;
-					var t2117 = 0;
-					var t2217 = 1;
-					var t238 = 0;
-					var t308 = 0;
-					var t318 = 0;
-					var t328 = 0;
-					var t338 = 1;
-					mat48.e00 = t0017;
-					mat48.e01 = t0117;
-					mat48.e02 = t0217;
-					mat48.e03 = t038;
-					mat48.e10 = t1017;
-					mat48.e11 = t1117;
-					mat48.e12 = t1217;
-					mat48.e13 = t138;
-					mat48.e20 = t2017;
-					mat48.e21 = t2117;
-					mat48.e22 = t2217;
-					mat48.e23 = t238;
-					mat48.e30 = t308;
-					mat48.e31 = t318;
-					mat48.e32 = t328;
-					mat48.e33 = t338;
-					if(_this37.sizeMat4 == _this37.stackMat4.length) {
-						var newLength34 = _this37.sizeMat4 << 1;
-						var this35 = new Array(newLength34);
-						var newArray34 = this35;
-						var _g45 = 0;
-						var _g135 = _this37.sizeMat4;
-						while(_g45 < _g135) {
-							var i35 = _g45++;
-							newArray34[i35] = _this37.stackMat4[i35];
-							_this37.stackMat4[i35] = null;
-						}
-						_this37.stackMat4 = newArray34;
-					}
-					_this37.stackMat4[_this37.sizeMat4++] = mat48;
-				}
-				if(quat8 != null) {
-					var tx13 = 0;
-					var ty13 = 0;
-					var tz13 = 0;
-					var tw8 = 1;
-					quat8.x = tx13;
-					quat8.y = ty13;
-					quat8.z = tz13;
-					quat8.w = tw8;
-					if(_this37.sizeQuat == _this37.stackQuat.length) {
-						var newLength35 = _this37.sizeQuat << 1;
-						var this36 = new Array(newLength35);
-						var newArray35 = this36;
-						var _g46 = 0;
-						var _g136 = _this37.sizeQuat;
-						while(_g46 < _g136) {
-							var i36 = _g46++;
-							newArray35[i36] = _this37.stackQuat[i36];
-							_this37.stackQuat[i36] = null;
-						}
-						_this37.stackQuat = newArray35;
-					}
-					_this37.stackQuat[_this37.sizeQuat++] = quat8;
-				}
-				var _this38 = this._pool;
-				var mat39 = null;
-				var mat49 = null;
-				var quat9 = null;
-				if(p2 != null) {
-					p2.zero();
-					if(_this38.sizeVec3 == _this38.stackVec3.length) {
-						var newLength36 = _this38.sizeVec3 << 1;
-						var this37 = new Array(newLength36);
-						var newArray36 = this37;
-						var _g47 = 0;
-						var _g137 = _this38.sizeVec3;
-						while(_g47 < _g137) {
-							var i37 = _g47++;
-							newArray36[i37] = _this38.stackVec3[i37];
-							_this38.stackVec3[i37] = null;
-						}
-						_this38.stackVec3 = newArray36;
-					}
-					_this38.stackVec3[_this38.sizeVec3++] = p2;
-				}
-				if(mat39 != null) {
-					var t0018 = 1;
-					var t0118 = 0;
-					var t0218 = 0;
-					var t1018 = 0;
-					var t1118 = 1;
-					var t1218 = 0;
-					var t2018 = 0;
-					var t2118 = 0;
-					var t2218 = 1;
-					mat39.e00 = t0018;
-					mat39.e01 = t0118;
-					mat39.e02 = t0218;
-					mat39.e10 = t1018;
-					mat39.e11 = t1118;
-					mat39.e12 = t1218;
-					mat39.e20 = t2018;
-					mat39.e21 = t2118;
-					mat39.e22 = t2218;
-					if(_this38.sizeMat3 == _this38.stackMat3.length) {
-						var newLength37 = _this38.sizeMat3 << 1;
-						var this38 = new Array(newLength37);
-						var newArray37 = this38;
-						var _g48 = 0;
-						var _g138 = _this38.sizeMat3;
-						while(_g48 < _g138) {
-							var i38 = _g48++;
-							newArray37[i38] = _this38.stackMat3[i38];
-							_this38.stackMat3[i38] = null;
-						}
-						_this38.stackMat3 = newArray37;
-					}
-					_this38.stackMat3[_this38.sizeMat3++] = mat39;
-				}
-				if(mat49 != null) {
-					var t0019 = 1;
-					var t0119 = 0;
-					var t0219 = 0;
-					var t039 = 0;
-					var t1019 = 0;
-					var t1119 = 1;
-					var t1219 = 0;
-					var t139 = 0;
-					var t2019 = 0;
-					var t2119 = 0;
-					var t2219 = 1;
-					var t239 = 0;
-					var t309 = 0;
-					var t319 = 0;
-					var t329 = 0;
-					var t339 = 1;
-					mat49.e00 = t0019;
-					mat49.e01 = t0119;
-					mat49.e02 = t0219;
-					mat49.e03 = t039;
-					mat49.e10 = t1019;
-					mat49.e11 = t1119;
-					mat49.e12 = t1219;
-					mat49.e13 = t139;
-					mat49.e20 = t2019;
-					mat49.e21 = t2119;
-					mat49.e22 = t2219;
-					mat49.e23 = t239;
-					mat49.e30 = t309;
-					mat49.e31 = t319;
-					mat49.e32 = t329;
-					mat49.e33 = t339;
-					if(_this38.sizeMat4 == _this38.stackMat4.length) {
-						var newLength38 = _this38.sizeMat4 << 1;
-						var this39 = new Array(newLength38);
-						var newArray38 = this39;
-						var _g49 = 0;
-						var _g139 = _this38.sizeMat4;
-						while(_g49 < _g139) {
-							var i39 = _g49++;
-							newArray38[i39] = _this38.stackMat4[i39];
-							_this38.stackMat4[i39] = null;
-						}
-						_this38.stackMat4 = newArray38;
-					}
-					_this38.stackMat4[_this38.sizeMat4++] = mat49;
-				}
-				if(quat9 != null) {
-					var tx14 = 0;
-					var ty14 = 0;
-					var tz14 = 0;
-					var tw9 = 1;
-					quat9.x = tx14;
-					quat9.y = ty14;
-					quat9.z = tz14;
-					quat9.w = tw9;
-					if(_this38.sizeQuat == _this38.stackQuat.length) {
-						var newLength39 = _this38.sizeQuat << 1;
-						var this40 = new Array(newLength39);
-						var newArray39 = this40;
-						var _g50 = 0;
-						var _g140 = _this38.sizeQuat;
-						while(_g50 < _g140) {
-							var i40 = _g50++;
-							newArray39[i40] = _this38.stackQuat[i40];
-							_this38.stackQuat[i40] = null;
-						}
-						_this38.stackQuat = newArray39;
-					}
-					_this38.stackQuat[_this38.sizeQuat++] = quat9;
-				}
-				var _this39 = this._pool;
-				var mat310 = null;
-				var mat410 = null;
-				var quat10 = null;
-				if(anchor1 != null) {
-					anchor1.zero();
-					if(_this39.sizeVec3 == _this39.stackVec3.length) {
-						var newLength40 = _this39.sizeVec3 << 1;
-						var this41 = new Array(newLength40);
-						var newArray40 = this41;
-						var _g51 = 0;
-						var _g141 = _this39.sizeVec3;
-						while(_g51 < _g141) {
-							var i41 = _g51++;
-							newArray40[i41] = _this39.stackVec3[i41];
-							_this39.stackVec3[i41] = null;
-						}
-						_this39.stackVec3 = newArray40;
-					}
-					_this39.stackVec3[_this39.sizeVec3++] = anchor1;
-				}
-				if(mat310 != null) {
-					var t0020 = 1;
-					var t0120 = 0;
-					var t0220 = 0;
-					var t1020 = 0;
-					var t1120 = 1;
-					var t1220 = 0;
-					var t2020 = 0;
-					var t2120 = 0;
-					var t2220 = 1;
-					mat310.e00 = t0020;
-					mat310.e01 = t0120;
-					mat310.e02 = t0220;
-					mat310.e10 = t1020;
-					mat310.e11 = t1120;
-					mat310.e12 = t1220;
-					mat310.e20 = t2020;
-					mat310.e21 = t2120;
-					mat310.e22 = t2220;
-					if(_this39.sizeMat3 == _this39.stackMat3.length) {
-						var newLength41 = _this39.sizeMat3 << 1;
-						var this42 = new Array(newLength41);
-						var newArray41 = this42;
-						var _g52 = 0;
-						var _g142 = _this39.sizeMat3;
-						while(_g52 < _g142) {
-							var i42 = _g52++;
-							newArray41[i42] = _this39.stackMat3[i42];
-							_this39.stackMat3[i42] = null;
-						}
-						_this39.stackMat3 = newArray41;
-					}
-					_this39.stackMat3[_this39.sizeMat3++] = mat310;
-				}
-				if(mat410 != null) {
-					var t0021 = 1;
-					var t0121 = 0;
-					var t0221 = 0;
-					var t0310 = 0;
-					var t1021 = 0;
-					var t1121 = 1;
-					var t1221 = 0;
-					var t1310 = 0;
-					var t2021 = 0;
-					var t2121 = 0;
-					var t2221 = 1;
-					var t2310 = 0;
-					var t3010 = 0;
-					var t3110 = 0;
-					var t3210 = 0;
-					var t3310 = 1;
-					mat410.e00 = t0021;
-					mat410.e01 = t0121;
-					mat410.e02 = t0221;
-					mat410.e03 = t0310;
-					mat410.e10 = t1021;
-					mat410.e11 = t1121;
-					mat410.e12 = t1221;
-					mat410.e13 = t1310;
-					mat410.e20 = t2021;
-					mat410.e21 = t2121;
-					mat410.e22 = t2221;
-					mat410.e23 = t2310;
-					mat410.e30 = t3010;
-					mat410.e31 = t3110;
-					mat410.e32 = t3210;
-					mat410.e33 = t3310;
-					if(_this39.sizeMat4 == _this39.stackMat4.length) {
-						var newLength42 = _this39.sizeMat4 << 1;
-						var this43 = new Array(newLength42);
-						var newArray42 = this43;
-						var _g53 = 0;
-						var _g143 = _this39.sizeMat4;
-						while(_g53 < _g143) {
-							var i43 = _g53++;
-							newArray42[i43] = _this39.stackMat4[i43];
-							_this39.stackMat4[i43] = null;
-						}
-						_this39.stackMat4 = newArray42;
-					}
-					_this39.stackMat4[_this39.sizeMat4++] = mat410;
-				}
-				if(quat10 != null) {
-					var tx15 = 0;
-					var ty15 = 0;
-					var tz15 = 0;
-					var tw10 = 1;
-					quat10.x = tx15;
-					quat10.y = ty15;
-					quat10.z = tz15;
-					quat10.w = tw10;
-					if(_this39.sizeQuat == _this39.stackQuat.length) {
-						var newLength43 = _this39.sizeQuat << 1;
-						var this44 = new Array(newLength43);
-						var newArray43 = this44;
-						var _g54 = 0;
-						var _g144 = _this39.sizeQuat;
-						while(_g54 < _g144) {
-							var i44 = _g54++;
-							newArray43[i44] = _this39.stackQuat[i44];
-							_this39.stackQuat[i44] = null;
-						}
-						_this39.stackQuat = newArray43;
-					}
-					_this39.stackQuat[_this39.sizeQuat++] = quat10;
-				}
-				var _this40 = this._pool;
-				var mat311 = null;
-				var mat411 = null;
-				var quat11 = null;
-				if(anchor2 != null) {
-					anchor2.zero();
-					if(_this40.sizeVec3 == _this40.stackVec3.length) {
-						var newLength44 = _this40.sizeVec3 << 1;
-						var this45 = new Array(newLength44);
-						var newArray44 = this45;
-						var _g55 = 0;
-						var _g145 = _this40.sizeVec3;
-						while(_g55 < _g145) {
-							var i45 = _g55++;
-							newArray44[i45] = _this40.stackVec3[i45];
-							_this40.stackVec3[i45] = null;
-						}
-						_this40.stackVec3 = newArray44;
-					}
-					_this40.stackVec3[_this40.sizeVec3++] = anchor2;
-				}
-				if(mat311 != null) {
-					var t0022 = 1;
-					var t0122 = 0;
-					var t0222 = 0;
-					var t1022 = 0;
-					var t1122 = 1;
-					var t1222 = 0;
-					var t2022 = 0;
-					var t2122 = 0;
-					var t2222 = 1;
-					mat311.e00 = t0022;
-					mat311.e01 = t0122;
-					mat311.e02 = t0222;
-					mat311.e10 = t1022;
-					mat311.e11 = t1122;
-					mat311.e12 = t1222;
-					mat311.e20 = t2022;
-					mat311.e21 = t2122;
-					mat311.e22 = t2222;
-					if(_this40.sizeMat3 == _this40.stackMat3.length) {
-						var newLength45 = _this40.sizeMat3 << 1;
-						var this46 = new Array(newLength45);
-						var newArray45 = this46;
-						var _g56 = 0;
-						var _g146 = _this40.sizeMat3;
-						while(_g56 < _g146) {
-							var i46 = _g56++;
-							newArray45[i46] = _this40.stackMat3[i46];
-							_this40.stackMat3[i46] = null;
-						}
-						_this40.stackMat3 = newArray45;
-					}
-					_this40.stackMat3[_this40.sizeMat3++] = mat311;
-				}
-				if(mat411 != null) {
-					var t0023 = 1;
-					var t0123 = 0;
-					var t0223 = 0;
-					var t0311 = 0;
-					var t1023 = 0;
-					var t1123 = 1;
-					var t1223 = 0;
-					var t1311 = 0;
-					var t2023 = 0;
-					var t2123 = 0;
-					var t2223 = 1;
-					var t2311 = 0;
-					var t3011 = 0;
-					var t3111 = 0;
-					var t3211 = 0;
-					var t3311 = 1;
-					mat411.e00 = t0023;
-					mat411.e01 = t0123;
-					mat411.e02 = t0223;
-					mat411.e03 = t0311;
-					mat411.e10 = t1023;
-					mat411.e11 = t1123;
-					mat411.e12 = t1223;
-					mat411.e13 = t1311;
-					mat411.e20 = t2023;
-					mat411.e21 = t2123;
-					mat411.e22 = t2223;
-					mat411.e23 = t2311;
-					mat411.e30 = t3011;
-					mat411.e31 = t3111;
-					mat411.e32 = t3211;
-					mat411.e33 = t3311;
-					if(_this40.sizeMat4 == _this40.stackMat4.length) {
-						var newLength46 = _this40.sizeMat4 << 1;
-						var this47 = new Array(newLength46);
-						var newArray46 = this47;
-						var _g57 = 0;
-						var _g147 = _this40.sizeMat4;
-						while(_g57 < _g147) {
-							var i47 = _g57++;
-							newArray46[i47] = _this40.stackMat4[i47];
-							_this40.stackMat4[i47] = null;
-						}
-						_this40.stackMat4 = newArray46;
-					}
-					_this40.stackMat4[_this40.sizeMat4++] = mat411;
-				}
-				if(quat11 != null) {
-					var tx16 = 0;
-					var ty16 = 0;
-					var tz16 = 0;
-					var tw11 = 1;
-					quat11.x = tx16;
-					quat11.y = ty16;
-					quat11.z = tz16;
-					quat11.w = tw11;
-					if(_this40.sizeQuat == _this40.stackQuat.length) {
-						var newLength47 = _this40.sizeQuat << 1;
-						var this48 = new Array(newLength47);
-						var newArray47 = this48;
-						var _g58 = 0;
-						var _g148 = _this40.sizeQuat;
-						while(_g58 < _g148) {
-							var i48 = _g58++;
-							newArray47[i48] = _this40.stackQuat[i48];
-							_this40.stackQuat[i48] = null;
-						}
-						_this40.stackQuat = newArray47;
-					}
-					_this40.stackQuat[_this40.sizeQuat++] = quat11;
-				}
-				var _this41 = this._pool;
-				var mat312 = null;
-				var mat412 = null;
-				var quat12 = null;
-				if(basisX1 != null) {
-					basisX1.zero();
-					if(_this41.sizeVec3 == _this41.stackVec3.length) {
-						var newLength48 = _this41.sizeVec3 << 1;
-						var this49 = new Array(newLength48);
-						var newArray48 = this49;
-						var _g59 = 0;
-						var _g149 = _this41.sizeVec3;
-						while(_g59 < _g149) {
-							var i49 = _g59++;
-							newArray48[i49] = _this41.stackVec3[i49];
-							_this41.stackVec3[i49] = null;
-						}
-						_this41.stackVec3 = newArray48;
-					}
-					_this41.stackVec3[_this41.sizeVec3++] = basisX1;
-				}
-				if(mat312 != null) {
-					var t0024 = 1;
-					var t0124 = 0;
-					var t0224 = 0;
-					var t1024 = 0;
-					var t1124 = 1;
-					var t1224 = 0;
-					var t2024 = 0;
-					var t2124 = 0;
-					var t2224 = 1;
-					mat312.e00 = t0024;
-					mat312.e01 = t0124;
-					mat312.e02 = t0224;
-					mat312.e10 = t1024;
-					mat312.e11 = t1124;
-					mat312.e12 = t1224;
-					mat312.e20 = t2024;
-					mat312.e21 = t2124;
-					mat312.e22 = t2224;
-					if(_this41.sizeMat3 == _this41.stackMat3.length) {
-						var newLength49 = _this41.sizeMat3 << 1;
-						var this50 = new Array(newLength49);
-						var newArray49 = this50;
-						var _g60 = 0;
-						var _g150 = _this41.sizeMat3;
-						while(_g60 < _g150) {
-							var i50 = _g60++;
-							newArray49[i50] = _this41.stackMat3[i50];
-							_this41.stackMat3[i50] = null;
-						}
-						_this41.stackMat3 = newArray49;
-					}
-					_this41.stackMat3[_this41.sizeMat3++] = mat312;
-				}
-				if(mat412 != null) {
-					var t0025 = 1;
-					var t0125 = 0;
-					var t0225 = 0;
-					var t0312 = 0;
-					var t1025 = 0;
-					var t1125 = 1;
-					var t1225 = 0;
-					var t1312 = 0;
-					var t2025 = 0;
-					var t2125 = 0;
-					var t2225 = 1;
-					var t2312 = 0;
-					var t3012 = 0;
-					var t3112 = 0;
-					var t3212 = 0;
-					var t3312 = 1;
-					mat412.e00 = t0025;
-					mat412.e01 = t0125;
-					mat412.e02 = t0225;
-					mat412.e03 = t0312;
-					mat412.e10 = t1025;
-					mat412.e11 = t1125;
-					mat412.e12 = t1225;
-					mat412.e13 = t1312;
-					mat412.e20 = t2025;
-					mat412.e21 = t2125;
-					mat412.e22 = t2225;
-					mat412.e23 = t2312;
-					mat412.e30 = t3012;
-					mat412.e31 = t3112;
-					mat412.e32 = t3212;
-					mat412.e33 = t3312;
-					if(_this41.sizeMat4 == _this41.stackMat4.length) {
-						var newLength50 = _this41.sizeMat4 << 1;
-						var this51 = new Array(newLength50);
-						var newArray50 = this51;
-						var _g61 = 0;
-						var _g151 = _this41.sizeMat4;
-						while(_g61 < _g151) {
-							var i51 = _g61++;
-							newArray50[i51] = _this41.stackMat4[i51];
-							_this41.stackMat4[i51] = null;
-						}
-						_this41.stackMat4 = newArray50;
-					}
-					_this41.stackMat4[_this41.sizeMat4++] = mat412;
-				}
-				if(quat12 != null) {
-					var tx17 = 0;
-					var ty17 = 0;
-					var tz17 = 0;
-					var tw12 = 1;
-					quat12.x = tx17;
-					quat12.y = ty17;
-					quat12.z = tz17;
-					quat12.w = tw12;
-					if(_this41.sizeQuat == _this41.stackQuat.length) {
-						var newLength51 = _this41.sizeQuat << 1;
-						var this52 = new Array(newLength51);
-						var newArray51 = this52;
-						var _g62 = 0;
-						var _g152 = _this41.sizeQuat;
-						while(_g62 < _g152) {
-							var i52 = _g62++;
-							newArray51[i52] = _this41.stackQuat[i52];
-							_this41.stackQuat[i52] = null;
-						}
-						_this41.stackQuat = newArray51;
-					}
-					_this41.stackQuat[_this41.sizeQuat++] = quat12;
-				}
-				var _this42 = this._pool;
-				var mat313 = null;
-				var mat413 = null;
-				var quat13 = null;
-				if(basisY1 != null) {
-					basisY1.zero();
-					if(_this42.sizeVec3 == _this42.stackVec3.length) {
-						var newLength52 = _this42.sizeVec3 << 1;
-						var this53 = new Array(newLength52);
-						var newArray52 = this53;
-						var _g63 = 0;
-						var _g153 = _this42.sizeVec3;
-						while(_g63 < _g153) {
-							var i53 = _g63++;
-							newArray52[i53] = _this42.stackVec3[i53];
-							_this42.stackVec3[i53] = null;
-						}
-						_this42.stackVec3 = newArray52;
-					}
-					_this42.stackVec3[_this42.sizeVec3++] = basisY1;
-				}
-				if(mat313 != null) {
-					var t0026 = 1;
-					var t0126 = 0;
-					var t0226 = 0;
-					var t1026 = 0;
-					var t1126 = 1;
-					var t1226 = 0;
-					var t2026 = 0;
-					var t2126 = 0;
-					var t2226 = 1;
-					mat313.e00 = t0026;
-					mat313.e01 = t0126;
-					mat313.e02 = t0226;
-					mat313.e10 = t1026;
-					mat313.e11 = t1126;
-					mat313.e12 = t1226;
-					mat313.e20 = t2026;
-					mat313.e21 = t2126;
-					mat313.e22 = t2226;
-					if(_this42.sizeMat3 == _this42.stackMat3.length) {
-						var newLength53 = _this42.sizeMat3 << 1;
-						var this54 = new Array(newLength53);
-						var newArray53 = this54;
-						var _g64 = 0;
-						var _g154 = _this42.sizeMat3;
-						while(_g64 < _g154) {
-							var i54 = _g64++;
-							newArray53[i54] = _this42.stackMat3[i54];
-							_this42.stackMat3[i54] = null;
-						}
-						_this42.stackMat3 = newArray53;
-					}
-					_this42.stackMat3[_this42.sizeMat3++] = mat313;
-				}
-				if(mat413 != null) {
-					var t0027 = 1;
-					var t0127 = 0;
-					var t0227 = 0;
-					var t0313 = 0;
-					var t1027 = 0;
-					var t1127 = 1;
-					var t1227 = 0;
-					var t1313 = 0;
-					var t2027 = 0;
-					var t2127 = 0;
-					var t2227 = 1;
-					var t2313 = 0;
-					var t3013 = 0;
-					var t3113 = 0;
-					var t3213 = 0;
-					var t3313 = 1;
-					mat413.e00 = t0027;
-					mat413.e01 = t0127;
-					mat413.e02 = t0227;
-					mat413.e03 = t0313;
-					mat413.e10 = t1027;
-					mat413.e11 = t1127;
-					mat413.e12 = t1227;
-					mat413.e13 = t1313;
-					mat413.e20 = t2027;
-					mat413.e21 = t2127;
-					mat413.e22 = t2227;
-					mat413.e23 = t2313;
-					mat413.e30 = t3013;
-					mat413.e31 = t3113;
-					mat413.e32 = t3213;
-					mat413.e33 = t3313;
-					if(_this42.sizeMat4 == _this42.stackMat4.length) {
-						var newLength54 = _this42.sizeMat4 << 1;
-						var this55 = new Array(newLength54);
-						var newArray54 = this55;
-						var _g65 = 0;
-						var _g155 = _this42.sizeMat4;
-						while(_g65 < _g155) {
-							var i55 = _g65++;
-							newArray54[i55] = _this42.stackMat4[i55];
-							_this42.stackMat4[i55] = null;
-						}
-						_this42.stackMat4 = newArray54;
-					}
-					_this42.stackMat4[_this42.sizeMat4++] = mat413;
-				}
-				if(quat13 != null) {
-					var tx18 = 0;
-					var ty18 = 0;
-					var tz18 = 0;
-					var tw13 = 1;
-					quat13.x = tx18;
-					quat13.y = ty18;
-					quat13.z = tz18;
-					quat13.w = tw13;
-					if(_this42.sizeQuat == _this42.stackQuat.length) {
-						var newLength55 = _this42.sizeQuat << 1;
-						var this56 = new Array(newLength55);
-						var newArray55 = this56;
-						var _g66 = 0;
-						var _g156 = _this42.sizeQuat;
-						while(_g66 < _g156) {
-							var i56 = _g66++;
-							newArray55[i56] = _this42.stackQuat[i56];
-							_this42.stackQuat[i56] = null;
-						}
-						_this42.stackQuat = newArray55;
-					}
-					_this42.stackQuat[_this42.sizeQuat++] = quat13;
-				}
-				var _this43 = this._pool;
-				var mat314 = null;
-				var mat414 = null;
-				var quat14 = null;
-				if(basisZ1 != null) {
-					basisZ1.zero();
-					if(_this43.sizeVec3 == _this43.stackVec3.length) {
-						var newLength56 = _this43.sizeVec3 << 1;
-						var this57 = new Array(newLength56);
-						var newArray56 = this57;
-						var _g67 = 0;
-						var _g157 = _this43.sizeVec3;
-						while(_g67 < _g157) {
-							var i57 = _g67++;
-							newArray56[i57] = _this43.stackVec3[i57];
-							_this43.stackVec3[i57] = null;
-						}
-						_this43.stackVec3 = newArray56;
-					}
-					_this43.stackVec3[_this43.sizeVec3++] = basisZ1;
-				}
-				if(mat314 != null) {
-					var t0028 = 1;
-					var t0128 = 0;
-					var t0228 = 0;
-					var t1028 = 0;
-					var t1128 = 1;
-					var t1228 = 0;
-					var t2028 = 0;
-					var t2128 = 0;
-					var t2228 = 1;
-					mat314.e00 = t0028;
-					mat314.e01 = t0128;
-					mat314.e02 = t0228;
-					mat314.e10 = t1028;
-					mat314.e11 = t1128;
-					mat314.e12 = t1228;
-					mat314.e20 = t2028;
-					mat314.e21 = t2128;
-					mat314.e22 = t2228;
-					if(_this43.sizeMat3 == _this43.stackMat3.length) {
-						var newLength57 = _this43.sizeMat3 << 1;
-						var this58 = new Array(newLength57);
-						var newArray57 = this58;
-						var _g68 = 0;
-						var _g158 = _this43.sizeMat3;
-						while(_g68 < _g158) {
-							var i58 = _g68++;
-							newArray57[i58] = _this43.stackMat3[i58];
-							_this43.stackMat3[i58] = null;
-						}
-						_this43.stackMat3 = newArray57;
-					}
-					_this43.stackMat3[_this43.sizeMat3++] = mat314;
-				}
-				if(mat414 != null) {
-					var t0029 = 1;
-					var t0129 = 0;
-					var t0229 = 0;
-					var t0314 = 0;
-					var t1029 = 0;
-					var t1129 = 1;
-					var t1229 = 0;
-					var t1314 = 0;
-					var t2029 = 0;
-					var t2129 = 0;
-					var t2229 = 1;
-					var t2314 = 0;
-					var t3014 = 0;
-					var t3114 = 0;
-					var t3214 = 0;
-					var t3314 = 1;
-					mat414.e00 = t0029;
-					mat414.e01 = t0129;
-					mat414.e02 = t0229;
-					mat414.e03 = t0314;
-					mat414.e10 = t1029;
-					mat414.e11 = t1129;
-					mat414.e12 = t1229;
-					mat414.e13 = t1314;
-					mat414.e20 = t2029;
-					mat414.e21 = t2129;
-					mat414.e22 = t2229;
-					mat414.e23 = t2314;
-					mat414.e30 = t3014;
-					mat414.e31 = t3114;
-					mat414.e32 = t3214;
-					mat414.e33 = t3314;
-					if(_this43.sizeMat4 == _this43.stackMat4.length) {
-						var newLength58 = _this43.sizeMat4 << 1;
-						var this59 = new Array(newLength58);
-						var newArray58 = this59;
-						var _g69 = 0;
-						var _g159 = _this43.sizeMat4;
-						while(_g69 < _g159) {
-							var i59 = _g69++;
-							newArray58[i59] = _this43.stackMat4[i59];
-							_this43.stackMat4[i59] = null;
-						}
-						_this43.stackMat4 = newArray58;
-					}
-					_this43.stackMat4[_this43.sizeMat4++] = mat414;
-				}
-				if(quat14 != null) {
-					var tx19 = 0;
-					var ty19 = 0;
-					var tz19 = 0;
-					var tw14 = 1;
-					quat14.x = tx19;
-					quat14.y = ty19;
-					quat14.z = tz19;
-					quat14.w = tw14;
-					if(_this43.sizeQuat == _this43.stackQuat.length) {
-						var newLength59 = _this43.sizeQuat << 1;
-						var this60 = new Array(newLength59);
-						var newArray59 = this60;
-						var _g70 = 0;
-						var _g160 = _this43.sizeQuat;
-						while(_g70 < _g160) {
-							var i60 = _g70++;
-							newArray59[i60] = _this43.stackQuat[i60];
-							_this43.stackQuat[i60] = null;
-						}
-						_this43.stackQuat = newArray59;
-					}
-					_this43.stackQuat[_this43.sizeQuat++] = quat14;
-				}
-				var _this44 = this._pool;
-				var mat315 = null;
-				var mat415 = null;
-				var quat15 = null;
-				if(basisX2 != null) {
-					basisX2.zero();
-					if(_this44.sizeVec3 == _this44.stackVec3.length) {
-						var newLength60 = _this44.sizeVec3 << 1;
-						var this61 = new Array(newLength60);
-						var newArray60 = this61;
-						var _g71 = 0;
-						var _g161 = _this44.sizeVec3;
-						while(_g71 < _g161) {
-							var i61 = _g71++;
-							newArray60[i61] = _this44.stackVec3[i61];
-							_this44.stackVec3[i61] = null;
-						}
-						_this44.stackVec3 = newArray60;
-					}
-					_this44.stackVec3[_this44.sizeVec3++] = basisX2;
-				}
-				if(mat315 != null) {
-					var t0030 = 1;
-					var t0130 = 0;
-					var t0230 = 0;
-					var t1030 = 0;
-					var t1130 = 1;
-					var t1230 = 0;
-					var t2030 = 0;
-					var t2130 = 0;
-					var t2230 = 1;
-					mat315.e00 = t0030;
-					mat315.e01 = t0130;
-					mat315.e02 = t0230;
-					mat315.e10 = t1030;
-					mat315.e11 = t1130;
-					mat315.e12 = t1230;
-					mat315.e20 = t2030;
-					mat315.e21 = t2130;
-					mat315.e22 = t2230;
-					if(_this44.sizeMat3 == _this44.stackMat3.length) {
-						var newLength61 = _this44.sizeMat3 << 1;
-						var this62 = new Array(newLength61);
-						var newArray61 = this62;
-						var _g72 = 0;
-						var _g162 = _this44.sizeMat3;
-						while(_g72 < _g162) {
-							var i62 = _g72++;
-							newArray61[i62] = _this44.stackMat3[i62];
-							_this44.stackMat3[i62] = null;
-						}
-						_this44.stackMat3 = newArray61;
-					}
-					_this44.stackMat3[_this44.sizeMat3++] = mat315;
-				}
-				if(mat415 != null) {
-					var t0031 = 1;
-					var t0131 = 0;
-					var t0231 = 0;
-					var t0315 = 0;
-					var t1031 = 0;
-					var t1131 = 1;
-					var t1231 = 0;
-					var t1315 = 0;
-					var t2031 = 0;
-					var t2131 = 0;
-					var t2231 = 1;
-					var t2315 = 0;
-					var t3015 = 0;
-					var t3115 = 0;
-					var t3215 = 0;
-					var t3315 = 1;
-					mat415.e00 = t0031;
-					mat415.e01 = t0131;
-					mat415.e02 = t0231;
-					mat415.e03 = t0315;
-					mat415.e10 = t1031;
-					mat415.e11 = t1131;
-					mat415.e12 = t1231;
-					mat415.e13 = t1315;
-					mat415.e20 = t2031;
-					mat415.e21 = t2131;
-					mat415.e22 = t2231;
-					mat415.e23 = t2315;
-					mat415.e30 = t3015;
-					mat415.e31 = t3115;
-					mat415.e32 = t3215;
-					mat415.e33 = t3315;
-					if(_this44.sizeMat4 == _this44.stackMat4.length) {
-						var newLength62 = _this44.sizeMat4 << 1;
-						var this63 = new Array(newLength62);
-						var newArray62 = this63;
-						var _g73 = 0;
-						var _g163 = _this44.sizeMat4;
-						while(_g73 < _g163) {
-							var i63 = _g73++;
-							newArray62[i63] = _this44.stackMat4[i63];
-							_this44.stackMat4[i63] = null;
-						}
-						_this44.stackMat4 = newArray62;
-					}
-					_this44.stackMat4[_this44.sizeMat4++] = mat415;
-				}
-				if(quat15 != null) {
-					var tx20 = 0;
-					var ty20 = 0;
-					var tz20 = 0;
-					var tw15 = 1;
-					quat15.x = tx20;
-					quat15.y = ty20;
-					quat15.z = tz20;
-					quat15.w = tw15;
-					if(_this44.sizeQuat == _this44.stackQuat.length) {
-						var newLength63 = _this44.sizeQuat << 1;
-						var this64 = new Array(newLength63);
-						var newArray63 = this64;
-						var _g74 = 0;
-						var _g164 = _this44.sizeQuat;
-						while(_g74 < _g164) {
-							var i64 = _g74++;
-							newArray63[i64] = _this44.stackQuat[i64];
-							_this44.stackQuat[i64] = null;
-						}
-						_this44.stackQuat = newArray63;
-					}
-					_this44.stackQuat[_this44.sizeQuat++] = quat15;
-				}
-				var _this45 = this._pool;
-				var mat316 = null;
-				var mat416 = null;
-				var quat16 = null;
-				if(basisY2 != null) {
-					basisY2.zero();
-					if(_this45.sizeVec3 == _this45.stackVec3.length) {
-						var newLength64 = _this45.sizeVec3 << 1;
-						var this65 = new Array(newLength64);
-						var newArray64 = this65;
-						var _g75 = 0;
-						var _g165 = _this45.sizeVec3;
-						while(_g75 < _g165) {
-							var i65 = _g75++;
-							newArray64[i65] = _this45.stackVec3[i65];
-							_this45.stackVec3[i65] = null;
-						}
-						_this45.stackVec3 = newArray64;
-					}
-					_this45.stackVec3[_this45.sizeVec3++] = basisY2;
-				}
-				if(mat316 != null) {
-					var t0032 = 1;
-					var t0132 = 0;
-					var t0232 = 0;
-					var t1032 = 0;
-					var t1132 = 1;
-					var t1232 = 0;
-					var t2032 = 0;
-					var t2132 = 0;
-					var t2232 = 1;
-					mat316.e00 = t0032;
-					mat316.e01 = t0132;
-					mat316.e02 = t0232;
-					mat316.e10 = t1032;
-					mat316.e11 = t1132;
-					mat316.e12 = t1232;
-					mat316.e20 = t2032;
-					mat316.e21 = t2132;
-					mat316.e22 = t2232;
-					if(_this45.sizeMat3 == _this45.stackMat3.length) {
-						var newLength65 = _this45.sizeMat3 << 1;
-						var this66 = new Array(newLength65);
-						var newArray65 = this66;
-						var _g76 = 0;
-						var _g166 = _this45.sizeMat3;
-						while(_g76 < _g166) {
-							var i66 = _g76++;
-							newArray65[i66] = _this45.stackMat3[i66];
-							_this45.stackMat3[i66] = null;
-						}
-						_this45.stackMat3 = newArray65;
-					}
-					_this45.stackMat3[_this45.sizeMat3++] = mat316;
-				}
-				if(mat416 != null) {
-					var t0033 = 1;
-					var t0133 = 0;
-					var t0233 = 0;
-					var t0316 = 0;
-					var t1033 = 0;
-					var t1133 = 1;
-					var t1233 = 0;
-					var t1316 = 0;
-					var t2033 = 0;
-					var t2133 = 0;
-					var t2233 = 1;
-					var t2316 = 0;
-					var t3016 = 0;
-					var t3116 = 0;
-					var t3216 = 0;
-					var t3316 = 1;
-					mat416.e00 = t0033;
-					mat416.e01 = t0133;
-					mat416.e02 = t0233;
-					mat416.e03 = t0316;
-					mat416.e10 = t1033;
-					mat416.e11 = t1133;
-					mat416.e12 = t1233;
-					mat416.e13 = t1316;
-					mat416.e20 = t2033;
-					mat416.e21 = t2133;
-					mat416.e22 = t2233;
-					mat416.e23 = t2316;
-					mat416.e30 = t3016;
-					mat416.e31 = t3116;
-					mat416.e32 = t3216;
-					mat416.e33 = t3316;
-					if(_this45.sizeMat4 == _this45.stackMat4.length) {
-						var newLength66 = _this45.sizeMat4 << 1;
-						var this67 = new Array(newLength66);
-						var newArray66 = this67;
-						var _g77 = 0;
-						var _g167 = _this45.sizeMat4;
-						while(_g77 < _g167) {
-							var i67 = _g77++;
-							newArray66[i67] = _this45.stackMat4[i67];
-							_this45.stackMat4[i67] = null;
-						}
-						_this45.stackMat4 = newArray66;
-					}
-					_this45.stackMat4[_this45.sizeMat4++] = mat416;
-				}
-				if(quat16 != null) {
-					var tx21 = 0;
-					var ty21 = 0;
-					var tz21 = 0;
-					var tw16 = 1;
-					quat16.x = tx21;
-					quat16.y = ty21;
-					quat16.z = tz21;
-					quat16.w = tw16;
-					if(_this45.sizeQuat == _this45.stackQuat.length) {
-						var newLength67 = _this45.sizeQuat << 1;
-						var this68 = new Array(newLength67);
-						var newArray67 = this68;
-						var _g78 = 0;
-						var _g168 = _this45.sizeQuat;
-						while(_g78 < _g168) {
-							var i68 = _g78++;
-							newArray67[i68] = _this45.stackQuat[i68];
-							_this45.stackQuat[i68] = null;
-						}
-						_this45.stackQuat = newArray67;
-					}
-					_this45.stackQuat[_this45.sizeQuat++] = quat16;
-				}
-				var _this46 = this._pool;
-				var mat317 = null;
-				var mat417 = null;
-				var quat17 = null;
-				if(basisZ2 != null) {
-					basisZ2.zero();
-					if(_this46.sizeVec3 == _this46.stackVec3.length) {
-						var newLength68 = _this46.sizeVec3 << 1;
-						var this69 = new Array(newLength68);
-						var newArray68 = this69;
-						var _g79 = 0;
-						var _g169 = _this46.sizeVec3;
-						while(_g79 < _g169) {
-							var i69 = _g79++;
-							newArray68[i69] = _this46.stackVec3[i69];
-							_this46.stackVec3[i69] = null;
-						}
-						_this46.stackVec3 = newArray68;
-					}
-					_this46.stackVec3[_this46.sizeVec3++] = basisZ2;
-				}
-				if(mat317 != null) {
-					var t0034 = 1;
-					var t0134 = 0;
-					var t0234 = 0;
-					var t1034 = 0;
-					var t1134 = 1;
-					var t1234 = 0;
-					var t2034 = 0;
-					var t2134 = 0;
-					var t2234 = 1;
-					mat317.e00 = t0034;
-					mat317.e01 = t0134;
-					mat317.e02 = t0234;
-					mat317.e10 = t1034;
-					mat317.e11 = t1134;
-					mat317.e12 = t1234;
-					mat317.e20 = t2034;
-					mat317.e21 = t2134;
-					mat317.e22 = t2234;
-					if(_this46.sizeMat3 == _this46.stackMat3.length) {
-						var newLength69 = _this46.sizeMat3 << 1;
-						var this70 = new Array(newLength69);
-						var newArray69 = this70;
-						var _g80 = 0;
-						var _g170 = _this46.sizeMat3;
-						while(_g80 < _g170) {
-							var i70 = _g80++;
-							newArray69[i70] = _this46.stackMat3[i70];
-							_this46.stackMat3[i70] = null;
-						}
-						_this46.stackMat3 = newArray69;
-					}
-					_this46.stackMat3[_this46.sizeMat3++] = mat317;
-				}
-				if(mat417 != null) {
-					var t0035 = 1;
-					var t0135 = 0;
-					var t0235 = 0;
-					var t0317 = 0;
-					var t1035 = 0;
-					var t1135 = 1;
-					var t1235 = 0;
-					var t1317 = 0;
-					var t2035 = 0;
-					var t2135 = 0;
-					var t2235 = 1;
-					var t2317 = 0;
-					var t3017 = 0;
-					var t3117 = 0;
-					var t3217 = 0;
-					var t3317 = 1;
-					mat417.e00 = t0035;
-					mat417.e01 = t0135;
-					mat417.e02 = t0235;
-					mat417.e03 = t0317;
-					mat417.e10 = t1035;
-					mat417.e11 = t1135;
-					mat417.e12 = t1235;
-					mat417.e13 = t1317;
-					mat417.e20 = t2035;
-					mat417.e21 = t2135;
-					mat417.e22 = t2235;
-					mat417.e23 = t2317;
-					mat417.e30 = t3017;
-					mat417.e31 = t3117;
-					mat417.e32 = t3217;
-					mat417.e33 = t3317;
-					if(_this46.sizeMat4 == _this46.stackMat4.length) {
-						var newLength70 = _this46.sizeMat4 << 1;
-						var this71 = new Array(newLength70);
-						var newArray70 = this71;
-						var _g81 = 0;
-						var _g171 = _this46.sizeMat4;
-						while(_g81 < _g171) {
-							var i71 = _g81++;
-							newArray70[i71] = _this46.stackMat4[i71];
-							_this46.stackMat4[i71] = null;
-						}
-						_this46.stackMat4 = newArray70;
-					}
-					_this46.stackMat4[_this46.sizeMat4++] = mat417;
-				}
-				if(quat17 != null) {
-					var tx22 = 0;
-					var ty22 = 0;
-					var tz22 = 0;
-					var tw17 = 1;
-					quat17.x = tx22;
-					quat17.y = ty22;
-					quat17.z = tz22;
-					quat17.w = tw17;
-					if(_this46.sizeQuat == _this46.stackQuat.length) {
-						var newLength71 = _this46.sizeQuat << 1;
-						var this72 = new Array(newLength71);
-						var newArray71 = this72;
-						var _g82 = 0;
-						var _g172 = _this46.sizeQuat;
-						while(_g82 < _g172) {
-							var i72 = _g82++;
-							newArray71[i72] = _this46.stackQuat[i72];
-							_this46.stackQuat[i72] = null;
-						}
-						_this46.stackQuat = newArray71;
-					}
-					_this46.stackQuat[_this46.sizeQuat++] = quat17;
-				}
-				j = n1;
-			}
-		}
-	}
-	_drawRotationalLimit(d,center,ex,ey,needle,radius,min,max,color) {
-		if(min != max) {
-			var _this = this._pool;
-			var _this1 = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-			_this1.x = center.x;
-			_this1.y = center.y;
-			_this1.z = center.z;
-			var _this2 = _this1;
-			var tx = _this2.x + needle.x * radius;
-			var ty = _this2.y + needle.y * radius;
-			var tz = _this2.z + needle.z * radius;
-			_this2.x = tx;
-			_this2.y = ty;
-			_this2.z = tz;
-			var to = _this2;
-			d.line(center,to,color);
-			var _this3 = this._pool;
-			var mat3 = null;
-			var mat4 = null;
-			var quat = null;
-			if(to != null) {
-				to.zero();
-				if(_this3.sizeVec3 == _this3.stackVec3.length) {
-					var newLength = _this3.sizeVec3 << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g = 0;
-					var _g1 = _this3.sizeVec3;
-					while(_g < _g1) {
-						var i = _g++;
-						newArray[i] = _this3.stackVec3[i];
-						_this3.stackVec3[i] = null;
-					}
-					_this3.stackVec3 = newArray;
-				}
-				_this3.stackVec3[_this3.sizeVec3++] = to;
-			}
-			if(mat3 != null) {
-				var t00 = 1;
-				var t01 = 0;
-				var t02 = 0;
-				var t10 = 0;
-				var t11 = 1;
-				var t12 = 0;
-				var t20 = 0;
-				var t21 = 0;
-				var t22 = 1;
-				mat3.e00 = t00;
-				mat3.e01 = t01;
-				mat3.e02 = t02;
-				mat3.e10 = t10;
-				mat3.e11 = t11;
-				mat3.e12 = t12;
-				mat3.e20 = t20;
-				mat3.e21 = t21;
-				mat3.e22 = t22;
-				if(_this3.sizeMat3 == _this3.stackMat3.length) {
-					var newLength1 = _this3.sizeMat3 << 1;
-					var this2 = new Array(newLength1);
-					var newArray1 = this2;
-					var _g2 = 0;
-					var _g11 = _this3.sizeMat3;
-					while(_g2 < _g11) {
-						var i1 = _g2++;
-						newArray1[i1] = _this3.stackMat3[i1];
-						_this3.stackMat3[i1] = null;
-					}
-					_this3.stackMat3 = newArray1;
-				}
-				_this3.stackMat3[_this3.sizeMat3++] = mat3;
-			}
-			if(mat4 != null) {
-				var t001 = 1;
-				var t011 = 0;
-				var t021 = 0;
-				var t03 = 0;
-				var t101 = 0;
-				var t111 = 1;
-				var t121 = 0;
-				var t13 = 0;
-				var t201 = 0;
-				var t211 = 0;
-				var t221 = 1;
-				var t23 = 0;
-				var t30 = 0;
-				var t31 = 0;
-				var t32 = 0;
-				var t33 = 1;
-				mat4.e00 = t001;
-				mat4.e01 = t011;
-				mat4.e02 = t021;
-				mat4.e03 = t03;
-				mat4.e10 = t101;
-				mat4.e11 = t111;
-				mat4.e12 = t121;
-				mat4.e13 = t13;
-				mat4.e20 = t201;
-				mat4.e21 = t211;
-				mat4.e22 = t221;
-				mat4.e23 = t23;
-				mat4.e30 = t30;
-				mat4.e31 = t31;
-				mat4.e32 = t32;
-				mat4.e33 = t33;
-				if(_this3.sizeMat4 == _this3.stackMat4.length) {
-					var newLength2 = _this3.sizeMat4 << 1;
-					var this3 = new Array(newLength2);
-					var newArray2 = this3;
-					var _g3 = 0;
-					var _g12 = _this3.sizeMat4;
-					while(_g3 < _g12) {
-						var i2 = _g3++;
-						newArray2[i2] = _this3.stackMat4[i2];
-						_this3.stackMat4[i2] = null;
-					}
-					_this3.stackMat4 = newArray2;
-				}
-				_this3.stackMat4[_this3.sizeMat4++] = mat4;
-			}
-			if(quat != null) {
-				var tx1 = 0;
-				var ty1 = 0;
-				var tz1 = 0;
-				var tw = 1;
-				quat.x = tx1;
-				quat.y = ty1;
-				quat.z = tz1;
-				quat.w = tw;
-				if(_this3.sizeQuat == _this3.stackQuat.length) {
-					var newLength3 = _this3.sizeQuat << 1;
-					var this4 = new Array(newLength3);
-					var newArray3 = this4;
-					var _g4 = 0;
-					var _g13 = _this3.sizeQuat;
-					while(_g4 < _g13) {
-						var i3 = _g4++;
-						newArray3[i3] = _this3.stackQuat[i3];
-						_this3.stackQuat[i3] = null;
-					}
-					_this3.stackQuat = newArray3;
-				}
-				_this3.stackQuat[_this3.sizeQuat++] = quat;
-			}
-			if(min > max) {
-				d.ellipse(center,ex,ey,radius,radius,color);
-			} else {
-				d.arc(center,ex,ey,radius,radius,min,max,true,color);
-			}
-		}
-	}
-	_drawTranslationalLimit(d,center,ex,min,max,color) {
-		if(min < max) {
-			var _this = this._pool;
-			var _this1 = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-			_this1.x = center.x;
-			_this1.y = center.y;
-			_this1.z = center.z;
-			var _this2 = _this1;
-			var tx = _this2.x + ex.x * min;
-			var ty = _this2.y + ex.y * min;
-			var tz = _this2.z + ex.z * min;
-			_this2.x = tx;
-			_this2.y = ty;
-			_this2.z = tz;
-			var lower = _this2;
-			var _this3 = this._pool;
-			var _this4 = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
-			_this4.x = center.x;
-			_this4.y = center.y;
-			_this4.z = center.z;
-			var _this5 = _this4;
-			var tx1 = _this5.x + ex.x * max;
-			var ty1 = _this5.y + ex.y * max;
-			var tz1 = _this5.z + ex.z * max;
-			_this5.x = tx1;
-			_this5.y = ty1;
-			_this5.z = tz1;
-			var upper = _this5;
-			d.line(lower,upper,color);
-			var _this6 = this._pool;
-			var mat3 = null;
-			var mat4 = null;
-			var quat = null;
-			if(lower != null) {
-				lower.zero();
-				if(_this6.sizeVec3 == _this6.stackVec3.length) {
-					var newLength = _this6.sizeVec3 << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g = 0;
-					var _g1 = _this6.sizeVec3;
-					while(_g < _g1) {
-						var i = _g++;
-						newArray[i] = _this6.stackVec3[i];
-						_this6.stackVec3[i] = null;
-					}
-					_this6.stackVec3 = newArray;
-				}
-				_this6.stackVec3[_this6.sizeVec3++] = lower;
-			}
-			if(mat3 != null) {
-				var t00 = 1;
-				var t01 = 0;
-				var t02 = 0;
-				var t10 = 0;
-				var t11 = 1;
-				var t12 = 0;
-				var t20 = 0;
-				var t21 = 0;
-				var t22 = 1;
-				mat3.e00 = t00;
-				mat3.e01 = t01;
-				mat3.e02 = t02;
-				mat3.e10 = t10;
-				mat3.e11 = t11;
-				mat3.e12 = t12;
-				mat3.e20 = t20;
-				mat3.e21 = t21;
-				mat3.e22 = t22;
-				if(_this6.sizeMat3 == _this6.stackMat3.length) {
-					var newLength1 = _this6.sizeMat3 << 1;
-					var this2 = new Array(newLength1);
-					var newArray1 = this2;
-					var _g2 = 0;
-					var _g11 = _this6.sizeMat3;
-					while(_g2 < _g11) {
-						var i1 = _g2++;
-						newArray1[i1] = _this6.stackMat3[i1];
-						_this6.stackMat3[i1] = null;
-					}
-					_this6.stackMat3 = newArray1;
-				}
-				_this6.stackMat3[_this6.sizeMat3++] = mat3;
-			}
-			if(mat4 != null) {
-				var t001 = 1;
-				var t011 = 0;
-				var t021 = 0;
-				var t03 = 0;
-				var t101 = 0;
-				var t111 = 1;
-				var t121 = 0;
-				var t13 = 0;
-				var t201 = 0;
-				var t211 = 0;
-				var t221 = 1;
-				var t23 = 0;
-				var t30 = 0;
-				var t31 = 0;
-				var t32 = 0;
-				var t33 = 1;
-				mat4.e00 = t001;
-				mat4.e01 = t011;
-				mat4.e02 = t021;
-				mat4.e03 = t03;
-				mat4.e10 = t101;
-				mat4.e11 = t111;
-				mat4.e12 = t121;
-				mat4.e13 = t13;
-				mat4.e20 = t201;
-				mat4.e21 = t211;
-				mat4.e22 = t221;
-				mat4.e23 = t23;
-				mat4.e30 = t30;
-				mat4.e31 = t31;
-				mat4.e32 = t32;
-				mat4.e33 = t33;
-				if(_this6.sizeMat4 == _this6.stackMat4.length) {
-					var newLength2 = _this6.sizeMat4 << 1;
-					var this3 = new Array(newLength2);
-					var newArray2 = this3;
-					var _g3 = 0;
-					var _g12 = _this6.sizeMat4;
-					while(_g3 < _g12) {
-						var i2 = _g3++;
-						newArray2[i2] = _this6.stackMat4[i2];
-						_this6.stackMat4[i2] = null;
-					}
-					_this6.stackMat4 = newArray2;
-				}
-				_this6.stackMat4[_this6.sizeMat4++] = mat4;
-			}
-			if(quat != null) {
-				var tx2 = 0;
-				var ty2 = 0;
-				var tz2 = 0;
-				var tw = 1;
-				quat.x = tx2;
-				quat.y = ty2;
-				quat.z = tz2;
-				quat.w = tw;
-				if(_this6.sizeQuat == _this6.stackQuat.length) {
-					var newLength3 = _this6.sizeQuat << 1;
-					var this4 = new Array(newLength3);
-					var newArray3 = this4;
-					var _g4 = 0;
-					var _g13 = _this6.sizeQuat;
-					while(_g4 < _g13) {
-						var i3 = _g4++;
-						newArray3[i3] = _this6.stackQuat[i3];
-						_this6.stackQuat[i3] = null;
-					}
-					_this6.stackQuat = newArray3;
-				}
-				_this6.stackQuat[_this6.sizeQuat++] = quat;
-			}
-			var _this7 = this._pool;
-			var mat31 = null;
-			var mat41 = null;
-			var quat1 = null;
-			if(upper != null) {
-				upper.zero();
-				if(_this7.sizeVec3 == _this7.stackVec3.length) {
-					var newLength4 = _this7.sizeVec3 << 1;
-					var this5 = new Array(newLength4);
-					var newArray4 = this5;
-					var _g5 = 0;
-					var _g14 = _this7.sizeVec3;
-					while(_g5 < _g14) {
-						var i4 = _g5++;
-						newArray4[i4] = _this7.stackVec3[i4];
-						_this7.stackVec3[i4] = null;
-					}
-					_this7.stackVec3 = newArray4;
-				}
-				_this7.stackVec3[_this7.sizeVec3++] = upper;
-			}
-			if(mat31 != null) {
-				var t002 = 1;
-				var t012 = 0;
-				var t022 = 0;
-				var t102 = 0;
-				var t112 = 1;
-				var t122 = 0;
-				var t202 = 0;
-				var t212 = 0;
-				var t222 = 1;
-				mat31.e00 = t002;
-				mat31.e01 = t012;
-				mat31.e02 = t022;
-				mat31.e10 = t102;
-				mat31.e11 = t112;
-				mat31.e12 = t122;
-				mat31.e20 = t202;
-				mat31.e21 = t212;
-				mat31.e22 = t222;
-				if(_this7.sizeMat3 == _this7.stackMat3.length) {
-					var newLength5 = _this7.sizeMat3 << 1;
-					var this6 = new Array(newLength5);
-					var newArray5 = this6;
-					var _g6 = 0;
-					var _g15 = _this7.sizeMat3;
-					while(_g6 < _g15) {
-						var i5 = _g6++;
-						newArray5[i5] = _this7.stackMat3[i5];
-						_this7.stackMat3[i5] = null;
-					}
-					_this7.stackMat3 = newArray5;
-				}
-				_this7.stackMat3[_this7.sizeMat3++] = mat31;
-			}
-			if(mat41 != null) {
-				var t003 = 1;
-				var t013 = 0;
-				var t023 = 0;
-				var t031 = 0;
-				var t103 = 0;
-				var t113 = 1;
-				var t123 = 0;
-				var t131 = 0;
-				var t203 = 0;
-				var t213 = 0;
-				var t223 = 1;
-				var t231 = 0;
-				var t301 = 0;
-				var t311 = 0;
-				var t321 = 0;
-				var t331 = 1;
-				mat41.e00 = t003;
-				mat41.e01 = t013;
-				mat41.e02 = t023;
-				mat41.e03 = t031;
-				mat41.e10 = t103;
-				mat41.e11 = t113;
-				mat41.e12 = t123;
-				mat41.e13 = t131;
-				mat41.e20 = t203;
-				mat41.e21 = t213;
-				mat41.e22 = t223;
-				mat41.e23 = t231;
-				mat41.e30 = t301;
-				mat41.e31 = t311;
-				mat41.e32 = t321;
-				mat41.e33 = t331;
-				if(_this7.sizeMat4 == _this7.stackMat4.length) {
-					var newLength6 = _this7.sizeMat4 << 1;
-					var this7 = new Array(newLength6);
-					var newArray6 = this7;
-					var _g7 = 0;
-					var _g16 = _this7.sizeMat4;
-					while(_g7 < _g16) {
-						var i6 = _g7++;
-						newArray6[i6] = _this7.stackMat4[i6];
-						_this7.stackMat4[i6] = null;
-					}
-					_this7.stackMat4 = newArray6;
-				}
-				_this7.stackMat4[_this7.sizeMat4++] = mat41;
-			}
-			if(quat1 != null) {
-				var tx3 = 0;
-				var ty3 = 0;
-				var tz3 = 0;
-				var tw1 = 1;
-				quat1.x = tx3;
-				quat1.y = ty3;
-				quat1.z = tz3;
-				quat1.w = tw1;
-				if(_this7.sizeQuat == _this7.stackQuat.length) {
-					var newLength7 = _this7.sizeQuat << 1;
-					var this8 = new Array(newLength7);
-					var newArray7 = this8;
-					var _g8 = 0;
-					var _g17 = _this7.sizeQuat;
-					while(_g8 < _g17) {
-						var i7 = _g8++;
-						newArray7[i7] = _this7.stackQuat[i7];
-						_this7.stackQuat[i7] = null;
-					}
-					_this7.stackQuat = newArray7;
-				}
-				_this7.stackQuat[_this7.sizeQuat++] = quat1;
-			}
-		}
-	}
-	_drawTranslationalLimit3D(d,center,ex,ey,ez,xlm,ylm,zlm,color) {
-		var minx = xlm.lowerLimit;
-		var maxx = xlm.upperLimit;
-		var miny = ylm.lowerLimit;
-		var maxy = ylm.upperLimit;
-		var minz = zlm.lowerLimit;
-		var maxz = zlm.upperLimit;
-		var _this = this._pool;
-		var lower = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-		var _this1 = this._pool;
-		var upper = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
-		var _this2 = this._pool;
-		var _this3 = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
-		_this3.x = center.x;
-		_this3.y = center.y;
-		_this3.z = center.z;
-		var _this4 = _this3;
-		var tx = _this4.x + ex.x * minx;
-		var ty = _this4.y + ex.y * minx;
-		var tz = _this4.z + ex.z * minx;
-		_this4.x = tx;
-		_this4.y = ty;
-		_this4.z = tz;
-		var _this5 = _this4;
-		var tx1 = _this5.x + ey.x * miny;
-		var ty1 = _this5.y + ey.y * miny;
-		var tz1 = _this5.z + ey.z * miny;
-		_this5.x = tx1;
-		_this5.y = ty1;
-		_this5.z = tz1;
-		var _this6 = _this5;
-		var tx2 = _this6.x + ez.x * minz;
-		var ty2 = _this6.y + ez.y * minz;
-		var tz2 = _this6.z + ez.z * minz;
-		_this6.x = tx2;
-		_this6.y = ty2;
-		_this6.z = tz2;
-		var xyz = _this6;
-		var _this7 = this._pool;
-		var _this8 = _this7.sizeVec3 == 0 ? new oimo.common.Vec3() : _this7.stackVec3[--_this7.sizeVec3];
-		_this8.x = center.x;
-		_this8.y = center.y;
-		_this8.z = center.z;
-		var _this9 = _this8;
-		var tx3 = _this9.x + ex.x * minx;
-		var ty3 = _this9.y + ex.y * minx;
-		var tz3 = _this9.z + ex.z * minx;
-		_this9.x = tx3;
-		_this9.y = ty3;
-		_this9.z = tz3;
-		var _this10 = _this9;
-		var tx4 = _this10.x + ey.x * miny;
-		var ty4 = _this10.y + ey.y * miny;
-		var tz4 = _this10.z + ey.z * miny;
-		_this10.x = tx4;
-		_this10.y = ty4;
-		_this10.z = tz4;
-		var _this11 = _this10;
-		var tx5 = _this11.x + ez.x * maxz;
-		var ty5 = _this11.y + ez.y * maxz;
-		var tz5 = _this11.z + ez.z * maxz;
-		_this11.x = tx5;
-		_this11.y = ty5;
-		_this11.z = tz5;
-		var xyZ = _this11;
-		var _this12 = this._pool;
-		var _this13 = _this12.sizeVec3 == 0 ? new oimo.common.Vec3() : _this12.stackVec3[--_this12.sizeVec3];
-		_this13.x = center.x;
-		_this13.y = center.y;
-		_this13.z = center.z;
-		var _this14 = _this13;
-		var tx6 = _this14.x + ex.x * minx;
-		var ty6 = _this14.y + ex.y * minx;
-		var tz6 = _this14.z + ex.z * minx;
-		_this14.x = tx6;
-		_this14.y = ty6;
-		_this14.z = tz6;
-		var _this15 = _this14;
-		var tx7 = _this15.x + ey.x * maxy;
-		var ty7 = _this15.y + ey.y * maxy;
-		var tz7 = _this15.z + ey.z * maxy;
-		_this15.x = tx7;
-		_this15.y = ty7;
-		_this15.z = tz7;
-		var _this16 = _this15;
-		var tx8 = _this16.x + ez.x * minz;
-		var ty8 = _this16.y + ez.y * minz;
-		var tz8 = _this16.z + ez.z * minz;
-		_this16.x = tx8;
-		_this16.y = ty8;
-		_this16.z = tz8;
-		var xYz = _this16;
-		var _this17 = this._pool;
-		var _this18 = _this17.sizeVec3 == 0 ? new oimo.common.Vec3() : _this17.stackVec3[--_this17.sizeVec3];
-		_this18.x = center.x;
-		_this18.y = center.y;
-		_this18.z = center.z;
-		var _this19 = _this18;
-		var tx9 = _this19.x + ex.x * minx;
-		var ty9 = _this19.y + ex.y * minx;
-		var tz9 = _this19.z + ex.z * minx;
-		_this19.x = tx9;
-		_this19.y = ty9;
-		_this19.z = tz9;
-		var _this20 = _this19;
-		var tx10 = _this20.x + ey.x * maxy;
-		var ty10 = _this20.y + ey.y * maxy;
-		var tz10 = _this20.z + ey.z * maxy;
-		_this20.x = tx10;
-		_this20.y = ty10;
-		_this20.z = tz10;
-		var _this21 = _this20;
-		var tx11 = _this21.x + ez.x * maxz;
-		var ty11 = _this21.y + ez.y * maxz;
-		var tz11 = _this21.z + ez.z * maxz;
-		_this21.x = tx11;
-		_this21.y = ty11;
-		_this21.z = tz11;
-		var xYZ = _this21;
-		var _this22 = this._pool;
-		var _this23 = _this22.sizeVec3 == 0 ? new oimo.common.Vec3() : _this22.stackVec3[--_this22.sizeVec3];
-		_this23.x = center.x;
-		_this23.y = center.y;
-		_this23.z = center.z;
-		var _this24 = _this23;
-		var tx12 = _this24.x + ex.x * maxx;
-		var ty12 = _this24.y + ex.y * maxx;
-		var tz12 = _this24.z + ex.z * maxx;
-		_this24.x = tx12;
-		_this24.y = ty12;
-		_this24.z = tz12;
-		var _this25 = _this24;
-		var tx13 = _this25.x + ey.x * miny;
-		var ty13 = _this25.y + ey.y * miny;
-		var tz13 = _this25.z + ey.z * miny;
-		_this25.x = tx13;
-		_this25.y = ty13;
-		_this25.z = tz13;
-		var _this26 = _this25;
-		var tx14 = _this26.x + ez.x * minz;
-		var ty14 = _this26.y + ez.y * minz;
-		var tz14 = _this26.z + ez.z * minz;
-		_this26.x = tx14;
-		_this26.y = ty14;
-		_this26.z = tz14;
-		var Xyz = _this26;
-		var _this27 = this._pool;
-		var _this28 = _this27.sizeVec3 == 0 ? new oimo.common.Vec3() : _this27.stackVec3[--_this27.sizeVec3];
-		_this28.x = center.x;
-		_this28.y = center.y;
-		_this28.z = center.z;
-		var _this29 = _this28;
-		var tx15 = _this29.x + ex.x * maxx;
-		var ty15 = _this29.y + ex.y * maxx;
-		var tz15 = _this29.z + ex.z * maxx;
-		_this29.x = tx15;
-		_this29.y = ty15;
-		_this29.z = tz15;
-		var _this30 = _this29;
-		var tx16 = _this30.x + ey.x * miny;
-		var ty16 = _this30.y + ey.y * miny;
-		var tz16 = _this30.z + ey.z * miny;
-		_this30.x = tx16;
-		_this30.y = ty16;
-		_this30.z = tz16;
-		var _this31 = _this30;
-		var tx17 = _this31.x + ez.x * maxz;
-		var ty17 = _this31.y + ez.y * maxz;
-		var tz17 = _this31.z + ez.z * maxz;
-		_this31.x = tx17;
-		_this31.y = ty17;
-		_this31.z = tz17;
-		var XyZ = _this31;
-		var _this32 = this._pool;
-		var _this33 = _this32.sizeVec3 == 0 ? new oimo.common.Vec3() : _this32.stackVec3[--_this32.sizeVec3];
-		_this33.x = center.x;
-		_this33.y = center.y;
-		_this33.z = center.z;
-		var _this34 = _this33;
-		var tx18 = _this34.x + ex.x * maxx;
-		var ty18 = _this34.y + ex.y * maxx;
-		var tz18 = _this34.z + ex.z * maxx;
-		_this34.x = tx18;
-		_this34.y = ty18;
-		_this34.z = tz18;
-		var _this35 = _this34;
-		var tx19 = _this35.x + ey.x * maxy;
-		var ty19 = _this35.y + ey.y * maxy;
-		var tz19 = _this35.z + ey.z * maxy;
-		_this35.x = tx19;
-		_this35.y = ty19;
-		_this35.z = tz19;
-		var _this36 = _this35;
-		var tx20 = _this36.x + ez.x * minz;
-		var ty20 = _this36.y + ez.y * minz;
-		var tz20 = _this36.z + ez.z * minz;
-		_this36.x = tx20;
-		_this36.y = ty20;
-		_this36.z = tz20;
-		var XYz = _this36;
-		var _this37 = this._pool;
-		var _this38 = _this37.sizeVec3 == 0 ? new oimo.common.Vec3() : _this37.stackVec3[--_this37.sizeVec3];
-		_this38.x = center.x;
-		_this38.y = center.y;
-		_this38.z = center.z;
-		var _this39 = _this38;
-		var tx21 = _this39.x + ex.x * maxx;
-		var ty21 = _this39.y + ex.y * maxx;
-		var tz21 = _this39.z + ex.z * maxx;
-		_this39.x = tx21;
-		_this39.y = ty21;
-		_this39.z = tz21;
-		var _this40 = _this39;
-		var tx22 = _this40.x + ey.x * maxy;
-		var ty22 = _this40.y + ey.y * maxy;
-		var tz22 = _this40.z + ey.z * maxy;
-		_this40.x = tx22;
-		_this40.y = ty22;
-		_this40.z = tz22;
-		var _this41 = _this40;
-		var tx23 = _this41.x + ez.x * maxz;
-		var ty23 = _this41.y + ez.y * maxz;
-		var tz23 = _this41.z + ez.z * maxz;
-		_this41.x = tx23;
-		_this41.y = ty23;
-		_this41.z = tz23;
-		var XYZ = _this41;
-		d.line(xyz,Xyz,color);
-		d.line(xYz,XYz,color);
-		d.line(xyZ,XyZ,color);
-		d.line(xYZ,XYZ,color);
-		d.line(xyz,xYz,color);
-		d.line(Xyz,XYz,color);
-		d.line(xyZ,xYZ,color);
-		d.line(XyZ,XYZ,color);
-		d.line(xyz,xyZ,color);
-		d.line(Xyz,XyZ,color);
-		d.line(xYz,xYZ,color);
-		d.line(XYz,XYZ,color);
-		var _this42 = this._pool;
-		var mat3 = null;
-		var mat4 = null;
-		var quat = null;
-		if(xyz != null) {
-			xyz.zero();
-			if(_this42.sizeVec3 == _this42.stackVec3.length) {
-				var newLength = _this42.sizeVec3 << 1;
-				var this1 = new Array(newLength);
-				var newArray = this1;
-				var _g = 0;
-				var _g1 = _this42.sizeVec3;
-				while(_g < _g1) {
-					var i = _g++;
-					newArray[i] = _this42.stackVec3[i];
-					_this42.stackVec3[i] = null;
-				}
-				_this42.stackVec3 = newArray;
-			}
-			_this42.stackVec3[_this42.sizeVec3++] = xyz;
-		}
-		if(mat3 != null) {
-			var t00 = 1;
-			var t01 = 0;
-			var t02 = 0;
-			var t10 = 0;
-			var t11 = 1;
-			var t12 = 0;
-			var t20 = 0;
-			var t21 = 0;
-			var t22 = 1;
-			mat3.e00 = t00;
-			mat3.e01 = t01;
-			mat3.e02 = t02;
-			mat3.e10 = t10;
-			mat3.e11 = t11;
-			mat3.e12 = t12;
-			mat3.e20 = t20;
-			mat3.e21 = t21;
-			mat3.e22 = t22;
-			if(_this42.sizeMat3 == _this42.stackMat3.length) {
-				var newLength1 = _this42.sizeMat3 << 1;
-				var this2 = new Array(newLength1);
-				var newArray1 = this2;
-				var _g2 = 0;
-				var _g11 = _this42.sizeMat3;
-				while(_g2 < _g11) {
-					var i1 = _g2++;
-					newArray1[i1] = _this42.stackMat3[i1];
-					_this42.stackMat3[i1] = null;
-				}
-				_this42.stackMat3 = newArray1;
-			}
-			_this42.stackMat3[_this42.sizeMat3++] = mat3;
-		}
-		if(mat4 != null) {
-			var t001 = 1;
-			var t011 = 0;
-			var t021 = 0;
-			var t03 = 0;
-			var t101 = 0;
-			var t111 = 1;
-			var t121 = 0;
-			var t13 = 0;
-			var t201 = 0;
-			var t211 = 0;
-			var t221 = 1;
-			var t23 = 0;
-			var t30 = 0;
-			var t31 = 0;
-			var t32 = 0;
-			var t33 = 1;
-			mat4.e00 = t001;
-			mat4.e01 = t011;
-			mat4.e02 = t021;
-			mat4.e03 = t03;
-			mat4.e10 = t101;
-			mat4.e11 = t111;
-			mat4.e12 = t121;
-			mat4.e13 = t13;
-			mat4.e20 = t201;
-			mat4.e21 = t211;
-			mat4.e22 = t221;
-			mat4.e23 = t23;
-			mat4.e30 = t30;
-			mat4.e31 = t31;
-			mat4.e32 = t32;
-			mat4.e33 = t33;
-			if(_this42.sizeMat4 == _this42.stackMat4.length) {
-				var newLength2 = _this42.sizeMat4 << 1;
-				var this3 = new Array(newLength2);
-				var newArray2 = this3;
-				var _g3 = 0;
-				var _g12 = _this42.sizeMat4;
-				while(_g3 < _g12) {
-					var i2 = _g3++;
-					newArray2[i2] = _this42.stackMat4[i2];
-					_this42.stackMat4[i2] = null;
-				}
-				_this42.stackMat4 = newArray2;
-			}
-			_this42.stackMat4[_this42.sizeMat4++] = mat4;
-		}
-		if(quat != null) {
-			var tx24 = 0;
-			var ty24 = 0;
-			var tz24 = 0;
-			var tw = 1;
-			quat.x = tx24;
-			quat.y = ty24;
-			quat.z = tz24;
-			quat.w = tw;
-			if(_this42.sizeQuat == _this42.stackQuat.length) {
-				var newLength3 = _this42.sizeQuat << 1;
-				var this4 = new Array(newLength3);
-				var newArray3 = this4;
-				var _g4 = 0;
-				var _g13 = _this42.sizeQuat;
-				while(_g4 < _g13) {
-					var i3 = _g4++;
-					newArray3[i3] = _this42.stackQuat[i3];
-					_this42.stackQuat[i3] = null;
-				}
-				_this42.stackQuat = newArray3;
-			}
-			_this42.stackQuat[_this42.sizeQuat++] = quat;
-		}
-		var _this43 = this._pool;
-		var mat31 = null;
-		var mat41 = null;
-		var quat1 = null;
-		if(xyZ != null) {
-			xyZ.zero();
-			if(_this43.sizeVec3 == _this43.stackVec3.length) {
-				var newLength4 = _this43.sizeVec3 << 1;
-				var this5 = new Array(newLength4);
-				var newArray4 = this5;
-				var _g5 = 0;
-				var _g14 = _this43.sizeVec3;
-				while(_g5 < _g14) {
-					var i4 = _g5++;
-					newArray4[i4] = _this43.stackVec3[i4];
-					_this43.stackVec3[i4] = null;
-				}
-				_this43.stackVec3 = newArray4;
-			}
-			_this43.stackVec3[_this43.sizeVec3++] = xyZ;
-		}
-		if(mat31 != null) {
-			var t002 = 1;
-			var t012 = 0;
-			var t022 = 0;
-			var t102 = 0;
-			var t112 = 1;
-			var t122 = 0;
-			var t202 = 0;
-			var t212 = 0;
-			var t222 = 1;
-			mat31.e00 = t002;
-			mat31.e01 = t012;
-			mat31.e02 = t022;
-			mat31.e10 = t102;
-			mat31.e11 = t112;
-			mat31.e12 = t122;
-			mat31.e20 = t202;
-			mat31.e21 = t212;
-			mat31.e22 = t222;
-			if(_this43.sizeMat3 == _this43.stackMat3.length) {
-				var newLength5 = _this43.sizeMat3 << 1;
-				var this6 = new Array(newLength5);
-				var newArray5 = this6;
-				var _g6 = 0;
-				var _g15 = _this43.sizeMat3;
-				while(_g6 < _g15) {
-					var i5 = _g6++;
-					newArray5[i5] = _this43.stackMat3[i5];
-					_this43.stackMat3[i5] = null;
-				}
-				_this43.stackMat3 = newArray5;
-			}
-			_this43.stackMat3[_this43.sizeMat3++] = mat31;
-		}
-		if(mat41 != null) {
-			var t003 = 1;
-			var t013 = 0;
-			var t023 = 0;
-			var t031 = 0;
-			var t103 = 0;
-			var t113 = 1;
-			var t123 = 0;
-			var t131 = 0;
-			var t203 = 0;
-			var t213 = 0;
-			var t223 = 1;
-			var t231 = 0;
-			var t301 = 0;
-			var t311 = 0;
-			var t321 = 0;
-			var t331 = 1;
-			mat41.e00 = t003;
-			mat41.e01 = t013;
-			mat41.e02 = t023;
-			mat41.e03 = t031;
-			mat41.e10 = t103;
-			mat41.e11 = t113;
-			mat41.e12 = t123;
-			mat41.e13 = t131;
-			mat41.e20 = t203;
-			mat41.e21 = t213;
-			mat41.e22 = t223;
-			mat41.e23 = t231;
-			mat41.e30 = t301;
-			mat41.e31 = t311;
-			mat41.e32 = t321;
-			mat41.e33 = t331;
-			if(_this43.sizeMat4 == _this43.stackMat4.length) {
-				var newLength6 = _this43.sizeMat4 << 1;
-				var this7 = new Array(newLength6);
-				var newArray6 = this7;
-				var _g7 = 0;
-				var _g16 = _this43.sizeMat4;
-				while(_g7 < _g16) {
-					var i6 = _g7++;
-					newArray6[i6] = _this43.stackMat4[i6];
-					_this43.stackMat4[i6] = null;
-				}
-				_this43.stackMat4 = newArray6;
-			}
-			_this43.stackMat4[_this43.sizeMat4++] = mat41;
-		}
-		if(quat1 != null) {
-			var tx25 = 0;
-			var ty25 = 0;
-			var tz25 = 0;
-			var tw1 = 1;
-			quat1.x = tx25;
-			quat1.y = ty25;
-			quat1.z = tz25;
-			quat1.w = tw1;
-			if(_this43.sizeQuat == _this43.stackQuat.length) {
-				var newLength7 = _this43.sizeQuat << 1;
-				var this8 = new Array(newLength7);
-				var newArray7 = this8;
-				var _g8 = 0;
-				var _g17 = _this43.sizeQuat;
-				while(_g8 < _g17) {
-					var i7 = _g8++;
-					newArray7[i7] = _this43.stackQuat[i7];
-					_this43.stackQuat[i7] = null;
-				}
-				_this43.stackQuat = newArray7;
-			}
-			_this43.stackQuat[_this43.sizeQuat++] = quat1;
-		}
-		var _this44 = this._pool;
-		var mat32 = null;
-		var mat42 = null;
-		var quat2 = null;
-		if(xYz != null) {
-			xYz.zero();
-			if(_this44.sizeVec3 == _this44.stackVec3.length) {
-				var newLength8 = _this44.sizeVec3 << 1;
-				var this9 = new Array(newLength8);
-				var newArray8 = this9;
-				var _g9 = 0;
-				var _g18 = _this44.sizeVec3;
-				while(_g9 < _g18) {
-					var i8 = _g9++;
-					newArray8[i8] = _this44.stackVec3[i8];
-					_this44.stackVec3[i8] = null;
-				}
-				_this44.stackVec3 = newArray8;
-			}
-			_this44.stackVec3[_this44.sizeVec3++] = xYz;
-		}
-		if(mat32 != null) {
-			var t004 = 1;
-			var t014 = 0;
-			var t024 = 0;
-			var t104 = 0;
-			var t114 = 1;
-			var t124 = 0;
-			var t204 = 0;
-			var t214 = 0;
-			var t224 = 1;
-			mat32.e00 = t004;
-			mat32.e01 = t014;
-			mat32.e02 = t024;
-			mat32.e10 = t104;
-			mat32.e11 = t114;
-			mat32.e12 = t124;
-			mat32.e20 = t204;
-			mat32.e21 = t214;
-			mat32.e22 = t224;
-			if(_this44.sizeMat3 == _this44.stackMat3.length) {
-				var newLength9 = _this44.sizeMat3 << 1;
-				var this10 = new Array(newLength9);
-				var newArray9 = this10;
-				var _g10 = 0;
-				var _g19 = _this44.sizeMat3;
-				while(_g10 < _g19) {
-					var i9 = _g10++;
-					newArray9[i9] = _this44.stackMat3[i9];
-					_this44.stackMat3[i9] = null;
-				}
-				_this44.stackMat3 = newArray9;
-			}
-			_this44.stackMat3[_this44.sizeMat3++] = mat32;
-		}
-		if(mat42 != null) {
-			var t005 = 1;
-			var t015 = 0;
-			var t025 = 0;
-			var t032 = 0;
-			var t105 = 0;
-			var t115 = 1;
-			var t125 = 0;
-			var t132 = 0;
-			var t205 = 0;
-			var t215 = 0;
-			var t225 = 1;
-			var t232 = 0;
-			var t302 = 0;
-			var t312 = 0;
-			var t322 = 0;
-			var t332 = 1;
-			mat42.e00 = t005;
-			mat42.e01 = t015;
-			mat42.e02 = t025;
-			mat42.e03 = t032;
-			mat42.e10 = t105;
-			mat42.e11 = t115;
-			mat42.e12 = t125;
-			mat42.e13 = t132;
-			mat42.e20 = t205;
-			mat42.e21 = t215;
-			mat42.e22 = t225;
-			mat42.e23 = t232;
-			mat42.e30 = t302;
-			mat42.e31 = t312;
-			mat42.e32 = t322;
-			mat42.e33 = t332;
-			if(_this44.sizeMat4 == _this44.stackMat4.length) {
-				var newLength10 = _this44.sizeMat4 << 1;
-				var this11 = new Array(newLength10);
-				var newArray10 = this11;
-				var _g20 = 0;
-				var _g110 = _this44.sizeMat4;
-				while(_g20 < _g110) {
-					var i10 = _g20++;
-					newArray10[i10] = _this44.stackMat4[i10];
-					_this44.stackMat4[i10] = null;
-				}
-				_this44.stackMat4 = newArray10;
-			}
-			_this44.stackMat4[_this44.sizeMat4++] = mat42;
-		}
-		if(quat2 != null) {
-			var tx26 = 0;
-			var ty26 = 0;
-			var tz26 = 0;
-			var tw2 = 1;
-			quat2.x = tx26;
-			quat2.y = ty26;
-			quat2.z = tz26;
-			quat2.w = tw2;
-			if(_this44.sizeQuat == _this44.stackQuat.length) {
-				var newLength11 = _this44.sizeQuat << 1;
-				var this12 = new Array(newLength11);
-				var newArray11 = this12;
-				var _g21 = 0;
-				var _g111 = _this44.sizeQuat;
-				while(_g21 < _g111) {
-					var i11 = _g21++;
-					newArray11[i11] = _this44.stackQuat[i11];
-					_this44.stackQuat[i11] = null;
-				}
-				_this44.stackQuat = newArray11;
-			}
-			_this44.stackQuat[_this44.sizeQuat++] = quat2;
-		}
-		var _this45 = this._pool;
-		var mat33 = null;
-		var mat43 = null;
-		var quat3 = null;
-		if(xYZ != null) {
-			xYZ.zero();
-			if(_this45.sizeVec3 == _this45.stackVec3.length) {
-				var newLength12 = _this45.sizeVec3 << 1;
-				var this13 = new Array(newLength12);
-				var newArray12 = this13;
-				var _g22 = 0;
-				var _g112 = _this45.sizeVec3;
-				while(_g22 < _g112) {
-					var i12 = _g22++;
-					newArray12[i12] = _this45.stackVec3[i12];
-					_this45.stackVec3[i12] = null;
-				}
-				_this45.stackVec3 = newArray12;
-			}
-			_this45.stackVec3[_this45.sizeVec3++] = xYZ;
-		}
-		if(mat33 != null) {
-			var t006 = 1;
-			var t016 = 0;
-			var t026 = 0;
-			var t106 = 0;
-			var t116 = 1;
-			var t126 = 0;
-			var t206 = 0;
-			var t216 = 0;
-			var t226 = 1;
-			mat33.e00 = t006;
-			mat33.e01 = t016;
-			mat33.e02 = t026;
-			mat33.e10 = t106;
-			mat33.e11 = t116;
-			mat33.e12 = t126;
-			mat33.e20 = t206;
-			mat33.e21 = t216;
-			mat33.e22 = t226;
-			if(_this45.sizeMat3 == _this45.stackMat3.length) {
-				var newLength13 = _this45.sizeMat3 << 1;
-				var this14 = new Array(newLength13);
-				var newArray13 = this14;
-				var _g23 = 0;
-				var _g113 = _this45.sizeMat3;
-				while(_g23 < _g113) {
-					var i13 = _g23++;
-					newArray13[i13] = _this45.stackMat3[i13];
-					_this45.stackMat3[i13] = null;
-				}
-				_this45.stackMat3 = newArray13;
-			}
-			_this45.stackMat3[_this45.sizeMat3++] = mat33;
-		}
-		if(mat43 != null) {
-			var t007 = 1;
-			var t017 = 0;
-			var t027 = 0;
-			var t033 = 0;
-			var t107 = 0;
-			var t117 = 1;
-			var t127 = 0;
-			var t133 = 0;
-			var t207 = 0;
-			var t217 = 0;
-			var t227 = 1;
-			var t233 = 0;
-			var t303 = 0;
-			var t313 = 0;
-			var t323 = 0;
-			var t333 = 1;
-			mat43.e00 = t007;
-			mat43.e01 = t017;
-			mat43.e02 = t027;
-			mat43.e03 = t033;
-			mat43.e10 = t107;
-			mat43.e11 = t117;
-			mat43.e12 = t127;
-			mat43.e13 = t133;
-			mat43.e20 = t207;
-			mat43.e21 = t217;
-			mat43.e22 = t227;
-			mat43.e23 = t233;
-			mat43.e30 = t303;
-			mat43.e31 = t313;
-			mat43.e32 = t323;
-			mat43.e33 = t333;
-			if(_this45.sizeMat4 == _this45.stackMat4.length) {
-				var newLength14 = _this45.sizeMat4 << 1;
-				var this15 = new Array(newLength14);
-				var newArray14 = this15;
-				var _g24 = 0;
-				var _g114 = _this45.sizeMat4;
-				while(_g24 < _g114) {
-					var i14 = _g24++;
-					newArray14[i14] = _this45.stackMat4[i14];
-					_this45.stackMat4[i14] = null;
-				}
-				_this45.stackMat4 = newArray14;
-			}
-			_this45.stackMat4[_this45.sizeMat4++] = mat43;
-		}
-		if(quat3 != null) {
-			var tx27 = 0;
-			var ty27 = 0;
-			var tz27 = 0;
-			var tw3 = 1;
-			quat3.x = tx27;
-			quat3.y = ty27;
-			quat3.z = tz27;
-			quat3.w = tw3;
-			if(_this45.sizeQuat == _this45.stackQuat.length) {
-				var newLength15 = _this45.sizeQuat << 1;
-				var this16 = new Array(newLength15);
-				var newArray15 = this16;
-				var _g25 = 0;
-				var _g115 = _this45.sizeQuat;
-				while(_g25 < _g115) {
-					var i15 = _g25++;
-					newArray15[i15] = _this45.stackQuat[i15];
-					_this45.stackQuat[i15] = null;
-				}
-				_this45.stackQuat = newArray15;
-			}
-			_this45.stackQuat[_this45.sizeQuat++] = quat3;
-		}
-		var _this46 = this._pool;
-		var mat34 = null;
-		var mat44 = null;
-		var quat4 = null;
-		if(Xyz != null) {
-			Xyz.zero();
-			if(_this46.sizeVec3 == _this46.stackVec3.length) {
-				var newLength16 = _this46.sizeVec3 << 1;
-				var this17 = new Array(newLength16);
-				var newArray16 = this17;
-				var _g26 = 0;
-				var _g116 = _this46.sizeVec3;
-				while(_g26 < _g116) {
-					var i16 = _g26++;
-					newArray16[i16] = _this46.stackVec3[i16];
-					_this46.stackVec3[i16] = null;
-				}
-				_this46.stackVec3 = newArray16;
-			}
-			_this46.stackVec3[_this46.sizeVec3++] = Xyz;
-		}
-		if(mat34 != null) {
-			var t008 = 1;
-			var t018 = 0;
-			var t028 = 0;
-			var t108 = 0;
-			var t118 = 1;
-			var t128 = 0;
-			var t208 = 0;
-			var t218 = 0;
-			var t228 = 1;
-			mat34.e00 = t008;
-			mat34.e01 = t018;
-			mat34.e02 = t028;
-			mat34.e10 = t108;
-			mat34.e11 = t118;
-			mat34.e12 = t128;
-			mat34.e20 = t208;
-			mat34.e21 = t218;
-			mat34.e22 = t228;
-			if(_this46.sizeMat3 == _this46.stackMat3.length) {
-				var newLength17 = _this46.sizeMat3 << 1;
-				var this18 = new Array(newLength17);
-				var newArray17 = this18;
-				var _g27 = 0;
-				var _g117 = _this46.sizeMat3;
-				while(_g27 < _g117) {
-					var i17 = _g27++;
-					newArray17[i17] = _this46.stackMat3[i17];
-					_this46.stackMat3[i17] = null;
-				}
-				_this46.stackMat3 = newArray17;
-			}
-			_this46.stackMat3[_this46.sizeMat3++] = mat34;
-		}
-		if(mat44 != null) {
-			var t009 = 1;
-			var t019 = 0;
-			var t029 = 0;
-			var t034 = 0;
-			var t109 = 0;
-			var t119 = 1;
-			var t129 = 0;
-			var t134 = 0;
-			var t209 = 0;
-			var t219 = 0;
-			var t229 = 1;
-			var t234 = 0;
-			var t304 = 0;
-			var t314 = 0;
-			var t324 = 0;
-			var t334 = 1;
-			mat44.e00 = t009;
-			mat44.e01 = t019;
-			mat44.e02 = t029;
-			mat44.e03 = t034;
-			mat44.e10 = t109;
-			mat44.e11 = t119;
-			mat44.e12 = t129;
-			mat44.e13 = t134;
-			mat44.e20 = t209;
-			mat44.e21 = t219;
-			mat44.e22 = t229;
-			mat44.e23 = t234;
-			mat44.e30 = t304;
-			mat44.e31 = t314;
-			mat44.e32 = t324;
-			mat44.e33 = t334;
-			if(_this46.sizeMat4 == _this46.stackMat4.length) {
-				var newLength18 = _this46.sizeMat4 << 1;
-				var this19 = new Array(newLength18);
-				var newArray18 = this19;
-				var _g28 = 0;
-				var _g118 = _this46.sizeMat4;
-				while(_g28 < _g118) {
-					var i18 = _g28++;
-					newArray18[i18] = _this46.stackMat4[i18];
-					_this46.stackMat4[i18] = null;
-				}
-				_this46.stackMat4 = newArray18;
-			}
-			_this46.stackMat4[_this46.sizeMat4++] = mat44;
-		}
-		if(quat4 != null) {
-			var tx28 = 0;
-			var ty28 = 0;
-			var tz28 = 0;
-			var tw4 = 1;
-			quat4.x = tx28;
-			quat4.y = ty28;
-			quat4.z = tz28;
-			quat4.w = tw4;
-			if(_this46.sizeQuat == _this46.stackQuat.length) {
-				var newLength19 = _this46.sizeQuat << 1;
-				var this20 = new Array(newLength19);
-				var newArray19 = this20;
-				var _g29 = 0;
-				var _g119 = _this46.sizeQuat;
-				while(_g29 < _g119) {
-					var i19 = _g29++;
-					newArray19[i19] = _this46.stackQuat[i19];
-					_this46.stackQuat[i19] = null;
-				}
-				_this46.stackQuat = newArray19;
-			}
-			_this46.stackQuat[_this46.sizeQuat++] = quat4;
-		}
-		var _this47 = this._pool;
-		var mat35 = null;
-		var mat45 = null;
-		var quat5 = null;
-		if(XyZ != null) {
-			XyZ.zero();
-			if(_this47.sizeVec3 == _this47.stackVec3.length) {
-				var newLength20 = _this47.sizeVec3 << 1;
-				var this21 = new Array(newLength20);
-				var newArray20 = this21;
-				var _g30 = 0;
-				var _g120 = _this47.sizeVec3;
-				while(_g30 < _g120) {
-					var i20 = _g30++;
-					newArray20[i20] = _this47.stackVec3[i20];
-					_this47.stackVec3[i20] = null;
-				}
-				_this47.stackVec3 = newArray20;
-			}
-			_this47.stackVec3[_this47.sizeVec3++] = XyZ;
-		}
-		if(mat35 != null) {
-			var t0010 = 1;
-			var t0110 = 0;
-			var t0210 = 0;
-			var t1010 = 0;
-			var t1110 = 1;
-			var t1210 = 0;
-			var t2010 = 0;
-			var t2110 = 0;
-			var t2210 = 1;
-			mat35.e00 = t0010;
-			mat35.e01 = t0110;
-			mat35.e02 = t0210;
-			mat35.e10 = t1010;
-			mat35.e11 = t1110;
-			mat35.e12 = t1210;
-			mat35.e20 = t2010;
-			mat35.e21 = t2110;
-			mat35.e22 = t2210;
-			if(_this47.sizeMat3 == _this47.stackMat3.length) {
-				var newLength21 = _this47.sizeMat3 << 1;
-				var this22 = new Array(newLength21);
-				var newArray21 = this22;
-				var _g31 = 0;
-				var _g121 = _this47.sizeMat3;
-				while(_g31 < _g121) {
-					var i21 = _g31++;
-					newArray21[i21] = _this47.stackMat3[i21];
-					_this47.stackMat3[i21] = null;
-				}
-				_this47.stackMat3 = newArray21;
-			}
-			_this47.stackMat3[_this47.sizeMat3++] = mat35;
-		}
-		if(mat45 != null) {
-			var t0011 = 1;
-			var t0111 = 0;
-			var t0211 = 0;
-			var t035 = 0;
-			var t1011 = 0;
-			var t1111 = 1;
-			var t1211 = 0;
-			var t135 = 0;
-			var t2011 = 0;
-			var t2111 = 0;
-			var t2211 = 1;
-			var t235 = 0;
-			var t305 = 0;
-			var t315 = 0;
-			var t325 = 0;
-			var t335 = 1;
-			mat45.e00 = t0011;
-			mat45.e01 = t0111;
-			mat45.e02 = t0211;
-			mat45.e03 = t035;
-			mat45.e10 = t1011;
-			mat45.e11 = t1111;
-			mat45.e12 = t1211;
-			mat45.e13 = t135;
-			mat45.e20 = t2011;
-			mat45.e21 = t2111;
-			mat45.e22 = t2211;
-			mat45.e23 = t235;
-			mat45.e30 = t305;
-			mat45.e31 = t315;
-			mat45.e32 = t325;
-			mat45.e33 = t335;
-			if(_this47.sizeMat4 == _this47.stackMat4.length) {
-				var newLength22 = _this47.sizeMat4 << 1;
-				var this23 = new Array(newLength22);
-				var newArray22 = this23;
-				var _g32 = 0;
-				var _g122 = _this47.sizeMat4;
-				while(_g32 < _g122) {
-					var i22 = _g32++;
-					newArray22[i22] = _this47.stackMat4[i22];
-					_this47.stackMat4[i22] = null;
-				}
-				_this47.stackMat4 = newArray22;
-			}
-			_this47.stackMat4[_this47.sizeMat4++] = mat45;
-		}
-		if(quat5 != null) {
-			var tx29 = 0;
-			var ty29 = 0;
-			var tz29 = 0;
-			var tw5 = 1;
-			quat5.x = tx29;
-			quat5.y = ty29;
-			quat5.z = tz29;
-			quat5.w = tw5;
-			if(_this47.sizeQuat == _this47.stackQuat.length) {
-				var newLength23 = _this47.sizeQuat << 1;
-				var this24 = new Array(newLength23);
-				var newArray23 = this24;
-				var _g33 = 0;
-				var _g123 = _this47.sizeQuat;
-				while(_g33 < _g123) {
-					var i23 = _g33++;
-					newArray23[i23] = _this47.stackQuat[i23];
-					_this47.stackQuat[i23] = null;
-				}
-				_this47.stackQuat = newArray23;
-			}
-			_this47.stackQuat[_this47.sizeQuat++] = quat5;
-		}
-		var _this48 = this._pool;
-		var mat36 = null;
-		var mat46 = null;
-		var quat6 = null;
-		if(XYz != null) {
-			XYz.zero();
-			if(_this48.sizeVec3 == _this48.stackVec3.length) {
-				var newLength24 = _this48.sizeVec3 << 1;
-				var this25 = new Array(newLength24);
-				var newArray24 = this25;
-				var _g34 = 0;
-				var _g124 = _this48.sizeVec3;
-				while(_g34 < _g124) {
-					var i24 = _g34++;
-					newArray24[i24] = _this48.stackVec3[i24];
-					_this48.stackVec3[i24] = null;
-				}
-				_this48.stackVec3 = newArray24;
-			}
-			_this48.stackVec3[_this48.sizeVec3++] = XYz;
-		}
-		if(mat36 != null) {
-			var t0012 = 1;
-			var t0112 = 0;
-			var t0212 = 0;
-			var t1012 = 0;
-			var t1112 = 1;
-			var t1212 = 0;
-			var t2012 = 0;
-			var t2112 = 0;
-			var t2212 = 1;
-			mat36.e00 = t0012;
-			mat36.e01 = t0112;
-			mat36.e02 = t0212;
-			mat36.e10 = t1012;
-			mat36.e11 = t1112;
-			mat36.e12 = t1212;
-			mat36.e20 = t2012;
-			mat36.e21 = t2112;
-			mat36.e22 = t2212;
-			if(_this48.sizeMat3 == _this48.stackMat3.length) {
-				var newLength25 = _this48.sizeMat3 << 1;
-				var this26 = new Array(newLength25);
-				var newArray25 = this26;
-				var _g35 = 0;
-				var _g125 = _this48.sizeMat3;
-				while(_g35 < _g125) {
-					var i25 = _g35++;
-					newArray25[i25] = _this48.stackMat3[i25];
-					_this48.stackMat3[i25] = null;
-				}
-				_this48.stackMat3 = newArray25;
-			}
-			_this48.stackMat3[_this48.sizeMat3++] = mat36;
-		}
-		if(mat46 != null) {
-			var t0013 = 1;
-			var t0113 = 0;
-			var t0213 = 0;
-			var t036 = 0;
-			var t1013 = 0;
-			var t1113 = 1;
-			var t1213 = 0;
-			var t136 = 0;
-			var t2013 = 0;
-			var t2113 = 0;
-			var t2213 = 1;
-			var t236 = 0;
-			var t306 = 0;
-			var t316 = 0;
-			var t326 = 0;
-			var t336 = 1;
-			mat46.e00 = t0013;
-			mat46.e01 = t0113;
-			mat46.e02 = t0213;
-			mat46.e03 = t036;
-			mat46.e10 = t1013;
-			mat46.e11 = t1113;
-			mat46.e12 = t1213;
-			mat46.e13 = t136;
-			mat46.e20 = t2013;
-			mat46.e21 = t2113;
-			mat46.e22 = t2213;
-			mat46.e23 = t236;
-			mat46.e30 = t306;
-			mat46.e31 = t316;
-			mat46.e32 = t326;
-			mat46.e33 = t336;
-			if(_this48.sizeMat4 == _this48.stackMat4.length) {
-				var newLength26 = _this48.sizeMat4 << 1;
-				var this27 = new Array(newLength26);
-				var newArray26 = this27;
-				var _g36 = 0;
-				var _g126 = _this48.sizeMat4;
-				while(_g36 < _g126) {
-					var i26 = _g36++;
-					newArray26[i26] = _this48.stackMat4[i26];
-					_this48.stackMat4[i26] = null;
-				}
-				_this48.stackMat4 = newArray26;
-			}
-			_this48.stackMat4[_this48.sizeMat4++] = mat46;
-		}
-		if(quat6 != null) {
-			var tx30 = 0;
-			var ty30 = 0;
-			var tz30 = 0;
-			var tw6 = 1;
-			quat6.x = tx30;
-			quat6.y = ty30;
-			quat6.z = tz30;
-			quat6.w = tw6;
-			if(_this48.sizeQuat == _this48.stackQuat.length) {
-				var newLength27 = _this48.sizeQuat << 1;
-				var this28 = new Array(newLength27);
-				var newArray27 = this28;
-				var _g37 = 0;
-				var _g127 = _this48.sizeQuat;
-				while(_g37 < _g127) {
-					var i27 = _g37++;
-					newArray27[i27] = _this48.stackQuat[i27];
-					_this48.stackQuat[i27] = null;
-				}
-				_this48.stackQuat = newArray27;
-			}
-			_this48.stackQuat[_this48.sizeQuat++] = quat6;
-		}
-		var _this49 = this._pool;
-		var mat37 = null;
-		var mat47 = null;
-		var quat7 = null;
-		if(XYZ != null) {
-			XYZ.zero();
-			if(_this49.sizeVec3 == _this49.stackVec3.length) {
-				var newLength28 = _this49.sizeVec3 << 1;
-				var this29 = new Array(newLength28);
-				var newArray28 = this29;
-				var _g38 = 0;
-				var _g128 = _this49.sizeVec3;
-				while(_g38 < _g128) {
-					var i28 = _g38++;
-					newArray28[i28] = _this49.stackVec3[i28];
-					_this49.stackVec3[i28] = null;
-				}
-				_this49.stackVec3 = newArray28;
-			}
-			_this49.stackVec3[_this49.sizeVec3++] = XYZ;
-		}
-		if(mat37 != null) {
-			var t0014 = 1;
-			var t0114 = 0;
-			var t0214 = 0;
-			var t1014 = 0;
-			var t1114 = 1;
-			var t1214 = 0;
-			var t2014 = 0;
-			var t2114 = 0;
-			var t2214 = 1;
-			mat37.e00 = t0014;
-			mat37.e01 = t0114;
-			mat37.e02 = t0214;
-			mat37.e10 = t1014;
-			mat37.e11 = t1114;
-			mat37.e12 = t1214;
-			mat37.e20 = t2014;
-			mat37.e21 = t2114;
-			mat37.e22 = t2214;
-			if(_this49.sizeMat3 == _this49.stackMat3.length) {
-				var newLength29 = _this49.sizeMat3 << 1;
-				var this30 = new Array(newLength29);
-				var newArray29 = this30;
-				var _g39 = 0;
-				var _g129 = _this49.sizeMat3;
-				while(_g39 < _g129) {
-					var i29 = _g39++;
-					newArray29[i29] = _this49.stackMat3[i29];
-					_this49.stackMat3[i29] = null;
-				}
-				_this49.stackMat3 = newArray29;
-			}
-			_this49.stackMat3[_this49.sizeMat3++] = mat37;
-		}
-		if(mat47 != null) {
-			var t0015 = 1;
-			var t0115 = 0;
-			var t0215 = 0;
-			var t037 = 0;
-			var t1015 = 0;
-			var t1115 = 1;
-			var t1215 = 0;
-			var t137 = 0;
-			var t2015 = 0;
-			var t2115 = 0;
-			var t2215 = 1;
-			var t237 = 0;
-			var t307 = 0;
-			var t317 = 0;
-			var t327 = 0;
-			var t337 = 1;
-			mat47.e00 = t0015;
-			mat47.e01 = t0115;
-			mat47.e02 = t0215;
-			mat47.e03 = t037;
-			mat47.e10 = t1015;
-			mat47.e11 = t1115;
-			mat47.e12 = t1215;
-			mat47.e13 = t137;
-			mat47.e20 = t2015;
-			mat47.e21 = t2115;
-			mat47.e22 = t2215;
-			mat47.e23 = t237;
-			mat47.e30 = t307;
-			mat47.e31 = t317;
-			mat47.e32 = t327;
-			mat47.e33 = t337;
-			if(_this49.sizeMat4 == _this49.stackMat4.length) {
-				var newLength30 = _this49.sizeMat4 << 1;
-				var this31 = new Array(newLength30);
-				var newArray30 = this31;
-				var _g40 = 0;
-				var _g130 = _this49.sizeMat4;
-				while(_g40 < _g130) {
-					var i30 = _g40++;
-					newArray30[i30] = _this49.stackMat4[i30];
-					_this49.stackMat4[i30] = null;
-				}
-				_this49.stackMat4 = newArray30;
-			}
-			_this49.stackMat4[_this49.sizeMat4++] = mat47;
-		}
-		if(quat7 != null) {
-			var tx31 = 0;
-			var ty31 = 0;
-			var tz31 = 0;
-			var tw7 = 1;
-			quat7.x = tx31;
-			quat7.y = ty31;
-			quat7.z = tz31;
-			quat7.w = tw7;
-			if(_this49.sizeQuat == _this49.stackQuat.length) {
-				var newLength31 = _this49.sizeQuat << 1;
-				var this32 = new Array(newLength31);
-				var newArray31 = this32;
-				var _g41 = 0;
-				var _g131 = _this49.sizeQuat;
-				while(_g41 < _g131) {
-					var i31 = _g41++;
-					newArray31[i31] = _this49.stackQuat[i31];
-					_this49.stackQuat[i31] = null;
-				}
-				_this49.stackQuat = newArray31;
-			}
-			_this49.stackQuat[_this49.sizeQuat++] = quat7;
-		}
-	}
-	_drawEllipseOnSphere(d,center,normal,x,y,radiansX,radiansY,radius,color) {
-		var n = 16;
-		var theta = 0;
-		var dTheta = 6.28318530717958 / n;
-		var _this = this._pool;
-		var rotVec = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-		var _this1 = this._pool;
-		var rotQ = _this1.sizeQuat == 0 ? new oimo.common.Quat() : _this1.stackQuat[--_this1.sizeQuat];
-		var _this2 = this._pool;
-		var rotM = _this2.sizeMat3 == 0 ? new oimo.common.Mat3() : _this2.stackMat3[--_this2.sizeMat3];
-		var _this3 = this._pool;
-		var prevV = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
-		var _g = 0;
-		var _g1 = n + 1;
-		while(_g < _g1) {
-			var i = _g++;
-			var rx = Math.cos(theta) * radiansX;
-			var ry = Math.sin(theta) * radiansY;
-			var halfRotAng = Math.sqrt(rx * rx + ry * ry);
-			var rotSin = Math.sin(halfRotAng * 0.5);
-			var rotCos = Math.cos(halfRotAng * 0.5);
-			var _this4 = rotVec.zero();
-			var tx = _this4.x + x.x * rx;
-			var ty = _this4.y + x.y * rx;
-			var tz = _this4.z + x.z * rx;
-			_this4.x = tx;
-			_this4.y = ty;
-			_this4.z = tz;
-			var _this5 = _this4;
-			var tx1 = _this5.x + y.x * ry;
-			var ty1 = _this5.y + y.y * ry;
-			var tz1 = _this5.z + y.z * ry;
-			_this5.x = tx1;
-			_this5.y = ty1;
-			_this5.z = tz1;
-			var s = 1 / halfRotAng * rotSin;
-			var tx2 = rotVec.x * s;
-			var ty2 = rotVec.y * s;
-			var tz2 = rotVec.z * s;
-			rotVec.x = tx2;
-			rotVec.y = ty2;
-			rotVec.z = tz2;
-			rotQ.x = rotVec.x;
-			rotQ.y = rotVec.y;
-			rotQ.z = rotVec.z;
-			rotQ.w = rotCos;
-			var x1 = rotQ.x;
-			var y1 = rotQ.y;
-			var z = rotQ.z;
-			var w = rotQ.w;
-			var x2 = 2 * x1;
-			var y2 = 2 * y1;
-			var z2 = 2 * z;
-			var xx = x1 * x2;
-			var yy = y1 * y2;
-			var zz = z * z2;
-			var xy = x1 * y2;
-			var yz = y1 * z2;
-			var xz = x1 * z2;
-			var wx = w * x2;
-			var wy = w * y2;
-			var wz = w * z2;
-			rotM.e00 = 1 - yy - zz;
-			rotM.e01 = xy - wz;
-			rotM.e02 = xz + wy;
-			rotM.e10 = xy + wz;
-			rotM.e11 = 1 - xx - zz;
-			rotM.e12 = yz - wx;
-			rotM.e20 = xz - wy;
-			rotM.e21 = yz + wx;
-			rotM.e22 = 1 - xx - yy;
-			var _this6 = this._pool;
-			var _this7 = _this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3];
-			var tx3 = _this7.x + normal.x * radius;
-			var ty3 = _this7.y + normal.y * radius;
-			var tz3 = _this7.z + normal.z * radius;
-			_this7.x = tx3;
-			_this7.y = ty3;
-			_this7.z = tz3;
-			var v = _this7;
-			var tx4 = v.x * rotM.e00 + v.y * rotM.e01 + v.z * rotM.e02;
-			var ty4 = v.x * rotM.e10 + v.y * rotM.e11 + v.z * rotM.e12;
-			var tz4 = v.x * rotM.e20 + v.y * rotM.e21 + v.z * rotM.e22;
-			v.x = tx4;
-			v.y = ty4;
-			v.z = tz4;
-			var _this8 = v;
-			var tx5 = _this8.x + center.x;
-			var ty5 = _this8.y + center.y;
-			var tz5 = _this8.z + center.z;
-			_this8.x = tx5;
-			_this8.y = ty5;
-			_this8.z = tz5;
-			if(i >= 1) {
-				d.line(prevV,v,color);
-			}
-			var _this9 = this._pool;
-			var mat3 = null;
-			var mat4 = null;
-			var quat = null;
-			if(prevV != null) {
-				prevV.zero();
-				if(_this9.sizeVec3 == _this9.stackVec3.length) {
-					var newLength = _this9.sizeVec3 << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g2 = 0;
-					var _g11 = _this9.sizeVec3;
-					while(_g2 < _g11) {
-						var i1 = _g2++;
-						newArray[i1] = _this9.stackVec3[i1];
-						_this9.stackVec3[i1] = null;
-					}
-					_this9.stackVec3 = newArray;
-				}
-				_this9.stackVec3[_this9.sizeVec3++] = prevV;
-			}
-			if(mat3 != null) {
-				var t00 = 1;
-				var t01 = 0;
-				var t02 = 0;
-				var t10 = 0;
-				var t11 = 1;
-				var t12 = 0;
-				var t20 = 0;
-				var t21 = 0;
-				var t22 = 1;
-				mat3.e00 = t00;
-				mat3.e01 = t01;
-				mat3.e02 = t02;
-				mat3.e10 = t10;
-				mat3.e11 = t11;
-				mat3.e12 = t12;
-				mat3.e20 = t20;
-				mat3.e21 = t21;
-				mat3.e22 = t22;
-				if(_this9.sizeMat3 == _this9.stackMat3.length) {
-					var newLength1 = _this9.sizeMat3 << 1;
-					var this2 = new Array(newLength1);
-					var newArray1 = this2;
-					var _g3 = 0;
-					var _g12 = _this9.sizeMat3;
-					while(_g3 < _g12) {
-						var i2 = _g3++;
-						newArray1[i2] = _this9.stackMat3[i2];
-						_this9.stackMat3[i2] = null;
-					}
-					_this9.stackMat3 = newArray1;
-				}
-				_this9.stackMat3[_this9.sizeMat3++] = mat3;
-			}
-			if(mat4 != null) {
-				var t001 = 1;
-				var t011 = 0;
-				var t021 = 0;
-				var t03 = 0;
-				var t101 = 0;
-				var t111 = 1;
-				var t121 = 0;
-				var t13 = 0;
-				var t201 = 0;
-				var t211 = 0;
-				var t221 = 1;
-				var t23 = 0;
-				var t30 = 0;
-				var t31 = 0;
-				var t32 = 0;
-				var t33 = 1;
-				mat4.e00 = t001;
-				mat4.e01 = t011;
-				mat4.e02 = t021;
-				mat4.e03 = t03;
-				mat4.e10 = t101;
-				mat4.e11 = t111;
-				mat4.e12 = t121;
-				mat4.e13 = t13;
-				mat4.e20 = t201;
-				mat4.e21 = t211;
-				mat4.e22 = t221;
-				mat4.e23 = t23;
-				mat4.e30 = t30;
-				mat4.e31 = t31;
-				mat4.e32 = t32;
-				mat4.e33 = t33;
-				if(_this9.sizeMat4 == _this9.stackMat4.length) {
-					var newLength2 = _this9.sizeMat4 << 1;
-					var this3 = new Array(newLength2);
-					var newArray2 = this3;
-					var _g4 = 0;
-					var _g13 = _this9.sizeMat4;
-					while(_g4 < _g13) {
-						var i3 = _g4++;
-						newArray2[i3] = _this9.stackMat4[i3];
-						_this9.stackMat4[i3] = null;
-					}
-					_this9.stackMat4 = newArray2;
-				}
-				_this9.stackMat4[_this9.sizeMat4++] = mat4;
-			}
-			if(quat != null) {
-				var tx6 = 0;
-				var ty6 = 0;
-				var tz6 = 0;
-				var tw = 1;
-				quat.x = tx6;
-				quat.y = ty6;
-				quat.z = tz6;
-				quat.w = tw;
-				if(_this9.sizeQuat == _this9.stackQuat.length) {
-					var newLength3 = _this9.sizeQuat << 1;
-					var this4 = new Array(newLength3);
-					var newArray3 = this4;
-					var _g5 = 0;
-					var _g14 = _this9.sizeQuat;
-					while(_g5 < _g14) {
-						var i4 = _g5++;
-						newArray3[i4] = _this9.stackQuat[i4];
-						_this9.stackQuat[i4] = null;
-					}
-					_this9.stackQuat = newArray3;
-				}
-				_this9.stackQuat[_this9.sizeQuat++] = quat;
-			}
-			prevV = v;
-			theta += dTheta;
-		}
-		var _this10 = this._pool;
-		var mat31 = null;
-		var mat41 = null;
-		var quat1 = null;
-		if(rotVec != null) {
-			rotVec.zero();
-			if(_this10.sizeVec3 == _this10.stackVec3.length) {
-				var newLength4 = _this10.sizeVec3 << 1;
-				var this5 = new Array(newLength4);
-				var newArray4 = this5;
-				var _g6 = 0;
-				var _g15 = _this10.sizeVec3;
-				while(_g6 < _g15) {
-					var i5 = _g6++;
-					newArray4[i5] = _this10.stackVec3[i5];
-					_this10.stackVec3[i5] = null;
-				}
-				_this10.stackVec3 = newArray4;
-			}
-			_this10.stackVec3[_this10.sizeVec3++] = rotVec;
-		}
-		if(mat31 != null) {
-			var t002 = 1;
-			var t012 = 0;
-			var t022 = 0;
-			var t102 = 0;
-			var t112 = 1;
-			var t122 = 0;
-			var t202 = 0;
-			var t212 = 0;
-			var t222 = 1;
-			mat31.e00 = t002;
-			mat31.e01 = t012;
-			mat31.e02 = t022;
-			mat31.e10 = t102;
-			mat31.e11 = t112;
-			mat31.e12 = t122;
-			mat31.e20 = t202;
-			mat31.e21 = t212;
-			mat31.e22 = t222;
-			if(_this10.sizeMat3 == _this10.stackMat3.length) {
-				var newLength5 = _this10.sizeMat3 << 1;
-				var this6 = new Array(newLength5);
-				var newArray5 = this6;
-				var _g7 = 0;
-				var _g16 = _this10.sizeMat3;
-				while(_g7 < _g16) {
-					var i6 = _g7++;
-					newArray5[i6] = _this10.stackMat3[i6];
-					_this10.stackMat3[i6] = null;
-				}
-				_this10.stackMat3 = newArray5;
-			}
-			_this10.stackMat3[_this10.sizeMat3++] = mat31;
-		}
-		if(mat41 != null) {
-			var t003 = 1;
-			var t013 = 0;
-			var t023 = 0;
-			var t031 = 0;
-			var t103 = 0;
-			var t113 = 1;
-			var t123 = 0;
-			var t131 = 0;
-			var t203 = 0;
-			var t213 = 0;
-			var t223 = 1;
-			var t231 = 0;
-			var t301 = 0;
-			var t311 = 0;
-			var t321 = 0;
-			var t331 = 1;
-			mat41.e00 = t003;
-			mat41.e01 = t013;
-			mat41.e02 = t023;
-			mat41.e03 = t031;
-			mat41.e10 = t103;
-			mat41.e11 = t113;
-			mat41.e12 = t123;
-			mat41.e13 = t131;
-			mat41.e20 = t203;
-			mat41.e21 = t213;
-			mat41.e22 = t223;
-			mat41.e23 = t231;
-			mat41.e30 = t301;
-			mat41.e31 = t311;
-			mat41.e32 = t321;
-			mat41.e33 = t331;
-			if(_this10.sizeMat4 == _this10.stackMat4.length) {
-				var newLength6 = _this10.sizeMat4 << 1;
-				var this7 = new Array(newLength6);
-				var newArray6 = this7;
-				var _g8 = 0;
-				var _g17 = _this10.sizeMat4;
-				while(_g8 < _g17) {
-					var i7 = _g8++;
-					newArray6[i7] = _this10.stackMat4[i7];
-					_this10.stackMat4[i7] = null;
-				}
-				_this10.stackMat4 = newArray6;
-			}
-			_this10.stackMat4[_this10.sizeMat4++] = mat41;
-		}
-		if(quat1 != null) {
-			var tx7 = 0;
-			var ty7 = 0;
-			var tz7 = 0;
-			var tw1 = 1;
-			quat1.x = tx7;
-			quat1.y = ty7;
-			quat1.z = tz7;
-			quat1.w = tw1;
-			if(_this10.sizeQuat == _this10.stackQuat.length) {
-				var newLength7 = _this10.sizeQuat << 1;
-				var this8 = new Array(newLength7);
-				var newArray7 = this8;
-				var _g9 = 0;
-				var _g18 = _this10.sizeQuat;
-				while(_g9 < _g18) {
-					var i8 = _g9++;
-					newArray7[i8] = _this10.stackQuat[i8];
-					_this10.stackQuat[i8] = null;
-				}
-				_this10.stackQuat = newArray7;
-			}
-			_this10.stackQuat[_this10.sizeQuat++] = quat1;
-		}
-		var _this11 = this._pool;
-		var vec3 = null;
-		var mat32 = null;
-		var mat42 = null;
-		if(vec3 != null) {
-			vec3.zero();
-			if(_this11.sizeVec3 == _this11.stackVec3.length) {
-				var newLength8 = _this11.sizeVec3 << 1;
-				var this9 = new Array(newLength8);
-				var newArray8 = this9;
-				var _g10 = 0;
-				var _g19 = _this11.sizeVec3;
-				while(_g10 < _g19) {
-					var i9 = _g10++;
-					newArray8[i9] = _this11.stackVec3[i9];
-					_this11.stackVec3[i9] = null;
-				}
-				_this11.stackVec3 = newArray8;
-			}
-			_this11.stackVec3[_this11.sizeVec3++] = vec3;
-		}
-		if(mat32 != null) {
-			var t004 = 1;
-			var t014 = 0;
-			var t024 = 0;
-			var t104 = 0;
-			var t114 = 1;
-			var t124 = 0;
-			var t204 = 0;
-			var t214 = 0;
-			var t224 = 1;
-			mat32.e00 = t004;
-			mat32.e01 = t014;
-			mat32.e02 = t024;
-			mat32.e10 = t104;
-			mat32.e11 = t114;
-			mat32.e12 = t124;
-			mat32.e20 = t204;
-			mat32.e21 = t214;
-			mat32.e22 = t224;
-			if(_this11.sizeMat3 == _this11.stackMat3.length) {
-				var newLength9 = _this11.sizeMat3 << 1;
-				var this10 = new Array(newLength9);
-				var newArray9 = this10;
-				var _g20 = 0;
-				var _g110 = _this11.sizeMat3;
-				while(_g20 < _g110) {
-					var i10 = _g20++;
-					newArray9[i10] = _this11.stackMat3[i10];
-					_this11.stackMat3[i10] = null;
-				}
-				_this11.stackMat3 = newArray9;
-			}
-			_this11.stackMat3[_this11.sizeMat3++] = mat32;
-		}
-		if(mat42 != null) {
-			var t005 = 1;
-			var t015 = 0;
-			var t025 = 0;
-			var t032 = 0;
-			var t105 = 0;
-			var t115 = 1;
-			var t125 = 0;
-			var t132 = 0;
-			var t205 = 0;
-			var t215 = 0;
-			var t225 = 1;
-			var t232 = 0;
-			var t302 = 0;
-			var t312 = 0;
-			var t322 = 0;
-			var t332 = 1;
-			mat42.e00 = t005;
-			mat42.e01 = t015;
-			mat42.e02 = t025;
-			mat42.e03 = t032;
-			mat42.e10 = t105;
-			mat42.e11 = t115;
-			mat42.e12 = t125;
-			mat42.e13 = t132;
-			mat42.e20 = t205;
-			mat42.e21 = t215;
-			mat42.e22 = t225;
-			mat42.e23 = t232;
-			mat42.e30 = t302;
-			mat42.e31 = t312;
-			mat42.e32 = t322;
-			mat42.e33 = t332;
-			if(_this11.sizeMat4 == _this11.stackMat4.length) {
-				var newLength10 = _this11.sizeMat4 << 1;
-				var this11 = new Array(newLength10);
-				var newArray10 = this11;
-				var _g21 = 0;
-				var _g111 = _this11.sizeMat4;
-				while(_g21 < _g111) {
-					var i11 = _g21++;
-					newArray10[i11] = _this11.stackMat4[i11];
-					_this11.stackMat4[i11] = null;
-				}
-				_this11.stackMat4 = newArray10;
-			}
-			_this11.stackMat4[_this11.sizeMat4++] = mat42;
-		}
-		if(rotQ != null) {
-			var tx8 = 0;
-			var ty8 = 0;
-			var tz8 = 0;
-			var tw2 = 1;
-			rotQ.x = tx8;
-			rotQ.y = ty8;
-			rotQ.z = tz8;
-			rotQ.w = tw2;
-			if(_this11.sizeQuat == _this11.stackQuat.length) {
-				var newLength11 = _this11.sizeQuat << 1;
-				var this12 = new Array(newLength11);
-				var newArray11 = this12;
-				var _g22 = 0;
-				var _g112 = _this11.sizeQuat;
-				while(_g22 < _g112) {
-					var i12 = _g22++;
-					newArray11[i12] = _this11.stackQuat[i12];
-					_this11.stackQuat[i12] = null;
-				}
-				_this11.stackQuat = newArray11;
-			}
-			_this11.stackQuat[_this11.sizeQuat++] = rotQ;
-		}
-		var _this12 = this._pool;
-		var vec31 = null;
-		var mat43 = null;
-		var quat2 = null;
-		if(vec31 != null) {
-			vec31.zero();
-			if(_this12.sizeVec3 == _this12.stackVec3.length) {
-				var newLength12 = _this12.sizeVec3 << 1;
-				var this13 = new Array(newLength12);
-				var newArray12 = this13;
-				var _g23 = 0;
-				var _g113 = _this12.sizeVec3;
-				while(_g23 < _g113) {
-					var i13 = _g23++;
-					newArray12[i13] = _this12.stackVec3[i13];
-					_this12.stackVec3[i13] = null;
-				}
-				_this12.stackVec3 = newArray12;
-			}
-			_this12.stackVec3[_this12.sizeVec3++] = vec31;
-		}
-		if(rotM != null) {
-			var t006 = 1;
-			var t016 = 0;
-			var t026 = 0;
-			var t106 = 0;
-			var t116 = 1;
-			var t126 = 0;
-			var t206 = 0;
-			var t216 = 0;
-			var t226 = 1;
-			rotM.e00 = t006;
-			rotM.e01 = t016;
-			rotM.e02 = t026;
-			rotM.e10 = t106;
-			rotM.e11 = t116;
-			rotM.e12 = t126;
-			rotM.e20 = t206;
-			rotM.e21 = t216;
-			rotM.e22 = t226;
-			if(_this12.sizeMat3 == _this12.stackMat3.length) {
-				var newLength13 = _this12.sizeMat3 << 1;
-				var this14 = new Array(newLength13);
-				var newArray13 = this14;
-				var _g24 = 0;
-				var _g114 = _this12.sizeMat3;
-				while(_g24 < _g114) {
-					var i14 = _g24++;
-					newArray13[i14] = _this12.stackMat3[i14];
-					_this12.stackMat3[i14] = null;
-				}
-				_this12.stackMat3 = newArray13;
-			}
-			_this12.stackMat3[_this12.sizeMat3++] = rotM;
-		}
-		if(mat43 != null) {
-			var t007 = 1;
-			var t017 = 0;
-			var t027 = 0;
-			var t033 = 0;
-			var t107 = 0;
-			var t117 = 1;
-			var t127 = 0;
-			var t133 = 0;
-			var t207 = 0;
-			var t217 = 0;
-			var t227 = 1;
-			var t233 = 0;
-			var t303 = 0;
-			var t313 = 0;
-			var t323 = 0;
-			var t333 = 1;
-			mat43.e00 = t007;
-			mat43.e01 = t017;
-			mat43.e02 = t027;
-			mat43.e03 = t033;
-			mat43.e10 = t107;
-			mat43.e11 = t117;
-			mat43.e12 = t127;
-			mat43.e13 = t133;
-			mat43.e20 = t207;
-			mat43.e21 = t217;
-			mat43.e22 = t227;
-			mat43.e23 = t233;
-			mat43.e30 = t303;
-			mat43.e31 = t313;
-			mat43.e32 = t323;
-			mat43.e33 = t333;
-			if(_this12.sizeMat4 == _this12.stackMat4.length) {
-				var newLength14 = _this12.sizeMat4 << 1;
-				var this15 = new Array(newLength14);
-				var newArray14 = this15;
-				var _g25 = 0;
-				var _g115 = _this12.sizeMat4;
-				while(_g25 < _g115) {
-					var i15 = _g25++;
-					newArray14[i15] = _this12.stackMat4[i15];
-					_this12.stackMat4[i15] = null;
-				}
-				_this12.stackMat4 = newArray14;
-			}
-			_this12.stackMat4[_this12.sizeMat4++] = mat43;
-		}
-		if(quat2 != null) {
-			var tx9 = 0;
-			var ty9 = 0;
-			var tz9 = 0;
-			var tw3 = 1;
-			quat2.x = tx9;
-			quat2.y = ty9;
-			quat2.z = tz9;
-			quat2.w = tw3;
-			if(_this12.sizeQuat == _this12.stackQuat.length) {
-				var newLength15 = _this12.sizeQuat << 1;
-				var this16 = new Array(newLength15);
-				var newArray15 = this16;
-				var _g26 = 0;
-				var _g116 = _this12.sizeQuat;
-				while(_g26 < _g116) {
-					var i16 = _g26++;
-					newArray15[i16] = _this12.stackQuat[i16];
-					_this12.stackQuat[i16] = null;
-				}
-				_this12.stackQuat = newArray15;
-			}
-			_this12.stackQuat[_this12.sizeQuat++] = quat2;
-		}
-		var _this13 = this._pool;
-		var mat33 = null;
-		var mat44 = null;
-		var quat3 = null;
-		if(prevV != null) {
-			prevV.zero();
-			if(_this13.sizeVec3 == _this13.stackVec3.length) {
-				var newLength16 = _this13.sizeVec3 << 1;
-				var this17 = new Array(newLength16);
-				var newArray16 = this17;
-				var _g27 = 0;
-				var _g117 = _this13.sizeVec3;
-				while(_g27 < _g117) {
-					var i17 = _g27++;
-					newArray16[i17] = _this13.stackVec3[i17];
-					_this13.stackVec3[i17] = null;
-				}
-				_this13.stackVec3 = newArray16;
-			}
-			_this13.stackVec3[_this13.sizeVec3++] = prevV;
-		}
-		if(mat33 != null) {
-			var t008 = 1;
-			var t018 = 0;
-			var t028 = 0;
-			var t108 = 0;
-			var t118 = 1;
-			var t128 = 0;
-			var t208 = 0;
-			var t218 = 0;
-			var t228 = 1;
-			mat33.e00 = t008;
-			mat33.e01 = t018;
-			mat33.e02 = t028;
-			mat33.e10 = t108;
-			mat33.e11 = t118;
-			mat33.e12 = t128;
-			mat33.e20 = t208;
-			mat33.e21 = t218;
-			mat33.e22 = t228;
-			if(_this13.sizeMat3 == _this13.stackMat3.length) {
-				var newLength17 = _this13.sizeMat3 << 1;
-				var this18 = new Array(newLength17);
-				var newArray17 = this18;
-				var _g28 = 0;
-				var _g118 = _this13.sizeMat3;
-				while(_g28 < _g118) {
-					var i18 = _g28++;
-					newArray17[i18] = _this13.stackMat3[i18];
-					_this13.stackMat3[i18] = null;
-				}
-				_this13.stackMat3 = newArray17;
-			}
-			_this13.stackMat3[_this13.sizeMat3++] = mat33;
-		}
-		if(mat44 != null) {
-			var t009 = 1;
-			var t019 = 0;
-			var t029 = 0;
-			var t034 = 0;
-			var t109 = 0;
-			var t119 = 1;
-			var t129 = 0;
-			var t134 = 0;
-			var t209 = 0;
-			var t219 = 0;
-			var t229 = 1;
-			var t234 = 0;
-			var t304 = 0;
-			var t314 = 0;
-			var t324 = 0;
-			var t334 = 1;
-			mat44.e00 = t009;
-			mat44.e01 = t019;
-			mat44.e02 = t029;
-			mat44.e03 = t034;
-			mat44.e10 = t109;
-			mat44.e11 = t119;
-			mat44.e12 = t129;
-			mat44.e13 = t134;
-			mat44.e20 = t209;
-			mat44.e21 = t219;
-			mat44.e22 = t229;
-			mat44.e23 = t234;
-			mat44.e30 = t304;
-			mat44.e31 = t314;
-			mat44.e32 = t324;
-			mat44.e33 = t334;
-			if(_this13.sizeMat4 == _this13.stackMat4.length) {
-				var newLength18 = _this13.sizeMat4 << 1;
-				var this19 = new Array(newLength18);
-				var newArray18 = this19;
-				var _g29 = 0;
-				var _g119 = _this13.sizeMat4;
-				while(_g29 < _g119) {
-					var i19 = _g29++;
-					newArray18[i19] = _this13.stackMat4[i19];
-					_this13.stackMat4[i19] = null;
-				}
-				_this13.stackMat4 = newArray18;
-			}
-			_this13.stackMat4[_this13.sizeMat4++] = mat44;
-		}
-		if(quat3 != null) {
-			var tx10 = 0;
-			var ty10 = 0;
-			var tz10 = 0;
-			var tw4 = 1;
-			quat3.x = tx10;
-			quat3.y = ty10;
-			quat3.z = tz10;
-			quat3.w = tw4;
-			if(_this13.sizeQuat == _this13.stackQuat.length) {
-				var newLength19 = _this13.sizeQuat << 1;
-				var this20 = new Array(newLength19);
-				var newArray19 = this20;
-				var _g30 = 0;
-				var _g120 = _this13.sizeQuat;
-				while(_g30 < _g120) {
-					var i20 = _g30++;
-					newArray19[i20] = _this13.stackQuat[i20];
-					_this13.stackQuat[i20] = null;
-				}
-				_this13.stackQuat = newArray19;
-			}
-			_this13.stackQuat[_this13.sizeQuat++] = quat3;
-		}
-	}
-	step(timeStep) {
-		if(this._timeStep.dt > 0) {
-			this._timeStep.dtRatio = timeStep / this._timeStep.dt;
-		}
-		this._timeStep.dt = timeStep;
-		this._timeStep.invDt = 1 / timeStep;
-		var st = Date.now() / 1000;
-		this._updateContacts();
-		this._solveIslands();
-		var en = Date.now() / 1000;
-		oimo.dynamics.common.Performance.totalTime = (en - st) * 1000;
-	}
-	addRigidBody(rigidBody) {
-		if(rigidBody._world != null) {
-			throw new Error("A rigid body cannot belong to multiple worlds.");
-		}
-		if(this._rigidBodyList == null) {
-			this._rigidBodyList = rigidBody;
-			this._rigidBodyListLast = rigidBody;
-		} else {
-			this._rigidBodyListLast._next = rigidBody;
-			rigidBody._prev = this._rigidBodyListLast;
-			this._rigidBodyListLast = rigidBody;
-		}
-		rigidBody._world = this;
-		var s = rigidBody._shapeList;
-		while(s != null) {
-			var n = s._next;
-			s._proxy = this._broadPhase.createProxy(s,s._aabb);
-			s._id = this._shapeIdCount++;
-			this._numShapes++;
-			s = n;
-		}
-		this._numRigidBodies++;
-	}
-	removeRigidBody(rigidBody) {
-		if(rigidBody._world != this) {
-			throw new Error("The rigid body doesn't belong to the world.");
-		}
-		var prev = rigidBody._prev;
-		var next = rigidBody._next;
-		if(prev != null) {
-			prev._next = next;
-		}
-		if(next != null) {
-			next._prev = prev;
-		}
-		if(rigidBody == this._rigidBodyList) {
-			this._rigidBodyList = this._rigidBodyList._next;
-		}
-		if(rigidBody == this._rigidBodyListLast) {
-			this._rigidBodyListLast = this._rigidBodyListLast._prev;
-		}
-		rigidBody._next = null;
-		rigidBody._prev = null;
-		rigidBody._world = null;
-		var s = rigidBody._shapeList;
-		while(s != null) {
-			var n = s._next;
-			this._broadPhase.destroyProxy(s._proxy);
-			s._proxy = null;
-			s._id = -1;
-			var cl = s._rigidBody._contactLinkList;
-			while(cl != null) {
-				var n1 = cl._next;
-				var c = cl._contact;
-				if(c._s1 == s || c._s2 == s) {
-					var _this = cl._other;
-					_this._sleeping = false;
-					_this._sleepTime = 0;
-					var _this1 = this._contactManager;
-					var prev1 = c._prev;
-					var next1 = c._next;
-					if(prev1 != null) {
-						prev1._next = next1;
-					}
-					if(next1 != null) {
-						next1._prev = prev1;
-					}
-					if(c == _this1._contactList) {
-						_this1._contactList = _this1._contactList._next;
-					}
-					if(c == _this1._contactListLast) {
-						_this1._contactListLast = _this1._contactListLast._prev;
-					}
-					c._next = null;
-					c._prev = null;
-					if(c._touching) {
-						var cc1 = c._s1._contactCallback;
-						var cc2 = c._s2._contactCallback;
-						if(cc1 == cc2) {
-							cc2 = null;
-						}
-						if(cc1 != null) {
-							cc1.endContact(c);
-						}
-						if(cc2 != null) {
-							cc2.endContact(c);
-						}
-					}
-					var prev2 = c._link1._prev;
-					var next2 = c._link1._next;
-					if(prev2 != null) {
-						prev2._next = next2;
-					}
-					if(next2 != null) {
-						next2._prev = prev2;
-					}
-					if(c._link1 == c._b1._contactLinkList) {
-						c._b1._contactLinkList = c._b1._contactLinkList._next;
-					}
-					if(c._link1 == c._b1._contactLinkListLast) {
-						c._b1._contactLinkListLast = c._b1._contactLinkListLast._prev;
-					}
-					c._link1._next = null;
-					c._link1._prev = null;
-					var prev3 = c._link2._prev;
-					var next3 = c._link2._next;
-					if(prev3 != null) {
-						prev3._next = next3;
-					}
-					if(next3 != null) {
-						next3._prev = prev3;
-					}
-					if(c._link2 == c._b2._contactLinkList) {
-						c._b2._contactLinkList = c._b2._contactLinkList._next;
-					}
-					if(c._link2 == c._b2._contactLinkListLast) {
-						c._b2._contactLinkListLast = c._b2._contactLinkListLast._prev;
-					}
-					c._link2._next = null;
-					c._link2._prev = null;
-					c._b1._numContactLinks--;
-					c._b2._numContactLinks--;
-					c._link1._other = null;
-					c._link2._other = null;
-					c._link1._contact = null;
-					c._link2._contact = null;
-					c._s1 = null;
-					c._s2 = null;
-					c._b1 = null;
-					c._b2 = null;
-					c._touching = false;
-					c._cachedDetectorData._clear();
-					c._manifold._clear();
-					c._detector = null;
-					var _this2 = c._contactConstraint;
-					_this2._s1 = null;
-					_this2._s2 = null;
-					_this2._b1 = null;
-					_this2._b2 = null;
-					_this2._tf1 = null;
-					_this2._tf2 = null;
-					c._next = _this1._contactPool;
-					_this1._contactPool = c;
-					_this1._numContacts--;
-				}
-				cl = n1;
-			}
-			this._numShapes--;
-			s = n;
-		}
-		this._numRigidBodies--;
-	}
-	addJoint(joint) {
-		if(joint._world != null) {
-			throw new Error("A joint cannot belong to multiple worlds.");
-		}
-		if(this._jointList == null) {
-			this._jointList = joint;
-			this._jointListLast = joint;
-		} else {
-			this._jointListLast._next = joint;
-			joint._prev = this._jointListLast;
-			this._jointListLast = joint;
-		}
-		joint._world = this;
-		joint._link1._other = joint._b2;
-		joint._link2._other = joint._b1;
-		if(joint._b1._jointLinkList == null) {
-			joint._b1._jointLinkList = joint._link1;
-			joint._b1._jointLinkListLast = joint._link1;
-		} else {
-			joint._b1._jointLinkListLast._next = joint._link1;
-			joint._link1._prev = joint._b1._jointLinkListLast;
-			joint._b1._jointLinkListLast = joint._link1;
-		}
-		if(joint._b2._jointLinkList == null) {
-			joint._b2._jointLinkList = joint._link2;
-			joint._b2._jointLinkListLast = joint._link2;
-		} else {
-			joint._b2._jointLinkListLast._next = joint._link2;
-			joint._link2._prev = joint._b2._jointLinkListLast;
-			joint._b2._jointLinkListLast = joint._link2;
-		}
-		joint._b1._numJointLinks++;
-		joint._b2._numJointLinks++;
-		var _this = joint._b1;
-		_this._sleeping = false;
-		_this._sleepTime = 0;
-		var _this1 = joint._b2;
-		_this1._sleeping = false;
-		_this1._sleepTime = 0;
-		joint._syncAnchors();
-		this._numJoints++;
-	}
-	removeJoint(joint) {
-		if(joint._world != this) {
-			throw new Error("The joint doesn't belong to the world.");
-		}
-		var prev = joint._prev;
-		var next = joint._next;
-		if(prev != null) {
-			prev._next = next;
-		}
-		if(next != null) {
-			next._prev = prev;
-		}
-		if(joint == this._jointList) {
-			this._jointList = this._jointList._next;
-		}
-		if(joint == this._jointListLast) {
-			this._jointListLast = this._jointListLast._prev;
-		}
-		joint._next = null;
-		joint._prev = null;
-		joint._world = null;
-		var prev1 = joint._link1._prev;
-		var next1 = joint._link1._next;
-		if(prev1 != null) {
-			prev1._next = next1;
-		}
-		if(next1 != null) {
-			next1._prev = prev1;
-		}
-		if(joint._link1 == joint._b1._jointLinkList) {
-			joint._b1._jointLinkList = joint._b1._jointLinkList._next;
-		}
-		if(joint._link1 == joint._b1._jointLinkListLast) {
-			joint._b1._jointLinkListLast = joint._b1._jointLinkListLast._prev;
-		}
-		joint._link1._next = null;
-		joint._link1._prev = null;
-		var prev2 = joint._link2._prev;
-		var next2 = joint._link2._next;
-		if(prev2 != null) {
-			prev2._next = next2;
-		}
-		if(next2 != null) {
-			next2._prev = prev2;
-		}
-		if(joint._link2 == joint._b2._jointLinkList) {
-			joint._b2._jointLinkList = joint._b2._jointLinkList._next;
-		}
-		if(joint._link2 == joint._b2._jointLinkListLast) {
-			joint._b2._jointLinkListLast = joint._b2._jointLinkListLast._prev;
-		}
-		joint._link2._next = null;
-		joint._link2._prev = null;
-		joint._link1._other = null;
-		joint._link2._other = null;
-		joint._b1._numJointLinks--;
-		joint._b2._numJointLinks--;
-		var _this = joint._b1;
-		_this._sleeping = false;
-		_this._sleepTime = 0;
-		var _this1 = joint._b2;
-		_this1._sleeping = false;
-		_this1._sleepTime = 0;
-		this._numJoints--;
-	}
-	setDebugDraw(debugDraw) {
-		this._debugDraw = debugDraw;
-	}
-	getDebugDraw() {
-		return this._debugDraw;
-	}
-	debugDraw() {
-		if(this._debugDraw != null) {
-			if(this._broadPhase._type == 2) {
-				var bvhBroadPhase = this._broadPhase;
-				this._drawBvh(this._debugDraw,bvhBroadPhase._tree);
-			}
-			this._drawRigidBodies(this._debugDraw);
-			this._drawConstraints(this._debugDraw);
-		}
-	}
-	rayCast(begin,end,callback) {
-		var _this = this._rayCastWrapper.begin;
-		_this.x = begin.x;
-		_this.y = begin.y;
-		_this.z = begin.z;
-		var _this1 = this._rayCastWrapper.end;
-		_this1.x = end.x;
-		_this1.y = end.y;
-		_this1.z = end.z;
-		this._rayCastWrapper.callback = callback;
-		this._broadPhase.rayCast(begin,end,this._rayCastWrapper);
-	}
-	convexCast(convex,begin,translation,callback) {
-		this._convexCastWrapper.convex = convex;
-		var _this = this._convexCastWrapper.begin;
-		_this._positionX = begin._positionX;
-		_this._positionY = begin._positionY;
-		_this._positionZ = begin._positionZ;
-		_this._rotation00 = begin._rotation00;
-		_this._rotation01 = begin._rotation01;
-		_this._rotation02 = begin._rotation02;
-		_this._rotation10 = begin._rotation10;
-		_this._rotation11 = begin._rotation11;
-		_this._rotation12 = begin._rotation12;
-		_this._rotation20 = begin._rotation20;
-		_this._rotation21 = begin._rotation21;
-		_this._rotation22 = begin._rotation22;
-		var _this1 = this._convexCastWrapper.translation;
-		_this1.x = translation.x;
-		_this1.y = translation.y;
-		_this1.z = translation.z;
-		this._convexCastWrapper.callback = callback;
-		this._broadPhase.convexCast(convex,begin,translation,this._convexCastWrapper);
-	}
-	aabbTest(aabb,callback) {
-		this._aabbTestWrapper._aabb.copyFrom(aabb);
-		this._aabbTestWrapper._callback = callback;
-		this._broadPhase.aabbTest(aabb,this._aabbTestWrapper);
-	}
-	getRigidBodyList() {
-		return this._rigidBodyList;
-	}
-	getJointList() {
-		return this._jointList;
-	}
-	getBroadPhase() {
-		return this._broadPhase;
-	}
-	getContactManager() {
-		return this._contactManager;
-	}
-	getNumRigidBodies() {
-		return this._numRigidBodies;
-	}
-	getNumJoints() {
-		return this._numJoints;
-	}
-	getNumShapes() {
-		return this._numShapes;
-	}
-	getNumIslands() {
-		return this._numIslands;
-	}
-	getNumVelocityIterations() {
-		return this._numVelocityIterations;
-	}
-	setNumVelocityIterations(numVelocityIterations) {
-		this._numVelocityIterations = numVelocityIterations;
-	}
-	getNumPositionIterations() {
-		return this._numPositionIterations;
-	}
-	setNumPositionIterations(numPositionIterations) {
-		this._numPositionIterations = numPositionIterations;
-	}
-	getGravity() {
-		return this._gravity;
-	}
-	setGravity(gravity) {
-		var _this = this._gravity;
-		_this.x = gravity.x;
-		_this.y = gravity.y;
-		_this.z = gravity.z;
-	}
-}
-if(!oimo.dynamics._World) oimo.dynamics._World = {};
-oimo.dynamics._World.RayCastWrapper = class oimo_dynamics__$World_RayCastWrapper extends oimo.collision.broadphase.BroadPhaseProxyCallback {
-	constructor() {
-		super();
-		this.rayCastHit = new oimo.collision.geometry.RayCastHit();
-		this.begin = new oimo.common.Vec3();
-		this.end = new oimo.common.Vec3();
-		this.callback = null;
-	}
-	process(proxy) {
-		var shape = proxy.userData;
-		if(shape._geom.rayCast(this.begin,this.end,shape._transform,this.rayCastHit)) {
-			this.callback.process(shape,this.rayCastHit);
-		}
-	}
-}
-oimo.dynamics._World.ConvexCastWrapper = class oimo_dynamics__$World_ConvexCastWrapper extends oimo.collision.broadphase.BroadPhaseProxyCallback {
-	constructor() {
-		super();
-		this.rayCastHit = new oimo.collision.geometry.RayCastHit();
-		this.begin = new oimo.common.Transform();
-		this.translation = new oimo.common.Vec3();
-		this.zero = new oimo.common.Vec3();
-		this.callback = null;
-		this.convex = null;
-	}
-	process(proxy) {
-		var shape = proxy.userData;
-		var type = shape._geom._type;
-		if(type < 0 || type > 5) {
-			return;
-		}
-		var geom = shape._geom;
-		if(oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance.convexCast(this.convex,geom,this.begin,shape._transform,this.translation,this.zero,this.rayCastHit)) {
-			this.callback.process(shape,this.rayCastHit);
-		}
-	}
-}
-oimo.dynamics._World.AabbTestWrapper = class oimo_dynamics__$World_AabbTestWrapper extends oimo.collision.broadphase.BroadPhaseProxyCallback {
-	constructor() {
-		super();
-		this._aabb = new oimo.collision.geometry.Aabb();
-		this._callback = null;
-	}
-	process(proxy) {
-		var shape = proxy.userData;
-		var shapeAabb = shape._aabb;
-		if(shapeAabb._minX < this._aabb._maxX && shapeAabb._maxX > this._aabb._minX && shapeAabb._minY < this._aabb._maxY && shapeAabb._maxY > this._aabb._minY && shapeAabb._minZ < this._aabb._maxZ && shapeAabb._maxZ > this._aabb._minZ) {
-			this._callback.process(shape);
-		}
-	}
-}
-if(!oimo.dynamics.callback) oimo.dynamics.callback = {};
-oimo.dynamics.callback.AabbTestCallback = class oimo_dynamics_callback_AabbTestCallback {
-	constructor() {
-	}
-	process(shape) {
-	}
-}
-oimo.dynamics.callback.ContactCallback = class oimo_dynamics_callback_ContactCallback {
-	constructor() {
-	}
-	beginContact(c) {
-	}
-	preSolve(c) {
-	}
-	postSolve(c) {
-	}
-	endContact(c) {
-	}
-}
-oimo.dynamics.callback.RayCastCallback = class oimo_dynamics_callback_RayCastCallback {
-	constructor() {
-	}
-	process(shape,hit) {
-	}
-}
-oimo.dynamics.callback.RayCastClosest = class oimo_dynamics_callback_RayCastClosest extends oimo.dynamics.callback.RayCastCallback {
-	constructor() {
-		super();
-		this.position = new oimo.common.Vec3();
-		this.normal = new oimo.common.Vec3();
-		this.shape = null;
-		this.fraction = 1;
-		this.position.zero();
-		this.normal.zero();
-		this.hit = false;
-	}
-	clear() {
-		this.shape = null;
-		this.fraction = 1;
-		this.position.zero();
-		this.normal.zero();
-		this.hit = false;
-	}
-	process(shape,hit) {
-		if(hit.fraction < this.fraction) {
-			this.shape = shape;
-			this.hit = true;
-			this.fraction = hit.fraction;
-			var _this = this.position;
-			var v = hit.position;
-			_this.x = v.x;
-			_this.y = v.y;
-			_this.z = v.z;
-			var _this1 = this.normal;
-			var v1 = hit.normal;
-			_this1.x = v1.x;
-			_this1.y = v1.y;
-			_this1.z = v1.z;
-		}
-	}
-}
-if(!oimo.dynamics.common) oimo.dynamics.common = {};
-oimo.dynamics.common.DebugDraw = class oimo_dynamics_common_DebugDraw {
-	constructor() {
-		this.p = new oimo.common.Pool();
-		this.wireframe = false;
-		this.drawShapes = true;
-		this.drawBvh = false;
-		this.drawBvhMinLevel = 0;
-		this.drawBvhMaxLevel = 65536;
-		this.drawAabbs = false;
-		this.drawBases = false;
-		this.drawPairs = false;
-		this.drawContacts = false;
-		this.drawJoints = true;
-		this.drawJointLimits = false;
-		var nt = 4;
-		var dt = 3.14159265358979 / nt;
-		var np = 8;
-		var dp = 6.28318530717958 / np;
-		var this1 = new Array(nt + 1);
-		this.sphereCoords = this1;
-		var this2 = new Array(nt + 1);
-		this.tmpSphereVerts = this2;
-		var this3 = new Array(nt + 1);
-		this.tmpSphereNorms = this3;
-		var _g = 0;
-		var _g1 = nt + 1;
-		while(_g < _g1) {
-			var i = _g++;
-			var num = i == 0 || i == nt ? 1 : np;
-			var this4 = this.sphereCoords;
-			var this5 = new Array(num);
-			this4[i] = this5;
-			var this6 = this.tmpSphereVerts;
-			var this7 = new Array(num);
-			this6[i] = this7;
-			var this8 = this.tmpSphereNorms;
-			var this9 = new Array(num);
-			this8[i] = this9;
-			var _g2 = 0;
-			var _g11 = np;
-			while(_g2 < _g11) {
-				var j = _g2++;
-				var theta = i * dt;
-				var phi = j * dp;
-				this.sphereCoords[i][j] = new oimo.common.Vec3(Math.sin(theta) * Math.cos(phi),Math.cos(theta),-Math.sin(theta) * Math.sin(phi));
-				this.tmpSphereVerts[i][j] = new oimo.common.Vec3();
-				this.tmpSphereNorms[i][j] = new oimo.common.Vec3();
-			}
-		}
-		var this10 = new Array(8);
-		this.circleCoords = this10;
-		var this11 = new Array(8);
-		this.circleCoordsShift = this11;
-		var this12 = new Array(8);
-		this.tmpCircleVerts1 = this12;
-		var this13 = new Array(8);
-		this.tmpCircleVerts2 = this13;
-		var this14 = new Array(8);
-		this.tmpCircleNorms = this14;
-		var td = 0.785398163397447502;
-		var _g3 = 0;
-		while(_g3 < 8) {
-			var i1 = _g3++;
-			this.circleCoords[i1] = new oimo.common.Vec3(Math.cos(i1 * td),0,-Math.sin(i1 * td));
-			this.circleCoordsShift[i1] = new oimo.common.Vec3(Math.cos((i1 + 0.5) * td),0,-Math.sin((i1 + 0.5) * td));
-			this.tmpCircleVerts1[i1] = new oimo.common.Vec3();
-			this.tmpCircleVerts2[i1] = new oimo.common.Vec3();
-			this.tmpCircleNorms[i1] = new oimo.common.Vec3();
-		}
-		this.style = new oimo.dynamics.common.DebugDrawStyle();
-	}
-	aabb(min,max,color) {
-		var _this = this.p;
-		var v1 = (_this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3]).init(min.x,min.y,min.z);
-		var _this1 = this.p;
-		var v2 = (_this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3]).init(min.x,min.y,max.z);
-		var _this2 = this.p;
-		var v3 = (_this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3]).init(min.x,max.y,min.z);
-		var _this3 = this.p;
-		var v4 = (_this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3]).init(min.x,max.y,max.z);
-		var _this4 = this.p;
-		var v5 = (_this4.sizeVec3 == 0 ? new oimo.common.Vec3() : _this4.stackVec3[--_this4.sizeVec3]).init(max.x,min.y,min.z);
-		var _this5 = this.p;
-		var v6 = (_this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3]).init(max.x,min.y,max.z);
-		var _this6 = this.p;
-		var v7 = (_this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3]).init(max.x,max.y,min.z);
-		var _this7 = this.p;
-		var v8 = (_this7.sizeVec3 == 0 ? new oimo.common.Vec3() : _this7.stackVec3[--_this7.sizeVec3]).init(max.x,max.y,max.z);
-		this.line(v1,v2,color);
-		this.line(v3,v4,color);
-		this.line(v5,v6,color);
-		this.line(v7,v8,color);
-		this.line(v1,v3,color);
-		this.line(v2,v4,color);
-		this.line(v5,v7,color);
-		this.line(v6,v8,color);
-		this.line(v1,v5,color);
-		this.line(v2,v6,color);
-		this.line(v3,v7,color);
-		this.line(v4,v8,color);
-		var _this8 = this.p;
-		var mat3 = null;
-		var mat4 = null;
-		var quat = null;
-		if(v1 != null) {
-			v1.zero();
-			if(_this8.sizeVec3 == _this8.stackVec3.length) {
-				var newLength = _this8.sizeVec3 << 1;
-				var this1 = new Array(newLength);
-				var newArray = this1;
-				var _g = 0;
-				var _g1 = _this8.sizeVec3;
-				while(_g < _g1) {
-					var i = _g++;
-					newArray[i] = _this8.stackVec3[i];
-					_this8.stackVec3[i] = null;
-				}
-				_this8.stackVec3 = newArray;
-			}
-			_this8.stackVec3[_this8.sizeVec3++] = v1;
-		}
-		if(mat3 != null) {
-			var t00 = 1;
-			var t01 = 0;
-			var t02 = 0;
-			var t10 = 0;
-			var t11 = 1;
-			var t12 = 0;
-			var t20 = 0;
-			var t21 = 0;
-			var t22 = 1;
-			mat3.e00 = t00;
-			mat3.e01 = t01;
-			mat3.e02 = t02;
-			mat3.e10 = t10;
-			mat3.e11 = t11;
-			mat3.e12 = t12;
-			mat3.e20 = t20;
-			mat3.e21 = t21;
-			mat3.e22 = t22;
-			if(_this8.sizeMat3 == _this8.stackMat3.length) {
-				var newLength1 = _this8.sizeMat3 << 1;
-				var this2 = new Array(newLength1);
-				var newArray1 = this2;
-				var _g2 = 0;
-				var _g11 = _this8.sizeMat3;
-				while(_g2 < _g11) {
-					var i1 = _g2++;
-					newArray1[i1] = _this8.stackMat3[i1];
-					_this8.stackMat3[i1] = null;
-				}
-				_this8.stackMat3 = newArray1;
-			}
-			_this8.stackMat3[_this8.sizeMat3++] = mat3;
-		}
-		if(mat4 != null) {
-			var t001 = 1;
-			var t011 = 0;
-			var t021 = 0;
-			var t03 = 0;
-			var t101 = 0;
-			var t111 = 1;
-			var t121 = 0;
-			var t13 = 0;
-			var t201 = 0;
-			var t211 = 0;
-			var t221 = 1;
-			var t23 = 0;
-			var t30 = 0;
-			var t31 = 0;
-			var t32 = 0;
-			var t33 = 1;
-			mat4.e00 = t001;
-			mat4.e01 = t011;
-			mat4.e02 = t021;
-			mat4.e03 = t03;
-			mat4.e10 = t101;
-			mat4.e11 = t111;
-			mat4.e12 = t121;
-			mat4.e13 = t13;
-			mat4.e20 = t201;
-			mat4.e21 = t211;
-			mat4.e22 = t221;
-			mat4.e23 = t23;
-			mat4.e30 = t30;
-			mat4.e31 = t31;
-			mat4.e32 = t32;
-			mat4.e33 = t33;
-			if(_this8.sizeMat4 == _this8.stackMat4.length) {
-				var newLength2 = _this8.sizeMat4 << 1;
-				var this3 = new Array(newLength2);
-				var newArray2 = this3;
-				var _g3 = 0;
-				var _g12 = _this8.sizeMat4;
-				while(_g3 < _g12) {
-					var i2 = _g3++;
-					newArray2[i2] = _this8.stackMat4[i2];
-					_this8.stackMat4[i2] = null;
-				}
-				_this8.stackMat4 = newArray2;
-			}
-			_this8.stackMat4[_this8.sizeMat4++] = mat4;
-		}
-		if(quat != null) {
-			var tx = 0;
-			var ty = 0;
-			var tz = 0;
-			var tw = 1;
-			quat.x = tx;
-			quat.y = ty;
-			quat.z = tz;
-			quat.w = tw;
-			if(_this8.sizeQuat == _this8.stackQuat.length) {
-				var newLength3 = _this8.sizeQuat << 1;
-				var this4 = new Array(newLength3);
-				var newArray3 = this4;
-				var _g4 = 0;
-				var _g13 = _this8.sizeQuat;
-				while(_g4 < _g13) {
-					var i3 = _g4++;
-					newArray3[i3] = _this8.stackQuat[i3];
-					_this8.stackQuat[i3] = null;
-				}
-				_this8.stackQuat = newArray3;
-			}
-			_this8.stackQuat[_this8.sizeQuat++] = quat;
-		}
-		var _this9 = this.p;
-		var mat31 = null;
-		var mat41 = null;
-		var quat1 = null;
-		if(v2 != null) {
-			v2.zero();
-			if(_this9.sizeVec3 == _this9.stackVec3.length) {
-				var newLength4 = _this9.sizeVec3 << 1;
-				var this5 = new Array(newLength4);
-				var newArray4 = this5;
-				var _g5 = 0;
-				var _g14 = _this9.sizeVec3;
-				while(_g5 < _g14) {
-					var i4 = _g5++;
-					newArray4[i4] = _this9.stackVec3[i4];
-					_this9.stackVec3[i4] = null;
-				}
-				_this9.stackVec3 = newArray4;
-			}
-			_this9.stackVec3[_this9.sizeVec3++] = v2;
-		}
-		if(mat31 != null) {
-			var t002 = 1;
-			var t012 = 0;
-			var t022 = 0;
-			var t102 = 0;
-			var t112 = 1;
-			var t122 = 0;
-			var t202 = 0;
-			var t212 = 0;
-			var t222 = 1;
-			mat31.e00 = t002;
-			mat31.e01 = t012;
-			mat31.e02 = t022;
-			mat31.e10 = t102;
-			mat31.e11 = t112;
-			mat31.e12 = t122;
-			mat31.e20 = t202;
-			mat31.e21 = t212;
-			mat31.e22 = t222;
-			if(_this9.sizeMat3 == _this9.stackMat3.length) {
-				var newLength5 = _this9.sizeMat3 << 1;
-				var this6 = new Array(newLength5);
-				var newArray5 = this6;
-				var _g6 = 0;
-				var _g15 = _this9.sizeMat3;
-				while(_g6 < _g15) {
-					var i5 = _g6++;
-					newArray5[i5] = _this9.stackMat3[i5];
-					_this9.stackMat3[i5] = null;
-				}
-				_this9.stackMat3 = newArray5;
-			}
-			_this9.stackMat3[_this9.sizeMat3++] = mat31;
-		}
-		if(mat41 != null) {
-			var t003 = 1;
-			var t013 = 0;
-			var t023 = 0;
-			var t031 = 0;
-			var t103 = 0;
-			var t113 = 1;
-			var t123 = 0;
-			var t131 = 0;
-			var t203 = 0;
-			var t213 = 0;
-			var t223 = 1;
-			var t231 = 0;
-			var t301 = 0;
-			var t311 = 0;
-			var t321 = 0;
-			var t331 = 1;
-			mat41.e00 = t003;
-			mat41.e01 = t013;
-			mat41.e02 = t023;
-			mat41.e03 = t031;
-			mat41.e10 = t103;
-			mat41.e11 = t113;
-			mat41.e12 = t123;
-			mat41.e13 = t131;
-			mat41.e20 = t203;
-			mat41.e21 = t213;
-			mat41.e22 = t223;
-			mat41.e23 = t231;
-			mat41.e30 = t301;
-			mat41.e31 = t311;
-			mat41.e32 = t321;
-			mat41.e33 = t331;
-			if(_this9.sizeMat4 == _this9.stackMat4.length) {
-				var newLength6 = _this9.sizeMat4 << 1;
-				var this7 = new Array(newLength6);
-				var newArray6 = this7;
-				var _g7 = 0;
-				var _g16 = _this9.sizeMat4;
-				while(_g7 < _g16) {
-					var i6 = _g7++;
-					newArray6[i6] = _this9.stackMat4[i6];
-					_this9.stackMat4[i6] = null;
-				}
-				_this9.stackMat4 = newArray6;
-			}
-			_this9.stackMat4[_this9.sizeMat4++] = mat41;
-		}
-		if(quat1 != null) {
-			var tx1 = 0;
-			var ty1 = 0;
-			var tz1 = 0;
-			var tw1 = 1;
-			quat1.x = tx1;
-			quat1.y = ty1;
-			quat1.z = tz1;
-			quat1.w = tw1;
-			if(_this9.sizeQuat == _this9.stackQuat.length) {
-				var newLength7 = _this9.sizeQuat << 1;
-				var this8 = new Array(newLength7);
-				var newArray7 = this8;
-				var _g8 = 0;
-				var _g17 = _this9.sizeQuat;
-				while(_g8 < _g17) {
-					var i7 = _g8++;
-					newArray7[i7] = _this9.stackQuat[i7];
-					_this9.stackQuat[i7] = null;
-				}
-				_this9.stackQuat = newArray7;
-			}
-			_this9.stackQuat[_this9.sizeQuat++] = quat1;
-		}
-		var _this10 = this.p;
-		var mat32 = null;
-		var mat42 = null;
-		var quat2 = null;
-		if(v3 != null) {
-			v3.zero();
-			if(_this10.sizeVec3 == _this10.stackVec3.length) {
-				var newLength8 = _this10.sizeVec3 << 1;
-				var this9 = new Array(newLength8);
-				var newArray8 = this9;
-				var _g9 = 0;
-				var _g18 = _this10.sizeVec3;
-				while(_g9 < _g18) {
-					var i8 = _g9++;
-					newArray8[i8] = _this10.stackVec3[i8];
-					_this10.stackVec3[i8] = null;
-				}
-				_this10.stackVec3 = newArray8;
-			}
-			_this10.stackVec3[_this10.sizeVec3++] = v3;
-		}
-		if(mat32 != null) {
-			var t004 = 1;
-			var t014 = 0;
-			var t024 = 0;
-			var t104 = 0;
-			var t114 = 1;
-			var t124 = 0;
-			var t204 = 0;
-			var t214 = 0;
-			var t224 = 1;
-			mat32.e00 = t004;
-			mat32.e01 = t014;
-			mat32.e02 = t024;
-			mat32.e10 = t104;
-			mat32.e11 = t114;
-			mat32.e12 = t124;
-			mat32.e20 = t204;
-			mat32.e21 = t214;
-			mat32.e22 = t224;
-			if(_this10.sizeMat3 == _this10.stackMat3.length) {
-				var newLength9 = _this10.sizeMat3 << 1;
-				var this10 = new Array(newLength9);
-				var newArray9 = this10;
-				var _g10 = 0;
-				var _g19 = _this10.sizeMat3;
-				while(_g10 < _g19) {
-					var i9 = _g10++;
-					newArray9[i9] = _this10.stackMat3[i9];
-					_this10.stackMat3[i9] = null;
-				}
-				_this10.stackMat3 = newArray9;
-			}
-			_this10.stackMat3[_this10.sizeMat3++] = mat32;
-		}
-		if(mat42 != null) {
-			var t005 = 1;
-			var t015 = 0;
-			var t025 = 0;
-			var t032 = 0;
-			var t105 = 0;
-			var t115 = 1;
-			var t125 = 0;
-			var t132 = 0;
-			var t205 = 0;
-			var t215 = 0;
-			var t225 = 1;
-			var t232 = 0;
-			var t302 = 0;
-			var t312 = 0;
-			var t322 = 0;
-			var t332 = 1;
-			mat42.e00 = t005;
-			mat42.e01 = t015;
-			mat42.e02 = t025;
-			mat42.e03 = t032;
-			mat42.e10 = t105;
-			mat42.e11 = t115;
-			mat42.e12 = t125;
-			mat42.e13 = t132;
-			mat42.e20 = t205;
-			mat42.e21 = t215;
-			mat42.e22 = t225;
-			mat42.e23 = t232;
-			mat42.e30 = t302;
-			mat42.e31 = t312;
-			mat42.e32 = t322;
-			mat42.e33 = t332;
-			if(_this10.sizeMat4 == _this10.stackMat4.length) {
-				var newLength10 = _this10.sizeMat4 << 1;
-				var this11 = new Array(newLength10);
-				var newArray10 = this11;
-				var _g20 = 0;
-				var _g110 = _this10.sizeMat4;
-				while(_g20 < _g110) {
-					var i10 = _g20++;
-					newArray10[i10] = _this10.stackMat4[i10];
-					_this10.stackMat4[i10] = null;
-				}
-				_this10.stackMat4 = newArray10;
-			}
-			_this10.stackMat4[_this10.sizeMat4++] = mat42;
-		}
-		if(quat2 != null) {
-			var tx2 = 0;
-			var ty2 = 0;
-			var tz2 = 0;
-			var tw2 = 1;
-			quat2.x = tx2;
-			quat2.y = ty2;
-			quat2.z = tz2;
-			quat2.w = tw2;
-			if(_this10.sizeQuat == _this10.stackQuat.length) {
-				var newLength11 = _this10.sizeQuat << 1;
-				var this12 = new Array(newLength11);
-				var newArray11 = this12;
-				var _g21 = 0;
-				var _g111 = _this10.sizeQuat;
-				while(_g21 < _g111) {
-					var i11 = _g21++;
-					newArray11[i11] = _this10.stackQuat[i11];
-					_this10.stackQuat[i11] = null;
-				}
-				_this10.stackQuat = newArray11;
-			}
-			_this10.stackQuat[_this10.sizeQuat++] = quat2;
-		}
-		var _this11 = this.p;
-		var mat33 = null;
-		var mat43 = null;
-		var quat3 = null;
-		if(v4 != null) {
-			v4.zero();
-			if(_this11.sizeVec3 == _this11.stackVec3.length) {
-				var newLength12 = _this11.sizeVec3 << 1;
-				var this13 = new Array(newLength12);
-				var newArray12 = this13;
-				var _g22 = 0;
-				var _g112 = _this11.sizeVec3;
-				while(_g22 < _g112) {
-					var i12 = _g22++;
-					newArray12[i12] = _this11.stackVec3[i12];
-					_this11.stackVec3[i12] = null;
-				}
-				_this11.stackVec3 = newArray12;
-			}
-			_this11.stackVec3[_this11.sizeVec3++] = v4;
-		}
-		if(mat33 != null) {
-			var t006 = 1;
-			var t016 = 0;
-			var t026 = 0;
-			var t106 = 0;
-			var t116 = 1;
-			var t126 = 0;
-			var t206 = 0;
-			var t216 = 0;
-			var t226 = 1;
-			mat33.e00 = t006;
-			mat33.e01 = t016;
-			mat33.e02 = t026;
-			mat33.e10 = t106;
-			mat33.e11 = t116;
-			mat33.e12 = t126;
-			mat33.e20 = t206;
-			mat33.e21 = t216;
-			mat33.e22 = t226;
-			if(_this11.sizeMat3 == _this11.stackMat3.length) {
-				var newLength13 = _this11.sizeMat3 << 1;
-				var this14 = new Array(newLength13);
-				var newArray13 = this14;
-				var _g23 = 0;
-				var _g113 = _this11.sizeMat3;
-				while(_g23 < _g113) {
-					var i13 = _g23++;
-					newArray13[i13] = _this11.stackMat3[i13];
-					_this11.stackMat3[i13] = null;
-				}
-				_this11.stackMat3 = newArray13;
-			}
-			_this11.stackMat3[_this11.sizeMat3++] = mat33;
-		}
-		if(mat43 != null) {
-			var t007 = 1;
-			var t017 = 0;
-			var t027 = 0;
-			var t033 = 0;
-			var t107 = 0;
-			var t117 = 1;
-			var t127 = 0;
-			var t133 = 0;
-			var t207 = 0;
-			var t217 = 0;
-			var t227 = 1;
-			var t233 = 0;
-			var t303 = 0;
-			var t313 = 0;
-			var t323 = 0;
-			var t333 = 1;
-			mat43.e00 = t007;
-			mat43.e01 = t017;
-			mat43.e02 = t027;
-			mat43.e03 = t033;
-			mat43.e10 = t107;
-			mat43.e11 = t117;
-			mat43.e12 = t127;
-			mat43.e13 = t133;
-			mat43.e20 = t207;
-			mat43.e21 = t217;
-			mat43.e22 = t227;
-			mat43.e23 = t233;
-			mat43.e30 = t303;
-			mat43.e31 = t313;
-			mat43.e32 = t323;
-			mat43.e33 = t333;
-			if(_this11.sizeMat4 == _this11.stackMat4.length) {
-				var newLength14 = _this11.sizeMat4 << 1;
-				var this15 = new Array(newLength14);
-				var newArray14 = this15;
-				var _g24 = 0;
-				var _g114 = _this11.sizeMat4;
-				while(_g24 < _g114) {
-					var i14 = _g24++;
-					newArray14[i14] = _this11.stackMat4[i14];
-					_this11.stackMat4[i14] = null;
-				}
-				_this11.stackMat4 = newArray14;
-			}
-			_this11.stackMat4[_this11.sizeMat4++] = mat43;
-		}
-		if(quat3 != null) {
-			var tx3 = 0;
-			var ty3 = 0;
-			var tz3 = 0;
-			var tw3 = 1;
-			quat3.x = tx3;
-			quat3.y = ty3;
-			quat3.z = tz3;
-			quat3.w = tw3;
-			if(_this11.sizeQuat == _this11.stackQuat.length) {
-				var newLength15 = _this11.sizeQuat << 1;
-				var this16 = new Array(newLength15);
-				var newArray15 = this16;
-				var _g25 = 0;
-				var _g115 = _this11.sizeQuat;
-				while(_g25 < _g115) {
-					var i15 = _g25++;
-					newArray15[i15] = _this11.stackQuat[i15];
-					_this11.stackQuat[i15] = null;
-				}
-				_this11.stackQuat = newArray15;
-			}
-			_this11.stackQuat[_this11.sizeQuat++] = quat3;
-		}
-		var _this12 = this.p;
-		var mat34 = null;
-		var mat44 = null;
-		var quat4 = null;
-		if(v5 != null) {
-			v5.zero();
-			if(_this12.sizeVec3 == _this12.stackVec3.length) {
-				var newLength16 = _this12.sizeVec3 << 1;
-				var this17 = new Array(newLength16);
-				var newArray16 = this17;
-				var _g26 = 0;
-				var _g116 = _this12.sizeVec3;
-				while(_g26 < _g116) {
-					var i16 = _g26++;
-					newArray16[i16] = _this12.stackVec3[i16];
-					_this12.stackVec3[i16] = null;
-				}
-				_this12.stackVec3 = newArray16;
-			}
-			_this12.stackVec3[_this12.sizeVec3++] = v5;
-		}
-		if(mat34 != null) {
-			var t008 = 1;
-			var t018 = 0;
-			var t028 = 0;
-			var t108 = 0;
-			var t118 = 1;
-			var t128 = 0;
-			var t208 = 0;
-			var t218 = 0;
-			var t228 = 1;
-			mat34.e00 = t008;
-			mat34.e01 = t018;
-			mat34.e02 = t028;
-			mat34.e10 = t108;
-			mat34.e11 = t118;
-			mat34.e12 = t128;
-			mat34.e20 = t208;
-			mat34.e21 = t218;
-			mat34.e22 = t228;
-			if(_this12.sizeMat3 == _this12.stackMat3.length) {
-				var newLength17 = _this12.sizeMat3 << 1;
-				var this18 = new Array(newLength17);
-				var newArray17 = this18;
-				var _g27 = 0;
-				var _g117 = _this12.sizeMat3;
-				while(_g27 < _g117) {
-					var i17 = _g27++;
-					newArray17[i17] = _this12.stackMat3[i17];
-					_this12.stackMat3[i17] = null;
-				}
-				_this12.stackMat3 = newArray17;
-			}
-			_this12.stackMat3[_this12.sizeMat3++] = mat34;
-		}
-		if(mat44 != null) {
-			var t009 = 1;
-			var t019 = 0;
-			var t029 = 0;
-			var t034 = 0;
-			var t109 = 0;
-			var t119 = 1;
-			var t129 = 0;
-			var t134 = 0;
-			var t209 = 0;
-			var t219 = 0;
-			var t229 = 1;
-			var t234 = 0;
-			var t304 = 0;
-			var t314 = 0;
-			var t324 = 0;
-			var t334 = 1;
-			mat44.e00 = t009;
-			mat44.e01 = t019;
-			mat44.e02 = t029;
-			mat44.e03 = t034;
-			mat44.e10 = t109;
-			mat44.e11 = t119;
-			mat44.e12 = t129;
-			mat44.e13 = t134;
-			mat44.e20 = t209;
-			mat44.e21 = t219;
-			mat44.e22 = t229;
-			mat44.e23 = t234;
-			mat44.e30 = t304;
-			mat44.e31 = t314;
-			mat44.e32 = t324;
-			mat44.e33 = t334;
-			if(_this12.sizeMat4 == _this12.stackMat4.length) {
-				var newLength18 = _this12.sizeMat4 << 1;
-				var this19 = new Array(newLength18);
-				var newArray18 = this19;
-				var _g28 = 0;
-				var _g118 = _this12.sizeMat4;
-				while(_g28 < _g118) {
-					var i18 = _g28++;
-					newArray18[i18] = _this12.stackMat4[i18];
-					_this12.stackMat4[i18] = null;
-				}
-				_this12.stackMat4 = newArray18;
-			}
-			_this12.stackMat4[_this12.sizeMat4++] = mat44;
-		}
-		if(quat4 != null) {
-			var tx4 = 0;
-			var ty4 = 0;
-			var tz4 = 0;
-			var tw4 = 1;
-			quat4.x = tx4;
-			quat4.y = ty4;
-			quat4.z = tz4;
-			quat4.w = tw4;
-			if(_this12.sizeQuat == _this12.stackQuat.length) {
-				var newLength19 = _this12.sizeQuat << 1;
-				var this20 = new Array(newLength19);
-				var newArray19 = this20;
-				var _g29 = 0;
-				var _g119 = _this12.sizeQuat;
-				while(_g29 < _g119) {
-					var i19 = _g29++;
-					newArray19[i19] = _this12.stackQuat[i19];
-					_this12.stackQuat[i19] = null;
-				}
-				_this12.stackQuat = newArray19;
-			}
-			_this12.stackQuat[_this12.sizeQuat++] = quat4;
-		}
-		var _this13 = this.p;
-		var mat35 = null;
-		var mat45 = null;
-		var quat5 = null;
-		if(v6 != null) {
-			v6.zero();
-			if(_this13.sizeVec3 == _this13.stackVec3.length) {
-				var newLength20 = _this13.sizeVec3 << 1;
-				var this21 = new Array(newLength20);
-				var newArray20 = this21;
-				var _g30 = 0;
-				var _g120 = _this13.sizeVec3;
-				while(_g30 < _g120) {
-					var i20 = _g30++;
-					newArray20[i20] = _this13.stackVec3[i20];
-					_this13.stackVec3[i20] = null;
-				}
-				_this13.stackVec3 = newArray20;
-			}
-			_this13.stackVec3[_this13.sizeVec3++] = v6;
-		}
-		if(mat35 != null) {
-			var t0010 = 1;
-			var t0110 = 0;
-			var t0210 = 0;
-			var t1010 = 0;
-			var t1110 = 1;
-			var t1210 = 0;
-			var t2010 = 0;
-			var t2110 = 0;
-			var t2210 = 1;
-			mat35.e00 = t0010;
-			mat35.e01 = t0110;
-			mat35.e02 = t0210;
-			mat35.e10 = t1010;
-			mat35.e11 = t1110;
-			mat35.e12 = t1210;
-			mat35.e20 = t2010;
-			mat35.e21 = t2110;
-			mat35.e22 = t2210;
-			if(_this13.sizeMat3 == _this13.stackMat3.length) {
-				var newLength21 = _this13.sizeMat3 << 1;
-				var this22 = new Array(newLength21);
-				var newArray21 = this22;
-				var _g31 = 0;
-				var _g121 = _this13.sizeMat3;
-				while(_g31 < _g121) {
-					var i21 = _g31++;
-					newArray21[i21] = _this13.stackMat3[i21];
-					_this13.stackMat3[i21] = null;
-				}
-				_this13.stackMat3 = newArray21;
-			}
-			_this13.stackMat3[_this13.sizeMat3++] = mat35;
-		}
-		if(mat45 != null) {
-			var t0011 = 1;
-			var t0111 = 0;
-			var t0211 = 0;
-			var t035 = 0;
-			var t1011 = 0;
-			var t1111 = 1;
-			var t1211 = 0;
-			var t135 = 0;
-			var t2011 = 0;
-			var t2111 = 0;
-			var t2211 = 1;
-			var t235 = 0;
-			var t305 = 0;
-			var t315 = 0;
-			var t325 = 0;
-			var t335 = 1;
-			mat45.e00 = t0011;
-			mat45.e01 = t0111;
-			mat45.e02 = t0211;
-			mat45.e03 = t035;
-			mat45.e10 = t1011;
-			mat45.e11 = t1111;
-			mat45.e12 = t1211;
-			mat45.e13 = t135;
-			mat45.e20 = t2011;
-			mat45.e21 = t2111;
-			mat45.e22 = t2211;
-			mat45.e23 = t235;
-			mat45.e30 = t305;
-			mat45.e31 = t315;
-			mat45.e32 = t325;
-			mat45.e33 = t335;
-			if(_this13.sizeMat4 == _this13.stackMat4.length) {
-				var newLength22 = _this13.sizeMat4 << 1;
-				var this23 = new Array(newLength22);
-				var newArray22 = this23;
-				var _g32 = 0;
-				var _g122 = _this13.sizeMat4;
-				while(_g32 < _g122) {
-					var i22 = _g32++;
-					newArray22[i22] = _this13.stackMat4[i22];
-					_this13.stackMat4[i22] = null;
-				}
-				_this13.stackMat4 = newArray22;
-			}
-			_this13.stackMat4[_this13.sizeMat4++] = mat45;
-		}
-		if(quat5 != null) {
-			var tx5 = 0;
-			var ty5 = 0;
-			var tz5 = 0;
-			var tw5 = 1;
-			quat5.x = tx5;
-			quat5.y = ty5;
-			quat5.z = tz5;
-			quat5.w = tw5;
-			if(_this13.sizeQuat == _this13.stackQuat.length) {
-				var newLength23 = _this13.sizeQuat << 1;
-				var this24 = new Array(newLength23);
-				var newArray23 = this24;
-				var _g33 = 0;
-				var _g123 = _this13.sizeQuat;
-				while(_g33 < _g123) {
-					var i23 = _g33++;
-					newArray23[i23] = _this13.stackQuat[i23];
-					_this13.stackQuat[i23] = null;
-				}
-				_this13.stackQuat = newArray23;
-			}
-			_this13.stackQuat[_this13.sizeQuat++] = quat5;
-		}
-		var _this14 = this.p;
-		var mat36 = null;
-		var mat46 = null;
-		var quat6 = null;
-		if(v7 != null) {
-			v7.zero();
-			if(_this14.sizeVec3 == _this14.stackVec3.length) {
-				var newLength24 = _this14.sizeVec3 << 1;
-				var this25 = new Array(newLength24);
-				var newArray24 = this25;
-				var _g34 = 0;
-				var _g124 = _this14.sizeVec3;
-				while(_g34 < _g124) {
-					var i24 = _g34++;
-					newArray24[i24] = _this14.stackVec3[i24];
-					_this14.stackVec3[i24] = null;
-				}
-				_this14.stackVec3 = newArray24;
-			}
-			_this14.stackVec3[_this14.sizeVec3++] = v7;
-		}
-		if(mat36 != null) {
-			var t0012 = 1;
-			var t0112 = 0;
-			var t0212 = 0;
-			var t1012 = 0;
-			var t1112 = 1;
-			var t1212 = 0;
-			var t2012 = 0;
-			var t2112 = 0;
-			var t2212 = 1;
-			mat36.e00 = t0012;
-			mat36.e01 = t0112;
-			mat36.e02 = t0212;
-			mat36.e10 = t1012;
-			mat36.e11 = t1112;
-			mat36.e12 = t1212;
-			mat36.e20 = t2012;
-			mat36.e21 = t2112;
-			mat36.e22 = t2212;
-			if(_this14.sizeMat3 == _this14.stackMat3.length) {
-				var newLength25 = _this14.sizeMat3 << 1;
-				var this26 = new Array(newLength25);
-				var newArray25 = this26;
-				var _g35 = 0;
-				var _g125 = _this14.sizeMat3;
-				while(_g35 < _g125) {
-					var i25 = _g35++;
-					newArray25[i25] = _this14.stackMat3[i25];
-					_this14.stackMat3[i25] = null;
-				}
-				_this14.stackMat3 = newArray25;
-			}
-			_this14.stackMat3[_this14.sizeMat3++] = mat36;
-		}
-		if(mat46 != null) {
-			var t0013 = 1;
-			var t0113 = 0;
-			var t0213 = 0;
-			var t036 = 0;
-			var t1013 = 0;
-			var t1113 = 1;
-			var t1213 = 0;
-			var t136 = 0;
-			var t2013 = 0;
-			var t2113 = 0;
-			var t2213 = 1;
-			var t236 = 0;
-			var t306 = 0;
-			var t316 = 0;
-			var t326 = 0;
-			var t336 = 1;
-			mat46.e00 = t0013;
-			mat46.e01 = t0113;
-			mat46.e02 = t0213;
-			mat46.e03 = t036;
-			mat46.e10 = t1013;
-			mat46.e11 = t1113;
-			mat46.e12 = t1213;
-			mat46.e13 = t136;
-			mat46.e20 = t2013;
-			mat46.e21 = t2113;
-			mat46.e22 = t2213;
-			mat46.e23 = t236;
-			mat46.e30 = t306;
-			mat46.e31 = t316;
-			mat46.e32 = t326;
-			mat46.e33 = t336;
-			if(_this14.sizeMat4 == _this14.stackMat4.length) {
-				var newLength26 = _this14.sizeMat4 << 1;
-				var this27 = new Array(newLength26);
-				var newArray26 = this27;
-				var _g36 = 0;
-				var _g126 = _this14.sizeMat4;
-				while(_g36 < _g126) {
-					var i26 = _g36++;
-					newArray26[i26] = _this14.stackMat4[i26];
-					_this14.stackMat4[i26] = null;
-				}
-				_this14.stackMat4 = newArray26;
-			}
-			_this14.stackMat4[_this14.sizeMat4++] = mat46;
-		}
-		if(quat6 != null) {
-			var tx6 = 0;
-			var ty6 = 0;
-			var tz6 = 0;
-			var tw6 = 1;
-			quat6.x = tx6;
-			quat6.y = ty6;
-			quat6.z = tz6;
-			quat6.w = tw6;
-			if(_this14.sizeQuat == _this14.stackQuat.length) {
-				var newLength27 = _this14.sizeQuat << 1;
-				var this28 = new Array(newLength27);
-				var newArray27 = this28;
-				var _g37 = 0;
-				var _g127 = _this14.sizeQuat;
-				while(_g37 < _g127) {
-					var i27 = _g37++;
-					newArray27[i27] = _this14.stackQuat[i27];
-					_this14.stackQuat[i27] = null;
-				}
-				_this14.stackQuat = newArray27;
-			}
-			_this14.stackQuat[_this14.sizeQuat++] = quat6;
-		}
-		var _this15 = this.p;
-		var mat37 = null;
-		var mat47 = null;
-		var quat7 = null;
-		if(v8 != null) {
-			v8.zero();
-			if(_this15.sizeVec3 == _this15.stackVec3.length) {
-				var newLength28 = _this15.sizeVec3 << 1;
-				var this29 = new Array(newLength28);
-				var newArray28 = this29;
-				var _g38 = 0;
-				var _g128 = _this15.sizeVec3;
-				while(_g38 < _g128) {
-					var i28 = _g38++;
-					newArray28[i28] = _this15.stackVec3[i28];
-					_this15.stackVec3[i28] = null;
-				}
-				_this15.stackVec3 = newArray28;
-			}
-			_this15.stackVec3[_this15.sizeVec3++] = v8;
-		}
-		if(mat37 != null) {
-			var t0014 = 1;
-			var t0114 = 0;
-			var t0214 = 0;
-			var t1014 = 0;
-			var t1114 = 1;
-			var t1214 = 0;
-			var t2014 = 0;
-			var t2114 = 0;
-			var t2214 = 1;
-			mat37.e00 = t0014;
-			mat37.e01 = t0114;
-			mat37.e02 = t0214;
-			mat37.e10 = t1014;
-			mat37.e11 = t1114;
-			mat37.e12 = t1214;
-			mat37.e20 = t2014;
-			mat37.e21 = t2114;
-			mat37.e22 = t2214;
-			if(_this15.sizeMat3 == _this15.stackMat3.length) {
-				var newLength29 = _this15.sizeMat3 << 1;
-				var this30 = new Array(newLength29);
-				var newArray29 = this30;
-				var _g39 = 0;
-				var _g129 = _this15.sizeMat3;
-				while(_g39 < _g129) {
-					var i29 = _g39++;
-					newArray29[i29] = _this15.stackMat3[i29];
-					_this15.stackMat3[i29] = null;
-				}
-				_this15.stackMat3 = newArray29;
-			}
-			_this15.stackMat3[_this15.sizeMat3++] = mat37;
-		}
-		if(mat47 != null) {
-			var t0015 = 1;
-			var t0115 = 0;
-			var t0215 = 0;
-			var t037 = 0;
-			var t1015 = 0;
-			var t1115 = 1;
-			var t1215 = 0;
-			var t137 = 0;
-			var t2015 = 0;
-			var t2115 = 0;
-			var t2215 = 1;
-			var t237 = 0;
-			var t307 = 0;
-			var t317 = 0;
-			var t327 = 0;
-			var t337 = 1;
-			mat47.e00 = t0015;
-			mat47.e01 = t0115;
-			mat47.e02 = t0215;
-			mat47.e03 = t037;
-			mat47.e10 = t1015;
-			mat47.e11 = t1115;
-			mat47.e12 = t1215;
-			mat47.e13 = t137;
-			mat47.e20 = t2015;
-			mat47.e21 = t2115;
-			mat47.e22 = t2215;
-			mat47.e23 = t237;
-			mat47.e30 = t307;
-			mat47.e31 = t317;
-			mat47.e32 = t327;
-			mat47.e33 = t337;
-			if(_this15.sizeMat4 == _this15.stackMat4.length) {
-				var newLength30 = _this15.sizeMat4 << 1;
-				var this31 = new Array(newLength30);
-				var newArray30 = this31;
-				var _g40 = 0;
-				var _g130 = _this15.sizeMat4;
-				while(_g40 < _g130) {
-					var i30 = _g40++;
-					newArray30[i30] = _this15.stackMat4[i30];
-					_this15.stackMat4[i30] = null;
-				}
-				_this15.stackMat4 = newArray30;
-			}
-			_this15.stackMat4[_this15.sizeMat4++] = mat47;
-		}
-		if(quat7 != null) {
-			var tx7 = 0;
-			var ty7 = 0;
-			var tz7 = 0;
-			var tw7 = 1;
-			quat7.x = tx7;
-			quat7.y = ty7;
-			quat7.z = tz7;
-			quat7.w = tw7;
-			if(_this15.sizeQuat == _this15.stackQuat.length) {
-				var newLength31 = _this15.sizeQuat << 1;
-				var this32 = new Array(newLength31);
-				var newArray31 = this32;
-				var _g41 = 0;
-				var _g131 = _this15.sizeQuat;
-				while(_g41 < _g131) {
-					var i31 = _g41++;
-					newArray31[i31] = _this15.stackQuat[i31];
-					_this15.stackQuat[i31] = null;
-				}
-				_this15.stackQuat = newArray31;
-			}
-			_this15.stackQuat[_this15.sizeQuat++] = quat7;
-		}
-	}
-	basis(transform,length,colorX,colorY,colorZ) {
-		var _this = this.p;
-		var pos = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-		var _this1 = this.p;
-		var rot = _this1.sizeMat3 == 0 ? new oimo.common.Mat3() : _this1.stackMat3[--_this1.sizeMat3];
-		var _this2 = this.p;
-		var ex = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
-		var _this3 = this.p;
-		var ey = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
-		var _this4 = this.p;
-		var ez = _this4.sizeVec3 == 0 ? new oimo.common.Vec3() : _this4.stackVec3[--_this4.sizeVec3];
-		var v = pos;
-		v.x = transform._positionX;
-		v.y = transform._positionY;
-		v.z = transform._positionZ;
-		var m = rot;
-		m.e00 = transform._rotation00;
-		m.e01 = transform._rotation01;
-		m.e02 = transform._rotation02;
-		m.e10 = transform._rotation10;
-		m.e11 = transform._rotation11;
-		m.e12 = transform._rotation12;
-		m.e20 = transform._rotation20;
-		m.e21 = transform._rotation21;
-		m.e22 = transform._rotation22;
-		ex.init(rot.e00,rot.e10,rot.e20);
-		ey.init(rot.e01,rot.e11,rot.e21);
-		ez.init(rot.e02,rot.e12,rot.e22);
-		var tx = ex.x * length;
-		var ty = ex.y * length;
-		var tz = ex.z * length;
-		ex.x = tx;
-		ex.y = ty;
-		ex.z = tz;
-		var _this5 = ex;
-		var tx1 = _this5.x + pos.x;
-		var ty1 = _this5.y + pos.y;
-		var tz1 = _this5.z + pos.z;
-		_this5.x = tx1;
-		_this5.y = ty1;
-		_this5.z = tz1;
-		var tx2 = ey.x * length;
-		var ty2 = ey.y * length;
-		var tz2 = ey.z * length;
-		ey.x = tx2;
-		ey.y = ty2;
-		ey.z = tz2;
-		var _this6 = ey;
-		var tx3 = _this6.x + pos.x;
-		var ty3 = _this6.y + pos.y;
-		var tz3 = _this6.z + pos.z;
-		_this6.x = tx3;
-		_this6.y = ty3;
-		_this6.z = tz3;
-		var tx4 = ez.x * length;
-		var ty4 = ez.y * length;
-		var tz4 = ez.z * length;
-		ez.x = tx4;
-		ez.y = ty4;
-		ez.z = tz4;
-		var _this7 = ez;
-		var tx5 = _this7.x + pos.x;
-		var ty5 = _this7.y + pos.y;
-		var tz5 = _this7.z + pos.z;
-		_this7.x = tx5;
-		_this7.y = ty5;
-		_this7.z = tz5;
-		this.line(pos,ex,colorX);
-		this.line(pos,ey,colorY);
-		this.line(pos,ez,colorZ);
-		var _this8 = this.p;
-		var mat3 = null;
-		var mat4 = null;
-		var quat = null;
-		if(pos != null) {
-			pos.zero();
-			if(_this8.sizeVec3 == _this8.stackVec3.length) {
-				var newLength = _this8.sizeVec3 << 1;
-				var this1 = new Array(newLength);
-				var newArray = this1;
-				var _g = 0;
-				var _g1 = _this8.sizeVec3;
-				while(_g < _g1) {
-					var i = _g++;
-					newArray[i] = _this8.stackVec3[i];
-					_this8.stackVec3[i] = null;
-				}
-				_this8.stackVec3 = newArray;
-			}
-			_this8.stackVec3[_this8.sizeVec3++] = pos;
-		}
-		if(mat3 != null) {
-			var t00 = 1;
-			var t01 = 0;
-			var t02 = 0;
-			var t10 = 0;
-			var t11 = 1;
-			var t12 = 0;
-			var t20 = 0;
-			var t21 = 0;
-			var t22 = 1;
-			mat3.e00 = t00;
-			mat3.e01 = t01;
-			mat3.e02 = t02;
-			mat3.e10 = t10;
-			mat3.e11 = t11;
-			mat3.e12 = t12;
-			mat3.e20 = t20;
-			mat3.e21 = t21;
-			mat3.e22 = t22;
-			if(_this8.sizeMat3 == _this8.stackMat3.length) {
-				var newLength1 = _this8.sizeMat3 << 1;
-				var this2 = new Array(newLength1);
-				var newArray1 = this2;
-				var _g2 = 0;
-				var _g11 = _this8.sizeMat3;
-				while(_g2 < _g11) {
-					var i1 = _g2++;
-					newArray1[i1] = _this8.stackMat3[i1];
-					_this8.stackMat3[i1] = null;
-				}
-				_this8.stackMat3 = newArray1;
-			}
-			_this8.stackMat3[_this8.sizeMat3++] = mat3;
-		}
-		if(mat4 != null) {
-			var t001 = 1;
-			var t011 = 0;
-			var t021 = 0;
-			var t03 = 0;
-			var t101 = 0;
-			var t111 = 1;
-			var t121 = 0;
-			var t13 = 0;
-			var t201 = 0;
-			var t211 = 0;
-			var t221 = 1;
-			var t23 = 0;
-			var t30 = 0;
-			var t31 = 0;
-			var t32 = 0;
-			var t33 = 1;
-			mat4.e00 = t001;
-			mat4.e01 = t011;
-			mat4.e02 = t021;
-			mat4.e03 = t03;
-			mat4.e10 = t101;
-			mat4.e11 = t111;
-			mat4.e12 = t121;
-			mat4.e13 = t13;
-			mat4.e20 = t201;
-			mat4.e21 = t211;
-			mat4.e22 = t221;
-			mat4.e23 = t23;
-			mat4.e30 = t30;
-			mat4.e31 = t31;
-			mat4.e32 = t32;
-			mat4.e33 = t33;
-			if(_this8.sizeMat4 == _this8.stackMat4.length) {
-				var newLength2 = _this8.sizeMat4 << 1;
-				var this3 = new Array(newLength2);
-				var newArray2 = this3;
-				var _g3 = 0;
-				var _g12 = _this8.sizeMat4;
-				while(_g3 < _g12) {
-					var i2 = _g3++;
-					newArray2[i2] = _this8.stackMat4[i2];
-					_this8.stackMat4[i2] = null;
-				}
-				_this8.stackMat4 = newArray2;
-			}
-			_this8.stackMat4[_this8.sizeMat4++] = mat4;
-		}
-		if(quat != null) {
-			var tx6 = 0;
-			var ty6 = 0;
-			var tz6 = 0;
-			var tw = 1;
-			quat.x = tx6;
-			quat.y = ty6;
-			quat.z = tz6;
-			quat.w = tw;
-			if(_this8.sizeQuat == _this8.stackQuat.length) {
-				var newLength3 = _this8.sizeQuat << 1;
-				var this4 = new Array(newLength3);
-				var newArray3 = this4;
-				var _g4 = 0;
-				var _g13 = _this8.sizeQuat;
-				while(_g4 < _g13) {
-					var i3 = _g4++;
-					newArray3[i3] = _this8.stackQuat[i3];
-					_this8.stackQuat[i3] = null;
-				}
-				_this8.stackQuat = newArray3;
-			}
-			_this8.stackQuat[_this8.sizeQuat++] = quat;
-		}
-		var _this9 = this.p;
-		var vec3 = null;
-		var mat41 = null;
-		var quat1 = null;
-		if(vec3 != null) {
-			vec3.zero();
-			if(_this9.sizeVec3 == _this9.stackVec3.length) {
-				var newLength4 = _this9.sizeVec3 << 1;
-				var this5 = new Array(newLength4);
-				var newArray4 = this5;
-				var _g5 = 0;
-				var _g14 = _this9.sizeVec3;
-				while(_g5 < _g14) {
-					var i4 = _g5++;
-					newArray4[i4] = _this9.stackVec3[i4];
-					_this9.stackVec3[i4] = null;
-				}
-				_this9.stackVec3 = newArray4;
-			}
-			_this9.stackVec3[_this9.sizeVec3++] = vec3;
-		}
-		if(rot != null) {
-			var t002 = 1;
-			var t012 = 0;
-			var t022 = 0;
-			var t102 = 0;
-			var t112 = 1;
-			var t122 = 0;
-			var t202 = 0;
-			var t212 = 0;
-			var t222 = 1;
-			rot.e00 = t002;
-			rot.e01 = t012;
-			rot.e02 = t022;
-			rot.e10 = t102;
-			rot.e11 = t112;
-			rot.e12 = t122;
-			rot.e20 = t202;
-			rot.e21 = t212;
-			rot.e22 = t222;
-			if(_this9.sizeMat3 == _this9.stackMat3.length) {
-				var newLength5 = _this9.sizeMat3 << 1;
-				var this6 = new Array(newLength5);
-				var newArray5 = this6;
-				var _g6 = 0;
-				var _g15 = _this9.sizeMat3;
-				while(_g6 < _g15) {
-					var i5 = _g6++;
-					newArray5[i5] = _this9.stackMat3[i5];
-					_this9.stackMat3[i5] = null;
-				}
-				_this9.stackMat3 = newArray5;
-			}
-			_this9.stackMat3[_this9.sizeMat3++] = rot;
-		}
-		if(mat41 != null) {
-			var t003 = 1;
-			var t013 = 0;
-			var t023 = 0;
-			var t031 = 0;
-			var t103 = 0;
-			var t113 = 1;
-			var t123 = 0;
-			var t131 = 0;
-			var t203 = 0;
-			var t213 = 0;
-			var t223 = 1;
-			var t231 = 0;
-			var t301 = 0;
-			var t311 = 0;
-			var t321 = 0;
-			var t331 = 1;
-			mat41.e00 = t003;
-			mat41.e01 = t013;
-			mat41.e02 = t023;
-			mat41.e03 = t031;
-			mat41.e10 = t103;
-			mat41.e11 = t113;
-			mat41.e12 = t123;
-			mat41.e13 = t131;
-			mat41.e20 = t203;
-			mat41.e21 = t213;
-			mat41.e22 = t223;
-			mat41.e23 = t231;
-			mat41.e30 = t301;
-			mat41.e31 = t311;
-			mat41.e32 = t321;
-			mat41.e33 = t331;
-			if(_this9.sizeMat4 == _this9.stackMat4.length) {
-				var newLength6 = _this9.sizeMat4 << 1;
-				var this7 = new Array(newLength6);
-				var newArray6 = this7;
-				var _g7 = 0;
-				var _g16 = _this9.sizeMat4;
-				while(_g7 < _g16) {
-					var i6 = _g7++;
-					newArray6[i6] = _this9.stackMat4[i6];
-					_this9.stackMat4[i6] = null;
-				}
-				_this9.stackMat4 = newArray6;
-			}
-			_this9.stackMat4[_this9.sizeMat4++] = mat41;
-		}
-		if(quat1 != null) {
-			var tx7 = 0;
-			var ty7 = 0;
-			var tz7 = 0;
-			var tw1 = 1;
-			quat1.x = tx7;
-			quat1.y = ty7;
-			quat1.z = tz7;
-			quat1.w = tw1;
-			if(_this9.sizeQuat == _this9.stackQuat.length) {
-				var newLength7 = _this9.sizeQuat << 1;
-				var this8 = new Array(newLength7);
-				var newArray7 = this8;
-				var _g8 = 0;
-				var _g17 = _this9.sizeQuat;
-				while(_g8 < _g17) {
-					var i7 = _g8++;
-					newArray7[i7] = _this9.stackQuat[i7];
-					_this9.stackQuat[i7] = null;
-				}
-				_this9.stackQuat = newArray7;
-			}
-			_this9.stackQuat[_this9.sizeQuat++] = quat1;
-		}
-		var _this10 = this.p;
-		var mat31 = null;
-		var mat42 = null;
-		var quat2 = null;
-		if(ex != null) {
-			ex.zero();
-			if(_this10.sizeVec3 == _this10.stackVec3.length) {
-				var newLength8 = _this10.sizeVec3 << 1;
-				var this9 = new Array(newLength8);
-				var newArray8 = this9;
-				var _g9 = 0;
-				var _g18 = _this10.sizeVec3;
-				while(_g9 < _g18) {
-					var i8 = _g9++;
-					newArray8[i8] = _this10.stackVec3[i8];
-					_this10.stackVec3[i8] = null;
-				}
-				_this10.stackVec3 = newArray8;
-			}
-			_this10.stackVec3[_this10.sizeVec3++] = ex;
-		}
-		if(mat31 != null) {
-			var t004 = 1;
-			var t014 = 0;
-			var t024 = 0;
-			var t104 = 0;
-			var t114 = 1;
-			var t124 = 0;
-			var t204 = 0;
-			var t214 = 0;
-			var t224 = 1;
-			mat31.e00 = t004;
-			mat31.e01 = t014;
-			mat31.e02 = t024;
-			mat31.e10 = t104;
-			mat31.e11 = t114;
-			mat31.e12 = t124;
-			mat31.e20 = t204;
-			mat31.e21 = t214;
-			mat31.e22 = t224;
-			if(_this10.sizeMat3 == _this10.stackMat3.length) {
-				var newLength9 = _this10.sizeMat3 << 1;
-				var this10 = new Array(newLength9);
-				var newArray9 = this10;
-				var _g10 = 0;
-				var _g19 = _this10.sizeMat3;
-				while(_g10 < _g19) {
-					var i9 = _g10++;
-					newArray9[i9] = _this10.stackMat3[i9];
-					_this10.stackMat3[i9] = null;
-				}
-				_this10.stackMat3 = newArray9;
-			}
-			_this10.stackMat3[_this10.sizeMat3++] = mat31;
-		}
-		if(mat42 != null) {
-			var t005 = 1;
-			var t015 = 0;
-			var t025 = 0;
-			var t032 = 0;
-			var t105 = 0;
-			var t115 = 1;
-			var t125 = 0;
-			var t132 = 0;
-			var t205 = 0;
-			var t215 = 0;
-			var t225 = 1;
-			var t232 = 0;
-			var t302 = 0;
-			var t312 = 0;
-			var t322 = 0;
-			var t332 = 1;
-			mat42.e00 = t005;
-			mat42.e01 = t015;
-			mat42.e02 = t025;
-			mat42.e03 = t032;
-			mat42.e10 = t105;
-			mat42.e11 = t115;
-			mat42.e12 = t125;
-			mat42.e13 = t132;
-			mat42.e20 = t205;
-			mat42.e21 = t215;
-			mat42.e22 = t225;
-			mat42.e23 = t232;
-			mat42.e30 = t302;
-			mat42.e31 = t312;
-			mat42.e32 = t322;
-			mat42.e33 = t332;
-			if(_this10.sizeMat4 == _this10.stackMat4.length) {
-				var newLength10 = _this10.sizeMat4 << 1;
-				var this11 = new Array(newLength10);
-				var newArray10 = this11;
-				var _g20 = 0;
-				var _g110 = _this10.sizeMat4;
-				while(_g20 < _g110) {
-					var i10 = _g20++;
-					newArray10[i10] = _this10.stackMat4[i10];
-					_this10.stackMat4[i10] = null;
-				}
-				_this10.stackMat4 = newArray10;
-			}
-			_this10.stackMat4[_this10.sizeMat4++] = mat42;
-		}
-		if(quat2 != null) {
-			var tx8 = 0;
-			var ty8 = 0;
-			var tz8 = 0;
-			var tw2 = 1;
-			quat2.x = tx8;
-			quat2.y = ty8;
-			quat2.z = tz8;
-			quat2.w = tw2;
-			if(_this10.sizeQuat == _this10.stackQuat.length) {
-				var newLength11 = _this10.sizeQuat << 1;
-				var this12 = new Array(newLength11);
-				var newArray11 = this12;
-				var _g21 = 0;
-				var _g111 = _this10.sizeQuat;
-				while(_g21 < _g111) {
-					var i11 = _g21++;
-					newArray11[i11] = _this10.stackQuat[i11];
-					_this10.stackQuat[i11] = null;
-				}
-				_this10.stackQuat = newArray11;
-			}
-			_this10.stackQuat[_this10.sizeQuat++] = quat2;
-		}
-		var _this11 = this.p;
-		var mat32 = null;
-		var mat43 = null;
-		var quat3 = null;
-		if(ey != null) {
-			ey.zero();
-			if(_this11.sizeVec3 == _this11.stackVec3.length) {
-				var newLength12 = _this11.sizeVec3 << 1;
-				var this13 = new Array(newLength12);
-				var newArray12 = this13;
-				var _g22 = 0;
-				var _g112 = _this11.sizeVec3;
-				while(_g22 < _g112) {
-					var i12 = _g22++;
-					newArray12[i12] = _this11.stackVec3[i12];
-					_this11.stackVec3[i12] = null;
-				}
-				_this11.stackVec3 = newArray12;
-			}
-			_this11.stackVec3[_this11.sizeVec3++] = ey;
-		}
-		if(mat32 != null) {
-			var t006 = 1;
-			var t016 = 0;
-			var t026 = 0;
-			var t106 = 0;
-			var t116 = 1;
-			var t126 = 0;
-			var t206 = 0;
-			var t216 = 0;
-			var t226 = 1;
-			mat32.e00 = t006;
-			mat32.e01 = t016;
-			mat32.e02 = t026;
-			mat32.e10 = t106;
-			mat32.e11 = t116;
-			mat32.e12 = t126;
-			mat32.e20 = t206;
-			mat32.e21 = t216;
-			mat32.e22 = t226;
-			if(_this11.sizeMat3 == _this11.stackMat3.length) {
-				var newLength13 = _this11.sizeMat3 << 1;
-				var this14 = new Array(newLength13);
-				var newArray13 = this14;
-				var _g23 = 0;
-				var _g113 = _this11.sizeMat3;
-				while(_g23 < _g113) {
-					var i13 = _g23++;
-					newArray13[i13] = _this11.stackMat3[i13];
-					_this11.stackMat3[i13] = null;
-				}
-				_this11.stackMat3 = newArray13;
-			}
-			_this11.stackMat3[_this11.sizeMat3++] = mat32;
-		}
-		if(mat43 != null) {
-			var t007 = 1;
-			var t017 = 0;
-			var t027 = 0;
-			var t033 = 0;
-			var t107 = 0;
-			var t117 = 1;
-			var t127 = 0;
-			var t133 = 0;
-			var t207 = 0;
-			var t217 = 0;
-			var t227 = 1;
-			var t233 = 0;
-			var t303 = 0;
-			var t313 = 0;
-			var t323 = 0;
-			var t333 = 1;
-			mat43.e00 = t007;
-			mat43.e01 = t017;
-			mat43.e02 = t027;
-			mat43.e03 = t033;
-			mat43.e10 = t107;
-			mat43.e11 = t117;
-			mat43.e12 = t127;
-			mat43.e13 = t133;
-			mat43.e20 = t207;
-			mat43.e21 = t217;
-			mat43.e22 = t227;
-			mat43.e23 = t233;
-			mat43.e30 = t303;
-			mat43.e31 = t313;
-			mat43.e32 = t323;
-			mat43.e33 = t333;
-			if(_this11.sizeMat4 == _this11.stackMat4.length) {
-				var newLength14 = _this11.sizeMat4 << 1;
-				var this15 = new Array(newLength14);
-				var newArray14 = this15;
-				var _g24 = 0;
-				var _g114 = _this11.sizeMat4;
-				while(_g24 < _g114) {
-					var i14 = _g24++;
-					newArray14[i14] = _this11.stackMat4[i14];
-					_this11.stackMat4[i14] = null;
-				}
-				_this11.stackMat4 = newArray14;
-			}
-			_this11.stackMat4[_this11.sizeMat4++] = mat43;
-		}
-		if(quat3 != null) {
-			var tx9 = 0;
-			var ty9 = 0;
-			var tz9 = 0;
-			var tw3 = 1;
-			quat3.x = tx9;
-			quat3.y = ty9;
-			quat3.z = tz9;
-			quat3.w = tw3;
-			if(_this11.sizeQuat == _this11.stackQuat.length) {
-				var newLength15 = _this11.sizeQuat << 1;
-				var this16 = new Array(newLength15);
-				var newArray15 = this16;
-				var _g25 = 0;
-				var _g115 = _this11.sizeQuat;
-				while(_g25 < _g115) {
-					var i15 = _g25++;
-					newArray15[i15] = _this11.stackQuat[i15];
-					_this11.stackQuat[i15] = null;
-				}
-				_this11.stackQuat = newArray15;
-			}
-			_this11.stackQuat[_this11.sizeQuat++] = quat3;
-		}
-		var _this12 = this.p;
-		var mat33 = null;
-		var mat44 = null;
-		var quat4 = null;
-		if(ez != null) {
-			ez.zero();
-			if(_this12.sizeVec3 == _this12.stackVec3.length) {
-				var newLength16 = _this12.sizeVec3 << 1;
-				var this17 = new Array(newLength16);
-				var newArray16 = this17;
-				var _g26 = 0;
-				var _g116 = _this12.sizeVec3;
-				while(_g26 < _g116) {
-					var i16 = _g26++;
-					newArray16[i16] = _this12.stackVec3[i16];
-					_this12.stackVec3[i16] = null;
-				}
-				_this12.stackVec3 = newArray16;
-			}
-			_this12.stackVec3[_this12.sizeVec3++] = ez;
-		}
-		if(mat33 != null) {
-			var t008 = 1;
-			var t018 = 0;
-			var t028 = 0;
-			var t108 = 0;
-			var t118 = 1;
-			var t128 = 0;
-			var t208 = 0;
-			var t218 = 0;
-			var t228 = 1;
-			mat33.e00 = t008;
-			mat33.e01 = t018;
-			mat33.e02 = t028;
-			mat33.e10 = t108;
-			mat33.e11 = t118;
-			mat33.e12 = t128;
-			mat33.e20 = t208;
-			mat33.e21 = t218;
-			mat33.e22 = t228;
-			if(_this12.sizeMat3 == _this12.stackMat3.length) {
-				var newLength17 = _this12.sizeMat3 << 1;
-				var this18 = new Array(newLength17);
-				var newArray17 = this18;
-				var _g27 = 0;
-				var _g117 = _this12.sizeMat3;
-				while(_g27 < _g117) {
-					var i17 = _g27++;
-					newArray17[i17] = _this12.stackMat3[i17];
-					_this12.stackMat3[i17] = null;
-				}
-				_this12.stackMat3 = newArray17;
-			}
-			_this12.stackMat3[_this12.sizeMat3++] = mat33;
-		}
-		if(mat44 != null) {
-			var t009 = 1;
-			var t019 = 0;
-			var t029 = 0;
-			var t034 = 0;
-			var t109 = 0;
-			var t119 = 1;
-			var t129 = 0;
-			var t134 = 0;
-			var t209 = 0;
-			var t219 = 0;
-			var t229 = 1;
-			var t234 = 0;
-			var t304 = 0;
-			var t314 = 0;
-			var t324 = 0;
-			var t334 = 1;
-			mat44.e00 = t009;
-			mat44.e01 = t019;
-			mat44.e02 = t029;
-			mat44.e03 = t034;
-			mat44.e10 = t109;
-			mat44.e11 = t119;
-			mat44.e12 = t129;
-			mat44.e13 = t134;
-			mat44.e20 = t209;
-			mat44.e21 = t219;
-			mat44.e22 = t229;
-			mat44.e23 = t234;
-			mat44.e30 = t304;
-			mat44.e31 = t314;
-			mat44.e32 = t324;
-			mat44.e33 = t334;
-			if(_this12.sizeMat4 == _this12.stackMat4.length) {
-				var newLength18 = _this12.sizeMat4 << 1;
-				var this19 = new Array(newLength18);
-				var newArray18 = this19;
-				var _g28 = 0;
-				var _g118 = _this12.sizeMat4;
-				while(_g28 < _g118) {
-					var i18 = _g28++;
-					newArray18[i18] = _this12.stackMat4[i18];
-					_this12.stackMat4[i18] = null;
-				}
-				_this12.stackMat4 = newArray18;
-			}
-			_this12.stackMat4[_this12.sizeMat4++] = mat44;
-		}
-		if(quat4 != null) {
-			var tx10 = 0;
-			var ty10 = 0;
-			var tz10 = 0;
-			var tw4 = 1;
-			quat4.x = tx10;
-			quat4.y = ty10;
-			quat4.z = tz10;
-			quat4.w = tw4;
-			if(_this12.sizeQuat == _this12.stackQuat.length) {
-				var newLength19 = _this12.sizeQuat << 1;
-				var this20 = new Array(newLength19);
-				var newArray19 = this20;
-				var _g29 = 0;
-				var _g119 = _this12.sizeQuat;
-				while(_g29 < _g119) {
-					var i19 = _g29++;
-					newArray19[i19] = _this12.stackQuat[i19];
-					_this12.stackQuat[i19] = null;
-				}
-				_this12.stackQuat = newArray19;
-			}
-			_this12.stackQuat[_this12.sizeQuat++] = quat4;
-		}
-	}
-	ellipse(center,ex,ey,radiusX,radiusY,color) {
-		this.arc(center,ex,ey,radiusX,radiusY,0,6.28318530717958,false,color);
-	}
-	arc(center,ex,ey,radiusX,radiusY,startAngle,endAngle,drawSector,color) {
-		var _this = this.p;
-		var _this1 = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-		_this1.x = ex.x;
-		_this1.y = ex.y;
-		_this1.z = ex.z;
-		var _this2 = _this1;
-		var tx = _this2.x * radiusX;
-		var ty = _this2.y * radiusX;
-		var tz = _this2.z * radiusX;
-		_this2.x = tx;
-		_this2.y = ty;
-		_this2.z = tz;
-		ex = _this2;
-		var _this3 = this.p;
-		var _this4 = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
-		_this4.x = ey.x;
-		_this4.y = ey.y;
-		_this4.z = ey.z;
-		var _this5 = _this4;
-		var tx1 = _this5.x * radiusY;
-		var ty1 = _this5.y * radiusY;
-		var tz1 = _this5.z * radiusY;
-		_this5.x = tx1;
-		_this5.y = ty1;
-		_this5.z = tz1;
-		ey = _this5;
-		var step = 0.523598775598298372;
-		var angDiff = endAngle - startAngle;
-		if(angDiff < 0) {
-			angDiff = -angDiff;
-		}
-		var n = angDiff / step + 0.5 | 0;
-		if(n == 0) {
-			n = 1;
-		}
-		var theta = startAngle;
-		var dt = (endAngle - startAngle) / n;
-		var _this6 = this.p;
-		var _this7 = _this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3];
-		_this7.x = center.x;
-		_this7.y = center.y;
-		_this7.z = center.z;
-		var _this8 = _this7;
-		var s = Math.cos(theta);
-		var tx2 = _this8.x + ex.x * s;
-		var ty2 = _this8.y + ex.y * s;
-		var tz2 = _this8.z + ex.z * s;
-		_this8.x = tx2;
-		_this8.y = ty2;
-		_this8.z = tz2;
-		var _this9 = _this8;
-		var s1 = Math.sin(theta);
-		var tx3 = _this9.x + ey.x * s1;
-		var ty3 = _this9.y + ey.y * s1;
-		var tz3 = _this9.z + ey.z * s1;
-		_this9.x = tx3;
-		_this9.y = ty3;
-		_this9.z = tz3;
-		var v = _this9;
-		var prevV = v;
-		if(drawSector) {
-			this.line(center,prevV,color);
-		}
-		var _g = 0;
-		var _g1 = n;
-		while(_g < _g1) {
-			var i = _g++;
-			theta += dt;
-			var _this10 = this.p;
-			var _this11 = _this10.sizeVec3 == 0 ? new oimo.common.Vec3() : _this10.stackVec3[--_this10.sizeVec3];
-			_this11.x = center.x;
-			_this11.y = center.y;
-			_this11.z = center.z;
-			var _this12 = _this11;
-			var s2 = Math.cos(theta);
-			var tx4 = _this12.x + ex.x * s2;
-			var ty4 = _this12.y + ex.y * s2;
-			var tz4 = _this12.z + ex.z * s2;
-			_this12.x = tx4;
-			_this12.y = ty4;
-			_this12.z = tz4;
-			var _this13 = _this12;
-			var s3 = Math.sin(theta);
-			var tx5 = _this13.x + ey.x * s3;
-			var ty5 = _this13.y + ey.y * s3;
-			var tz5 = _this13.z + ey.z * s3;
-			_this13.x = tx5;
-			_this13.y = ty5;
-			_this13.z = tz5;
-			var v1 = _this13;
-			var v2 = v1;
-			this.line(prevV,v2,color);
-			var _this14 = this.p;
-			var mat3 = null;
-			var mat4 = null;
-			var quat = null;
-			if(prevV != null) {
-				prevV.zero();
-				if(_this14.sizeVec3 == _this14.stackVec3.length) {
-					var newLength = _this14.sizeVec3 << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g2 = 0;
-					var _g11 = _this14.sizeVec3;
-					while(_g2 < _g11) {
-						var i1 = _g2++;
-						newArray[i1] = _this14.stackVec3[i1];
-						_this14.stackVec3[i1] = null;
-					}
-					_this14.stackVec3 = newArray;
-				}
-				_this14.stackVec3[_this14.sizeVec3++] = prevV;
-			}
-			if(mat3 != null) {
-				var t00 = 1;
-				var t01 = 0;
-				var t02 = 0;
-				var t10 = 0;
-				var t11 = 1;
-				var t12 = 0;
-				var t20 = 0;
-				var t21 = 0;
-				var t22 = 1;
-				mat3.e00 = t00;
-				mat3.e01 = t01;
-				mat3.e02 = t02;
-				mat3.e10 = t10;
-				mat3.e11 = t11;
-				mat3.e12 = t12;
-				mat3.e20 = t20;
-				mat3.e21 = t21;
-				mat3.e22 = t22;
-				if(_this14.sizeMat3 == _this14.stackMat3.length) {
-					var newLength1 = _this14.sizeMat3 << 1;
-					var this2 = new Array(newLength1);
-					var newArray1 = this2;
-					var _g3 = 0;
-					var _g12 = _this14.sizeMat3;
-					while(_g3 < _g12) {
-						var i2 = _g3++;
-						newArray1[i2] = _this14.stackMat3[i2];
-						_this14.stackMat3[i2] = null;
-					}
-					_this14.stackMat3 = newArray1;
-				}
-				_this14.stackMat3[_this14.sizeMat3++] = mat3;
-			}
-			if(mat4 != null) {
-				var t001 = 1;
-				var t011 = 0;
-				var t021 = 0;
-				var t03 = 0;
-				var t101 = 0;
-				var t111 = 1;
-				var t121 = 0;
-				var t13 = 0;
-				var t201 = 0;
-				var t211 = 0;
-				var t221 = 1;
-				var t23 = 0;
-				var t30 = 0;
-				var t31 = 0;
-				var t32 = 0;
-				var t33 = 1;
-				mat4.e00 = t001;
-				mat4.e01 = t011;
-				mat4.e02 = t021;
-				mat4.e03 = t03;
-				mat4.e10 = t101;
-				mat4.e11 = t111;
-				mat4.e12 = t121;
-				mat4.e13 = t13;
-				mat4.e20 = t201;
-				mat4.e21 = t211;
-				mat4.e22 = t221;
-				mat4.e23 = t23;
-				mat4.e30 = t30;
-				mat4.e31 = t31;
-				mat4.e32 = t32;
-				mat4.e33 = t33;
-				if(_this14.sizeMat4 == _this14.stackMat4.length) {
-					var newLength2 = _this14.sizeMat4 << 1;
-					var this3 = new Array(newLength2);
-					var newArray2 = this3;
-					var _g4 = 0;
-					var _g13 = _this14.sizeMat4;
-					while(_g4 < _g13) {
-						var i3 = _g4++;
-						newArray2[i3] = _this14.stackMat4[i3];
-						_this14.stackMat4[i3] = null;
-					}
-					_this14.stackMat4 = newArray2;
-				}
-				_this14.stackMat4[_this14.sizeMat4++] = mat4;
-			}
-			if(quat != null) {
-				var tx6 = 0;
-				var ty6 = 0;
-				var tz6 = 0;
-				var tw = 1;
-				quat.x = tx6;
-				quat.y = ty6;
-				quat.z = tz6;
-				quat.w = tw;
-				if(_this14.sizeQuat == _this14.stackQuat.length) {
-					var newLength3 = _this14.sizeQuat << 1;
-					var this4 = new Array(newLength3);
-					var newArray3 = this4;
-					var _g5 = 0;
-					var _g14 = _this14.sizeQuat;
-					while(_g5 < _g14) {
-						var i4 = _g5++;
-						newArray3[i4] = _this14.stackQuat[i4];
-						_this14.stackQuat[i4] = null;
-					}
-					_this14.stackQuat = newArray3;
-				}
-				_this14.stackQuat[_this14.sizeQuat++] = quat;
-			}
-			prevV = v2;
-		}
-		if(drawSector) {
-			this.line(center,prevV,color);
-		}
-		var _this15 = this.p;
-		var mat31 = null;
-		var mat41 = null;
-		var quat1 = null;
-		if(prevV != null) {
-			prevV.zero();
-			if(_this15.sizeVec3 == _this15.stackVec3.length) {
-				var newLength4 = _this15.sizeVec3 << 1;
-				var this5 = new Array(newLength4);
-				var newArray4 = this5;
-				var _g6 = 0;
-				var _g15 = _this15.sizeVec3;
-				while(_g6 < _g15) {
-					var i5 = _g6++;
-					newArray4[i5] = _this15.stackVec3[i5];
-					_this15.stackVec3[i5] = null;
-				}
-				_this15.stackVec3 = newArray4;
-			}
-			_this15.stackVec3[_this15.sizeVec3++] = prevV;
-		}
-		if(mat31 != null) {
-			var t002 = 1;
-			var t012 = 0;
-			var t022 = 0;
-			var t102 = 0;
-			var t112 = 1;
-			var t122 = 0;
-			var t202 = 0;
-			var t212 = 0;
-			var t222 = 1;
-			mat31.e00 = t002;
-			mat31.e01 = t012;
-			mat31.e02 = t022;
-			mat31.e10 = t102;
-			mat31.e11 = t112;
-			mat31.e12 = t122;
-			mat31.e20 = t202;
-			mat31.e21 = t212;
-			mat31.e22 = t222;
-			if(_this15.sizeMat3 == _this15.stackMat3.length) {
-				var newLength5 = _this15.sizeMat3 << 1;
-				var this6 = new Array(newLength5);
-				var newArray5 = this6;
-				var _g7 = 0;
-				var _g16 = _this15.sizeMat3;
-				while(_g7 < _g16) {
-					var i6 = _g7++;
-					newArray5[i6] = _this15.stackMat3[i6];
-					_this15.stackMat3[i6] = null;
-				}
-				_this15.stackMat3 = newArray5;
-			}
-			_this15.stackMat3[_this15.sizeMat3++] = mat31;
-		}
-		if(mat41 != null) {
-			var t003 = 1;
-			var t013 = 0;
-			var t023 = 0;
-			var t031 = 0;
-			var t103 = 0;
-			var t113 = 1;
-			var t123 = 0;
-			var t131 = 0;
-			var t203 = 0;
-			var t213 = 0;
-			var t223 = 1;
-			var t231 = 0;
-			var t301 = 0;
-			var t311 = 0;
-			var t321 = 0;
-			var t331 = 1;
-			mat41.e00 = t003;
-			mat41.e01 = t013;
-			mat41.e02 = t023;
-			mat41.e03 = t031;
-			mat41.e10 = t103;
-			mat41.e11 = t113;
-			mat41.e12 = t123;
-			mat41.e13 = t131;
-			mat41.e20 = t203;
-			mat41.e21 = t213;
-			mat41.e22 = t223;
-			mat41.e23 = t231;
-			mat41.e30 = t301;
-			mat41.e31 = t311;
-			mat41.e32 = t321;
-			mat41.e33 = t331;
-			if(_this15.sizeMat4 == _this15.stackMat4.length) {
-				var newLength6 = _this15.sizeMat4 << 1;
-				var this7 = new Array(newLength6);
-				var newArray6 = this7;
-				var _g8 = 0;
-				var _g17 = _this15.sizeMat4;
-				while(_g8 < _g17) {
-					var i7 = _g8++;
-					newArray6[i7] = _this15.stackMat4[i7];
-					_this15.stackMat4[i7] = null;
-				}
-				_this15.stackMat4 = newArray6;
-			}
-			_this15.stackMat4[_this15.sizeMat4++] = mat41;
-		}
-		if(quat1 != null) {
-			var tx7 = 0;
-			var ty7 = 0;
-			var tz7 = 0;
-			var tw1 = 1;
-			quat1.x = tx7;
-			quat1.y = ty7;
-			quat1.z = tz7;
-			quat1.w = tw1;
-			if(_this15.sizeQuat == _this15.stackQuat.length) {
-				var newLength7 = _this15.sizeQuat << 1;
-				var this8 = new Array(newLength7);
-				var newArray7 = this8;
-				var _g9 = 0;
-				var _g18 = _this15.sizeQuat;
-				while(_g9 < _g18) {
-					var i8 = _g9++;
-					newArray7[i8] = _this15.stackQuat[i8];
-					_this15.stackQuat[i8] = null;
-				}
-				_this15.stackQuat = newArray7;
-			}
-			_this15.stackQuat[_this15.sizeQuat++] = quat1;
-		}
-		var _this16 = this.p;
-		var mat32 = null;
-		var mat42 = null;
-		var quat2 = null;
-		if(ex != null) {
-			ex.zero();
-			if(_this16.sizeVec3 == _this16.stackVec3.length) {
-				var newLength8 = _this16.sizeVec3 << 1;
-				var this9 = new Array(newLength8);
-				var newArray8 = this9;
-				var _g10 = 0;
-				var _g19 = _this16.sizeVec3;
-				while(_g10 < _g19) {
-					var i9 = _g10++;
-					newArray8[i9] = _this16.stackVec3[i9];
-					_this16.stackVec3[i9] = null;
-				}
-				_this16.stackVec3 = newArray8;
-			}
-			_this16.stackVec3[_this16.sizeVec3++] = ex;
-		}
-		if(mat32 != null) {
-			var t004 = 1;
-			var t014 = 0;
-			var t024 = 0;
-			var t104 = 0;
-			var t114 = 1;
-			var t124 = 0;
-			var t204 = 0;
-			var t214 = 0;
-			var t224 = 1;
-			mat32.e00 = t004;
-			mat32.e01 = t014;
-			mat32.e02 = t024;
-			mat32.e10 = t104;
-			mat32.e11 = t114;
-			mat32.e12 = t124;
-			mat32.e20 = t204;
-			mat32.e21 = t214;
-			mat32.e22 = t224;
-			if(_this16.sizeMat3 == _this16.stackMat3.length) {
-				var newLength9 = _this16.sizeMat3 << 1;
-				var this10 = new Array(newLength9);
-				var newArray9 = this10;
-				var _g20 = 0;
-				var _g110 = _this16.sizeMat3;
-				while(_g20 < _g110) {
-					var i10 = _g20++;
-					newArray9[i10] = _this16.stackMat3[i10];
-					_this16.stackMat3[i10] = null;
-				}
-				_this16.stackMat3 = newArray9;
-			}
-			_this16.stackMat3[_this16.sizeMat3++] = mat32;
-		}
-		if(mat42 != null) {
-			var t005 = 1;
-			var t015 = 0;
-			var t025 = 0;
-			var t032 = 0;
-			var t105 = 0;
-			var t115 = 1;
-			var t125 = 0;
-			var t132 = 0;
-			var t205 = 0;
-			var t215 = 0;
-			var t225 = 1;
-			var t232 = 0;
-			var t302 = 0;
-			var t312 = 0;
-			var t322 = 0;
-			var t332 = 1;
-			mat42.e00 = t005;
-			mat42.e01 = t015;
-			mat42.e02 = t025;
-			mat42.e03 = t032;
-			mat42.e10 = t105;
-			mat42.e11 = t115;
-			mat42.e12 = t125;
-			mat42.e13 = t132;
-			mat42.e20 = t205;
-			mat42.e21 = t215;
-			mat42.e22 = t225;
-			mat42.e23 = t232;
-			mat42.e30 = t302;
-			mat42.e31 = t312;
-			mat42.e32 = t322;
-			mat42.e33 = t332;
-			if(_this16.sizeMat4 == _this16.stackMat4.length) {
-				var newLength10 = _this16.sizeMat4 << 1;
-				var this11 = new Array(newLength10);
-				var newArray10 = this11;
-				var _g21 = 0;
-				var _g111 = _this16.sizeMat4;
-				while(_g21 < _g111) {
-					var i11 = _g21++;
-					newArray10[i11] = _this16.stackMat4[i11];
-					_this16.stackMat4[i11] = null;
-				}
-				_this16.stackMat4 = newArray10;
-			}
-			_this16.stackMat4[_this16.sizeMat4++] = mat42;
-		}
-		if(quat2 != null) {
-			var tx8 = 0;
-			var ty8 = 0;
-			var tz8 = 0;
-			var tw2 = 1;
-			quat2.x = tx8;
-			quat2.y = ty8;
-			quat2.z = tz8;
-			quat2.w = tw2;
-			if(_this16.sizeQuat == _this16.stackQuat.length) {
-				var newLength11 = _this16.sizeQuat << 1;
-				var this12 = new Array(newLength11);
-				var newArray11 = this12;
-				var _g22 = 0;
-				var _g112 = _this16.sizeQuat;
-				while(_g22 < _g112) {
-					var i12 = _g22++;
-					newArray11[i12] = _this16.stackQuat[i12];
-					_this16.stackQuat[i12] = null;
-				}
-				_this16.stackQuat = newArray11;
-			}
-			_this16.stackQuat[_this16.sizeQuat++] = quat2;
-		}
-		var _this17 = this.p;
-		var mat33 = null;
-		var mat43 = null;
-		var quat3 = null;
-		if(ey != null) {
-			ey.zero();
-			if(_this17.sizeVec3 == _this17.stackVec3.length) {
-				var newLength12 = _this17.sizeVec3 << 1;
-				var this13 = new Array(newLength12);
-				var newArray12 = this13;
-				var _g23 = 0;
-				var _g113 = _this17.sizeVec3;
-				while(_g23 < _g113) {
-					var i13 = _g23++;
-					newArray12[i13] = _this17.stackVec3[i13];
-					_this17.stackVec3[i13] = null;
-				}
-				_this17.stackVec3 = newArray12;
-			}
-			_this17.stackVec3[_this17.sizeVec3++] = ey;
-		}
-		if(mat33 != null) {
-			var t006 = 1;
-			var t016 = 0;
-			var t026 = 0;
-			var t106 = 0;
-			var t116 = 1;
-			var t126 = 0;
-			var t206 = 0;
-			var t216 = 0;
-			var t226 = 1;
-			mat33.e00 = t006;
-			mat33.e01 = t016;
-			mat33.e02 = t026;
-			mat33.e10 = t106;
-			mat33.e11 = t116;
-			mat33.e12 = t126;
-			mat33.e20 = t206;
-			mat33.e21 = t216;
-			mat33.e22 = t226;
-			if(_this17.sizeMat3 == _this17.stackMat3.length) {
-				var newLength13 = _this17.sizeMat3 << 1;
-				var this14 = new Array(newLength13);
-				var newArray13 = this14;
-				var _g24 = 0;
-				var _g114 = _this17.sizeMat3;
-				while(_g24 < _g114) {
-					var i14 = _g24++;
-					newArray13[i14] = _this17.stackMat3[i14];
-					_this17.stackMat3[i14] = null;
-				}
-				_this17.stackMat3 = newArray13;
-			}
-			_this17.stackMat3[_this17.sizeMat3++] = mat33;
-		}
-		if(mat43 != null) {
-			var t007 = 1;
-			var t017 = 0;
-			var t027 = 0;
-			var t033 = 0;
-			var t107 = 0;
-			var t117 = 1;
-			var t127 = 0;
-			var t133 = 0;
-			var t207 = 0;
-			var t217 = 0;
-			var t227 = 1;
-			var t233 = 0;
-			var t303 = 0;
-			var t313 = 0;
-			var t323 = 0;
-			var t333 = 1;
-			mat43.e00 = t007;
-			mat43.e01 = t017;
-			mat43.e02 = t027;
-			mat43.e03 = t033;
-			mat43.e10 = t107;
-			mat43.e11 = t117;
-			mat43.e12 = t127;
-			mat43.e13 = t133;
-			mat43.e20 = t207;
-			mat43.e21 = t217;
-			mat43.e22 = t227;
-			mat43.e23 = t233;
-			mat43.e30 = t303;
-			mat43.e31 = t313;
-			mat43.e32 = t323;
-			mat43.e33 = t333;
-			if(_this17.sizeMat4 == _this17.stackMat4.length) {
-				var newLength14 = _this17.sizeMat4 << 1;
-				var this15 = new Array(newLength14);
-				var newArray14 = this15;
-				var _g25 = 0;
-				var _g115 = _this17.sizeMat4;
-				while(_g25 < _g115) {
-					var i15 = _g25++;
-					newArray14[i15] = _this17.stackMat4[i15];
-					_this17.stackMat4[i15] = null;
-				}
-				_this17.stackMat4 = newArray14;
-			}
-			_this17.stackMat4[_this17.sizeMat4++] = mat43;
-		}
-		if(quat3 != null) {
-			var tx9 = 0;
-			var ty9 = 0;
-			var tz9 = 0;
-			var tw3 = 1;
-			quat3.x = tx9;
-			quat3.y = ty9;
-			quat3.z = tz9;
-			quat3.w = tw3;
-			if(_this17.sizeQuat == _this17.stackQuat.length) {
-				var newLength15 = _this17.sizeQuat << 1;
-				var this16 = new Array(newLength15);
-				var newArray15 = this16;
-				var _g26 = 0;
-				var _g116 = _this17.sizeQuat;
-				while(_g26 < _g116) {
-					var i16 = _g26++;
-					newArray15[i16] = _this17.stackQuat[i16];
-					_this17.stackQuat[i16] = null;
-				}
-				_this17.stackQuat = newArray15;
-			}
-			_this17.stackQuat[_this17.sizeQuat++] = quat3;
-		}
-	}
-	cone(tf,radius,halfHeight,color) {
-		var _this = this.p;
-		var ex = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-		var _this1 = this.p;
-		var ey = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
-		var _this2 = this.p;
-		var ez = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
-		var _this3 = this.p;
-		var o = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
-		var _this4 = this.p;
-		var m = _this4.sizeMat3 == 0 ? new oimo.common.Mat3() : _this4.stackMat3[--_this4.sizeMat3];
-		var v = o;
-		v.x = tf._positionX;
-		v.y = tf._positionY;
-		v.z = tf._positionZ;
-		var m1 = m;
-		m1.e00 = tf._rotation00;
-		m1.e01 = tf._rotation01;
-		m1.e02 = tf._rotation02;
-		m1.e10 = tf._rotation10;
-		m1.e11 = tf._rotation11;
-		m1.e12 = tf._rotation12;
-		m1.e20 = tf._rotation20;
-		m1.e21 = tf._rotation21;
-		m1.e22 = tf._rotation22;
-		ex.init(m.e00,m.e10,m.e20);
-		ey.init(m.e01,m.e11,m.e21);
-		ez.init(m.e02,m.e12,m.e22);
-		var _this5 = this.p;
-		var _this6 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
-		_this6.x = o.x;
-		_this6.y = o.y;
-		_this6.z = o.z;
-		var _this7 = _this6;
-		var tx = _this7.x + ey.x * halfHeight;
-		var ty = _this7.y + ey.y * halfHeight;
-		var tz = _this7.z + ey.z * halfHeight;
-		_this7.x = tx;
-		_this7.y = ty;
-		_this7.z = tz;
-		var top = _this7;
-		var _this8 = this.p;
-		var _this9 = _this8.sizeVec3 == 0 ? new oimo.common.Vec3() : _this8.stackVec3[--_this8.sizeVec3];
-		_this9.x = o.x;
-		_this9.y = o.y;
-		_this9.z = o.z;
-		var _this10 = _this9;
-		var s = -halfHeight;
-		var tx1 = _this10.x + ey.x * s;
-		var ty1 = _this10.y + ey.y * s;
-		var tz1 = _this10.z + ey.z * s;
-		_this10.x = tx1;
-		_this10.y = ty1;
-		_this10.z = tz1;
-		var bottom = _this10;
-		if(this.wireframe) {
-			var _this11 = this.p;
-			var _this12 = _this11.sizeVec3 == 0 ? new oimo.common.Vec3() : _this11.stackVec3[--_this11.sizeVec3];
-			_this12.x = bottom.x;
-			_this12.y = bottom.y;
-			_this12.z = bottom.z;
-			var _this13 = _this12;
-			var s1 = -radius;
-			var tx2 = _this13.x + ex.x * s1;
-			var ty2 = _this13.y + ex.y * s1;
-			var tz2 = _this13.z + ex.z * s1;
-			_this13.x = tx2;
-			_this13.y = ty2;
-			_this13.z = tz2;
-			var _this14 = _this13;
-			var tx3 = _this14.x + ez.x * 0;
-			var ty3 = _this14.y + ez.y * 0;
-			var tz3 = _this14.z + ez.z * 0;
-			_this14.x = tx3;
-			_this14.y = ty3;
-			_this14.z = tz3;
-			var bottom1 = _this14;
-			var _this15 = this.p;
-			var _this16 = _this15.sizeVec3 == 0 ? new oimo.common.Vec3() : _this15.stackVec3[--_this15.sizeVec3];
-			_this16.x = bottom.x;
-			_this16.y = bottom.y;
-			_this16.z = bottom.z;
-			var _this17 = _this16;
-			var tx4 = _this17.x + ex.x * radius;
-			var ty4 = _this17.y + ex.y * radius;
-			var tz4 = _this17.z + ex.z * radius;
-			_this17.x = tx4;
-			_this17.y = ty4;
-			_this17.z = tz4;
-			var _this18 = _this17;
-			var tx5 = _this18.x + ez.x * 0;
-			var ty5 = _this18.y + ez.y * 0;
-			var tz5 = _this18.z + ez.z * 0;
-			_this18.x = tx5;
-			_this18.y = ty5;
-			_this18.z = tz5;
-			var bottom2 = _this18;
-			var _this19 = this.p;
-			var _this20 = _this19.sizeVec3 == 0 ? new oimo.common.Vec3() : _this19.stackVec3[--_this19.sizeVec3];
-			_this20.x = bottom.x;
-			_this20.y = bottom.y;
-			_this20.z = bottom.z;
-			var _this21 = _this20;
-			var tx6 = _this21.x + ex.x * 0;
-			var ty6 = _this21.y + ex.y * 0;
-			var tz6 = _this21.z + ex.z * 0;
-			_this21.x = tx6;
-			_this21.y = ty6;
-			_this21.z = tz6;
-			var _this22 = _this21;
-			var s2 = -radius;
-			var tx7 = _this22.x + ez.x * s2;
-			var ty7 = _this22.y + ez.y * s2;
-			var tz7 = _this22.z + ez.z * s2;
-			_this22.x = tx7;
-			_this22.y = ty7;
-			_this22.z = tz7;
-			var bottom3 = _this22;
-			var _this23 = this.p;
-			var _this24 = _this23.sizeVec3 == 0 ? new oimo.common.Vec3() : _this23.stackVec3[--_this23.sizeVec3];
-			_this24.x = bottom.x;
-			_this24.y = bottom.y;
-			_this24.z = bottom.z;
-			var _this25 = _this24;
-			var tx8 = _this25.x + ex.x * 0;
-			var ty8 = _this25.y + ex.y * 0;
-			var tz8 = _this25.z + ex.z * 0;
-			_this25.x = tx8;
-			_this25.y = ty8;
-			_this25.z = tz8;
-			var _this26 = _this25;
-			var tx9 = _this26.x + ez.x * radius;
-			var ty9 = _this26.y + ez.y * radius;
-			var tz9 = _this26.z + ez.z * radius;
-			_this26.x = tx9;
-			_this26.y = ty9;
-			_this26.z = tz9;
-			var bottom4 = _this26;
-			this.ellipse(bottom,ex,ez,radius,radius,color);
-			this.line(top,bottom1,color);
-			this.line(top,bottom2,color);
-			this.line(top,bottom3,color);
-			this.line(top,bottom4,color);
-			var _this27 = this.p;
-			var mat3 = null;
-			var mat4 = null;
-			var quat = null;
-			if(bottom1 != null) {
-				bottom1.zero();
-				if(_this27.sizeVec3 == _this27.stackVec3.length) {
-					var newLength = _this27.sizeVec3 << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g = 0;
-					var _g1 = _this27.sizeVec3;
-					while(_g < _g1) {
-						var i = _g++;
-						newArray[i] = _this27.stackVec3[i];
-						_this27.stackVec3[i] = null;
-					}
-					_this27.stackVec3 = newArray;
-				}
-				_this27.stackVec3[_this27.sizeVec3++] = bottom1;
-			}
-			if(mat3 != null) {
-				var t00 = 1;
-				var t01 = 0;
-				var t02 = 0;
-				var t10 = 0;
-				var t11 = 1;
-				var t12 = 0;
-				var t20 = 0;
-				var t21 = 0;
-				var t22 = 1;
-				mat3.e00 = t00;
-				mat3.e01 = t01;
-				mat3.e02 = t02;
-				mat3.e10 = t10;
-				mat3.e11 = t11;
-				mat3.e12 = t12;
-				mat3.e20 = t20;
-				mat3.e21 = t21;
-				mat3.e22 = t22;
-				if(_this27.sizeMat3 == _this27.stackMat3.length) {
-					var newLength1 = _this27.sizeMat3 << 1;
-					var this2 = new Array(newLength1);
-					var newArray1 = this2;
-					var _g2 = 0;
-					var _g11 = _this27.sizeMat3;
-					while(_g2 < _g11) {
-						var i1 = _g2++;
-						newArray1[i1] = _this27.stackMat3[i1];
-						_this27.stackMat3[i1] = null;
-					}
-					_this27.stackMat3 = newArray1;
-				}
-				_this27.stackMat3[_this27.sizeMat3++] = mat3;
-			}
-			if(mat4 != null) {
-				var t001 = 1;
-				var t011 = 0;
-				var t021 = 0;
-				var t03 = 0;
-				var t101 = 0;
-				var t111 = 1;
-				var t121 = 0;
-				var t13 = 0;
-				var t201 = 0;
-				var t211 = 0;
-				var t221 = 1;
-				var t23 = 0;
-				var t30 = 0;
-				var t31 = 0;
-				var t32 = 0;
-				var t33 = 1;
-				mat4.e00 = t001;
-				mat4.e01 = t011;
-				mat4.e02 = t021;
-				mat4.e03 = t03;
-				mat4.e10 = t101;
-				mat4.e11 = t111;
-				mat4.e12 = t121;
-				mat4.e13 = t13;
-				mat4.e20 = t201;
-				mat4.e21 = t211;
-				mat4.e22 = t221;
-				mat4.e23 = t23;
-				mat4.e30 = t30;
-				mat4.e31 = t31;
-				mat4.e32 = t32;
-				mat4.e33 = t33;
-				if(_this27.sizeMat4 == _this27.stackMat4.length) {
-					var newLength2 = _this27.sizeMat4 << 1;
-					var this3 = new Array(newLength2);
-					var newArray2 = this3;
-					var _g3 = 0;
-					var _g12 = _this27.sizeMat4;
-					while(_g3 < _g12) {
-						var i2 = _g3++;
-						newArray2[i2] = _this27.stackMat4[i2];
-						_this27.stackMat4[i2] = null;
-					}
-					_this27.stackMat4 = newArray2;
-				}
-				_this27.stackMat4[_this27.sizeMat4++] = mat4;
-			}
-			if(quat != null) {
-				var tx10 = 0;
-				var ty10 = 0;
-				var tz10 = 0;
-				var tw = 1;
-				quat.x = tx10;
-				quat.y = ty10;
-				quat.z = tz10;
-				quat.w = tw;
-				if(_this27.sizeQuat == _this27.stackQuat.length) {
-					var newLength3 = _this27.sizeQuat << 1;
-					var this4 = new Array(newLength3);
-					var newArray3 = this4;
-					var _g4 = 0;
-					var _g13 = _this27.sizeQuat;
-					while(_g4 < _g13) {
-						var i3 = _g4++;
-						newArray3[i3] = _this27.stackQuat[i3];
-						_this27.stackQuat[i3] = null;
-					}
-					_this27.stackQuat = newArray3;
-				}
-				_this27.stackQuat[_this27.sizeQuat++] = quat;
-			}
-			var _this28 = this.p;
-			var mat31 = null;
-			var mat41 = null;
-			var quat1 = null;
-			if(bottom2 != null) {
-				bottom2.zero();
-				if(_this28.sizeVec3 == _this28.stackVec3.length) {
-					var newLength4 = _this28.sizeVec3 << 1;
-					var this5 = new Array(newLength4);
-					var newArray4 = this5;
-					var _g5 = 0;
-					var _g14 = _this28.sizeVec3;
-					while(_g5 < _g14) {
-						var i4 = _g5++;
-						newArray4[i4] = _this28.stackVec3[i4];
-						_this28.stackVec3[i4] = null;
-					}
-					_this28.stackVec3 = newArray4;
-				}
-				_this28.stackVec3[_this28.sizeVec3++] = bottom2;
-			}
-			if(mat31 != null) {
-				var t002 = 1;
-				var t012 = 0;
-				var t022 = 0;
-				var t102 = 0;
-				var t112 = 1;
-				var t122 = 0;
-				var t202 = 0;
-				var t212 = 0;
-				var t222 = 1;
-				mat31.e00 = t002;
-				mat31.e01 = t012;
-				mat31.e02 = t022;
-				mat31.e10 = t102;
-				mat31.e11 = t112;
-				mat31.e12 = t122;
-				mat31.e20 = t202;
-				mat31.e21 = t212;
-				mat31.e22 = t222;
-				if(_this28.sizeMat3 == _this28.stackMat3.length) {
-					var newLength5 = _this28.sizeMat3 << 1;
-					var this6 = new Array(newLength5);
-					var newArray5 = this6;
-					var _g6 = 0;
-					var _g15 = _this28.sizeMat3;
-					while(_g6 < _g15) {
-						var i5 = _g6++;
-						newArray5[i5] = _this28.stackMat3[i5];
-						_this28.stackMat3[i5] = null;
-					}
-					_this28.stackMat3 = newArray5;
-				}
-				_this28.stackMat3[_this28.sizeMat3++] = mat31;
-			}
-			if(mat41 != null) {
-				var t003 = 1;
-				var t013 = 0;
-				var t023 = 0;
-				var t031 = 0;
-				var t103 = 0;
-				var t113 = 1;
-				var t123 = 0;
-				var t131 = 0;
-				var t203 = 0;
-				var t213 = 0;
-				var t223 = 1;
-				var t231 = 0;
-				var t301 = 0;
-				var t311 = 0;
-				var t321 = 0;
-				var t331 = 1;
-				mat41.e00 = t003;
-				mat41.e01 = t013;
-				mat41.e02 = t023;
-				mat41.e03 = t031;
-				mat41.e10 = t103;
-				mat41.e11 = t113;
-				mat41.e12 = t123;
-				mat41.e13 = t131;
-				mat41.e20 = t203;
-				mat41.e21 = t213;
-				mat41.e22 = t223;
-				mat41.e23 = t231;
-				mat41.e30 = t301;
-				mat41.e31 = t311;
-				mat41.e32 = t321;
-				mat41.e33 = t331;
-				if(_this28.sizeMat4 == _this28.stackMat4.length) {
-					var newLength6 = _this28.sizeMat4 << 1;
-					var this7 = new Array(newLength6);
-					var newArray6 = this7;
-					var _g7 = 0;
-					var _g16 = _this28.sizeMat4;
-					while(_g7 < _g16) {
-						var i6 = _g7++;
-						newArray6[i6] = _this28.stackMat4[i6];
-						_this28.stackMat4[i6] = null;
-					}
-					_this28.stackMat4 = newArray6;
-				}
-				_this28.stackMat4[_this28.sizeMat4++] = mat41;
-			}
-			if(quat1 != null) {
-				var tx11 = 0;
-				var ty11 = 0;
-				var tz11 = 0;
-				var tw1 = 1;
-				quat1.x = tx11;
-				quat1.y = ty11;
-				quat1.z = tz11;
-				quat1.w = tw1;
-				if(_this28.sizeQuat == _this28.stackQuat.length) {
-					var newLength7 = _this28.sizeQuat << 1;
-					var this8 = new Array(newLength7);
-					var newArray7 = this8;
-					var _g8 = 0;
-					var _g17 = _this28.sizeQuat;
-					while(_g8 < _g17) {
-						var i7 = _g8++;
-						newArray7[i7] = _this28.stackQuat[i7];
-						_this28.stackQuat[i7] = null;
-					}
-					_this28.stackQuat = newArray7;
-				}
-				_this28.stackQuat[_this28.sizeQuat++] = quat1;
-			}
-			var _this29 = this.p;
-			var mat32 = null;
-			var mat42 = null;
-			var quat2 = null;
-			if(bottom3 != null) {
-				bottom3.zero();
-				if(_this29.sizeVec3 == _this29.stackVec3.length) {
-					var newLength8 = _this29.sizeVec3 << 1;
-					var this9 = new Array(newLength8);
-					var newArray8 = this9;
-					var _g9 = 0;
-					var _g18 = _this29.sizeVec3;
-					while(_g9 < _g18) {
-						var i8 = _g9++;
-						newArray8[i8] = _this29.stackVec3[i8];
-						_this29.stackVec3[i8] = null;
-					}
-					_this29.stackVec3 = newArray8;
-				}
-				_this29.stackVec3[_this29.sizeVec3++] = bottom3;
-			}
-			if(mat32 != null) {
-				var t004 = 1;
-				var t014 = 0;
-				var t024 = 0;
-				var t104 = 0;
-				var t114 = 1;
-				var t124 = 0;
-				var t204 = 0;
-				var t214 = 0;
-				var t224 = 1;
-				mat32.e00 = t004;
-				mat32.e01 = t014;
-				mat32.e02 = t024;
-				mat32.e10 = t104;
-				mat32.e11 = t114;
-				mat32.e12 = t124;
-				mat32.e20 = t204;
-				mat32.e21 = t214;
-				mat32.e22 = t224;
-				if(_this29.sizeMat3 == _this29.stackMat3.length) {
-					var newLength9 = _this29.sizeMat3 << 1;
-					var this10 = new Array(newLength9);
-					var newArray9 = this10;
-					var _g10 = 0;
-					var _g19 = _this29.sizeMat3;
-					while(_g10 < _g19) {
-						var i9 = _g10++;
-						newArray9[i9] = _this29.stackMat3[i9];
-						_this29.stackMat3[i9] = null;
-					}
-					_this29.stackMat3 = newArray9;
-				}
-				_this29.stackMat3[_this29.sizeMat3++] = mat32;
-			}
-			if(mat42 != null) {
-				var t005 = 1;
-				var t015 = 0;
-				var t025 = 0;
-				var t032 = 0;
-				var t105 = 0;
-				var t115 = 1;
-				var t125 = 0;
-				var t132 = 0;
-				var t205 = 0;
-				var t215 = 0;
-				var t225 = 1;
-				var t232 = 0;
-				var t302 = 0;
-				var t312 = 0;
-				var t322 = 0;
-				var t332 = 1;
-				mat42.e00 = t005;
-				mat42.e01 = t015;
-				mat42.e02 = t025;
-				mat42.e03 = t032;
-				mat42.e10 = t105;
-				mat42.e11 = t115;
-				mat42.e12 = t125;
-				mat42.e13 = t132;
-				mat42.e20 = t205;
-				mat42.e21 = t215;
-				mat42.e22 = t225;
-				mat42.e23 = t232;
-				mat42.e30 = t302;
-				mat42.e31 = t312;
-				mat42.e32 = t322;
-				mat42.e33 = t332;
-				if(_this29.sizeMat4 == _this29.stackMat4.length) {
-					var newLength10 = _this29.sizeMat4 << 1;
-					var this11 = new Array(newLength10);
-					var newArray10 = this11;
-					var _g20 = 0;
-					var _g110 = _this29.sizeMat4;
-					while(_g20 < _g110) {
-						var i10 = _g20++;
-						newArray10[i10] = _this29.stackMat4[i10];
-						_this29.stackMat4[i10] = null;
-					}
-					_this29.stackMat4 = newArray10;
-				}
-				_this29.stackMat4[_this29.sizeMat4++] = mat42;
-			}
-			if(quat2 != null) {
-				var tx12 = 0;
-				var ty12 = 0;
-				var tz12 = 0;
-				var tw2 = 1;
-				quat2.x = tx12;
-				quat2.y = ty12;
-				quat2.z = tz12;
-				quat2.w = tw2;
-				if(_this29.sizeQuat == _this29.stackQuat.length) {
-					var newLength11 = _this29.sizeQuat << 1;
-					var this12 = new Array(newLength11);
-					var newArray11 = this12;
-					var _g21 = 0;
-					var _g111 = _this29.sizeQuat;
-					while(_g21 < _g111) {
-						var i11 = _g21++;
-						newArray11[i11] = _this29.stackQuat[i11];
-						_this29.stackQuat[i11] = null;
-					}
-					_this29.stackQuat = newArray11;
-				}
-				_this29.stackQuat[_this29.sizeQuat++] = quat2;
-			}
-			var _this30 = this.p;
-			var mat33 = null;
-			var mat43 = null;
-			var quat3 = null;
-			if(bottom4 != null) {
-				bottom4.zero();
-				if(_this30.sizeVec3 == _this30.stackVec3.length) {
-					var newLength12 = _this30.sizeVec3 << 1;
-					var this13 = new Array(newLength12);
-					var newArray12 = this13;
-					var _g22 = 0;
-					var _g112 = _this30.sizeVec3;
-					while(_g22 < _g112) {
-						var i12 = _g22++;
-						newArray12[i12] = _this30.stackVec3[i12];
-						_this30.stackVec3[i12] = null;
-					}
-					_this30.stackVec3 = newArray12;
-				}
-				_this30.stackVec3[_this30.sizeVec3++] = bottom4;
-			}
-			if(mat33 != null) {
-				var t006 = 1;
-				var t016 = 0;
-				var t026 = 0;
-				var t106 = 0;
-				var t116 = 1;
-				var t126 = 0;
-				var t206 = 0;
-				var t216 = 0;
-				var t226 = 1;
-				mat33.e00 = t006;
-				mat33.e01 = t016;
-				mat33.e02 = t026;
-				mat33.e10 = t106;
-				mat33.e11 = t116;
-				mat33.e12 = t126;
-				mat33.e20 = t206;
-				mat33.e21 = t216;
-				mat33.e22 = t226;
-				if(_this30.sizeMat3 == _this30.stackMat3.length) {
-					var newLength13 = _this30.sizeMat3 << 1;
-					var this14 = new Array(newLength13);
-					var newArray13 = this14;
-					var _g23 = 0;
-					var _g113 = _this30.sizeMat3;
-					while(_g23 < _g113) {
-						var i13 = _g23++;
-						newArray13[i13] = _this30.stackMat3[i13];
-						_this30.stackMat3[i13] = null;
-					}
-					_this30.stackMat3 = newArray13;
-				}
-				_this30.stackMat3[_this30.sizeMat3++] = mat33;
-			}
-			if(mat43 != null) {
-				var t007 = 1;
-				var t017 = 0;
-				var t027 = 0;
-				var t033 = 0;
-				var t107 = 0;
-				var t117 = 1;
-				var t127 = 0;
-				var t133 = 0;
-				var t207 = 0;
-				var t217 = 0;
-				var t227 = 1;
-				var t233 = 0;
-				var t303 = 0;
-				var t313 = 0;
-				var t323 = 0;
-				var t333 = 1;
-				mat43.e00 = t007;
-				mat43.e01 = t017;
-				mat43.e02 = t027;
-				mat43.e03 = t033;
-				mat43.e10 = t107;
-				mat43.e11 = t117;
-				mat43.e12 = t127;
-				mat43.e13 = t133;
-				mat43.e20 = t207;
-				mat43.e21 = t217;
-				mat43.e22 = t227;
-				mat43.e23 = t233;
-				mat43.e30 = t303;
-				mat43.e31 = t313;
-				mat43.e32 = t323;
-				mat43.e33 = t333;
-				if(_this30.sizeMat4 == _this30.stackMat4.length) {
-					var newLength14 = _this30.sizeMat4 << 1;
-					var this15 = new Array(newLength14);
-					var newArray14 = this15;
-					var _g24 = 0;
-					var _g114 = _this30.sizeMat4;
-					while(_g24 < _g114) {
-						var i14 = _g24++;
-						newArray14[i14] = _this30.stackMat4[i14];
-						_this30.stackMat4[i14] = null;
-					}
-					_this30.stackMat4 = newArray14;
-				}
-				_this30.stackMat4[_this30.sizeMat4++] = mat43;
-			}
-			if(quat3 != null) {
-				var tx13 = 0;
-				var ty13 = 0;
-				var tz13 = 0;
-				var tw3 = 1;
-				quat3.x = tx13;
-				quat3.y = ty13;
-				quat3.z = tz13;
-				quat3.w = tw3;
-				if(_this30.sizeQuat == _this30.stackQuat.length) {
-					var newLength15 = _this30.sizeQuat << 1;
-					var this16 = new Array(newLength15);
-					var newArray15 = this16;
-					var _g25 = 0;
-					var _g115 = _this30.sizeQuat;
-					while(_g25 < _g115) {
-						var i15 = _g25++;
-						newArray15[i15] = _this30.stackQuat[i15];
-						_this30.stackQuat[i15] = null;
-					}
-					_this30.stackQuat = newArray15;
-				}
-				_this30.stackQuat[_this30.sizeQuat++] = quat3;
-			}
-		} else {
-			var invDenom = 1 / Math.sqrt(radius * radius + 4 * halfHeight * halfHeight);
-			var cos = 2 * halfHeight * invDenom;
-			var sin = radius * invDenom;
-			var invDenom2 = 1 / Math.sqrt(2 * (1 + cos));
-			var _g26 = 0;
-			while(_g26 < 8) {
-				var i16 = _g26++;
-				var _this31 = this.tmpCircleNorms[i16];
-				var v1 = this.circleCoords[i16];
-				_this31.x = v1.x;
-				_this31.y = v1.y;
-				_this31.z = v1.z;
-				var _this32 = _this31;
-				var tx14 = _this32.x * cos;
-				var ty14 = _this32.y * cos;
-				var tz14 = _this32.z * cos;
-				_this32.x = tx14;
-				_this32.y = ty14;
-				_this32.z = tz14;
-				_this32.y += sin;
-				var _this33 = this.tmpCircleNorms[i16];
-				var tx15 = _this33.x * m.e00 + _this33.y * m.e01 + _this33.z * m.e02;
-				var ty15 = _this33.x * m.e10 + _this33.y * m.e11 + _this33.z * m.e12;
-				var tz15 = _this33.x * m.e20 + _this33.y * m.e21 + _this33.z * m.e22;
-				_this33.x = tx15;
-				_this33.y = ty15;
-				_this33.z = tz15;
-				var _this34 = this.tmpCircleVerts1[i16];
-				var v2 = this.circleCoordsShift[i16];
-				_this34.x = v2.x;
-				_this34.y = v2.y;
-				_this34.z = v2.z;
-				var _this35 = _this34;
-				var tx16 = _this35.x * cos;
-				var ty16 = _this35.y * cos;
-				var tz16 = _this35.z * cos;
-				_this35.x = tx16;
-				_this35.y = ty16;
-				_this35.z = tz16;
-				_this35.y += sin;
-				var _this36 = this.tmpCircleVerts1[i16];
-				var tx17 = _this36.x * m.e00 + _this36.y * m.e01 + _this36.z * m.e02;
-				var ty17 = _this36.x * m.e10 + _this36.y * m.e11 + _this36.z * m.e12;
-				var tz17 = _this36.x * m.e20 + _this36.y * m.e21 + _this36.z * m.e22;
-				_this36.x = tx17;
-				_this36.y = ty17;
-				_this36.z = tz17;
-				var _this37 = this.tmpCircleVerts2[i16];
-				var v3 = this.circleCoords[i16];
-				_this37.x = v3.x;
-				_this37.y = v3.y;
-				_this37.z = v3.z;
-				var _this38 = _this37;
-				var tx18 = _this38.x * m.e00 + _this38.y * m.e01 + _this38.z * m.e02;
-				var ty18 = _this38.x * m.e10 + _this38.y * m.e11 + _this38.z * m.e12;
-				var tz18 = _this38.x * m.e20 + _this38.y * m.e21 + _this38.z * m.e22;
-				_this38.x = tx18;
-				_this38.y = ty18;
-				_this38.z = tz18;
-				var _this39 = _this38;
-				var tx19 = _this39.x * radius;
-				var ty19 = _this39.y * radius;
-				var tz19 = _this39.z * radius;
-				_this39.x = tx19;
-				_this39.y = ty19;
-				_this39.z = tz19;
-				var _this40 = _this39;
-				var tx20 = _this40.x + o.x;
-				var ty20 = _this40.y + o.y;
-				var tz20 = _this40.z + o.z;
-				_this40.x = tx20;
-				_this40.y = ty20;
-				_this40.z = tz20;
-				var _this41 = this.tmpCircleVerts2[i16];
-				var s3 = -halfHeight;
-				var tx21 = _this41.x + ey.x * s3;
-				var ty21 = _this41.y + ey.y * s3;
-				var tz21 = _this41.z + ey.z * s3;
-				_this41.x = tx21;
-				_this41.y = ty21;
-				_this41.z = tz21;
-			}
-			var _g116 = 0;
-			while(_g116 < 8) {
-				var i17 = _g116++;
-				var v11 = top;
-				var v21 = this.tmpCircleVerts2[i17];
-				var v31 = this.tmpCircleVerts2[(i17 + 1) % 8];
-				var n1 = this.tmpCircleVerts1[i17];
-				var n2 = this.tmpCircleNorms[i17];
-				var n3 = this.tmpCircleNorms[(i17 + 1) % 8];
-				this.triangle(v11,v21,v31,n1,n2,n3,color);
-				v11 = bottom;
-				v21 = this.tmpCircleVerts2[(i17 + 1) % 8];
-				v31 = this.tmpCircleVerts2[i17];
-				var _this42 = this.p;
-				var _this43 = _this42.sizeVec3 == 0 ? new oimo.common.Vec3() : _this42.stackVec3[--_this42.sizeVec3];
-				_this43.x = ey.x;
-				_this43.y = ey.y;
-				_this43.z = ey.z;
-				var _this44 = _this43;
-				var tx22 = -_this44.x;
-				var ty22 = -_this44.y;
-				var tz22 = -_this44.z;
-				_this44.x = tx22;
-				_this44.y = ty22;
-				_this44.z = tz22;
-				n1 = _this44;
-				this.triangle(v11,v21,v31,n1,n1,n1,color);
-				var _this45 = this.p;
-				var mat34 = null;
-				var mat44 = null;
-				var quat4 = null;
-				if(n1 != null) {
-					n1.zero();
-					if(_this45.sizeVec3 == _this45.stackVec3.length) {
-						var newLength16 = _this45.sizeVec3 << 1;
-						var this17 = new Array(newLength16);
-						var newArray16 = this17;
-						var _g27 = 0;
-						var _g117 = _this45.sizeVec3;
-						while(_g27 < _g117) {
-							var i18 = _g27++;
-							newArray16[i18] = _this45.stackVec3[i18];
-							_this45.stackVec3[i18] = null;
-						}
-						_this45.stackVec3 = newArray16;
-					}
-					_this45.stackVec3[_this45.sizeVec3++] = n1;
-				}
-				if(mat34 != null) {
-					var t008 = 1;
-					var t018 = 0;
-					var t028 = 0;
-					var t108 = 0;
-					var t118 = 1;
-					var t128 = 0;
-					var t208 = 0;
-					var t218 = 0;
-					var t228 = 1;
-					mat34.e00 = t008;
-					mat34.e01 = t018;
-					mat34.e02 = t028;
-					mat34.e10 = t108;
-					mat34.e11 = t118;
-					mat34.e12 = t128;
-					mat34.e20 = t208;
-					mat34.e21 = t218;
-					mat34.e22 = t228;
-					if(_this45.sizeMat3 == _this45.stackMat3.length) {
-						var newLength17 = _this45.sizeMat3 << 1;
-						var this18 = new Array(newLength17);
-						var newArray17 = this18;
-						var _g28 = 0;
-						var _g118 = _this45.sizeMat3;
-						while(_g28 < _g118) {
-							var i19 = _g28++;
-							newArray17[i19] = _this45.stackMat3[i19];
-							_this45.stackMat3[i19] = null;
-						}
-						_this45.stackMat3 = newArray17;
-					}
-					_this45.stackMat3[_this45.sizeMat3++] = mat34;
-				}
-				if(mat44 != null) {
-					var t009 = 1;
-					var t019 = 0;
-					var t029 = 0;
-					var t034 = 0;
-					var t109 = 0;
-					var t119 = 1;
-					var t129 = 0;
-					var t134 = 0;
-					var t209 = 0;
-					var t219 = 0;
-					var t229 = 1;
-					var t234 = 0;
-					var t304 = 0;
-					var t314 = 0;
-					var t324 = 0;
-					var t334 = 1;
-					mat44.e00 = t009;
-					mat44.e01 = t019;
-					mat44.e02 = t029;
-					mat44.e03 = t034;
-					mat44.e10 = t109;
-					mat44.e11 = t119;
-					mat44.e12 = t129;
-					mat44.e13 = t134;
-					mat44.e20 = t209;
-					mat44.e21 = t219;
-					mat44.e22 = t229;
-					mat44.e23 = t234;
-					mat44.e30 = t304;
-					mat44.e31 = t314;
-					mat44.e32 = t324;
-					mat44.e33 = t334;
-					if(_this45.sizeMat4 == _this45.stackMat4.length) {
-						var newLength18 = _this45.sizeMat4 << 1;
-						var this19 = new Array(newLength18);
-						var newArray18 = this19;
-						var _g29 = 0;
-						var _g119 = _this45.sizeMat4;
-						while(_g29 < _g119) {
-							var i20 = _g29++;
-							newArray18[i20] = _this45.stackMat4[i20];
-							_this45.stackMat4[i20] = null;
-						}
-						_this45.stackMat4 = newArray18;
-					}
-					_this45.stackMat4[_this45.sizeMat4++] = mat44;
-				}
-				if(quat4 != null) {
-					var tx23 = 0;
-					var ty23 = 0;
-					var tz23 = 0;
-					var tw4 = 1;
-					quat4.x = tx23;
-					quat4.y = ty23;
-					quat4.z = tz23;
-					quat4.w = tw4;
-					if(_this45.sizeQuat == _this45.stackQuat.length) {
-						var newLength19 = _this45.sizeQuat << 1;
-						var this20 = new Array(newLength19);
-						var newArray19 = this20;
-						var _g30 = 0;
-						var _g120 = _this45.sizeQuat;
-						while(_g30 < _g120) {
-							var i21 = _g30++;
-							newArray19[i21] = _this45.stackQuat[i21];
-							_this45.stackQuat[i21] = null;
-						}
-						_this45.stackQuat = newArray19;
-					}
-					_this45.stackQuat[_this45.sizeQuat++] = quat4;
-				}
-			}
-		}
-		var _this46 = this.p;
-		var mat35 = null;
-		var mat45 = null;
-		var quat5 = null;
-		if(top != null) {
-			top.zero();
-			if(_this46.sizeVec3 == _this46.stackVec3.length) {
-				var newLength20 = _this46.sizeVec3 << 1;
-				var this21 = new Array(newLength20);
-				var newArray20 = this21;
-				var _g31 = 0;
-				var _g121 = _this46.sizeVec3;
-				while(_g31 < _g121) {
-					var i22 = _g31++;
-					newArray20[i22] = _this46.stackVec3[i22];
-					_this46.stackVec3[i22] = null;
-				}
-				_this46.stackVec3 = newArray20;
-			}
-			_this46.stackVec3[_this46.sizeVec3++] = top;
-		}
-		if(mat35 != null) {
-			var t0010 = 1;
-			var t0110 = 0;
-			var t0210 = 0;
-			var t1010 = 0;
-			var t1110 = 1;
-			var t1210 = 0;
-			var t2010 = 0;
-			var t2110 = 0;
-			var t2210 = 1;
-			mat35.e00 = t0010;
-			mat35.e01 = t0110;
-			mat35.e02 = t0210;
-			mat35.e10 = t1010;
-			mat35.e11 = t1110;
-			mat35.e12 = t1210;
-			mat35.e20 = t2010;
-			mat35.e21 = t2110;
-			mat35.e22 = t2210;
-			if(_this46.sizeMat3 == _this46.stackMat3.length) {
-				var newLength21 = _this46.sizeMat3 << 1;
-				var this22 = new Array(newLength21);
-				var newArray21 = this22;
-				var _g32 = 0;
-				var _g122 = _this46.sizeMat3;
-				while(_g32 < _g122) {
-					var i23 = _g32++;
-					newArray21[i23] = _this46.stackMat3[i23];
-					_this46.stackMat3[i23] = null;
-				}
-				_this46.stackMat3 = newArray21;
-			}
-			_this46.stackMat3[_this46.sizeMat3++] = mat35;
-		}
-		if(mat45 != null) {
-			var t0011 = 1;
-			var t0111 = 0;
-			var t0211 = 0;
-			var t035 = 0;
-			var t1011 = 0;
-			var t1111 = 1;
-			var t1211 = 0;
-			var t135 = 0;
-			var t2011 = 0;
-			var t2111 = 0;
-			var t2211 = 1;
-			var t235 = 0;
-			var t305 = 0;
-			var t315 = 0;
-			var t325 = 0;
-			var t335 = 1;
-			mat45.e00 = t0011;
-			mat45.e01 = t0111;
-			mat45.e02 = t0211;
-			mat45.e03 = t035;
-			mat45.e10 = t1011;
-			mat45.e11 = t1111;
-			mat45.e12 = t1211;
-			mat45.e13 = t135;
-			mat45.e20 = t2011;
-			mat45.e21 = t2111;
-			mat45.e22 = t2211;
-			mat45.e23 = t235;
-			mat45.e30 = t305;
-			mat45.e31 = t315;
-			mat45.e32 = t325;
-			mat45.e33 = t335;
-			if(_this46.sizeMat4 == _this46.stackMat4.length) {
-				var newLength22 = _this46.sizeMat4 << 1;
-				var this23 = new Array(newLength22);
-				var newArray22 = this23;
-				var _g33 = 0;
-				var _g123 = _this46.sizeMat4;
-				while(_g33 < _g123) {
-					var i24 = _g33++;
-					newArray22[i24] = _this46.stackMat4[i24];
-					_this46.stackMat4[i24] = null;
-				}
-				_this46.stackMat4 = newArray22;
-			}
-			_this46.stackMat4[_this46.sizeMat4++] = mat45;
-		}
-		if(quat5 != null) {
-			var tx24 = 0;
-			var ty24 = 0;
-			var tz24 = 0;
-			var tw5 = 1;
-			quat5.x = tx24;
-			quat5.y = ty24;
-			quat5.z = tz24;
-			quat5.w = tw5;
-			if(_this46.sizeQuat == _this46.stackQuat.length) {
-				var newLength23 = _this46.sizeQuat << 1;
-				var this24 = new Array(newLength23);
-				var newArray23 = this24;
-				var _g34 = 0;
-				var _g124 = _this46.sizeQuat;
-				while(_g34 < _g124) {
-					var i25 = _g34++;
-					newArray23[i25] = _this46.stackQuat[i25];
-					_this46.stackQuat[i25] = null;
-				}
-				_this46.stackQuat = newArray23;
-			}
-			_this46.stackQuat[_this46.sizeQuat++] = quat5;
-		}
-		var _this47 = this.p;
-		var mat36 = null;
-		var mat46 = null;
-		var quat6 = null;
-		if(bottom != null) {
-			bottom.zero();
-			if(_this47.sizeVec3 == _this47.stackVec3.length) {
-				var newLength24 = _this47.sizeVec3 << 1;
-				var this25 = new Array(newLength24);
-				var newArray24 = this25;
-				var _g35 = 0;
-				var _g125 = _this47.sizeVec3;
-				while(_g35 < _g125) {
-					var i26 = _g35++;
-					newArray24[i26] = _this47.stackVec3[i26];
-					_this47.stackVec3[i26] = null;
-				}
-				_this47.stackVec3 = newArray24;
-			}
-			_this47.stackVec3[_this47.sizeVec3++] = bottom;
-		}
-		if(mat36 != null) {
-			var t0012 = 1;
-			var t0112 = 0;
-			var t0212 = 0;
-			var t1012 = 0;
-			var t1112 = 1;
-			var t1212 = 0;
-			var t2012 = 0;
-			var t2112 = 0;
-			var t2212 = 1;
-			mat36.e00 = t0012;
-			mat36.e01 = t0112;
-			mat36.e02 = t0212;
-			mat36.e10 = t1012;
-			mat36.e11 = t1112;
-			mat36.e12 = t1212;
-			mat36.e20 = t2012;
-			mat36.e21 = t2112;
-			mat36.e22 = t2212;
-			if(_this47.sizeMat3 == _this47.stackMat3.length) {
-				var newLength25 = _this47.sizeMat3 << 1;
-				var this26 = new Array(newLength25);
-				var newArray25 = this26;
-				var _g36 = 0;
-				var _g126 = _this47.sizeMat3;
-				while(_g36 < _g126) {
-					var i27 = _g36++;
-					newArray25[i27] = _this47.stackMat3[i27];
-					_this47.stackMat3[i27] = null;
-				}
-				_this47.stackMat3 = newArray25;
-			}
-			_this47.stackMat3[_this47.sizeMat3++] = mat36;
-		}
-		if(mat46 != null) {
-			var t0013 = 1;
-			var t0113 = 0;
-			var t0213 = 0;
-			var t036 = 0;
-			var t1013 = 0;
-			var t1113 = 1;
-			var t1213 = 0;
-			var t136 = 0;
-			var t2013 = 0;
-			var t2113 = 0;
-			var t2213 = 1;
-			var t236 = 0;
-			var t306 = 0;
-			var t316 = 0;
-			var t326 = 0;
-			var t336 = 1;
-			mat46.e00 = t0013;
-			mat46.e01 = t0113;
-			mat46.e02 = t0213;
-			mat46.e03 = t036;
-			mat46.e10 = t1013;
-			mat46.e11 = t1113;
-			mat46.e12 = t1213;
-			mat46.e13 = t136;
-			mat46.e20 = t2013;
-			mat46.e21 = t2113;
-			mat46.e22 = t2213;
-			mat46.e23 = t236;
-			mat46.e30 = t306;
-			mat46.e31 = t316;
-			mat46.e32 = t326;
-			mat46.e33 = t336;
-			if(_this47.sizeMat4 == _this47.stackMat4.length) {
-				var newLength26 = _this47.sizeMat4 << 1;
-				var this27 = new Array(newLength26);
-				var newArray26 = this27;
-				var _g37 = 0;
-				var _g127 = _this47.sizeMat4;
-				while(_g37 < _g127) {
-					var i28 = _g37++;
-					newArray26[i28] = _this47.stackMat4[i28];
-					_this47.stackMat4[i28] = null;
-				}
-				_this47.stackMat4 = newArray26;
-			}
-			_this47.stackMat4[_this47.sizeMat4++] = mat46;
-		}
-		if(quat6 != null) {
-			var tx25 = 0;
-			var ty25 = 0;
-			var tz25 = 0;
-			var tw6 = 1;
-			quat6.x = tx25;
-			quat6.y = ty25;
-			quat6.z = tz25;
-			quat6.w = tw6;
-			if(_this47.sizeQuat == _this47.stackQuat.length) {
-				var newLength27 = _this47.sizeQuat << 1;
-				var this28 = new Array(newLength27);
-				var newArray27 = this28;
-				var _g38 = 0;
-				var _g128 = _this47.sizeQuat;
-				while(_g38 < _g128) {
-					var i29 = _g38++;
-					newArray27[i29] = _this47.stackQuat[i29];
-					_this47.stackQuat[i29] = null;
-				}
-				_this47.stackQuat = newArray27;
-			}
-			_this47.stackQuat[_this47.sizeQuat++] = quat6;
-		}
-		var _this48 = this.p;
-		var mat37 = null;
-		var mat47 = null;
-		var quat7 = null;
-		if(o != null) {
-			o.zero();
-			if(_this48.sizeVec3 == _this48.stackVec3.length) {
-				var newLength28 = _this48.sizeVec3 << 1;
-				var this29 = new Array(newLength28);
-				var newArray28 = this29;
-				var _g39 = 0;
-				var _g129 = _this48.sizeVec3;
-				while(_g39 < _g129) {
-					var i30 = _g39++;
-					newArray28[i30] = _this48.stackVec3[i30];
-					_this48.stackVec3[i30] = null;
-				}
-				_this48.stackVec3 = newArray28;
-			}
-			_this48.stackVec3[_this48.sizeVec3++] = o;
-		}
-		if(mat37 != null) {
-			var t0014 = 1;
-			var t0114 = 0;
-			var t0214 = 0;
-			var t1014 = 0;
-			var t1114 = 1;
-			var t1214 = 0;
-			var t2014 = 0;
-			var t2114 = 0;
-			var t2214 = 1;
-			mat37.e00 = t0014;
-			mat37.e01 = t0114;
-			mat37.e02 = t0214;
-			mat37.e10 = t1014;
-			mat37.e11 = t1114;
-			mat37.e12 = t1214;
-			mat37.e20 = t2014;
-			mat37.e21 = t2114;
-			mat37.e22 = t2214;
-			if(_this48.sizeMat3 == _this48.stackMat3.length) {
-				var newLength29 = _this48.sizeMat3 << 1;
-				var this30 = new Array(newLength29);
-				var newArray29 = this30;
-				var _g40 = 0;
-				var _g130 = _this48.sizeMat3;
-				while(_g40 < _g130) {
-					var i31 = _g40++;
-					newArray29[i31] = _this48.stackMat3[i31];
-					_this48.stackMat3[i31] = null;
-				}
-				_this48.stackMat3 = newArray29;
-			}
-			_this48.stackMat3[_this48.sizeMat3++] = mat37;
-		}
-		if(mat47 != null) {
-			var t0015 = 1;
-			var t0115 = 0;
-			var t0215 = 0;
-			var t037 = 0;
-			var t1015 = 0;
-			var t1115 = 1;
-			var t1215 = 0;
-			var t137 = 0;
-			var t2015 = 0;
-			var t2115 = 0;
-			var t2215 = 1;
-			var t237 = 0;
-			var t307 = 0;
-			var t317 = 0;
-			var t327 = 0;
-			var t337 = 1;
-			mat47.e00 = t0015;
-			mat47.e01 = t0115;
-			mat47.e02 = t0215;
-			mat47.e03 = t037;
-			mat47.e10 = t1015;
-			mat47.e11 = t1115;
-			mat47.e12 = t1215;
-			mat47.e13 = t137;
-			mat47.e20 = t2015;
-			mat47.e21 = t2115;
-			mat47.e22 = t2215;
-			mat47.e23 = t237;
-			mat47.e30 = t307;
-			mat47.e31 = t317;
-			mat47.e32 = t327;
-			mat47.e33 = t337;
-			if(_this48.sizeMat4 == _this48.stackMat4.length) {
-				var newLength30 = _this48.sizeMat4 << 1;
-				var this31 = new Array(newLength30);
-				var newArray30 = this31;
-				var _g41 = 0;
-				var _g131 = _this48.sizeMat4;
-				while(_g41 < _g131) {
-					var i32 = _g41++;
-					newArray30[i32] = _this48.stackMat4[i32];
-					_this48.stackMat4[i32] = null;
-				}
-				_this48.stackMat4 = newArray30;
-			}
-			_this48.stackMat4[_this48.sizeMat4++] = mat47;
-		}
-		if(quat7 != null) {
-			var tx26 = 0;
-			var ty26 = 0;
-			var tz26 = 0;
-			var tw7 = 1;
-			quat7.x = tx26;
-			quat7.y = ty26;
-			quat7.z = tz26;
-			quat7.w = tw7;
-			if(_this48.sizeQuat == _this48.stackQuat.length) {
-				var newLength31 = _this48.sizeQuat << 1;
-				var this32 = new Array(newLength31);
-				var newArray31 = this32;
-				var _g42 = 0;
-				var _g132 = _this48.sizeQuat;
-				while(_g42 < _g132) {
-					var i33 = _g42++;
-					newArray31[i33] = _this48.stackQuat[i33];
-					_this48.stackQuat[i33] = null;
-				}
-				_this48.stackQuat = newArray31;
-			}
-			_this48.stackQuat[_this48.sizeQuat++] = quat7;
-		}
-		var _this49 = this.p;
-		var vec3 = null;
-		var mat48 = null;
-		var quat8 = null;
-		if(vec3 != null) {
-			vec3.zero();
-			if(_this49.sizeVec3 == _this49.stackVec3.length) {
-				var newLength32 = _this49.sizeVec3 << 1;
-				var this33 = new Array(newLength32);
-				var newArray32 = this33;
-				var _g43 = 0;
-				var _g133 = _this49.sizeVec3;
-				while(_g43 < _g133) {
-					var i34 = _g43++;
-					newArray32[i34] = _this49.stackVec3[i34];
-					_this49.stackVec3[i34] = null;
-				}
-				_this49.stackVec3 = newArray32;
-			}
-			_this49.stackVec3[_this49.sizeVec3++] = vec3;
-		}
-		if(m != null) {
-			var t0016 = 1;
-			var t0116 = 0;
-			var t0216 = 0;
-			var t1016 = 0;
-			var t1116 = 1;
-			var t1216 = 0;
-			var t2016 = 0;
-			var t2116 = 0;
-			var t2216 = 1;
-			m.e00 = t0016;
-			m.e01 = t0116;
-			m.e02 = t0216;
-			m.e10 = t1016;
-			m.e11 = t1116;
-			m.e12 = t1216;
-			m.e20 = t2016;
-			m.e21 = t2116;
-			m.e22 = t2216;
-			if(_this49.sizeMat3 == _this49.stackMat3.length) {
-				var newLength33 = _this49.sizeMat3 << 1;
-				var this34 = new Array(newLength33);
-				var newArray33 = this34;
-				var _g44 = 0;
-				var _g134 = _this49.sizeMat3;
-				while(_g44 < _g134) {
-					var i35 = _g44++;
-					newArray33[i35] = _this49.stackMat3[i35];
-					_this49.stackMat3[i35] = null;
-				}
-				_this49.stackMat3 = newArray33;
-			}
-			_this49.stackMat3[_this49.sizeMat3++] = m;
-		}
-		if(mat48 != null) {
-			var t0017 = 1;
-			var t0117 = 0;
-			var t0217 = 0;
-			var t038 = 0;
-			var t1017 = 0;
-			var t1117 = 1;
-			var t1217 = 0;
-			var t138 = 0;
-			var t2017 = 0;
-			var t2117 = 0;
-			var t2217 = 1;
-			var t238 = 0;
-			var t308 = 0;
-			var t318 = 0;
-			var t328 = 0;
-			var t338 = 1;
-			mat48.e00 = t0017;
-			mat48.e01 = t0117;
-			mat48.e02 = t0217;
-			mat48.e03 = t038;
-			mat48.e10 = t1017;
-			mat48.e11 = t1117;
-			mat48.e12 = t1217;
-			mat48.e13 = t138;
-			mat48.e20 = t2017;
-			mat48.e21 = t2117;
-			mat48.e22 = t2217;
-			mat48.e23 = t238;
-			mat48.e30 = t308;
-			mat48.e31 = t318;
-			mat48.e32 = t328;
-			mat48.e33 = t338;
-			if(_this49.sizeMat4 == _this49.stackMat4.length) {
-				var newLength34 = _this49.sizeMat4 << 1;
-				var this35 = new Array(newLength34);
-				var newArray34 = this35;
-				var _g45 = 0;
-				var _g135 = _this49.sizeMat4;
-				while(_g45 < _g135) {
-					var i36 = _g45++;
-					newArray34[i36] = _this49.stackMat4[i36];
-					_this49.stackMat4[i36] = null;
-				}
-				_this49.stackMat4 = newArray34;
-			}
-			_this49.stackMat4[_this49.sizeMat4++] = mat48;
-		}
-		if(quat8 != null) {
-			var tx27 = 0;
-			var ty27 = 0;
-			var tz27 = 0;
-			var tw8 = 1;
-			quat8.x = tx27;
-			quat8.y = ty27;
-			quat8.z = tz27;
-			quat8.w = tw8;
-			if(_this49.sizeQuat == _this49.stackQuat.length) {
-				var newLength35 = _this49.sizeQuat << 1;
-				var this36 = new Array(newLength35);
-				var newArray35 = this36;
-				var _g46 = 0;
-				var _g136 = _this49.sizeQuat;
-				while(_g46 < _g136) {
-					var i37 = _g46++;
-					newArray35[i37] = _this49.stackQuat[i37];
-					_this49.stackQuat[i37] = null;
-				}
-				_this49.stackQuat = newArray35;
-			}
-			_this49.stackQuat[_this49.sizeQuat++] = quat8;
-		}
-		var _this50 = this.p;
-		var mat38 = null;
-		var mat49 = null;
-		var quat9 = null;
-		if(ex != null) {
-			ex.zero();
-			if(_this50.sizeVec3 == _this50.stackVec3.length) {
-				var newLength36 = _this50.sizeVec3 << 1;
-				var this37 = new Array(newLength36);
-				var newArray36 = this37;
-				var _g47 = 0;
-				var _g137 = _this50.sizeVec3;
-				while(_g47 < _g137) {
-					var i38 = _g47++;
-					newArray36[i38] = _this50.stackVec3[i38];
-					_this50.stackVec3[i38] = null;
-				}
-				_this50.stackVec3 = newArray36;
-			}
-			_this50.stackVec3[_this50.sizeVec3++] = ex;
-		}
-		if(mat38 != null) {
-			var t0018 = 1;
-			var t0118 = 0;
-			var t0218 = 0;
-			var t1018 = 0;
-			var t1118 = 1;
-			var t1218 = 0;
-			var t2018 = 0;
-			var t2118 = 0;
-			var t2218 = 1;
-			mat38.e00 = t0018;
-			mat38.e01 = t0118;
-			mat38.e02 = t0218;
-			mat38.e10 = t1018;
-			mat38.e11 = t1118;
-			mat38.e12 = t1218;
-			mat38.e20 = t2018;
-			mat38.e21 = t2118;
-			mat38.e22 = t2218;
-			if(_this50.sizeMat3 == _this50.stackMat3.length) {
-				var newLength37 = _this50.sizeMat3 << 1;
-				var this38 = new Array(newLength37);
-				var newArray37 = this38;
-				var _g48 = 0;
-				var _g138 = _this50.sizeMat3;
-				while(_g48 < _g138) {
-					var i39 = _g48++;
-					newArray37[i39] = _this50.stackMat3[i39];
-					_this50.stackMat3[i39] = null;
-				}
-				_this50.stackMat3 = newArray37;
-			}
-			_this50.stackMat3[_this50.sizeMat3++] = mat38;
-		}
-		if(mat49 != null) {
-			var t0019 = 1;
-			var t0119 = 0;
-			var t0219 = 0;
-			var t039 = 0;
-			var t1019 = 0;
-			var t1119 = 1;
-			var t1219 = 0;
-			var t139 = 0;
-			var t2019 = 0;
-			var t2119 = 0;
-			var t2219 = 1;
-			var t239 = 0;
-			var t309 = 0;
-			var t319 = 0;
-			var t329 = 0;
-			var t339 = 1;
-			mat49.e00 = t0019;
-			mat49.e01 = t0119;
-			mat49.e02 = t0219;
-			mat49.e03 = t039;
-			mat49.e10 = t1019;
-			mat49.e11 = t1119;
-			mat49.e12 = t1219;
-			mat49.e13 = t139;
-			mat49.e20 = t2019;
-			mat49.e21 = t2119;
-			mat49.e22 = t2219;
-			mat49.e23 = t239;
-			mat49.e30 = t309;
-			mat49.e31 = t319;
-			mat49.e32 = t329;
-			mat49.e33 = t339;
-			if(_this50.sizeMat4 == _this50.stackMat4.length) {
-				var newLength38 = _this50.sizeMat4 << 1;
-				var this39 = new Array(newLength38);
-				var newArray38 = this39;
-				var _g49 = 0;
-				var _g139 = _this50.sizeMat4;
-				while(_g49 < _g139) {
-					var i40 = _g49++;
-					newArray38[i40] = _this50.stackMat4[i40];
-					_this50.stackMat4[i40] = null;
-				}
-				_this50.stackMat4 = newArray38;
-			}
-			_this50.stackMat4[_this50.sizeMat4++] = mat49;
-		}
-		if(quat9 != null) {
-			var tx28 = 0;
-			var ty28 = 0;
-			var tz28 = 0;
-			var tw9 = 1;
-			quat9.x = tx28;
-			quat9.y = ty28;
-			quat9.z = tz28;
-			quat9.w = tw9;
-			if(_this50.sizeQuat == _this50.stackQuat.length) {
-				var newLength39 = _this50.sizeQuat << 1;
-				var this40 = new Array(newLength39);
-				var newArray39 = this40;
-				var _g50 = 0;
-				var _g140 = _this50.sizeQuat;
-				while(_g50 < _g140) {
-					var i41 = _g50++;
-					newArray39[i41] = _this50.stackQuat[i41];
-					_this50.stackQuat[i41] = null;
-				}
-				_this50.stackQuat = newArray39;
-			}
-			_this50.stackQuat[_this50.sizeQuat++] = quat9;
-		}
-		var _this51 = this.p;
-		var mat39 = null;
-		var mat410 = null;
-		var quat10 = null;
-		if(ey != null) {
-			ey.zero();
-			if(_this51.sizeVec3 == _this51.stackVec3.length) {
-				var newLength40 = _this51.sizeVec3 << 1;
-				var this41 = new Array(newLength40);
-				var newArray40 = this41;
-				var _g51 = 0;
-				var _g141 = _this51.sizeVec3;
-				while(_g51 < _g141) {
-					var i42 = _g51++;
-					newArray40[i42] = _this51.stackVec3[i42];
-					_this51.stackVec3[i42] = null;
-				}
-				_this51.stackVec3 = newArray40;
-			}
-			_this51.stackVec3[_this51.sizeVec3++] = ey;
-		}
-		if(mat39 != null) {
-			var t0020 = 1;
-			var t0120 = 0;
-			var t0220 = 0;
-			var t1020 = 0;
-			var t1120 = 1;
-			var t1220 = 0;
-			var t2020 = 0;
-			var t2120 = 0;
-			var t2220 = 1;
-			mat39.e00 = t0020;
-			mat39.e01 = t0120;
-			mat39.e02 = t0220;
-			mat39.e10 = t1020;
-			mat39.e11 = t1120;
-			mat39.e12 = t1220;
-			mat39.e20 = t2020;
-			mat39.e21 = t2120;
-			mat39.e22 = t2220;
-			if(_this51.sizeMat3 == _this51.stackMat3.length) {
-				var newLength41 = _this51.sizeMat3 << 1;
-				var this42 = new Array(newLength41);
-				var newArray41 = this42;
-				var _g52 = 0;
-				var _g142 = _this51.sizeMat3;
-				while(_g52 < _g142) {
-					var i43 = _g52++;
-					newArray41[i43] = _this51.stackMat3[i43];
-					_this51.stackMat3[i43] = null;
-				}
-				_this51.stackMat3 = newArray41;
-			}
-			_this51.stackMat3[_this51.sizeMat3++] = mat39;
-		}
-		if(mat410 != null) {
-			var t0021 = 1;
-			var t0121 = 0;
-			var t0221 = 0;
-			var t0310 = 0;
-			var t1021 = 0;
-			var t1121 = 1;
-			var t1221 = 0;
-			var t1310 = 0;
-			var t2021 = 0;
-			var t2121 = 0;
-			var t2221 = 1;
-			var t2310 = 0;
-			var t3010 = 0;
-			var t3110 = 0;
-			var t3210 = 0;
-			var t3310 = 1;
-			mat410.e00 = t0021;
-			mat410.e01 = t0121;
-			mat410.e02 = t0221;
-			mat410.e03 = t0310;
-			mat410.e10 = t1021;
-			mat410.e11 = t1121;
-			mat410.e12 = t1221;
-			mat410.e13 = t1310;
-			mat410.e20 = t2021;
-			mat410.e21 = t2121;
-			mat410.e22 = t2221;
-			mat410.e23 = t2310;
-			mat410.e30 = t3010;
-			mat410.e31 = t3110;
-			mat410.e32 = t3210;
-			mat410.e33 = t3310;
-			if(_this51.sizeMat4 == _this51.stackMat4.length) {
-				var newLength42 = _this51.sizeMat4 << 1;
-				var this43 = new Array(newLength42);
-				var newArray42 = this43;
-				var _g53 = 0;
-				var _g143 = _this51.sizeMat4;
-				while(_g53 < _g143) {
-					var i44 = _g53++;
-					newArray42[i44] = _this51.stackMat4[i44];
-					_this51.stackMat4[i44] = null;
-				}
-				_this51.stackMat4 = newArray42;
-			}
-			_this51.stackMat4[_this51.sizeMat4++] = mat410;
-		}
-		if(quat10 != null) {
-			var tx29 = 0;
-			var ty29 = 0;
-			var tz29 = 0;
-			var tw10 = 1;
-			quat10.x = tx29;
-			quat10.y = ty29;
-			quat10.z = tz29;
-			quat10.w = tw10;
-			if(_this51.sizeQuat == _this51.stackQuat.length) {
-				var newLength43 = _this51.sizeQuat << 1;
-				var this44 = new Array(newLength43);
-				var newArray43 = this44;
-				var _g54 = 0;
-				var _g144 = _this51.sizeQuat;
-				while(_g54 < _g144) {
-					var i45 = _g54++;
-					newArray43[i45] = _this51.stackQuat[i45];
-					_this51.stackQuat[i45] = null;
-				}
-				_this51.stackQuat = newArray43;
-			}
-			_this51.stackQuat[_this51.sizeQuat++] = quat10;
-		}
-		var _this52 = this.p;
-		var mat310 = null;
-		var mat411 = null;
-		var quat11 = null;
-		if(ez != null) {
-			ez.zero();
-			if(_this52.sizeVec3 == _this52.stackVec3.length) {
-				var newLength44 = _this52.sizeVec3 << 1;
-				var this45 = new Array(newLength44);
-				var newArray44 = this45;
-				var _g55 = 0;
-				var _g145 = _this52.sizeVec3;
-				while(_g55 < _g145) {
-					var i46 = _g55++;
-					newArray44[i46] = _this52.stackVec3[i46];
-					_this52.stackVec3[i46] = null;
-				}
-				_this52.stackVec3 = newArray44;
-			}
-			_this52.stackVec3[_this52.sizeVec3++] = ez;
-		}
-		if(mat310 != null) {
-			var t0022 = 1;
-			var t0122 = 0;
-			var t0222 = 0;
-			var t1022 = 0;
-			var t1122 = 1;
-			var t1222 = 0;
-			var t2022 = 0;
-			var t2122 = 0;
-			var t2222 = 1;
-			mat310.e00 = t0022;
-			mat310.e01 = t0122;
-			mat310.e02 = t0222;
-			mat310.e10 = t1022;
-			mat310.e11 = t1122;
-			mat310.e12 = t1222;
-			mat310.e20 = t2022;
-			mat310.e21 = t2122;
-			mat310.e22 = t2222;
-			if(_this52.sizeMat3 == _this52.stackMat3.length) {
-				var newLength45 = _this52.sizeMat3 << 1;
-				var this46 = new Array(newLength45);
-				var newArray45 = this46;
-				var _g56 = 0;
-				var _g146 = _this52.sizeMat3;
-				while(_g56 < _g146) {
-					var i47 = _g56++;
-					newArray45[i47] = _this52.stackMat3[i47];
-					_this52.stackMat3[i47] = null;
-				}
-				_this52.stackMat3 = newArray45;
-			}
-			_this52.stackMat3[_this52.sizeMat3++] = mat310;
-		}
-		if(mat411 != null) {
-			var t0023 = 1;
-			var t0123 = 0;
-			var t0223 = 0;
-			var t0311 = 0;
-			var t1023 = 0;
-			var t1123 = 1;
-			var t1223 = 0;
-			var t1311 = 0;
-			var t2023 = 0;
-			var t2123 = 0;
-			var t2223 = 1;
-			var t2311 = 0;
-			var t3011 = 0;
-			var t3111 = 0;
-			var t3211 = 0;
-			var t3311 = 1;
-			mat411.e00 = t0023;
-			mat411.e01 = t0123;
-			mat411.e02 = t0223;
-			mat411.e03 = t0311;
-			mat411.e10 = t1023;
-			mat411.e11 = t1123;
-			mat411.e12 = t1223;
-			mat411.e13 = t1311;
-			mat411.e20 = t2023;
-			mat411.e21 = t2123;
-			mat411.e22 = t2223;
-			mat411.e23 = t2311;
-			mat411.e30 = t3011;
-			mat411.e31 = t3111;
-			mat411.e32 = t3211;
-			mat411.e33 = t3311;
-			if(_this52.sizeMat4 == _this52.stackMat4.length) {
-				var newLength46 = _this52.sizeMat4 << 1;
-				var this47 = new Array(newLength46);
-				var newArray46 = this47;
-				var _g57 = 0;
-				var _g147 = _this52.sizeMat4;
-				while(_g57 < _g147) {
-					var i48 = _g57++;
-					newArray46[i48] = _this52.stackMat4[i48];
-					_this52.stackMat4[i48] = null;
-				}
-				_this52.stackMat4 = newArray46;
-			}
-			_this52.stackMat4[_this52.sizeMat4++] = mat411;
-		}
-		if(quat11 != null) {
-			var tx30 = 0;
-			var ty30 = 0;
-			var tz30 = 0;
-			var tw11 = 1;
-			quat11.x = tx30;
-			quat11.y = ty30;
-			quat11.z = tz30;
-			quat11.w = tw11;
-			if(_this52.sizeQuat == _this52.stackQuat.length) {
-				var newLength47 = _this52.sizeQuat << 1;
-				var this48 = new Array(newLength47);
-				var newArray47 = this48;
-				var _g58 = 0;
-				var _g148 = _this52.sizeQuat;
-				while(_g58 < _g148) {
-					var i49 = _g58++;
-					newArray47[i49] = _this52.stackQuat[i49];
-					_this52.stackQuat[i49] = null;
-				}
-				_this52.stackQuat = newArray47;
-			}
-			_this52.stackQuat[_this52.sizeQuat++] = quat11;
-		}
-	}
-	cylinder(tf,radius,halfHeight,color) {
-		var _this = this.p;
-		var ex = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-		var _this1 = this.p;
-		var ey = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
-		var _this2 = this.p;
-		var ez = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
-		var _this3 = this.p;
-		var o = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
-		var _this4 = this.p;
-		var m = _this4.sizeMat3 == 0 ? new oimo.common.Mat3() : _this4.stackMat3[--_this4.sizeMat3];
-		var v = o;
-		v.x = tf._positionX;
-		v.y = tf._positionY;
-		v.z = tf._positionZ;
-		var m1 = m;
-		m1.e00 = tf._rotation00;
-		m1.e01 = tf._rotation01;
-		m1.e02 = tf._rotation02;
-		m1.e10 = tf._rotation10;
-		m1.e11 = tf._rotation11;
-		m1.e12 = tf._rotation12;
-		m1.e20 = tf._rotation20;
-		m1.e21 = tf._rotation21;
-		m1.e22 = tf._rotation22;
-		ex.init(m.e00,m.e10,m.e20);
-		ey.init(m.e01,m.e11,m.e21);
-		ez.init(m.e02,m.e12,m.e22);
-		var _this5 = this.p;
-		var _this6 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
-		_this6.x = o.x;
-		_this6.y = o.y;
-		_this6.z = o.z;
-		var _this7 = _this6;
-		var tx = _this7.x + ey.x * halfHeight;
-		var ty = _this7.y + ey.y * halfHeight;
-		var tz = _this7.z + ey.z * halfHeight;
-		_this7.x = tx;
-		_this7.y = ty;
-		_this7.z = tz;
-		var top = _this7;
-		var _this8 = this.p;
-		var _this9 = _this8.sizeVec3 == 0 ? new oimo.common.Vec3() : _this8.stackVec3[--_this8.sizeVec3];
-		_this9.x = o.x;
-		_this9.y = o.y;
-		_this9.z = o.z;
-		var _this10 = _this9;
-		var s = -halfHeight;
-		var tx1 = _this10.x + ey.x * s;
-		var ty1 = _this10.y + ey.y * s;
-		var tz1 = _this10.z + ey.z * s;
-		_this10.x = tx1;
-		_this10.y = ty1;
-		_this10.z = tz1;
-		var bottom = _this10;
-		if(this.wireframe) {
-			var _this11 = this.p;
-			var _this12 = _this11.sizeVec3 == 0 ? new oimo.common.Vec3() : _this11.stackVec3[--_this11.sizeVec3];
-			_this12.x = top.x;
-			_this12.y = top.y;
-			_this12.z = top.z;
-			var _this13 = _this12;
-			var s1 = -radius;
-			var tx2 = _this13.x + ex.x * s1;
-			var ty2 = _this13.y + ex.y * s1;
-			var tz2 = _this13.z + ex.z * s1;
-			_this13.x = tx2;
-			_this13.y = ty2;
-			_this13.z = tz2;
-			var _this14 = _this13;
-			var tx3 = _this14.x + ez.x * 0;
-			var ty3 = _this14.y + ez.y * 0;
-			var tz3 = _this14.z + ez.z * 0;
-			_this14.x = tx3;
-			_this14.y = ty3;
-			_this14.z = tz3;
-			var top1 = _this14;
-			var _this15 = this.p;
-			var _this16 = _this15.sizeVec3 == 0 ? new oimo.common.Vec3() : _this15.stackVec3[--_this15.sizeVec3];
-			_this16.x = top.x;
-			_this16.y = top.y;
-			_this16.z = top.z;
-			var _this17 = _this16;
-			var tx4 = _this17.x + ex.x * radius;
-			var ty4 = _this17.y + ex.y * radius;
-			var tz4 = _this17.z + ex.z * radius;
-			_this17.x = tx4;
-			_this17.y = ty4;
-			_this17.z = tz4;
-			var _this18 = _this17;
-			var tx5 = _this18.x + ez.x * 0;
-			var ty5 = _this18.y + ez.y * 0;
-			var tz5 = _this18.z + ez.z * 0;
-			_this18.x = tx5;
-			_this18.y = ty5;
-			_this18.z = tz5;
-			var top2 = _this18;
-			var _this19 = this.p;
-			var _this20 = _this19.sizeVec3 == 0 ? new oimo.common.Vec3() : _this19.stackVec3[--_this19.sizeVec3];
-			_this20.x = top.x;
-			_this20.y = top.y;
-			_this20.z = top.z;
-			var _this21 = _this20;
-			var tx6 = _this21.x + ex.x * 0;
-			var ty6 = _this21.y + ex.y * 0;
-			var tz6 = _this21.z + ex.z * 0;
-			_this21.x = tx6;
-			_this21.y = ty6;
-			_this21.z = tz6;
-			var _this22 = _this21;
-			var s2 = -radius;
-			var tx7 = _this22.x + ez.x * s2;
-			var ty7 = _this22.y + ez.y * s2;
-			var tz7 = _this22.z + ez.z * s2;
-			_this22.x = tx7;
-			_this22.y = ty7;
-			_this22.z = tz7;
-			var top3 = _this22;
-			var _this23 = this.p;
-			var _this24 = _this23.sizeVec3 == 0 ? new oimo.common.Vec3() : _this23.stackVec3[--_this23.sizeVec3];
-			_this24.x = top.x;
-			_this24.y = top.y;
-			_this24.z = top.z;
-			var _this25 = _this24;
-			var tx8 = _this25.x + ex.x * 0;
-			var ty8 = _this25.y + ex.y * 0;
-			var tz8 = _this25.z + ex.z * 0;
-			_this25.x = tx8;
-			_this25.y = ty8;
-			_this25.z = tz8;
-			var _this26 = _this25;
-			var tx9 = _this26.x + ez.x * radius;
-			var ty9 = _this26.y + ez.y * radius;
-			var tz9 = _this26.z + ez.z * radius;
-			_this26.x = tx9;
-			_this26.y = ty9;
-			_this26.z = tz9;
-			var top4 = _this26;
-			var _this27 = this.p;
-			var _this28 = _this27.sizeVec3 == 0 ? new oimo.common.Vec3() : _this27.stackVec3[--_this27.sizeVec3];
-			_this28.x = bottom.x;
-			_this28.y = bottom.y;
-			_this28.z = bottom.z;
-			var _this29 = _this28;
-			var s3 = -radius;
-			var tx10 = _this29.x + ex.x * s3;
-			var ty10 = _this29.y + ex.y * s3;
-			var tz10 = _this29.z + ex.z * s3;
-			_this29.x = tx10;
-			_this29.y = ty10;
-			_this29.z = tz10;
-			var _this30 = _this29;
-			var tx11 = _this30.x + ez.x * 0;
-			var ty11 = _this30.y + ez.y * 0;
-			var tz11 = _this30.z + ez.z * 0;
-			_this30.x = tx11;
-			_this30.y = ty11;
-			_this30.z = tz11;
-			var bottom1 = _this30;
-			var _this31 = this.p;
-			var _this32 = _this31.sizeVec3 == 0 ? new oimo.common.Vec3() : _this31.stackVec3[--_this31.sizeVec3];
-			_this32.x = bottom.x;
-			_this32.y = bottom.y;
-			_this32.z = bottom.z;
-			var _this33 = _this32;
-			var tx12 = _this33.x + ex.x * radius;
-			var ty12 = _this33.y + ex.y * radius;
-			var tz12 = _this33.z + ex.z * radius;
-			_this33.x = tx12;
-			_this33.y = ty12;
-			_this33.z = tz12;
-			var _this34 = _this33;
-			var tx13 = _this34.x + ez.x * 0;
-			var ty13 = _this34.y + ez.y * 0;
-			var tz13 = _this34.z + ez.z * 0;
-			_this34.x = tx13;
-			_this34.y = ty13;
-			_this34.z = tz13;
-			var bottom2 = _this34;
-			var _this35 = this.p;
-			var _this36 = _this35.sizeVec3 == 0 ? new oimo.common.Vec3() : _this35.stackVec3[--_this35.sizeVec3];
-			_this36.x = bottom.x;
-			_this36.y = bottom.y;
-			_this36.z = bottom.z;
-			var _this37 = _this36;
-			var tx14 = _this37.x + ex.x * 0;
-			var ty14 = _this37.y + ex.y * 0;
-			var tz14 = _this37.z + ex.z * 0;
-			_this37.x = tx14;
-			_this37.y = ty14;
-			_this37.z = tz14;
-			var _this38 = _this37;
-			var s4 = -radius;
-			var tx15 = _this38.x + ez.x * s4;
-			var ty15 = _this38.y + ez.y * s4;
-			var tz15 = _this38.z + ez.z * s4;
-			_this38.x = tx15;
-			_this38.y = ty15;
-			_this38.z = tz15;
-			var bottom3 = _this38;
-			var _this39 = this.p;
-			var _this40 = _this39.sizeVec3 == 0 ? new oimo.common.Vec3() : _this39.stackVec3[--_this39.sizeVec3];
-			_this40.x = bottom.x;
-			_this40.y = bottom.y;
-			_this40.z = bottom.z;
-			var _this41 = _this40;
-			var tx16 = _this41.x + ex.x * 0;
-			var ty16 = _this41.y + ex.y * 0;
-			var tz16 = _this41.z + ex.z * 0;
-			_this41.x = tx16;
-			_this41.y = ty16;
-			_this41.z = tz16;
-			var _this42 = _this41;
-			var tx17 = _this42.x + ez.x * radius;
-			var ty17 = _this42.y + ez.y * radius;
-			var tz17 = _this42.z + ez.z * radius;
-			_this42.x = tx17;
-			_this42.y = ty17;
-			_this42.z = tz17;
-			var bottom4 = _this42;
-			this.ellipse(top,ex,ez,radius,radius,color);
-			this.ellipse(bottom,ex,ez,radius,radius,color);
-			this.line(top1,bottom1,color);
-			this.line(top2,bottom2,color);
-			this.line(top3,bottom3,color);
-			this.line(top4,bottom4,color);
-			var _this43 = this.p;
-			var mat3 = null;
-			var mat4 = null;
-			var quat = null;
-			if(top1 != null) {
-				top1.zero();
-				if(_this43.sizeVec3 == _this43.stackVec3.length) {
-					var newLength = _this43.sizeVec3 << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g = 0;
-					var _g1 = _this43.sizeVec3;
-					while(_g < _g1) {
-						var i = _g++;
-						newArray[i] = _this43.stackVec3[i];
-						_this43.stackVec3[i] = null;
-					}
-					_this43.stackVec3 = newArray;
-				}
-				_this43.stackVec3[_this43.sizeVec3++] = top1;
-			}
-			if(mat3 != null) {
-				var t00 = 1;
-				var t01 = 0;
-				var t02 = 0;
-				var t10 = 0;
-				var t11 = 1;
-				var t12 = 0;
-				var t20 = 0;
-				var t21 = 0;
-				var t22 = 1;
-				mat3.e00 = t00;
-				mat3.e01 = t01;
-				mat3.e02 = t02;
-				mat3.e10 = t10;
-				mat3.e11 = t11;
-				mat3.e12 = t12;
-				mat3.e20 = t20;
-				mat3.e21 = t21;
-				mat3.e22 = t22;
-				if(_this43.sizeMat3 == _this43.stackMat3.length) {
-					var newLength1 = _this43.sizeMat3 << 1;
-					var this2 = new Array(newLength1);
-					var newArray1 = this2;
-					var _g2 = 0;
-					var _g11 = _this43.sizeMat3;
-					while(_g2 < _g11) {
-						var i1 = _g2++;
-						newArray1[i1] = _this43.stackMat3[i1];
-						_this43.stackMat3[i1] = null;
-					}
-					_this43.stackMat3 = newArray1;
-				}
-				_this43.stackMat3[_this43.sizeMat3++] = mat3;
-			}
-			if(mat4 != null) {
-				var t001 = 1;
-				var t011 = 0;
-				var t021 = 0;
-				var t03 = 0;
-				var t101 = 0;
-				var t111 = 1;
-				var t121 = 0;
-				var t13 = 0;
-				var t201 = 0;
-				var t211 = 0;
-				var t221 = 1;
-				var t23 = 0;
-				var t30 = 0;
-				var t31 = 0;
-				var t32 = 0;
-				var t33 = 1;
-				mat4.e00 = t001;
-				mat4.e01 = t011;
-				mat4.e02 = t021;
-				mat4.e03 = t03;
-				mat4.e10 = t101;
-				mat4.e11 = t111;
-				mat4.e12 = t121;
-				mat4.e13 = t13;
-				mat4.e20 = t201;
-				mat4.e21 = t211;
-				mat4.e22 = t221;
-				mat4.e23 = t23;
-				mat4.e30 = t30;
-				mat4.e31 = t31;
-				mat4.e32 = t32;
-				mat4.e33 = t33;
-				if(_this43.sizeMat4 == _this43.stackMat4.length) {
-					var newLength2 = _this43.sizeMat4 << 1;
-					var this3 = new Array(newLength2);
-					var newArray2 = this3;
-					var _g3 = 0;
-					var _g12 = _this43.sizeMat4;
-					while(_g3 < _g12) {
-						var i2 = _g3++;
-						newArray2[i2] = _this43.stackMat4[i2];
-						_this43.stackMat4[i2] = null;
-					}
-					_this43.stackMat4 = newArray2;
-				}
-				_this43.stackMat4[_this43.sizeMat4++] = mat4;
-			}
-			if(quat != null) {
-				var tx18 = 0;
-				var ty18 = 0;
-				var tz18 = 0;
-				var tw = 1;
-				quat.x = tx18;
-				quat.y = ty18;
-				quat.z = tz18;
-				quat.w = tw;
-				if(_this43.sizeQuat == _this43.stackQuat.length) {
-					var newLength3 = _this43.sizeQuat << 1;
-					var this4 = new Array(newLength3);
-					var newArray3 = this4;
-					var _g4 = 0;
-					var _g13 = _this43.sizeQuat;
-					while(_g4 < _g13) {
-						var i3 = _g4++;
-						newArray3[i3] = _this43.stackQuat[i3];
-						_this43.stackQuat[i3] = null;
-					}
-					_this43.stackQuat = newArray3;
-				}
-				_this43.stackQuat[_this43.sizeQuat++] = quat;
-			}
-			var _this44 = this.p;
-			var mat31 = null;
-			var mat41 = null;
-			var quat1 = null;
-			if(top2 != null) {
-				top2.zero();
-				if(_this44.sizeVec3 == _this44.stackVec3.length) {
-					var newLength4 = _this44.sizeVec3 << 1;
-					var this5 = new Array(newLength4);
-					var newArray4 = this5;
-					var _g5 = 0;
-					var _g14 = _this44.sizeVec3;
-					while(_g5 < _g14) {
-						var i4 = _g5++;
-						newArray4[i4] = _this44.stackVec3[i4];
-						_this44.stackVec3[i4] = null;
-					}
-					_this44.stackVec3 = newArray4;
-				}
-				_this44.stackVec3[_this44.sizeVec3++] = top2;
-			}
-			if(mat31 != null) {
-				var t002 = 1;
-				var t012 = 0;
-				var t022 = 0;
-				var t102 = 0;
-				var t112 = 1;
-				var t122 = 0;
-				var t202 = 0;
-				var t212 = 0;
-				var t222 = 1;
-				mat31.e00 = t002;
-				mat31.e01 = t012;
-				mat31.e02 = t022;
-				mat31.e10 = t102;
-				mat31.e11 = t112;
-				mat31.e12 = t122;
-				mat31.e20 = t202;
-				mat31.e21 = t212;
-				mat31.e22 = t222;
-				if(_this44.sizeMat3 == _this44.stackMat3.length) {
-					var newLength5 = _this44.sizeMat3 << 1;
-					var this6 = new Array(newLength5);
-					var newArray5 = this6;
-					var _g6 = 0;
-					var _g15 = _this44.sizeMat3;
-					while(_g6 < _g15) {
-						var i5 = _g6++;
-						newArray5[i5] = _this44.stackMat3[i5];
-						_this44.stackMat3[i5] = null;
-					}
-					_this44.stackMat3 = newArray5;
-				}
-				_this44.stackMat3[_this44.sizeMat3++] = mat31;
-			}
-			if(mat41 != null) {
-				var t003 = 1;
-				var t013 = 0;
-				var t023 = 0;
-				var t031 = 0;
-				var t103 = 0;
-				var t113 = 1;
-				var t123 = 0;
-				var t131 = 0;
-				var t203 = 0;
-				var t213 = 0;
-				var t223 = 1;
-				var t231 = 0;
-				var t301 = 0;
-				var t311 = 0;
-				var t321 = 0;
-				var t331 = 1;
-				mat41.e00 = t003;
-				mat41.e01 = t013;
-				mat41.e02 = t023;
-				mat41.e03 = t031;
-				mat41.e10 = t103;
-				mat41.e11 = t113;
-				mat41.e12 = t123;
-				mat41.e13 = t131;
-				mat41.e20 = t203;
-				mat41.e21 = t213;
-				mat41.e22 = t223;
-				mat41.e23 = t231;
-				mat41.e30 = t301;
-				mat41.e31 = t311;
-				mat41.e32 = t321;
-				mat41.e33 = t331;
-				if(_this44.sizeMat4 == _this44.stackMat4.length) {
-					var newLength6 = _this44.sizeMat4 << 1;
-					var this7 = new Array(newLength6);
-					var newArray6 = this7;
-					var _g7 = 0;
-					var _g16 = _this44.sizeMat4;
-					while(_g7 < _g16) {
-						var i6 = _g7++;
-						newArray6[i6] = _this44.stackMat4[i6];
-						_this44.stackMat4[i6] = null;
-					}
-					_this44.stackMat4 = newArray6;
-				}
-				_this44.stackMat4[_this44.sizeMat4++] = mat41;
-			}
-			if(quat1 != null) {
-				var tx19 = 0;
-				var ty19 = 0;
-				var tz19 = 0;
-				var tw1 = 1;
-				quat1.x = tx19;
-				quat1.y = ty19;
-				quat1.z = tz19;
-				quat1.w = tw1;
-				if(_this44.sizeQuat == _this44.stackQuat.length) {
-					var newLength7 = _this44.sizeQuat << 1;
-					var this8 = new Array(newLength7);
-					var newArray7 = this8;
-					var _g8 = 0;
-					var _g17 = _this44.sizeQuat;
-					while(_g8 < _g17) {
-						var i7 = _g8++;
-						newArray7[i7] = _this44.stackQuat[i7];
-						_this44.stackQuat[i7] = null;
-					}
-					_this44.stackQuat = newArray7;
-				}
-				_this44.stackQuat[_this44.sizeQuat++] = quat1;
-			}
-			var _this45 = this.p;
-			var mat32 = null;
-			var mat42 = null;
-			var quat2 = null;
-			if(top3 != null) {
-				top3.zero();
-				if(_this45.sizeVec3 == _this45.stackVec3.length) {
-					var newLength8 = _this45.sizeVec3 << 1;
-					var this9 = new Array(newLength8);
-					var newArray8 = this9;
-					var _g9 = 0;
-					var _g18 = _this45.sizeVec3;
-					while(_g9 < _g18) {
-						var i8 = _g9++;
-						newArray8[i8] = _this45.stackVec3[i8];
-						_this45.stackVec3[i8] = null;
-					}
-					_this45.stackVec3 = newArray8;
-				}
-				_this45.stackVec3[_this45.sizeVec3++] = top3;
-			}
-			if(mat32 != null) {
-				var t004 = 1;
-				var t014 = 0;
-				var t024 = 0;
-				var t104 = 0;
-				var t114 = 1;
-				var t124 = 0;
-				var t204 = 0;
-				var t214 = 0;
-				var t224 = 1;
-				mat32.e00 = t004;
-				mat32.e01 = t014;
-				mat32.e02 = t024;
-				mat32.e10 = t104;
-				mat32.e11 = t114;
-				mat32.e12 = t124;
-				mat32.e20 = t204;
-				mat32.e21 = t214;
-				mat32.e22 = t224;
-				if(_this45.sizeMat3 == _this45.stackMat3.length) {
-					var newLength9 = _this45.sizeMat3 << 1;
-					var this10 = new Array(newLength9);
-					var newArray9 = this10;
-					var _g10 = 0;
-					var _g19 = _this45.sizeMat3;
-					while(_g10 < _g19) {
-						var i9 = _g10++;
-						newArray9[i9] = _this45.stackMat3[i9];
-						_this45.stackMat3[i9] = null;
-					}
-					_this45.stackMat3 = newArray9;
-				}
-				_this45.stackMat3[_this45.sizeMat3++] = mat32;
-			}
-			if(mat42 != null) {
-				var t005 = 1;
-				var t015 = 0;
-				var t025 = 0;
-				var t032 = 0;
-				var t105 = 0;
-				var t115 = 1;
-				var t125 = 0;
-				var t132 = 0;
-				var t205 = 0;
-				var t215 = 0;
-				var t225 = 1;
-				var t232 = 0;
-				var t302 = 0;
-				var t312 = 0;
-				var t322 = 0;
-				var t332 = 1;
-				mat42.e00 = t005;
-				mat42.e01 = t015;
-				mat42.e02 = t025;
-				mat42.e03 = t032;
-				mat42.e10 = t105;
-				mat42.e11 = t115;
-				mat42.e12 = t125;
-				mat42.e13 = t132;
-				mat42.e20 = t205;
-				mat42.e21 = t215;
-				mat42.e22 = t225;
-				mat42.e23 = t232;
-				mat42.e30 = t302;
-				mat42.e31 = t312;
-				mat42.e32 = t322;
-				mat42.e33 = t332;
-				if(_this45.sizeMat4 == _this45.stackMat4.length) {
-					var newLength10 = _this45.sizeMat4 << 1;
-					var this11 = new Array(newLength10);
-					var newArray10 = this11;
-					var _g20 = 0;
-					var _g110 = _this45.sizeMat4;
-					while(_g20 < _g110) {
-						var i10 = _g20++;
-						newArray10[i10] = _this45.stackMat4[i10];
-						_this45.stackMat4[i10] = null;
-					}
-					_this45.stackMat4 = newArray10;
-				}
-				_this45.stackMat4[_this45.sizeMat4++] = mat42;
-			}
-			if(quat2 != null) {
-				var tx20 = 0;
-				var ty20 = 0;
-				var tz20 = 0;
-				var tw2 = 1;
-				quat2.x = tx20;
-				quat2.y = ty20;
-				quat2.z = tz20;
-				quat2.w = tw2;
-				if(_this45.sizeQuat == _this45.stackQuat.length) {
-					var newLength11 = _this45.sizeQuat << 1;
-					var this12 = new Array(newLength11);
-					var newArray11 = this12;
-					var _g21 = 0;
-					var _g111 = _this45.sizeQuat;
-					while(_g21 < _g111) {
-						var i11 = _g21++;
-						newArray11[i11] = _this45.stackQuat[i11];
-						_this45.stackQuat[i11] = null;
-					}
-					_this45.stackQuat = newArray11;
-				}
-				_this45.stackQuat[_this45.sizeQuat++] = quat2;
-			}
-			var _this46 = this.p;
-			var mat33 = null;
-			var mat43 = null;
-			var quat3 = null;
-			if(top4 != null) {
-				top4.zero();
-				if(_this46.sizeVec3 == _this46.stackVec3.length) {
-					var newLength12 = _this46.sizeVec3 << 1;
-					var this13 = new Array(newLength12);
-					var newArray12 = this13;
-					var _g22 = 0;
-					var _g112 = _this46.sizeVec3;
-					while(_g22 < _g112) {
-						var i12 = _g22++;
-						newArray12[i12] = _this46.stackVec3[i12];
-						_this46.stackVec3[i12] = null;
-					}
-					_this46.stackVec3 = newArray12;
-				}
-				_this46.stackVec3[_this46.sizeVec3++] = top4;
-			}
-			if(mat33 != null) {
-				var t006 = 1;
-				var t016 = 0;
-				var t026 = 0;
-				var t106 = 0;
-				var t116 = 1;
-				var t126 = 0;
-				var t206 = 0;
-				var t216 = 0;
-				var t226 = 1;
-				mat33.e00 = t006;
-				mat33.e01 = t016;
-				mat33.e02 = t026;
-				mat33.e10 = t106;
-				mat33.e11 = t116;
-				mat33.e12 = t126;
-				mat33.e20 = t206;
-				mat33.e21 = t216;
-				mat33.e22 = t226;
-				if(_this46.sizeMat3 == _this46.stackMat3.length) {
-					var newLength13 = _this46.sizeMat3 << 1;
-					var this14 = new Array(newLength13);
-					var newArray13 = this14;
-					var _g23 = 0;
-					var _g113 = _this46.sizeMat3;
-					while(_g23 < _g113) {
-						var i13 = _g23++;
-						newArray13[i13] = _this46.stackMat3[i13];
-						_this46.stackMat3[i13] = null;
-					}
-					_this46.stackMat3 = newArray13;
-				}
-				_this46.stackMat3[_this46.sizeMat3++] = mat33;
-			}
-			if(mat43 != null) {
-				var t007 = 1;
-				var t017 = 0;
-				var t027 = 0;
-				var t033 = 0;
-				var t107 = 0;
-				var t117 = 1;
-				var t127 = 0;
-				var t133 = 0;
-				var t207 = 0;
-				var t217 = 0;
-				var t227 = 1;
-				var t233 = 0;
-				var t303 = 0;
-				var t313 = 0;
-				var t323 = 0;
-				var t333 = 1;
-				mat43.e00 = t007;
-				mat43.e01 = t017;
-				mat43.e02 = t027;
-				mat43.e03 = t033;
-				mat43.e10 = t107;
-				mat43.e11 = t117;
-				mat43.e12 = t127;
-				mat43.e13 = t133;
-				mat43.e20 = t207;
-				mat43.e21 = t217;
-				mat43.e22 = t227;
-				mat43.e23 = t233;
-				mat43.e30 = t303;
-				mat43.e31 = t313;
-				mat43.e32 = t323;
-				mat43.e33 = t333;
-				if(_this46.sizeMat4 == _this46.stackMat4.length) {
-					var newLength14 = _this46.sizeMat4 << 1;
-					var this15 = new Array(newLength14);
-					var newArray14 = this15;
-					var _g24 = 0;
-					var _g114 = _this46.sizeMat4;
-					while(_g24 < _g114) {
-						var i14 = _g24++;
-						newArray14[i14] = _this46.stackMat4[i14];
-						_this46.stackMat4[i14] = null;
-					}
-					_this46.stackMat4 = newArray14;
-				}
-				_this46.stackMat4[_this46.sizeMat4++] = mat43;
-			}
-			if(quat3 != null) {
-				var tx21 = 0;
-				var ty21 = 0;
-				var tz21 = 0;
-				var tw3 = 1;
-				quat3.x = tx21;
-				quat3.y = ty21;
-				quat3.z = tz21;
-				quat3.w = tw3;
-				if(_this46.sizeQuat == _this46.stackQuat.length) {
-					var newLength15 = _this46.sizeQuat << 1;
-					var this16 = new Array(newLength15);
-					var newArray15 = this16;
-					var _g25 = 0;
-					var _g115 = _this46.sizeQuat;
-					while(_g25 < _g115) {
-						var i15 = _g25++;
-						newArray15[i15] = _this46.stackQuat[i15];
-						_this46.stackQuat[i15] = null;
-					}
-					_this46.stackQuat = newArray15;
-				}
-				_this46.stackQuat[_this46.sizeQuat++] = quat3;
-			}
-			var _this47 = this.p;
-			var mat34 = null;
-			var mat44 = null;
-			var quat4 = null;
-			if(bottom1 != null) {
-				bottom1.zero();
-				if(_this47.sizeVec3 == _this47.stackVec3.length) {
-					var newLength16 = _this47.sizeVec3 << 1;
-					var this17 = new Array(newLength16);
-					var newArray16 = this17;
-					var _g26 = 0;
-					var _g116 = _this47.sizeVec3;
-					while(_g26 < _g116) {
-						var i16 = _g26++;
-						newArray16[i16] = _this47.stackVec3[i16];
-						_this47.stackVec3[i16] = null;
-					}
-					_this47.stackVec3 = newArray16;
-				}
-				_this47.stackVec3[_this47.sizeVec3++] = bottom1;
-			}
-			if(mat34 != null) {
-				var t008 = 1;
-				var t018 = 0;
-				var t028 = 0;
-				var t108 = 0;
-				var t118 = 1;
-				var t128 = 0;
-				var t208 = 0;
-				var t218 = 0;
-				var t228 = 1;
-				mat34.e00 = t008;
-				mat34.e01 = t018;
-				mat34.e02 = t028;
-				mat34.e10 = t108;
-				mat34.e11 = t118;
-				mat34.e12 = t128;
-				mat34.e20 = t208;
-				mat34.e21 = t218;
-				mat34.e22 = t228;
-				if(_this47.sizeMat3 == _this47.stackMat3.length) {
-					var newLength17 = _this47.sizeMat3 << 1;
-					var this18 = new Array(newLength17);
-					var newArray17 = this18;
-					var _g27 = 0;
-					var _g117 = _this47.sizeMat3;
-					while(_g27 < _g117) {
-						var i17 = _g27++;
-						newArray17[i17] = _this47.stackMat3[i17];
-						_this47.stackMat3[i17] = null;
-					}
-					_this47.stackMat3 = newArray17;
-				}
-				_this47.stackMat3[_this47.sizeMat3++] = mat34;
-			}
-			if(mat44 != null) {
-				var t009 = 1;
-				var t019 = 0;
-				var t029 = 0;
-				var t034 = 0;
-				var t109 = 0;
-				var t119 = 1;
-				var t129 = 0;
-				var t134 = 0;
-				var t209 = 0;
-				var t219 = 0;
-				var t229 = 1;
-				var t234 = 0;
-				var t304 = 0;
-				var t314 = 0;
-				var t324 = 0;
-				var t334 = 1;
-				mat44.e00 = t009;
-				mat44.e01 = t019;
-				mat44.e02 = t029;
-				mat44.e03 = t034;
-				mat44.e10 = t109;
-				mat44.e11 = t119;
-				mat44.e12 = t129;
-				mat44.e13 = t134;
-				mat44.e20 = t209;
-				mat44.e21 = t219;
-				mat44.e22 = t229;
-				mat44.e23 = t234;
-				mat44.e30 = t304;
-				mat44.e31 = t314;
-				mat44.e32 = t324;
-				mat44.e33 = t334;
-				if(_this47.sizeMat4 == _this47.stackMat4.length) {
-					var newLength18 = _this47.sizeMat4 << 1;
-					var this19 = new Array(newLength18);
-					var newArray18 = this19;
-					var _g28 = 0;
-					var _g118 = _this47.sizeMat4;
-					while(_g28 < _g118) {
-						var i18 = _g28++;
-						newArray18[i18] = _this47.stackMat4[i18];
-						_this47.stackMat4[i18] = null;
-					}
-					_this47.stackMat4 = newArray18;
-				}
-				_this47.stackMat4[_this47.sizeMat4++] = mat44;
-			}
-			if(quat4 != null) {
-				var tx22 = 0;
-				var ty22 = 0;
-				var tz22 = 0;
-				var tw4 = 1;
-				quat4.x = tx22;
-				quat4.y = ty22;
-				quat4.z = tz22;
-				quat4.w = tw4;
-				if(_this47.sizeQuat == _this47.stackQuat.length) {
-					var newLength19 = _this47.sizeQuat << 1;
-					var this20 = new Array(newLength19);
-					var newArray19 = this20;
-					var _g29 = 0;
-					var _g119 = _this47.sizeQuat;
-					while(_g29 < _g119) {
-						var i19 = _g29++;
-						newArray19[i19] = _this47.stackQuat[i19];
-						_this47.stackQuat[i19] = null;
-					}
-					_this47.stackQuat = newArray19;
-				}
-				_this47.stackQuat[_this47.sizeQuat++] = quat4;
-			}
-			var _this48 = this.p;
-			var mat35 = null;
-			var mat45 = null;
-			var quat5 = null;
-			if(bottom2 != null) {
-				bottom2.zero();
-				if(_this48.sizeVec3 == _this48.stackVec3.length) {
-					var newLength20 = _this48.sizeVec3 << 1;
-					var this21 = new Array(newLength20);
-					var newArray20 = this21;
-					var _g30 = 0;
-					var _g120 = _this48.sizeVec3;
-					while(_g30 < _g120) {
-						var i20 = _g30++;
-						newArray20[i20] = _this48.stackVec3[i20];
-						_this48.stackVec3[i20] = null;
-					}
-					_this48.stackVec3 = newArray20;
-				}
-				_this48.stackVec3[_this48.sizeVec3++] = bottom2;
-			}
-			if(mat35 != null) {
-				var t0010 = 1;
-				var t0110 = 0;
-				var t0210 = 0;
-				var t1010 = 0;
-				var t1110 = 1;
-				var t1210 = 0;
-				var t2010 = 0;
-				var t2110 = 0;
-				var t2210 = 1;
-				mat35.e00 = t0010;
-				mat35.e01 = t0110;
-				mat35.e02 = t0210;
-				mat35.e10 = t1010;
-				mat35.e11 = t1110;
-				mat35.e12 = t1210;
-				mat35.e20 = t2010;
-				mat35.e21 = t2110;
-				mat35.e22 = t2210;
-				if(_this48.sizeMat3 == _this48.stackMat3.length) {
-					var newLength21 = _this48.sizeMat3 << 1;
-					var this22 = new Array(newLength21);
-					var newArray21 = this22;
-					var _g31 = 0;
-					var _g121 = _this48.sizeMat3;
-					while(_g31 < _g121) {
-						var i21 = _g31++;
-						newArray21[i21] = _this48.stackMat3[i21];
-						_this48.stackMat3[i21] = null;
-					}
-					_this48.stackMat3 = newArray21;
-				}
-				_this48.stackMat3[_this48.sizeMat3++] = mat35;
-			}
-			if(mat45 != null) {
-				var t0011 = 1;
-				var t0111 = 0;
-				var t0211 = 0;
-				var t035 = 0;
-				var t1011 = 0;
-				var t1111 = 1;
-				var t1211 = 0;
-				var t135 = 0;
-				var t2011 = 0;
-				var t2111 = 0;
-				var t2211 = 1;
-				var t235 = 0;
-				var t305 = 0;
-				var t315 = 0;
-				var t325 = 0;
-				var t335 = 1;
-				mat45.e00 = t0011;
-				mat45.e01 = t0111;
-				mat45.e02 = t0211;
-				mat45.e03 = t035;
-				mat45.e10 = t1011;
-				mat45.e11 = t1111;
-				mat45.e12 = t1211;
-				mat45.e13 = t135;
-				mat45.e20 = t2011;
-				mat45.e21 = t2111;
-				mat45.e22 = t2211;
-				mat45.e23 = t235;
-				mat45.e30 = t305;
-				mat45.e31 = t315;
-				mat45.e32 = t325;
-				mat45.e33 = t335;
-				if(_this48.sizeMat4 == _this48.stackMat4.length) {
-					var newLength22 = _this48.sizeMat4 << 1;
-					var this23 = new Array(newLength22);
-					var newArray22 = this23;
-					var _g32 = 0;
-					var _g122 = _this48.sizeMat4;
-					while(_g32 < _g122) {
-						var i22 = _g32++;
-						newArray22[i22] = _this48.stackMat4[i22];
-						_this48.stackMat4[i22] = null;
-					}
-					_this48.stackMat4 = newArray22;
-				}
-				_this48.stackMat4[_this48.sizeMat4++] = mat45;
-			}
-			if(quat5 != null) {
-				var tx23 = 0;
-				var ty23 = 0;
-				var tz23 = 0;
-				var tw5 = 1;
-				quat5.x = tx23;
-				quat5.y = ty23;
-				quat5.z = tz23;
-				quat5.w = tw5;
-				if(_this48.sizeQuat == _this48.stackQuat.length) {
-					var newLength23 = _this48.sizeQuat << 1;
-					var this24 = new Array(newLength23);
-					var newArray23 = this24;
-					var _g33 = 0;
-					var _g123 = _this48.sizeQuat;
-					while(_g33 < _g123) {
-						var i23 = _g33++;
-						newArray23[i23] = _this48.stackQuat[i23];
-						_this48.stackQuat[i23] = null;
-					}
-					_this48.stackQuat = newArray23;
-				}
-				_this48.stackQuat[_this48.sizeQuat++] = quat5;
-			}
-			var _this49 = this.p;
-			var mat36 = null;
-			var mat46 = null;
-			var quat6 = null;
-			if(bottom3 != null) {
-				bottom3.zero();
-				if(_this49.sizeVec3 == _this49.stackVec3.length) {
-					var newLength24 = _this49.sizeVec3 << 1;
-					var this25 = new Array(newLength24);
-					var newArray24 = this25;
-					var _g34 = 0;
-					var _g124 = _this49.sizeVec3;
-					while(_g34 < _g124) {
-						var i24 = _g34++;
-						newArray24[i24] = _this49.stackVec3[i24];
-						_this49.stackVec3[i24] = null;
-					}
-					_this49.stackVec3 = newArray24;
-				}
-				_this49.stackVec3[_this49.sizeVec3++] = bottom3;
-			}
-			if(mat36 != null) {
-				var t0012 = 1;
-				var t0112 = 0;
-				var t0212 = 0;
-				var t1012 = 0;
-				var t1112 = 1;
-				var t1212 = 0;
-				var t2012 = 0;
-				var t2112 = 0;
-				var t2212 = 1;
-				mat36.e00 = t0012;
-				mat36.e01 = t0112;
-				mat36.e02 = t0212;
-				mat36.e10 = t1012;
-				mat36.e11 = t1112;
-				mat36.e12 = t1212;
-				mat36.e20 = t2012;
-				mat36.e21 = t2112;
-				mat36.e22 = t2212;
-				if(_this49.sizeMat3 == _this49.stackMat3.length) {
-					var newLength25 = _this49.sizeMat3 << 1;
-					var this26 = new Array(newLength25);
-					var newArray25 = this26;
-					var _g35 = 0;
-					var _g125 = _this49.sizeMat3;
-					while(_g35 < _g125) {
-						var i25 = _g35++;
-						newArray25[i25] = _this49.stackMat3[i25];
-						_this49.stackMat3[i25] = null;
-					}
-					_this49.stackMat3 = newArray25;
-				}
-				_this49.stackMat3[_this49.sizeMat3++] = mat36;
-			}
-			if(mat46 != null) {
-				var t0013 = 1;
-				var t0113 = 0;
-				var t0213 = 0;
-				var t036 = 0;
-				var t1013 = 0;
-				var t1113 = 1;
-				var t1213 = 0;
-				var t136 = 0;
-				var t2013 = 0;
-				var t2113 = 0;
-				var t2213 = 1;
-				var t236 = 0;
-				var t306 = 0;
-				var t316 = 0;
-				var t326 = 0;
-				var t336 = 1;
-				mat46.e00 = t0013;
-				mat46.e01 = t0113;
-				mat46.e02 = t0213;
-				mat46.e03 = t036;
-				mat46.e10 = t1013;
-				mat46.e11 = t1113;
-				mat46.e12 = t1213;
-				mat46.e13 = t136;
-				mat46.e20 = t2013;
-				mat46.e21 = t2113;
-				mat46.e22 = t2213;
-				mat46.e23 = t236;
-				mat46.e30 = t306;
-				mat46.e31 = t316;
-				mat46.e32 = t326;
-				mat46.e33 = t336;
-				if(_this49.sizeMat4 == _this49.stackMat4.length) {
-					var newLength26 = _this49.sizeMat4 << 1;
-					var this27 = new Array(newLength26);
-					var newArray26 = this27;
-					var _g36 = 0;
-					var _g126 = _this49.sizeMat4;
-					while(_g36 < _g126) {
-						var i26 = _g36++;
-						newArray26[i26] = _this49.stackMat4[i26];
-						_this49.stackMat4[i26] = null;
-					}
-					_this49.stackMat4 = newArray26;
-				}
-				_this49.stackMat4[_this49.sizeMat4++] = mat46;
-			}
-			if(quat6 != null) {
-				var tx24 = 0;
-				var ty24 = 0;
-				var tz24 = 0;
-				var tw6 = 1;
-				quat6.x = tx24;
-				quat6.y = ty24;
-				quat6.z = tz24;
-				quat6.w = tw6;
-				if(_this49.sizeQuat == _this49.stackQuat.length) {
-					var newLength27 = _this49.sizeQuat << 1;
-					var this28 = new Array(newLength27);
-					var newArray27 = this28;
-					var _g37 = 0;
-					var _g127 = _this49.sizeQuat;
-					while(_g37 < _g127) {
-						var i27 = _g37++;
-						newArray27[i27] = _this49.stackQuat[i27];
-						_this49.stackQuat[i27] = null;
-					}
-					_this49.stackQuat = newArray27;
-				}
-				_this49.stackQuat[_this49.sizeQuat++] = quat6;
-			}
-			var _this50 = this.p;
-			var mat37 = null;
-			var mat47 = null;
-			var quat7 = null;
-			if(bottom4 != null) {
-				bottom4.zero();
-				if(_this50.sizeVec3 == _this50.stackVec3.length) {
-					var newLength28 = _this50.sizeVec3 << 1;
-					var this29 = new Array(newLength28);
-					var newArray28 = this29;
-					var _g38 = 0;
-					var _g128 = _this50.sizeVec3;
-					while(_g38 < _g128) {
-						var i28 = _g38++;
-						newArray28[i28] = _this50.stackVec3[i28];
-						_this50.stackVec3[i28] = null;
-					}
-					_this50.stackVec3 = newArray28;
-				}
-				_this50.stackVec3[_this50.sizeVec3++] = bottom4;
-			}
-			if(mat37 != null) {
-				var t0014 = 1;
-				var t0114 = 0;
-				var t0214 = 0;
-				var t1014 = 0;
-				var t1114 = 1;
-				var t1214 = 0;
-				var t2014 = 0;
-				var t2114 = 0;
-				var t2214 = 1;
-				mat37.e00 = t0014;
-				mat37.e01 = t0114;
-				mat37.e02 = t0214;
-				mat37.e10 = t1014;
-				mat37.e11 = t1114;
-				mat37.e12 = t1214;
-				mat37.e20 = t2014;
-				mat37.e21 = t2114;
-				mat37.e22 = t2214;
-				if(_this50.sizeMat3 == _this50.stackMat3.length) {
-					var newLength29 = _this50.sizeMat3 << 1;
-					var this30 = new Array(newLength29);
-					var newArray29 = this30;
-					var _g39 = 0;
-					var _g129 = _this50.sizeMat3;
-					while(_g39 < _g129) {
-						var i29 = _g39++;
-						newArray29[i29] = _this50.stackMat3[i29];
-						_this50.stackMat3[i29] = null;
-					}
-					_this50.stackMat3 = newArray29;
-				}
-				_this50.stackMat3[_this50.sizeMat3++] = mat37;
-			}
-			if(mat47 != null) {
-				var t0015 = 1;
-				var t0115 = 0;
-				var t0215 = 0;
-				var t037 = 0;
-				var t1015 = 0;
-				var t1115 = 1;
-				var t1215 = 0;
-				var t137 = 0;
-				var t2015 = 0;
-				var t2115 = 0;
-				var t2215 = 1;
-				var t237 = 0;
-				var t307 = 0;
-				var t317 = 0;
-				var t327 = 0;
-				var t337 = 1;
-				mat47.e00 = t0015;
-				mat47.e01 = t0115;
-				mat47.e02 = t0215;
-				mat47.e03 = t037;
-				mat47.e10 = t1015;
-				mat47.e11 = t1115;
-				mat47.e12 = t1215;
-				mat47.e13 = t137;
-				mat47.e20 = t2015;
-				mat47.e21 = t2115;
-				mat47.e22 = t2215;
-				mat47.e23 = t237;
-				mat47.e30 = t307;
-				mat47.e31 = t317;
-				mat47.e32 = t327;
-				mat47.e33 = t337;
-				if(_this50.sizeMat4 == _this50.stackMat4.length) {
-					var newLength30 = _this50.sizeMat4 << 1;
-					var this31 = new Array(newLength30);
-					var newArray30 = this31;
-					var _g40 = 0;
-					var _g130 = _this50.sizeMat4;
-					while(_g40 < _g130) {
-						var i30 = _g40++;
-						newArray30[i30] = _this50.stackMat4[i30];
-						_this50.stackMat4[i30] = null;
-					}
-					_this50.stackMat4 = newArray30;
-				}
-				_this50.stackMat4[_this50.sizeMat4++] = mat47;
-			}
-			if(quat7 != null) {
-				var tx25 = 0;
-				var ty25 = 0;
-				var tz25 = 0;
-				var tw7 = 1;
-				quat7.x = tx25;
-				quat7.y = ty25;
-				quat7.z = tz25;
-				quat7.w = tw7;
-				if(_this50.sizeQuat == _this50.stackQuat.length) {
-					var newLength31 = _this50.sizeQuat << 1;
-					var this32 = new Array(newLength31);
-					var newArray31 = this32;
-					var _g41 = 0;
-					var _g131 = _this50.sizeQuat;
-					while(_g41 < _g131) {
-						var i31 = _g41++;
-						newArray31[i31] = _this50.stackQuat[i31];
-						_this50.stackQuat[i31] = null;
-					}
-					_this50.stackQuat = newArray31;
-				}
-				_this50.stackQuat[_this50.sizeQuat++] = quat7;
-			}
-		} else {
-			var _g42 = 0;
-			while(_g42 < 8) {
-				var i32 = _g42++;
-				var _this51 = this.tmpCircleNorms[i32];
-				var v1 = this.circleCoords[i32];
-				_this51.x = v1.x;
-				_this51.y = v1.y;
-				_this51.z = v1.z;
-				var _this52 = _this51;
-				var tx26 = _this52.x * m.e00 + _this52.y * m.e01 + _this52.z * m.e02;
-				var ty26 = _this52.x * m.e10 + _this52.y * m.e11 + _this52.z * m.e12;
-				var tz26 = _this52.x * m.e20 + _this52.y * m.e21 + _this52.z * m.e22;
-				_this52.x = tx26;
-				_this52.y = ty26;
-				_this52.z = tz26;
-				var _this53 = this.tmpCircleVerts1[i32];
-				var v2 = this.tmpCircleNorms[i32];
-				_this53.x = v2.x;
-				_this53.y = v2.y;
-				_this53.z = v2.z;
-				var _this54 = _this53;
-				var tx27 = _this54.x * radius;
-				var ty27 = _this54.y * radius;
-				var tz27 = _this54.z * radius;
-				_this54.x = tx27;
-				_this54.y = ty27;
-				_this54.z = tz27;
-				var _this55 = _this54;
-				var tx28 = _this55.x + o.x;
-				var ty28 = _this55.y + o.y;
-				var tz28 = _this55.z + o.z;
-				_this55.x = tx28;
-				_this55.y = ty28;
-				_this55.z = tz28;
-				var _this56 = this.tmpCircleVerts2[i32];
-				var v3 = this.tmpCircleVerts1[i32];
-				_this56.x = v3.x;
-				_this56.y = v3.y;
-				_this56.z = v3.z;
-				var _this57 = this.tmpCircleVerts1[i32];
-				var tx29 = _this57.x + ey.x * halfHeight;
-				var ty29 = _this57.y + ey.y * halfHeight;
-				var tz29 = _this57.z + ey.z * halfHeight;
-				_this57.x = tx29;
-				_this57.y = ty29;
-				_this57.z = tz29;
-				var _this58 = this.tmpCircleVerts2[i32];
-				var s5 = -halfHeight;
-				var tx30 = _this58.x + ey.x * s5;
-				var ty30 = _this58.y + ey.y * s5;
-				var tz30 = _this58.z + ey.z * s5;
-				_this58.x = tx30;
-				_this58.y = ty30;
-				_this58.z = tz30;
-			}
-			var _g132 = 0;
-			while(_g132 < 8) {
-				var i33 = _g132++;
-				var n3;
-				var n4;
-				var v11 = top;
-				var v21 = this.tmpCircleVerts1[i33];
-				var v31 = this.tmpCircleVerts1[(i33 + 1) % 8];
-				var n1 = ey;
-				this.triangle(v11,v21,v31,n1,n1,n1,color);
-				v11 = bottom;
-				v21 = this.tmpCircleVerts2[(i33 + 1) % 8];
-				v31 = this.tmpCircleVerts2[i33];
-				var _this59 = this.p;
-				var _this60 = _this59.sizeVec3 == 0 ? new oimo.common.Vec3() : _this59.stackVec3[--_this59.sizeVec3];
-				_this60.x = ey.x;
-				_this60.y = ey.y;
-				_this60.z = ey.z;
-				var _this61 = _this60;
-				var tx31 = -_this61.x;
-				var ty31 = -_this61.y;
-				var tz31 = -_this61.z;
-				_this61.x = tx31;
-				_this61.y = ty31;
-				_this61.z = tz31;
-				n1 = _this61;
-				this.triangle(v11,v21,v31,n1,n1,n1,color);
-				var _this62 = this.p;
-				var mat38 = null;
-				var mat48 = null;
-				var quat8 = null;
-				if(n1 != null) {
-					n1.zero();
-					if(_this62.sizeVec3 == _this62.stackVec3.length) {
-						var newLength32 = _this62.sizeVec3 << 1;
-						var this33 = new Array(newLength32);
-						var newArray32 = this33;
-						var _g43 = 0;
-						var _g133 = _this62.sizeVec3;
-						while(_g43 < _g133) {
-							var i34 = _g43++;
-							newArray32[i34] = _this62.stackVec3[i34];
-							_this62.stackVec3[i34] = null;
-						}
-						_this62.stackVec3 = newArray32;
-					}
-					_this62.stackVec3[_this62.sizeVec3++] = n1;
-				}
-				if(mat38 != null) {
-					var t0016 = 1;
-					var t0116 = 0;
-					var t0216 = 0;
-					var t1016 = 0;
-					var t1116 = 1;
-					var t1216 = 0;
-					var t2016 = 0;
-					var t2116 = 0;
-					var t2216 = 1;
-					mat38.e00 = t0016;
-					mat38.e01 = t0116;
-					mat38.e02 = t0216;
-					mat38.e10 = t1016;
-					mat38.e11 = t1116;
-					mat38.e12 = t1216;
-					mat38.e20 = t2016;
-					mat38.e21 = t2116;
-					mat38.e22 = t2216;
-					if(_this62.sizeMat3 == _this62.stackMat3.length) {
-						var newLength33 = _this62.sizeMat3 << 1;
-						var this34 = new Array(newLength33);
-						var newArray33 = this34;
-						var _g44 = 0;
-						var _g134 = _this62.sizeMat3;
-						while(_g44 < _g134) {
-							var i35 = _g44++;
-							newArray33[i35] = _this62.stackMat3[i35];
-							_this62.stackMat3[i35] = null;
-						}
-						_this62.stackMat3 = newArray33;
-					}
-					_this62.stackMat3[_this62.sizeMat3++] = mat38;
-				}
-				if(mat48 != null) {
-					var t0017 = 1;
-					var t0117 = 0;
-					var t0217 = 0;
-					var t038 = 0;
-					var t1017 = 0;
-					var t1117 = 1;
-					var t1217 = 0;
-					var t138 = 0;
-					var t2017 = 0;
-					var t2117 = 0;
-					var t2217 = 1;
-					var t238 = 0;
-					var t308 = 0;
-					var t318 = 0;
-					var t328 = 0;
-					var t338 = 1;
-					mat48.e00 = t0017;
-					mat48.e01 = t0117;
-					mat48.e02 = t0217;
-					mat48.e03 = t038;
-					mat48.e10 = t1017;
-					mat48.e11 = t1117;
-					mat48.e12 = t1217;
-					mat48.e13 = t138;
-					mat48.e20 = t2017;
-					mat48.e21 = t2117;
-					mat48.e22 = t2217;
-					mat48.e23 = t238;
-					mat48.e30 = t308;
-					mat48.e31 = t318;
-					mat48.e32 = t328;
-					mat48.e33 = t338;
-					if(_this62.sizeMat4 == _this62.stackMat4.length) {
-						var newLength34 = _this62.sizeMat4 << 1;
-						var this35 = new Array(newLength34);
-						var newArray34 = this35;
-						var _g45 = 0;
-						var _g135 = _this62.sizeMat4;
-						while(_g45 < _g135) {
-							var i36 = _g45++;
-							newArray34[i36] = _this62.stackMat4[i36];
-							_this62.stackMat4[i36] = null;
-						}
-						_this62.stackMat4 = newArray34;
-					}
-					_this62.stackMat4[_this62.sizeMat4++] = mat48;
-				}
-				if(quat8 != null) {
-					var tx32 = 0;
-					var ty32 = 0;
-					var tz32 = 0;
-					var tw8 = 1;
-					quat8.x = tx32;
-					quat8.y = ty32;
-					quat8.z = tz32;
-					quat8.w = tw8;
-					if(_this62.sizeQuat == _this62.stackQuat.length) {
-						var newLength35 = _this62.sizeQuat << 1;
-						var this36 = new Array(newLength35);
-						var newArray35 = this36;
-						var _g46 = 0;
-						var _g136 = _this62.sizeQuat;
-						while(_g46 < _g136) {
-							var i37 = _g46++;
-							newArray35[i37] = _this62.stackQuat[i37];
-							_this62.stackQuat[i37] = null;
-						}
-						_this62.stackQuat = newArray35;
-					}
-					_this62.stackQuat[_this62.sizeQuat++] = quat8;
-				}
-				v11 = this.tmpCircleVerts1[i33];
-				v21 = this.tmpCircleVerts2[i33];
-				v31 = this.tmpCircleVerts2[(i33 + 1) % 8];
-				var v4 = this.tmpCircleVerts1[(i33 + 1) % 8];
-				n1 = this.tmpCircleNorms[i33];
-				var n2 = this.tmpCircleNorms[(i33 + 1) % 8];
-				this.rect(v11,v21,v31,v4,n1,n1,n2,n2,color);
-			}
-		}
-		var _this63 = this.p;
-		var mat39 = null;
-		var mat49 = null;
-		var quat9 = null;
-		if(top != null) {
-			top.zero();
-			if(_this63.sizeVec3 == _this63.stackVec3.length) {
-				var newLength36 = _this63.sizeVec3 << 1;
-				var this37 = new Array(newLength36);
-				var newArray36 = this37;
-				var _g47 = 0;
-				var _g137 = _this63.sizeVec3;
-				while(_g47 < _g137) {
-					var i38 = _g47++;
-					newArray36[i38] = _this63.stackVec3[i38];
-					_this63.stackVec3[i38] = null;
-				}
-				_this63.stackVec3 = newArray36;
-			}
-			_this63.stackVec3[_this63.sizeVec3++] = top;
-		}
-		if(mat39 != null) {
-			var t0018 = 1;
-			var t0118 = 0;
-			var t0218 = 0;
-			var t1018 = 0;
-			var t1118 = 1;
-			var t1218 = 0;
-			var t2018 = 0;
-			var t2118 = 0;
-			var t2218 = 1;
-			mat39.e00 = t0018;
-			mat39.e01 = t0118;
-			mat39.e02 = t0218;
-			mat39.e10 = t1018;
-			mat39.e11 = t1118;
-			mat39.e12 = t1218;
-			mat39.e20 = t2018;
-			mat39.e21 = t2118;
-			mat39.e22 = t2218;
-			if(_this63.sizeMat3 == _this63.stackMat3.length) {
-				var newLength37 = _this63.sizeMat3 << 1;
-				var this38 = new Array(newLength37);
-				var newArray37 = this38;
-				var _g48 = 0;
-				var _g138 = _this63.sizeMat3;
-				while(_g48 < _g138) {
-					var i39 = _g48++;
-					newArray37[i39] = _this63.stackMat3[i39];
-					_this63.stackMat3[i39] = null;
-				}
-				_this63.stackMat3 = newArray37;
-			}
-			_this63.stackMat3[_this63.sizeMat3++] = mat39;
-		}
-		if(mat49 != null) {
-			var t0019 = 1;
-			var t0119 = 0;
-			var t0219 = 0;
-			var t039 = 0;
-			var t1019 = 0;
-			var t1119 = 1;
-			var t1219 = 0;
-			var t139 = 0;
-			var t2019 = 0;
-			var t2119 = 0;
-			var t2219 = 1;
-			var t239 = 0;
-			var t309 = 0;
-			var t319 = 0;
-			var t329 = 0;
-			var t339 = 1;
-			mat49.e00 = t0019;
-			mat49.e01 = t0119;
-			mat49.e02 = t0219;
-			mat49.e03 = t039;
-			mat49.e10 = t1019;
-			mat49.e11 = t1119;
-			mat49.e12 = t1219;
-			mat49.e13 = t139;
-			mat49.e20 = t2019;
-			mat49.e21 = t2119;
-			mat49.e22 = t2219;
-			mat49.e23 = t239;
-			mat49.e30 = t309;
-			mat49.e31 = t319;
-			mat49.e32 = t329;
-			mat49.e33 = t339;
-			if(_this63.sizeMat4 == _this63.stackMat4.length) {
-				var newLength38 = _this63.sizeMat4 << 1;
-				var this39 = new Array(newLength38);
-				var newArray38 = this39;
-				var _g49 = 0;
-				var _g139 = _this63.sizeMat4;
-				while(_g49 < _g139) {
-					var i40 = _g49++;
-					newArray38[i40] = _this63.stackMat4[i40];
-					_this63.stackMat4[i40] = null;
-				}
-				_this63.stackMat4 = newArray38;
-			}
-			_this63.stackMat4[_this63.sizeMat4++] = mat49;
-		}
-		if(quat9 != null) {
-			var tx33 = 0;
-			var ty33 = 0;
-			var tz33 = 0;
-			var tw9 = 1;
-			quat9.x = tx33;
-			quat9.y = ty33;
-			quat9.z = tz33;
-			quat9.w = tw9;
-			if(_this63.sizeQuat == _this63.stackQuat.length) {
-				var newLength39 = _this63.sizeQuat << 1;
-				var this40 = new Array(newLength39);
-				var newArray39 = this40;
-				var _g50 = 0;
-				var _g140 = _this63.sizeQuat;
-				while(_g50 < _g140) {
-					var i41 = _g50++;
-					newArray39[i41] = _this63.stackQuat[i41];
-					_this63.stackQuat[i41] = null;
-				}
-				_this63.stackQuat = newArray39;
-			}
-			_this63.stackQuat[_this63.sizeQuat++] = quat9;
-		}
-		var _this64 = this.p;
-		var mat310 = null;
-		var mat410 = null;
-		var quat10 = null;
-		if(bottom != null) {
-			bottom.zero();
-			if(_this64.sizeVec3 == _this64.stackVec3.length) {
-				var newLength40 = _this64.sizeVec3 << 1;
-				var this41 = new Array(newLength40);
-				var newArray40 = this41;
-				var _g51 = 0;
-				var _g141 = _this64.sizeVec3;
-				while(_g51 < _g141) {
-					var i42 = _g51++;
-					newArray40[i42] = _this64.stackVec3[i42];
-					_this64.stackVec3[i42] = null;
-				}
-				_this64.stackVec3 = newArray40;
-			}
-			_this64.stackVec3[_this64.sizeVec3++] = bottom;
-		}
-		if(mat310 != null) {
-			var t0020 = 1;
-			var t0120 = 0;
-			var t0220 = 0;
-			var t1020 = 0;
-			var t1120 = 1;
-			var t1220 = 0;
-			var t2020 = 0;
-			var t2120 = 0;
-			var t2220 = 1;
-			mat310.e00 = t0020;
-			mat310.e01 = t0120;
-			mat310.e02 = t0220;
-			mat310.e10 = t1020;
-			mat310.e11 = t1120;
-			mat310.e12 = t1220;
-			mat310.e20 = t2020;
-			mat310.e21 = t2120;
-			mat310.e22 = t2220;
-			if(_this64.sizeMat3 == _this64.stackMat3.length) {
-				var newLength41 = _this64.sizeMat3 << 1;
-				var this42 = new Array(newLength41);
-				var newArray41 = this42;
-				var _g52 = 0;
-				var _g142 = _this64.sizeMat3;
-				while(_g52 < _g142) {
-					var i43 = _g52++;
-					newArray41[i43] = _this64.stackMat3[i43];
-					_this64.stackMat3[i43] = null;
-				}
-				_this64.stackMat3 = newArray41;
-			}
-			_this64.stackMat3[_this64.sizeMat3++] = mat310;
-		}
-		if(mat410 != null) {
-			var t0021 = 1;
-			var t0121 = 0;
-			var t0221 = 0;
-			var t0310 = 0;
-			var t1021 = 0;
-			var t1121 = 1;
-			var t1221 = 0;
-			var t1310 = 0;
-			var t2021 = 0;
-			var t2121 = 0;
-			var t2221 = 1;
-			var t2310 = 0;
-			var t3010 = 0;
-			var t3110 = 0;
-			var t3210 = 0;
-			var t3310 = 1;
-			mat410.e00 = t0021;
-			mat410.e01 = t0121;
-			mat410.e02 = t0221;
-			mat410.e03 = t0310;
-			mat410.e10 = t1021;
-			mat410.e11 = t1121;
-			mat410.e12 = t1221;
-			mat410.e13 = t1310;
-			mat410.e20 = t2021;
-			mat410.e21 = t2121;
-			mat410.e22 = t2221;
-			mat410.e23 = t2310;
-			mat410.e30 = t3010;
-			mat410.e31 = t3110;
-			mat410.e32 = t3210;
-			mat410.e33 = t3310;
-			if(_this64.sizeMat4 == _this64.stackMat4.length) {
-				var newLength42 = _this64.sizeMat4 << 1;
-				var this43 = new Array(newLength42);
-				var newArray42 = this43;
-				var _g53 = 0;
-				var _g143 = _this64.sizeMat4;
-				while(_g53 < _g143) {
-					var i44 = _g53++;
-					newArray42[i44] = _this64.stackMat4[i44];
-					_this64.stackMat4[i44] = null;
-				}
-				_this64.stackMat4 = newArray42;
-			}
-			_this64.stackMat4[_this64.sizeMat4++] = mat410;
-		}
-		if(quat10 != null) {
-			var tx34 = 0;
-			var ty34 = 0;
-			var tz34 = 0;
-			var tw10 = 1;
-			quat10.x = tx34;
-			quat10.y = ty34;
-			quat10.z = tz34;
-			quat10.w = tw10;
-			if(_this64.sizeQuat == _this64.stackQuat.length) {
-				var newLength43 = _this64.sizeQuat << 1;
-				var this44 = new Array(newLength43);
-				var newArray43 = this44;
-				var _g54 = 0;
-				var _g144 = _this64.sizeQuat;
-				while(_g54 < _g144) {
-					var i45 = _g54++;
-					newArray43[i45] = _this64.stackQuat[i45];
-					_this64.stackQuat[i45] = null;
-				}
-				_this64.stackQuat = newArray43;
-			}
-			_this64.stackQuat[_this64.sizeQuat++] = quat10;
-		}
-		var _this65 = this.p;
-		var mat311 = null;
-		var mat411 = null;
-		var quat11 = null;
-		if(o != null) {
-			o.zero();
-			if(_this65.sizeVec3 == _this65.stackVec3.length) {
-				var newLength44 = _this65.sizeVec3 << 1;
-				var this45 = new Array(newLength44);
-				var newArray44 = this45;
-				var _g55 = 0;
-				var _g145 = _this65.sizeVec3;
-				while(_g55 < _g145) {
-					var i46 = _g55++;
-					newArray44[i46] = _this65.stackVec3[i46];
-					_this65.stackVec3[i46] = null;
-				}
-				_this65.stackVec3 = newArray44;
-			}
-			_this65.stackVec3[_this65.sizeVec3++] = o;
-		}
-		if(mat311 != null) {
-			var t0022 = 1;
-			var t0122 = 0;
-			var t0222 = 0;
-			var t1022 = 0;
-			var t1122 = 1;
-			var t1222 = 0;
-			var t2022 = 0;
-			var t2122 = 0;
-			var t2222 = 1;
-			mat311.e00 = t0022;
-			mat311.e01 = t0122;
-			mat311.e02 = t0222;
-			mat311.e10 = t1022;
-			mat311.e11 = t1122;
-			mat311.e12 = t1222;
-			mat311.e20 = t2022;
-			mat311.e21 = t2122;
-			mat311.e22 = t2222;
-			if(_this65.sizeMat3 == _this65.stackMat3.length) {
-				var newLength45 = _this65.sizeMat3 << 1;
-				var this46 = new Array(newLength45);
-				var newArray45 = this46;
-				var _g56 = 0;
-				var _g146 = _this65.sizeMat3;
-				while(_g56 < _g146) {
-					var i47 = _g56++;
-					newArray45[i47] = _this65.stackMat3[i47];
-					_this65.stackMat3[i47] = null;
-				}
-				_this65.stackMat3 = newArray45;
-			}
-			_this65.stackMat3[_this65.sizeMat3++] = mat311;
-		}
-		if(mat411 != null) {
-			var t0023 = 1;
-			var t0123 = 0;
-			var t0223 = 0;
-			var t0311 = 0;
-			var t1023 = 0;
-			var t1123 = 1;
-			var t1223 = 0;
-			var t1311 = 0;
-			var t2023 = 0;
-			var t2123 = 0;
-			var t2223 = 1;
-			var t2311 = 0;
-			var t3011 = 0;
-			var t3111 = 0;
-			var t3211 = 0;
-			var t3311 = 1;
-			mat411.e00 = t0023;
-			mat411.e01 = t0123;
-			mat411.e02 = t0223;
-			mat411.e03 = t0311;
-			mat411.e10 = t1023;
-			mat411.e11 = t1123;
-			mat411.e12 = t1223;
-			mat411.e13 = t1311;
-			mat411.e20 = t2023;
-			mat411.e21 = t2123;
-			mat411.e22 = t2223;
-			mat411.e23 = t2311;
-			mat411.e30 = t3011;
-			mat411.e31 = t3111;
-			mat411.e32 = t3211;
-			mat411.e33 = t3311;
-			if(_this65.sizeMat4 == _this65.stackMat4.length) {
-				var newLength46 = _this65.sizeMat4 << 1;
-				var this47 = new Array(newLength46);
-				var newArray46 = this47;
-				var _g57 = 0;
-				var _g147 = _this65.sizeMat4;
-				while(_g57 < _g147) {
-					var i48 = _g57++;
-					newArray46[i48] = _this65.stackMat4[i48];
-					_this65.stackMat4[i48] = null;
-				}
-				_this65.stackMat4 = newArray46;
-			}
-			_this65.stackMat4[_this65.sizeMat4++] = mat411;
-		}
-		if(quat11 != null) {
-			var tx35 = 0;
-			var ty35 = 0;
-			var tz35 = 0;
-			var tw11 = 1;
-			quat11.x = tx35;
-			quat11.y = ty35;
-			quat11.z = tz35;
-			quat11.w = tw11;
-			if(_this65.sizeQuat == _this65.stackQuat.length) {
-				var newLength47 = _this65.sizeQuat << 1;
-				var this48 = new Array(newLength47);
-				var newArray47 = this48;
-				var _g58 = 0;
-				var _g148 = _this65.sizeQuat;
-				while(_g58 < _g148) {
-					var i49 = _g58++;
-					newArray47[i49] = _this65.stackQuat[i49];
-					_this65.stackQuat[i49] = null;
-				}
-				_this65.stackQuat = newArray47;
-			}
-			_this65.stackQuat[_this65.sizeQuat++] = quat11;
-		}
-		var _this66 = this.p;
-		var vec3 = null;
-		var mat412 = null;
-		var quat12 = null;
-		if(vec3 != null) {
-			vec3.zero();
-			if(_this66.sizeVec3 == _this66.stackVec3.length) {
-				var newLength48 = _this66.sizeVec3 << 1;
-				var this49 = new Array(newLength48);
-				var newArray48 = this49;
-				var _g59 = 0;
-				var _g149 = _this66.sizeVec3;
-				while(_g59 < _g149) {
-					var i50 = _g59++;
-					newArray48[i50] = _this66.stackVec3[i50];
-					_this66.stackVec3[i50] = null;
-				}
-				_this66.stackVec3 = newArray48;
-			}
-			_this66.stackVec3[_this66.sizeVec3++] = vec3;
-		}
-		if(m != null) {
-			var t0024 = 1;
-			var t0124 = 0;
-			var t0224 = 0;
-			var t1024 = 0;
-			var t1124 = 1;
-			var t1224 = 0;
-			var t2024 = 0;
-			var t2124 = 0;
-			var t2224 = 1;
-			m.e00 = t0024;
-			m.e01 = t0124;
-			m.e02 = t0224;
-			m.e10 = t1024;
-			m.e11 = t1124;
-			m.e12 = t1224;
-			m.e20 = t2024;
-			m.e21 = t2124;
-			m.e22 = t2224;
-			if(_this66.sizeMat3 == _this66.stackMat3.length) {
-				var newLength49 = _this66.sizeMat3 << 1;
-				var this50 = new Array(newLength49);
-				var newArray49 = this50;
-				var _g60 = 0;
-				var _g150 = _this66.sizeMat3;
-				while(_g60 < _g150) {
-					var i51 = _g60++;
-					newArray49[i51] = _this66.stackMat3[i51];
-					_this66.stackMat3[i51] = null;
-				}
-				_this66.stackMat3 = newArray49;
-			}
-			_this66.stackMat3[_this66.sizeMat3++] = m;
-		}
-		if(mat412 != null) {
-			var t0025 = 1;
-			var t0125 = 0;
-			var t0225 = 0;
-			var t0312 = 0;
-			var t1025 = 0;
-			var t1125 = 1;
-			var t1225 = 0;
-			var t1312 = 0;
-			var t2025 = 0;
-			var t2125 = 0;
-			var t2225 = 1;
-			var t2312 = 0;
-			var t3012 = 0;
-			var t3112 = 0;
-			var t3212 = 0;
-			var t3312 = 1;
-			mat412.e00 = t0025;
-			mat412.e01 = t0125;
-			mat412.e02 = t0225;
-			mat412.e03 = t0312;
-			mat412.e10 = t1025;
-			mat412.e11 = t1125;
-			mat412.e12 = t1225;
-			mat412.e13 = t1312;
-			mat412.e20 = t2025;
-			mat412.e21 = t2125;
-			mat412.e22 = t2225;
-			mat412.e23 = t2312;
-			mat412.e30 = t3012;
-			mat412.e31 = t3112;
-			mat412.e32 = t3212;
-			mat412.e33 = t3312;
-			if(_this66.sizeMat4 == _this66.stackMat4.length) {
-				var newLength50 = _this66.sizeMat4 << 1;
-				var this51 = new Array(newLength50);
-				var newArray50 = this51;
-				var _g61 = 0;
-				var _g151 = _this66.sizeMat4;
-				while(_g61 < _g151) {
-					var i52 = _g61++;
-					newArray50[i52] = _this66.stackMat4[i52];
-					_this66.stackMat4[i52] = null;
-				}
-				_this66.stackMat4 = newArray50;
-			}
-			_this66.stackMat4[_this66.sizeMat4++] = mat412;
-		}
-		if(quat12 != null) {
-			var tx36 = 0;
-			var ty36 = 0;
-			var tz36 = 0;
-			var tw12 = 1;
-			quat12.x = tx36;
-			quat12.y = ty36;
-			quat12.z = tz36;
-			quat12.w = tw12;
-			if(_this66.sizeQuat == _this66.stackQuat.length) {
-				var newLength51 = _this66.sizeQuat << 1;
-				var this52 = new Array(newLength51);
-				var newArray51 = this52;
-				var _g62 = 0;
-				var _g152 = _this66.sizeQuat;
-				while(_g62 < _g152) {
-					var i53 = _g62++;
-					newArray51[i53] = _this66.stackQuat[i53];
-					_this66.stackQuat[i53] = null;
-				}
-				_this66.stackQuat = newArray51;
-			}
-			_this66.stackQuat[_this66.sizeQuat++] = quat12;
-		}
-		var _this67 = this.p;
-		var mat312 = null;
-		var mat413 = null;
-		var quat13 = null;
-		if(ex != null) {
-			ex.zero();
-			if(_this67.sizeVec3 == _this67.stackVec3.length) {
-				var newLength52 = _this67.sizeVec3 << 1;
-				var this53 = new Array(newLength52);
-				var newArray52 = this53;
-				var _g63 = 0;
-				var _g153 = _this67.sizeVec3;
-				while(_g63 < _g153) {
-					var i54 = _g63++;
-					newArray52[i54] = _this67.stackVec3[i54];
-					_this67.stackVec3[i54] = null;
-				}
-				_this67.stackVec3 = newArray52;
-			}
-			_this67.stackVec3[_this67.sizeVec3++] = ex;
-		}
-		if(mat312 != null) {
-			var t0026 = 1;
-			var t0126 = 0;
-			var t0226 = 0;
-			var t1026 = 0;
-			var t1126 = 1;
-			var t1226 = 0;
-			var t2026 = 0;
-			var t2126 = 0;
-			var t2226 = 1;
-			mat312.e00 = t0026;
-			mat312.e01 = t0126;
-			mat312.e02 = t0226;
-			mat312.e10 = t1026;
-			mat312.e11 = t1126;
-			mat312.e12 = t1226;
-			mat312.e20 = t2026;
-			mat312.e21 = t2126;
-			mat312.e22 = t2226;
-			if(_this67.sizeMat3 == _this67.stackMat3.length) {
-				var newLength53 = _this67.sizeMat3 << 1;
-				var this54 = new Array(newLength53);
-				var newArray53 = this54;
-				var _g64 = 0;
-				var _g154 = _this67.sizeMat3;
-				while(_g64 < _g154) {
-					var i55 = _g64++;
-					newArray53[i55] = _this67.stackMat3[i55];
-					_this67.stackMat3[i55] = null;
-				}
-				_this67.stackMat3 = newArray53;
-			}
-			_this67.stackMat3[_this67.sizeMat3++] = mat312;
-		}
-		if(mat413 != null) {
-			var t0027 = 1;
-			var t0127 = 0;
-			var t0227 = 0;
-			var t0313 = 0;
-			var t1027 = 0;
-			var t1127 = 1;
-			var t1227 = 0;
-			var t1313 = 0;
-			var t2027 = 0;
-			var t2127 = 0;
-			var t2227 = 1;
-			var t2313 = 0;
-			var t3013 = 0;
-			var t3113 = 0;
-			var t3213 = 0;
-			var t3313 = 1;
-			mat413.e00 = t0027;
-			mat413.e01 = t0127;
-			mat413.e02 = t0227;
-			mat413.e03 = t0313;
-			mat413.e10 = t1027;
-			mat413.e11 = t1127;
-			mat413.e12 = t1227;
-			mat413.e13 = t1313;
-			mat413.e20 = t2027;
-			mat413.e21 = t2127;
-			mat413.e22 = t2227;
-			mat413.e23 = t2313;
-			mat413.e30 = t3013;
-			mat413.e31 = t3113;
-			mat413.e32 = t3213;
-			mat413.e33 = t3313;
-			if(_this67.sizeMat4 == _this67.stackMat4.length) {
-				var newLength54 = _this67.sizeMat4 << 1;
-				var this55 = new Array(newLength54);
-				var newArray54 = this55;
-				var _g65 = 0;
-				var _g155 = _this67.sizeMat4;
-				while(_g65 < _g155) {
-					var i56 = _g65++;
-					newArray54[i56] = _this67.stackMat4[i56];
-					_this67.stackMat4[i56] = null;
-				}
-				_this67.stackMat4 = newArray54;
-			}
-			_this67.stackMat4[_this67.sizeMat4++] = mat413;
-		}
-		if(quat13 != null) {
-			var tx37 = 0;
-			var ty37 = 0;
-			var tz37 = 0;
-			var tw13 = 1;
-			quat13.x = tx37;
-			quat13.y = ty37;
-			quat13.z = tz37;
-			quat13.w = tw13;
-			if(_this67.sizeQuat == _this67.stackQuat.length) {
-				var newLength55 = _this67.sizeQuat << 1;
-				var this56 = new Array(newLength55);
-				var newArray55 = this56;
-				var _g66 = 0;
-				var _g156 = _this67.sizeQuat;
-				while(_g66 < _g156) {
-					var i57 = _g66++;
-					newArray55[i57] = _this67.stackQuat[i57];
-					_this67.stackQuat[i57] = null;
-				}
-				_this67.stackQuat = newArray55;
-			}
-			_this67.stackQuat[_this67.sizeQuat++] = quat13;
-		}
-		var _this68 = this.p;
-		var mat313 = null;
-		var mat414 = null;
-		var quat14 = null;
-		if(ey != null) {
-			ey.zero();
-			if(_this68.sizeVec3 == _this68.stackVec3.length) {
-				var newLength56 = _this68.sizeVec3 << 1;
-				var this57 = new Array(newLength56);
-				var newArray56 = this57;
-				var _g67 = 0;
-				var _g157 = _this68.sizeVec3;
-				while(_g67 < _g157) {
-					var i58 = _g67++;
-					newArray56[i58] = _this68.stackVec3[i58];
-					_this68.stackVec3[i58] = null;
-				}
-				_this68.stackVec3 = newArray56;
-			}
-			_this68.stackVec3[_this68.sizeVec3++] = ey;
-		}
-		if(mat313 != null) {
-			var t0028 = 1;
-			var t0128 = 0;
-			var t0228 = 0;
-			var t1028 = 0;
-			var t1128 = 1;
-			var t1228 = 0;
-			var t2028 = 0;
-			var t2128 = 0;
-			var t2228 = 1;
-			mat313.e00 = t0028;
-			mat313.e01 = t0128;
-			mat313.e02 = t0228;
-			mat313.e10 = t1028;
-			mat313.e11 = t1128;
-			mat313.e12 = t1228;
-			mat313.e20 = t2028;
-			mat313.e21 = t2128;
-			mat313.e22 = t2228;
-			if(_this68.sizeMat3 == _this68.stackMat3.length) {
-				var newLength57 = _this68.sizeMat3 << 1;
-				var this58 = new Array(newLength57);
-				var newArray57 = this58;
-				var _g68 = 0;
-				var _g158 = _this68.sizeMat3;
-				while(_g68 < _g158) {
-					var i59 = _g68++;
-					newArray57[i59] = _this68.stackMat3[i59];
-					_this68.stackMat3[i59] = null;
-				}
-				_this68.stackMat3 = newArray57;
-			}
-			_this68.stackMat3[_this68.sizeMat3++] = mat313;
-		}
-		if(mat414 != null) {
-			var t0029 = 1;
-			var t0129 = 0;
-			var t0229 = 0;
-			var t0314 = 0;
-			var t1029 = 0;
-			var t1129 = 1;
-			var t1229 = 0;
-			var t1314 = 0;
-			var t2029 = 0;
-			var t2129 = 0;
-			var t2229 = 1;
-			var t2314 = 0;
-			var t3014 = 0;
-			var t3114 = 0;
-			var t3214 = 0;
-			var t3314 = 1;
-			mat414.e00 = t0029;
-			mat414.e01 = t0129;
-			mat414.e02 = t0229;
-			mat414.e03 = t0314;
-			mat414.e10 = t1029;
-			mat414.e11 = t1129;
-			mat414.e12 = t1229;
-			mat414.e13 = t1314;
-			mat414.e20 = t2029;
-			mat414.e21 = t2129;
-			mat414.e22 = t2229;
-			mat414.e23 = t2314;
-			mat414.e30 = t3014;
-			mat414.e31 = t3114;
-			mat414.e32 = t3214;
-			mat414.e33 = t3314;
-			if(_this68.sizeMat4 == _this68.stackMat4.length) {
-				var newLength58 = _this68.sizeMat4 << 1;
-				var this59 = new Array(newLength58);
-				var newArray58 = this59;
-				var _g69 = 0;
-				var _g159 = _this68.sizeMat4;
-				while(_g69 < _g159) {
-					var i60 = _g69++;
-					newArray58[i60] = _this68.stackMat4[i60];
-					_this68.stackMat4[i60] = null;
-				}
-				_this68.stackMat4 = newArray58;
-			}
-			_this68.stackMat4[_this68.sizeMat4++] = mat414;
-		}
-		if(quat14 != null) {
-			var tx38 = 0;
-			var ty38 = 0;
-			var tz38 = 0;
-			var tw14 = 1;
-			quat14.x = tx38;
-			quat14.y = ty38;
-			quat14.z = tz38;
-			quat14.w = tw14;
-			if(_this68.sizeQuat == _this68.stackQuat.length) {
-				var newLength59 = _this68.sizeQuat << 1;
-				var this60 = new Array(newLength59);
-				var newArray59 = this60;
-				var _g70 = 0;
-				var _g160 = _this68.sizeQuat;
-				while(_g70 < _g160) {
-					var i61 = _g70++;
-					newArray59[i61] = _this68.stackQuat[i61];
-					_this68.stackQuat[i61] = null;
-				}
-				_this68.stackQuat = newArray59;
-			}
-			_this68.stackQuat[_this68.sizeQuat++] = quat14;
-		}
-		var _this69 = this.p;
-		var mat314 = null;
-		var mat415 = null;
-		var quat15 = null;
-		if(ez != null) {
-			ez.zero();
-			if(_this69.sizeVec3 == _this69.stackVec3.length) {
-				var newLength60 = _this69.sizeVec3 << 1;
-				var this61 = new Array(newLength60);
-				var newArray60 = this61;
-				var _g71 = 0;
-				var _g161 = _this69.sizeVec3;
-				while(_g71 < _g161) {
-					var i62 = _g71++;
-					newArray60[i62] = _this69.stackVec3[i62];
-					_this69.stackVec3[i62] = null;
-				}
-				_this69.stackVec3 = newArray60;
-			}
-			_this69.stackVec3[_this69.sizeVec3++] = ez;
-		}
-		if(mat314 != null) {
-			var t0030 = 1;
-			var t0130 = 0;
-			var t0230 = 0;
-			var t1030 = 0;
-			var t1130 = 1;
-			var t1230 = 0;
-			var t2030 = 0;
-			var t2130 = 0;
-			var t2230 = 1;
-			mat314.e00 = t0030;
-			mat314.e01 = t0130;
-			mat314.e02 = t0230;
-			mat314.e10 = t1030;
-			mat314.e11 = t1130;
-			mat314.e12 = t1230;
-			mat314.e20 = t2030;
-			mat314.e21 = t2130;
-			mat314.e22 = t2230;
-			if(_this69.sizeMat3 == _this69.stackMat3.length) {
-				var newLength61 = _this69.sizeMat3 << 1;
-				var this62 = new Array(newLength61);
-				var newArray61 = this62;
-				var _g72 = 0;
-				var _g162 = _this69.sizeMat3;
-				while(_g72 < _g162) {
-					var i63 = _g72++;
-					newArray61[i63] = _this69.stackMat3[i63];
-					_this69.stackMat3[i63] = null;
-				}
-				_this69.stackMat3 = newArray61;
-			}
-			_this69.stackMat3[_this69.sizeMat3++] = mat314;
-		}
-		if(mat415 != null) {
-			var t0031 = 1;
-			var t0131 = 0;
-			var t0231 = 0;
-			var t0315 = 0;
-			var t1031 = 0;
-			var t1131 = 1;
-			var t1231 = 0;
-			var t1315 = 0;
-			var t2031 = 0;
-			var t2131 = 0;
-			var t2231 = 1;
-			var t2315 = 0;
-			var t3015 = 0;
-			var t3115 = 0;
-			var t3215 = 0;
-			var t3315 = 1;
-			mat415.e00 = t0031;
-			mat415.e01 = t0131;
-			mat415.e02 = t0231;
-			mat415.e03 = t0315;
-			mat415.e10 = t1031;
-			mat415.e11 = t1131;
-			mat415.e12 = t1231;
-			mat415.e13 = t1315;
-			mat415.e20 = t2031;
-			mat415.e21 = t2131;
-			mat415.e22 = t2231;
-			mat415.e23 = t2315;
-			mat415.e30 = t3015;
-			mat415.e31 = t3115;
-			mat415.e32 = t3215;
-			mat415.e33 = t3315;
-			if(_this69.sizeMat4 == _this69.stackMat4.length) {
-				var newLength62 = _this69.sizeMat4 << 1;
-				var this63 = new Array(newLength62);
-				var newArray62 = this63;
-				var _g73 = 0;
-				var _g163 = _this69.sizeMat4;
-				while(_g73 < _g163) {
-					var i64 = _g73++;
-					newArray62[i64] = _this69.stackMat4[i64];
-					_this69.stackMat4[i64] = null;
-				}
-				_this69.stackMat4 = newArray62;
-			}
-			_this69.stackMat4[_this69.sizeMat4++] = mat415;
-		}
-		if(quat15 != null) {
-			var tx39 = 0;
-			var ty39 = 0;
-			var tz39 = 0;
-			var tw15 = 1;
-			quat15.x = tx39;
-			quat15.y = ty39;
-			quat15.z = tz39;
-			quat15.w = tw15;
-			if(_this69.sizeQuat == _this69.stackQuat.length) {
-				var newLength63 = _this69.sizeQuat << 1;
-				var this64 = new Array(newLength63);
-				var newArray63 = this64;
-				var _g74 = 0;
-				var _g164 = _this69.sizeQuat;
-				while(_g74 < _g164) {
-					var i65 = _g74++;
-					newArray63[i65] = _this69.stackQuat[i65];
-					_this69.stackQuat[i65] = null;
-				}
-				_this69.stackQuat = newArray63;
-			}
-			_this69.stackQuat[_this69.sizeQuat++] = quat15;
-		}
-	}
-	capsule(tf,radius,halfHeight,color) {
-		var _this = this.p;
-		var ex = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-		var _this1 = this.p;
-		var ey = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
-		var _this2 = this.p;
-		var ez = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
-		var _this3 = this.p;
-		var o = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
-		var _this4 = this.p;
-		var m = _this4.sizeMat3 == 0 ? new oimo.common.Mat3() : _this4.stackMat3[--_this4.sizeMat3];
-		var v = o;
-		v.x = tf._positionX;
-		v.y = tf._positionY;
-		v.z = tf._positionZ;
-		var m1 = m;
-		m1.e00 = tf._rotation00;
-		m1.e01 = tf._rotation01;
-		m1.e02 = tf._rotation02;
-		m1.e10 = tf._rotation10;
-		m1.e11 = tf._rotation11;
-		m1.e12 = tf._rotation12;
-		m1.e20 = tf._rotation20;
-		m1.e21 = tf._rotation21;
-		m1.e22 = tf._rotation22;
-		ex.init(m.e00,m.e10,m.e20);
-		ey.init(m.e01,m.e11,m.e21);
-		ez.init(m.e02,m.e12,m.e22);
-		var nt = 4;
-		var np = 8;
-		var vs = this.tmpSphereVerts;
-		var ns = this.tmpSphereNorms;
-		var _g = 0;
-		var _g1 = nt + 1;
-		while(_g < _g1) {
-			var i2 = _g++;
-			var n = this.tmpSphereVerts[i2].length;
-			var _g2 = 0;
-			var _g11 = n;
-			while(_g2 < _g11) {
-				var j2 = _g2++;
-				var _this5 = ns[i2][j2];
-				var v1 = this.sphereCoords[i2][j2];
-				_this5.x = v1.x;
-				_this5.y = v1.y;
-				_this5.z = v1.z;
-				var _this6 = _this5;
-				var tx = _this6.x * m.e00 + _this6.y * m.e01 + _this6.z * m.e02;
-				var ty = _this6.x * m.e10 + _this6.y * m.e11 + _this6.z * m.e12;
-				var tz = _this6.x * m.e20 + _this6.y * m.e21 + _this6.z * m.e22;
-				_this6.x = tx;
-				_this6.y = ty;
-				_this6.z = tz;
-			}
-		}
-		var _g21 = 0;
-		var _g3 = nt;
-		while(_g21 < _g3) {
-			var i = _g21++;
-			if(i == 0) {
-				var half = nt >> 1;
-				var _g22 = 0;
-				var _g31 = half + 1;
-				while(_g22 < _g31) {
-					var i21 = _g22++;
-					var n1 = this.tmpSphereVerts[i21].length;
-					var _g23 = 0;
-					var _g32 = n1;
-					while(_g23 < _g32) {
-						var j21 = _g23++;
-						var _this7 = vs[i21][j21];
-						var v2 = ns[i21][j21];
-						_this7.x = v2.x;
-						_this7.y = v2.y;
-						_this7.z = v2.z;
-						var _this8 = _this7;
-						var tx1 = _this8.x * radius;
-						var ty1 = _this8.y * radius;
-						var tz1 = _this8.z * radius;
-						_this8.x = tx1;
-						_this8.y = ty1;
-						_this8.z = tz1;
-						var _this9 = _this8;
-						var tx2 = _this9.x + o.x;
-						var ty2 = _this9.y + o.y;
-						var tz2 = _this9.z + o.z;
-						_this9.x = tx2;
-						_this9.y = ty2;
-						_this9.z = tz2;
-						var _this10 = _this9;
-						var tx3 = _this10.x + ey.x * halfHeight;
-						var ty3 = _this10.y + ey.y * halfHeight;
-						var tz3 = _this10.z + ey.z * halfHeight;
-						_this10.x = tx3;
-						_this10.y = ty3;
-						_this10.z = tz3;
-					}
-				}
-			}
-			if(i == nt >> 1) {
-				var half1 = nt >> 1;
-				var _g24 = half1;
-				var _g33 = nt + 1;
-				while(_g24 < _g33) {
-					var i22 = _g24++;
-					var n2 = this.tmpSphereVerts[i22].length;
-					var _g25 = 0;
-					var _g34 = n2;
-					while(_g25 < _g34) {
-						var j22 = _g25++;
-						var _this11 = vs[i22][j22];
-						var v3 = ns[i22][j22];
-						_this11.x = v3.x;
-						_this11.y = v3.y;
-						_this11.z = v3.z;
-						var _this12 = _this11;
-						var tx4 = _this12.x * radius;
-						var ty4 = _this12.y * radius;
-						var tz4 = _this12.z * radius;
-						_this12.x = tx4;
-						_this12.y = ty4;
-						_this12.z = tz4;
-						var _this13 = _this12;
-						var tx5 = _this13.x + o.x;
-						var ty5 = _this13.y + o.y;
-						var tz5 = _this13.z + o.z;
-						_this13.x = tx5;
-						_this13.y = ty5;
-						_this13.z = tz5;
-						var _this14 = _this13;
-						var s = -halfHeight;
-						var tx6 = _this14.x + ey.x * s;
-						var ty6 = _this14.y + ey.y * s;
-						var tz6 = _this14.z + ey.z * s;
-						_this14.x = tx6;
-						_this14.y = ty6;
-						_this14.z = tz6;
-					}
-				}
-			}
-			var _g26 = 0;
-			var _g35 = np;
-			while(_g26 < _g35) {
-				var j = _g26++;
-				var v11;
-				var v21;
-				var v31;
-				var v4;
-				var n11;
-				var n21;
-				var n3;
-				var n4;
-				if(i == 0) {
-					if(this.wireframe) {
-						v11 = vs[0][0];
-						v21 = vs[1][j];
-						this.line(v11,v21,color);
-					} else {
-						v11 = vs[0][0];
-						v21 = vs[1][j];
-						v31 = vs[1][(j + 1) % np];
-						n11 = ns[0][0];
-						n21 = ns[1][j];
-						n3 = ns[1][(j + 1) % np];
-						this.triangle(v11,v21,v31,n11,n21,n3,color);
-					}
-				} else if(i == nt - 1) {
-					if(this.wireframe) {
-						v11 = vs[nt][0];
-						v21 = vs[i][(j + 1) % np];
-						v31 = vs[i][j];
-						this.line(v11,v21,color);
-						this.line(v21,v31,color);
-					} else {
-						v11 = vs[nt][0];
-						v21 = vs[i][(j + 1) % np];
-						v31 = vs[i][j];
-						n11 = ns[nt][0];
-						n21 = ns[i][(j + 1) % np];
-						n3 = ns[i][j];
-						this.triangle(v11,v21,v31,n11,n21,n3,color);
-					}
-				} else if(this.wireframe) {
-					v11 = vs[i][j];
-					v21 = vs[i][(j + 1) % np];
-					v31 = vs[i + 1][j];
-					this.line(v11,v21,color);
-					this.line(v11,v31,color);
-				} else {
-					v11 = vs[i][j];
-					v21 = vs[i][(j + 1) % np];
-					v31 = vs[i + 1][j];
-					v4 = vs[i + 1][(j + 1) % np];
-					n11 = ns[i][j];
-					n21 = ns[i][(j + 1) % np];
-					n3 = ns[i + 1][j];
-					n4 = ns[i + 1][(j + 1) % np];
-					this.rect(v11,v31,v4,v21,n11,n3,n4,n21,color);
-				}
-			}
-		}
-		var _this15 = this.p;
-		var _this16 = _this15.sizeVec3 == 0 ? new oimo.common.Vec3() : _this15.stackVec3[--_this15.sizeVec3];
-		_this16.x = o.x;
-		_this16.y = o.y;
-		_this16.z = o.z;
-		var _this17 = _this16;
-		var tx7 = _this17.x + ey.x * halfHeight;
-		var ty7 = _this17.y + ey.y * halfHeight;
-		var tz7 = _this17.z + ey.z * halfHeight;
-		_this17.x = tx7;
-		_this17.y = ty7;
-		_this17.z = tz7;
-		var top = _this17;
-		var _this18 = this.p;
-		var _this19 = _this18.sizeVec3 == 0 ? new oimo.common.Vec3() : _this18.stackVec3[--_this18.sizeVec3];
-		_this19.x = o.x;
-		_this19.y = o.y;
-		_this19.z = o.z;
-		var _this20 = _this19;
-		var s1 = -halfHeight;
-		var tx8 = _this20.x + ey.x * s1;
-		var ty8 = _this20.y + ey.y * s1;
-		var tz8 = _this20.z + ey.z * s1;
-		_this20.x = tx8;
-		_this20.y = ty8;
-		_this20.z = tz8;
-		var bottom = _this20;
-		if(this.wireframe) {
-			var _this21 = this.p;
-			var _this22 = _this21.sizeVec3 == 0 ? new oimo.common.Vec3() : _this21.stackVec3[--_this21.sizeVec3];
-			_this22.x = top.x;
-			_this22.y = top.y;
-			_this22.z = top.z;
-			var _this23 = _this22;
-			var s2 = -radius;
-			var tx9 = _this23.x + ex.x * s2;
-			var ty9 = _this23.y + ex.y * s2;
-			var tz9 = _this23.z + ex.z * s2;
-			_this23.x = tx9;
-			_this23.y = ty9;
-			_this23.z = tz9;
-			var _this24 = _this23;
-			var tx10 = _this24.x + ez.x * 0;
-			var ty10 = _this24.y + ez.y * 0;
-			var tz10 = _this24.z + ez.z * 0;
-			_this24.x = tx10;
-			_this24.y = ty10;
-			_this24.z = tz10;
-			var top1 = _this24;
-			var _this25 = this.p;
-			var _this26 = _this25.sizeVec3 == 0 ? new oimo.common.Vec3() : _this25.stackVec3[--_this25.sizeVec3];
-			_this26.x = top.x;
-			_this26.y = top.y;
-			_this26.z = top.z;
-			var _this27 = _this26;
-			var tx11 = _this27.x + ex.x * radius;
-			var ty11 = _this27.y + ex.y * radius;
-			var tz11 = _this27.z + ex.z * radius;
-			_this27.x = tx11;
-			_this27.y = ty11;
-			_this27.z = tz11;
-			var _this28 = _this27;
-			var tx12 = _this28.x + ez.x * 0;
-			var ty12 = _this28.y + ez.y * 0;
-			var tz12 = _this28.z + ez.z * 0;
-			_this28.x = tx12;
-			_this28.y = ty12;
-			_this28.z = tz12;
-			var top2 = _this28;
-			var _this29 = this.p;
-			var _this30 = _this29.sizeVec3 == 0 ? new oimo.common.Vec3() : _this29.stackVec3[--_this29.sizeVec3];
-			_this30.x = top.x;
-			_this30.y = top.y;
-			_this30.z = top.z;
-			var _this31 = _this30;
-			var tx13 = _this31.x + ex.x * 0;
-			var ty13 = _this31.y + ex.y * 0;
-			var tz13 = _this31.z + ex.z * 0;
-			_this31.x = tx13;
-			_this31.y = ty13;
-			_this31.z = tz13;
-			var _this32 = _this31;
-			var s3 = -radius;
-			var tx14 = _this32.x + ez.x * s3;
-			var ty14 = _this32.y + ez.y * s3;
-			var tz14 = _this32.z + ez.z * s3;
-			_this32.x = tx14;
-			_this32.y = ty14;
-			_this32.z = tz14;
-			var top3 = _this32;
-			var _this33 = this.p;
-			var _this34 = _this33.sizeVec3 == 0 ? new oimo.common.Vec3() : _this33.stackVec3[--_this33.sizeVec3];
-			_this34.x = top.x;
-			_this34.y = top.y;
-			_this34.z = top.z;
-			var _this35 = _this34;
-			var tx15 = _this35.x + ex.x * 0;
-			var ty15 = _this35.y + ex.y * 0;
-			var tz15 = _this35.z + ex.z * 0;
-			_this35.x = tx15;
-			_this35.y = ty15;
-			_this35.z = tz15;
-			var _this36 = _this35;
-			var tx16 = _this36.x + ez.x * radius;
-			var ty16 = _this36.y + ez.y * radius;
-			var tz16 = _this36.z + ez.z * radius;
-			_this36.x = tx16;
-			_this36.y = ty16;
-			_this36.z = tz16;
-			var top4 = _this36;
-			var _this37 = this.p;
-			var _this38 = _this37.sizeVec3 == 0 ? new oimo.common.Vec3() : _this37.stackVec3[--_this37.sizeVec3];
-			_this38.x = bottom.x;
-			_this38.y = bottom.y;
-			_this38.z = bottom.z;
-			var _this39 = _this38;
-			var s4 = -radius;
-			var tx17 = _this39.x + ex.x * s4;
-			var ty17 = _this39.y + ex.y * s4;
-			var tz17 = _this39.z + ex.z * s4;
-			_this39.x = tx17;
-			_this39.y = ty17;
-			_this39.z = tz17;
-			var _this40 = _this39;
-			var tx18 = _this40.x + ez.x * 0;
-			var ty18 = _this40.y + ez.y * 0;
-			var tz18 = _this40.z + ez.z * 0;
-			_this40.x = tx18;
-			_this40.y = ty18;
-			_this40.z = tz18;
-			var bottom1 = _this40;
-			var _this41 = this.p;
-			var _this42 = _this41.sizeVec3 == 0 ? new oimo.common.Vec3() : _this41.stackVec3[--_this41.sizeVec3];
-			_this42.x = bottom.x;
-			_this42.y = bottom.y;
-			_this42.z = bottom.z;
-			var _this43 = _this42;
-			var tx19 = _this43.x + ex.x * radius;
-			var ty19 = _this43.y + ex.y * radius;
-			var tz19 = _this43.z + ex.z * radius;
-			_this43.x = tx19;
-			_this43.y = ty19;
-			_this43.z = tz19;
-			var _this44 = _this43;
-			var tx20 = _this44.x + ez.x * 0;
-			var ty20 = _this44.y + ez.y * 0;
-			var tz20 = _this44.z + ez.z * 0;
-			_this44.x = tx20;
-			_this44.y = ty20;
-			_this44.z = tz20;
-			var bottom2 = _this44;
-			var _this45 = this.p;
-			var _this46 = _this45.sizeVec3 == 0 ? new oimo.common.Vec3() : _this45.stackVec3[--_this45.sizeVec3];
-			_this46.x = bottom.x;
-			_this46.y = bottom.y;
-			_this46.z = bottom.z;
-			var _this47 = _this46;
-			var tx21 = _this47.x + ex.x * 0;
-			var ty21 = _this47.y + ex.y * 0;
-			var tz21 = _this47.z + ex.z * 0;
-			_this47.x = tx21;
-			_this47.y = ty21;
-			_this47.z = tz21;
-			var _this48 = _this47;
-			var s5 = -radius;
-			var tx22 = _this48.x + ez.x * s5;
-			var ty22 = _this48.y + ez.y * s5;
-			var tz22 = _this48.z + ez.z * s5;
-			_this48.x = tx22;
-			_this48.y = ty22;
-			_this48.z = tz22;
-			var bottom3 = _this48;
-			var _this49 = this.p;
-			var _this50 = _this49.sizeVec3 == 0 ? new oimo.common.Vec3() : _this49.stackVec3[--_this49.sizeVec3];
-			_this50.x = bottom.x;
-			_this50.y = bottom.y;
-			_this50.z = bottom.z;
-			var _this51 = _this50;
-			var tx23 = _this51.x + ex.x * 0;
-			var ty23 = _this51.y + ex.y * 0;
-			var tz23 = _this51.z + ex.z * 0;
-			_this51.x = tx23;
-			_this51.y = ty23;
-			_this51.z = tz23;
-			var _this52 = _this51;
-			var tx24 = _this52.x + ez.x * radius;
-			var ty24 = _this52.y + ez.y * radius;
-			var tz24 = _this52.z + ez.z * radius;
-			_this52.x = tx24;
-			_this52.y = ty24;
-			_this52.z = tz24;
-			var bottom4 = _this52;
-			this.ellipse(top,ex,ez,radius,radius,color);
-			this.ellipse(bottom,ex,ez,radius,radius,color);
-			this.line(top1,bottom1,color);
-			this.line(top2,bottom2,color);
-			this.line(top3,bottom3,color);
-			this.line(top4,bottom4,color);
-			var _this53 = this.p;
-			var mat3 = null;
-			var mat4 = null;
-			var quat = null;
-			if(top1 != null) {
-				top1.zero();
-				if(_this53.sizeVec3 == _this53.stackVec3.length) {
-					var newLength = _this53.sizeVec3 << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g4 = 0;
-					var _g12 = _this53.sizeVec3;
-					while(_g4 < _g12) {
-						var i1 = _g4++;
-						newArray[i1] = _this53.stackVec3[i1];
-						_this53.stackVec3[i1] = null;
-					}
-					_this53.stackVec3 = newArray;
-				}
-				_this53.stackVec3[_this53.sizeVec3++] = top1;
-			}
-			if(mat3 != null) {
-				var t00 = 1;
-				var t01 = 0;
-				var t02 = 0;
-				var t10 = 0;
-				var t11 = 1;
-				var t12 = 0;
-				var t20 = 0;
-				var t21 = 0;
-				var t22 = 1;
-				mat3.e00 = t00;
-				mat3.e01 = t01;
-				mat3.e02 = t02;
-				mat3.e10 = t10;
-				mat3.e11 = t11;
-				mat3.e12 = t12;
-				mat3.e20 = t20;
-				mat3.e21 = t21;
-				mat3.e22 = t22;
-				if(_this53.sizeMat3 == _this53.stackMat3.length) {
-					var newLength1 = _this53.sizeMat3 << 1;
-					var this2 = new Array(newLength1);
-					var newArray1 = this2;
-					var _g5 = 0;
-					var _g13 = _this53.sizeMat3;
-					while(_g5 < _g13) {
-						var i3 = _g5++;
-						newArray1[i3] = _this53.stackMat3[i3];
-						_this53.stackMat3[i3] = null;
-					}
-					_this53.stackMat3 = newArray1;
-				}
-				_this53.stackMat3[_this53.sizeMat3++] = mat3;
-			}
-			if(mat4 != null) {
-				var t001 = 1;
-				var t011 = 0;
-				var t021 = 0;
-				var t03 = 0;
-				var t101 = 0;
-				var t111 = 1;
-				var t121 = 0;
-				var t13 = 0;
-				var t201 = 0;
-				var t211 = 0;
-				var t221 = 1;
-				var t23 = 0;
-				var t30 = 0;
-				var t31 = 0;
-				var t32 = 0;
-				var t33 = 1;
-				mat4.e00 = t001;
-				mat4.e01 = t011;
-				mat4.e02 = t021;
-				mat4.e03 = t03;
-				mat4.e10 = t101;
-				mat4.e11 = t111;
-				mat4.e12 = t121;
-				mat4.e13 = t13;
-				mat4.e20 = t201;
-				mat4.e21 = t211;
-				mat4.e22 = t221;
-				mat4.e23 = t23;
-				mat4.e30 = t30;
-				mat4.e31 = t31;
-				mat4.e32 = t32;
-				mat4.e33 = t33;
-				if(_this53.sizeMat4 == _this53.stackMat4.length) {
-					var newLength2 = _this53.sizeMat4 << 1;
-					var this3 = new Array(newLength2);
-					var newArray2 = this3;
-					var _g6 = 0;
-					var _g14 = _this53.sizeMat4;
-					while(_g6 < _g14) {
-						var i4 = _g6++;
-						newArray2[i4] = _this53.stackMat4[i4];
-						_this53.stackMat4[i4] = null;
-					}
-					_this53.stackMat4 = newArray2;
-				}
-				_this53.stackMat4[_this53.sizeMat4++] = mat4;
-			}
-			if(quat != null) {
-				var tx25 = 0;
-				var ty25 = 0;
-				var tz25 = 0;
-				var tw = 1;
-				quat.x = tx25;
-				quat.y = ty25;
-				quat.z = tz25;
-				quat.w = tw;
-				if(_this53.sizeQuat == _this53.stackQuat.length) {
-					var newLength3 = _this53.sizeQuat << 1;
-					var this4 = new Array(newLength3);
-					var newArray3 = this4;
-					var _g7 = 0;
-					var _g15 = _this53.sizeQuat;
-					while(_g7 < _g15) {
-						var i5 = _g7++;
-						newArray3[i5] = _this53.stackQuat[i5];
-						_this53.stackQuat[i5] = null;
-					}
-					_this53.stackQuat = newArray3;
-				}
-				_this53.stackQuat[_this53.sizeQuat++] = quat;
-			}
-			var _this54 = this.p;
-			var mat31 = null;
-			var mat41 = null;
-			var quat1 = null;
-			if(top2 != null) {
-				top2.zero();
-				if(_this54.sizeVec3 == _this54.stackVec3.length) {
-					var newLength4 = _this54.sizeVec3 << 1;
-					var this5 = new Array(newLength4);
-					var newArray4 = this5;
-					var _g8 = 0;
-					var _g16 = _this54.sizeVec3;
-					while(_g8 < _g16) {
-						var i6 = _g8++;
-						newArray4[i6] = _this54.stackVec3[i6];
-						_this54.stackVec3[i6] = null;
-					}
-					_this54.stackVec3 = newArray4;
-				}
-				_this54.stackVec3[_this54.sizeVec3++] = top2;
-			}
-			if(mat31 != null) {
-				var t002 = 1;
-				var t012 = 0;
-				var t022 = 0;
-				var t102 = 0;
-				var t112 = 1;
-				var t122 = 0;
-				var t202 = 0;
-				var t212 = 0;
-				var t222 = 1;
-				mat31.e00 = t002;
-				mat31.e01 = t012;
-				mat31.e02 = t022;
-				mat31.e10 = t102;
-				mat31.e11 = t112;
-				mat31.e12 = t122;
-				mat31.e20 = t202;
-				mat31.e21 = t212;
-				mat31.e22 = t222;
-				if(_this54.sizeMat3 == _this54.stackMat3.length) {
-					var newLength5 = _this54.sizeMat3 << 1;
-					var this6 = new Array(newLength5);
-					var newArray5 = this6;
-					var _g9 = 0;
-					var _g17 = _this54.sizeMat3;
-					while(_g9 < _g17) {
-						var i7 = _g9++;
-						newArray5[i7] = _this54.stackMat3[i7];
-						_this54.stackMat3[i7] = null;
-					}
-					_this54.stackMat3 = newArray5;
-				}
-				_this54.stackMat3[_this54.sizeMat3++] = mat31;
-			}
-			if(mat41 != null) {
-				var t003 = 1;
-				var t013 = 0;
-				var t023 = 0;
-				var t031 = 0;
-				var t103 = 0;
-				var t113 = 1;
-				var t123 = 0;
-				var t131 = 0;
-				var t203 = 0;
-				var t213 = 0;
-				var t223 = 1;
-				var t231 = 0;
-				var t301 = 0;
-				var t311 = 0;
-				var t321 = 0;
-				var t331 = 1;
-				mat41.e00 = t003;
-				mat41.e01 = t013;
-				mat41.e02 = t023;
-				mat41.e03 = t031;
-				mat41.e10 = t103;
-				mat41.e11 = t113;
-				mat41.e12 = t123;
-				mat41.e13 = t131;
-				mat41.e20 = t203;
-				mat41.e21 = t213;
-				mat41.e22 = t223;
-				mat41.e23 = t231;
-				mat41.e30 = t301;
-				mat41.e31 = t311;
-				mat41.e32 = t321;
-				mat41.e33 = t331;
-				if(_this54.sizeMat4 == _this54.stackMat4.length) {
-					var newLength6 = _this54.sizeMat4 << 1;
-					var this7 = new Array(newLength6);
-					var newArray6 = this7;
-					var _g10 = 0;
-					var _g18 = _this54.sizeMat4;
-					while(_g10 < _g18) {
-						var i8 = _g10++;
-						newArray6[i8] = _this54.stackMat4[i8];
-						_this54.stackMat4[i8] = null;
-					}
-					_this54.stackMat4 = newArray6;
-				}
-				_this54.stackMat4[_this54.sizeMat4++] = mat41;
-			}
-			if(quat1 != null) {
-				var tx26 = 0;
-				var ty26 = 0;
-				var tz26 = 0;
-				var tw1 = 1;
-				quat1.x = tx26;
-				quat1.y = ty26;
-				quat1.z = tz26;
-				quat1.w = tw1;
-				if(_this54.sizeQuat == _this54.stackQuat.length) {
-					var newLength7 = _this54.sizeQuat << 1;
-					var this8 = new Array(newLength7);
-					var newArray7 = this8;
-					var _g19 = 0;
-					var _g110 = _this54.sizeQuat;
-					while(_g19 < _g110) {
-						var i9 = _g19++;
-						newArray7[i9] = _this54.stackQuat[i9];
-						_this54.stackQuat[i9] = null;
-					}
-					_this54.stackQuat = newArray7;
-				}
-				_this54.stackQuat[_this54.sizeQuat++] = quat1;
-			}
-			var _this55 = this.p;
-			var mat32 = null;
-			var mat42 = null;
-			var quat2 = null;
-			if(top3 != null) {
-				top3.zero();
-				if(_this55.sizeVec3 == _this55.stackVec3.length) {
-					var newLength8 = _this55.sizeVec3 << 1;
-					var this9 = new Array(newLength8);
-					var newArray8 = this9;
-					var _g20 = 0;
-					var _g111 = _this55.sizeVec3;
-					while(_g20 < _g111) {
-						var i10 = _g20++;
-						newArray8[i10] = _this55.stackVec3[i10];
-						_this55.stackVec3[i10] = null;
-					}
-					_this55.stackVec3 = newArray8;
-				}
-				_this55.stackVec3[_this55.sizeVec3++] = top3;
-			}
-			if(mat32 != null) {
-				var t004 = 1;
-				var t014 = 0;
-				var t024 = 0;
-				var t104 = 0;
-				var t114 = 1;
-				var t124 = 0;
-				var t204 = 0;
-				var t214 = 0;
-				var t224 = 1;
-				mat32.e00 = t004;
-				mat32.e01 = t014;
-				mat32.e02 = t024;
-				mat32.e10 = t104;
-				mat32.e11 = t114;
-				mat32.e12 = t124;
-				mat32.e20 = t204;
-				mat32.e21 = t214;
-				mat32.e22 = t224;
-				if(_this55.sizeMat3 == _this55.stackMat3.length) {
-					var newLength9 = _this55.sizeMat3 << 1;
-					var this10 = new Array(newLength9);
-					var newArray9 = this10;
-					var _g27 = 0;
-					var _g112 = _this55.sizeMat3;
-					while(_g27 < _g112) {
-						var i11 = _g27++;
-						newArray9[i11] = _this55.stackMat3[i11];
-						_this55.stackMat3[i11] = null;
-					}
-					_this55.stackMat3 = newArray9;
-				}
-				_this55.stackMat3[_this55.sizeMat3++] = mat32;
-			}
-			if(mat42 != null) {
-				var t005 = 1;
-				var t015 = 0;
-				var t025 = 0;
-				var t032 = 0;
-				var t105 = 0;
-				var t115 = 1;
-				var t125 = 0;
-				var t132 = 0;
-				var t205 = 0;
-				var t215 = 0;
-				var t225 = 1;
-				var t232 = 0;
-				var t302 = 0;
-				var t312 = 0;
-				var t322 = 0;
-				var t332 = 1;
-				mat42.e00 = t005;
-				mat42.e01 = t015;
-				mat42.e02 = t025;
-				mat42.e03 = t032;
-				mat42.e10 = t105;
-				mat42.e11 = t115;
-				mat42.e12 = t125;
-				mat42.e13 = t132;
-				mat42.e20 = t205;
-				mat42.e21 = t215;
-				mat42.e22 = t225;
-				mat42.e23 = t232;
-				mat42.e30 = t302;
-				mat42.e31 = t312;
-				mat42.e32 = t322;
-				mat42.e33 = t332;
-				if(_this55.sizeMat4 == _this55.stackMat4.length) {
-					var newLength10 = _this55.sizeMat4 << 1;
-					var this11 = new Array(newLength10);
-					var newArray10 = this11;
-					var _g28 = 0;
-					var _g113 = _this55.sizeMat4;
-					while(_g28 < _g113) {
-						var i12 = _g28++;
-						newArray10[i12] = _this55.stackMat4[i12];
-						_this55.stackMat4[i12] = null;
-					}
-					_this55.stackMat4 = newArray10;
-				}
-				_this55.stackMat4[_this55.sizeMat4++] = mat42;
-			}
-			if(quat2 != null) {
-				var tx27 = 0;
-				var ty27 = 0;
-				var tz27 = 0;
-				var tw2 = 1;
-				quat2.x = tx27;
-				quat2.y = ty27;
-				quat2.z = tz27;
-				quat2.w = tw2;
-				if(_this55.sizeQuat == _this55.stackQuat.length) {
-					var newLength11 = _this55.sizeQuat << 1;
-					var this12 = new Array(newLength11);
-					var newArray11 = this12;
-					var _g29 = 0;
-					var _g114 = _this55.sizeQuat;
-					while(_g29 < _g114) {
-						var i13 = _g29++;
-						newArray11[i13] = _this55.stackQuat[i13];
-						_this55.stackQuat[i13] = null;
-					}
-					_this55.stackQuat = newArray11;
-				}
-				_this55.stackQuat[_this55.sizeQuat++] = quat2;
-			}
-			var _this56 = this.p;
-			var mat33 = null;
-			var mat43 = null;
-			var quat3 = null;
-			if(top4 != null) {
-				top4.zero();
-				if(_this56.sizeVec3 == _this56.stackVec3.length) {
-					var newLength12 = _this56.sizeVec3 << 1;
-					var this13 = new Array(newLength12);
-					var newArray12 = this13;
-					var _g30 = 0;
-					var _g115 = _this56.sizeVec3;
-					while(_g30 < _g115) {
-						var i14 = _g30++;
-						newArray12[i14] = _this56.stackVec3[i14];
-						_this56.stackVec3[i14] = null;
-					}
-					_this56.stackVec3 = newArray12;
-				}
-				_this56.stackVec3[_this56.sizeVec3++] = top4;
-			}
-			if(mat33 != null) {
-				var t006 = 1;
-				var t016 = 0;
-				var t026 = 0;
-				var t106 = 0;
-				var t116 = 1;
-				var t126 = 0;
-				var t206 = 0;
-				var t216 = 0;
-				var t226 = 1;
-				mat33.e00 = t006;
-				mat33.e01 = t016;
-				mat33.e02 = t026;
-				mat33.e10 = t106;
-				mat33.e11 = t116;
-				mat33.e12 = t126;
-				mat33.e20 = t206;
-				mat33.e21 = t216;
-				mat33.e22 = t226;
-				if(_this56.sizeMat3 == _this56.stackMat3.length) {
-					var newLength13 = _this56.sizeMat3 << 1;
-					var this14 = new Array(newLength13);
-					var newArray13 = this14;
-					var _g36 = 0;
-					var _g116 = _this56.sizeMat3;
-					while(_g36 < _g116) {
-						var i15 = _g36++;
-						newArray13[i15] = _this56.stackMat3[i15];
-						_this56.stackMat3[i15] = null;
-					}
-					_this56.stackMat3 = newArray13;
-				}
-				_this56.stackMat3[_this56.sizeMat3++] = mat33;
-			}
-			if(mat43 != null) {
-				var t007 = 1;
-				var t017 = 0;
-				var t027 = 0;
-				var t033 = 0;
-				var t107 = 0;
-				var t117 = 1;
-				var t127 = 0;
-				var t133 = 0;
-				var t207 = 0;
-				var t217 = 0;
-				var t227 = 1;
-				var t233 = 0;
-				var t303 = 0;
-				var t313 = 0;
-				var t323 = 0;
-				var t333 = 1;
-				mat43.e00 = t007;
-				mat43.e01 = t017;
-				mat43.e02 = t027;
-				mat43.e03 = t033;
-				mat43.e10 = t107;
-				mat43.e11 = t117;
-				mat43.e12 = t127;
-				mat43.e13 = t133;
-				mat43.e20 = t207;
-				mat43.e21 = t217;
-				mat43.e22 = t227;
-				mat43.e23 = t233;
-				mat43.e30 = t303;
-				mat43.e31 = t313;
-				mat43.e32 = t323;
-				mat43.e33 = t333;
-				if(_this56.sizeMat4 == _this56.stackMat4.length) {
-					var newLength14 = _this56.sizeMat4 << 1;
-					var this15 = new Array(newLength14);
-					var newArray14 = this15;
-					var _g37 = 0;
-					var _g117 = _this56.sizeMat4;
-					while(_g37 < _g117) {
-						var i16 = _g37++;
-						newArray14[i16] = _this56.stackMat4[i16];
-						_this56.stackMat4[i16] = null;
-					}
-					_this56.stackMat4 = newArray14;
-				}
-				_this56.stackMat4[_this56.sizeMat4++] = mat43;
-			}
-			if(quat3 != null) {
-				var tx28 = 0;
-				var ty28 = 0;
-				var tz28 = 0;
-				var tw3 = 1;
-				quat3.x = tx28;
-				quat3.y = ty28;
-				quat3.z = tz28;
-				quat3.w = tw3;
-				if(_this56.sizeQuat == _this56.stackQuat.length) {
-					var newLength15 = _this56.sizeQuat << 1;
-					var this16 = new Array(newLength15);
-					var newArray15 = this16;
-					var _g38 = 0;
-					var _g118 = _this56.sizeQuat;
-					while(_g38 < _g118) {
-						var i17 = _g38++;
-						newArray15[i17] = _this56.stackQuat[i17];
-						_this56.stackQuat[i17] = null;
-					}
-					_this56.stackQuat = newArray15;
-				}
-				_this56.stackQuat[_this56.sizeQuat++] = quat3;
-			}
-			var _this57 = this.p;
-			var mat34 = null;
-			var mat44 = null;
-			var quat4 = null;
-			if(bottom1 != null) {
-				bottom1.zero();
-				if(_this57.sizeVec3 == _this57.stackVec3.length) {
-					var newLength16 = _this57.sizeVec3 << 1;
-					var this17 = new Array(newLength16);
-					var newArray16 = this17;
-					var _g39 = 0;
-					var _g119 = _this57.sizeVec3;
-					while(_g39 < _g119) {
-						var i18 = _g39++;
-						newArray16[i18] = _this57.stackVec3[i18];
-						_this57.stackVec3[i18] = null;
-					}
-					_this57.stackVec3 = newArray16;
-				}
-				_this57.stackVec3[_this57.sizeVec3++] = bottom1;
-			}
-			if(mat34 != null) {
-				var t008 = 1;
-				var t018 = 0;
-				var t028 = 0;
-				var t108 = 0;
-				var t118 = 1;
-				var t128 = 0;
-				var t208 = 0;
-				var t218 = 0;
-				var t228 = 1;
-				mat34.e00 = t008;
-				mat34.e01 = t018;
-				mat34.e02 = t028;
-				mat34.e10 = t108;
-				mat34.e11 = t118;
-				mat34.e12 = t128;
-				mat34.e20 = t208;
-				mat34.e21 = t218;
-				mat34.e22 = t228;
-				if(_this57.sizeMat3 == _this57.stackMat3.length) {
-					var newLength17 = _this57.sizeMat3 << 1;
-					var this18 = new Array(newLength17);
-					var newArray17 = this18;
-					var _g40 = 0;
-					var _g120 = _this57.sizeMat3;
-					while(_g40 < _g120) {
-						var i19 = _g40++;
-						newArray17[i19] = _this57.stackMat3[i19];
-						_this57.stackMat3[i19] = null;
-					}
-					_this57.stackMat3 = newArray17;
-				}
-				_this57.stackMat3[_this57.sizeMat3++] = mat34;
-			}
-			if(mat44 != null) {
-				var t009 = 1;
-				var t019 = 0;
-				var t029 = 0;
-				var t034 = 0;
-				var t109 = 0;
-				var t119 = 1;
-				var t129 = 0;
-				var t134 = 0;
-				var t209 = 0;
-				var t219 = 0;
-				var t229 = 1;
-				var t234 = 0;
-				var t304 = 0;
-				var t314 = 0;
-				var t324 = 0;
-				var t334 = 1;
-				mat44.e00 = t009;
-				mat44.e01 = t019;
-				mat44.e02 = t029;
-				mat44.e03 = t034;
-				mat44.e10 = t109;
-				mat44.e11 = t119;
-				mat44.e12 = t129;
-				mat44.e13 = t134;
-				mat44.e20 = t209;
-				mat44.e21 = t219;
-				mat44.e22 = t229;
-				mat44.e23 = t234;
-				mat44.e30 = t304;
-				mat44.e31 = t314;
-				mat44.e32 = t324;
-				mat44.e33 = t334;
-				if(_this57.sizeMat4 == _this57.stackMat4.length) {
-					var newLength18 = _this57.sizeMat4 << 1;
-					var this19 = new Array(newLength18);
-					var newArray18 = this19;
-					var _g41 = 0;
-					var _g121 = _this57.sizeMat4;
-					while(_g41 < _g121) {
-						var i20 = _g41++;
-						newArray18[i20] = _this57.stackMat4[i20];
-						_this57.stackMat4[i20] = null;
-					}
-					_this57.stackMat4 = newArray18;
-				}
-				_this57.stackMat4[_this57.sizeMat4++] = mat44;
-			}
-			if(quat4 != null) {
-				var tx29 = 0;
-				var ty29 = 0;
-				var tz29 = 0;
-				var tw4 = 1;
-				quat4.x = tx29;
-				quat4.y = ty29;
-				quat4.z = tz29;
-				quat4.w = tw4;
-				if(_this57.sizeQuat == _this57.stackQuat.length) {
-					var newLength19 = _this57.sizeQuat << 1;
-					var this20 = new Array(newLength19);
-					var newArray19 = this20;
-					var _g42 = 0;
-					var _g122 = _this57.sizeQuat;
-					while(_g42 < _g122) {
-						var i23 = _g42++;
-						newArray19[i23] = _this57.stackQuat[i23];
-						_this57.stackQuat[i23] = null;
-					}
-					_this57.stackQuat = newArray19;
-				}
-				_this57.stackQuat[_this57.sizeQuat++] = quat4;
-			}
-			var _this58 = this.p;
-			var mat35 = null;
-			var mat45 = null;
-			var quat5 = null;
-			if(bottom2 != null) {
-				bottom2.zero();
-				if(_this58.sizeVec3 == _this58.stackVec3.length) {
-					var newLength20 = _this58.sizeVec3 << 1;
-					var this21 = new Array(newLength20);
-					var newArray20 = this21;
-					var _g43 = 0;
-					var _g123 = _this58.sizeVec3;
-					while(_g43 < _g123) {
-						var i24 = _g43++;
-						newArray20[i24] = _this58.stackVec3[i24];
-						_this58.stackVec3[i24] = null;
-					}
-					_this58.stackVec3 = newArray20;
-				}
-				_this58.stackVec3[_this58.sizeVec3++] = bottom2;
-			}
-			if(mat35 != null) {
-				var t0010 = 1;
-				var t0110 = 0;
-				var t0210 = 0;
-				var t1010 = 0;
-				var t1110 = 1;
-				var t1210 = 0;
-				var t2010 = 0;
-				var t2110 = 0;
-				var t2210 = 1;
-				mat35.e00 = t0010;
-				mat35.e01 = t0110;
-				mat35.e02 = t0210;
-				mat35.e10 = t1010;
-				mat35.e11 = t1110;
-				mat35.e12 = t1210;
-				mat35.e20 = t2010;
-				mat35.e21 = t2110;
-				mat35.e22 = t2210;
-				if(_this58.sizeMat3 == _this58.stackMat3.length) {
-					var newLength21 = _this58.sizeMat3 << 1;
-					var this22 = new Array(newLength21);
-					var newArray21 = this22;
-					var _g44 = 0;
-					var _g124 = _this58.sizeMat3;
-					while(_g44 < _g124) {
-						var i25 = _g44++;
-						newArray21[i25] = _this58.stackMat3[i25];
-						_this58.stackMat3[i25] = null;
-					}
-					_this58.stackMat3 = newArray21;
-				}
-				_this58.stackMat3[_this58.sizeMat3++] = mat35;
-			}
-			if(mat45 != null) {
-				var t0011 = 1;
-				var t0111 = 0;
-				var t0211 = 0;
-				var t035 = 0;
-				var t1011 = 0;
-				var t1111 = 1;
-				var t1211 = 0;
-				var t135 = 0;
-				var t2011 = 0;
-				var t2111 = 0;
-				var t2211 = 1;
-				var t235 = 0;
-				var t305 = 0;
-				var t315 = 0;
-				var t325 = 0;
-				var t335 = 1;
-				mat45.e00 = t0011;
-				mat45.e01 = t0111;
-				mat45.e02 = t0211;
-				mat45.e03 = t035;
-				mat45.e10 = t1011;
-				mat45.e11 = t1111;
-				mat45.e12 = t1211;
-				mat45.e13 = t135;
-				mat45.e20 = t2011;
-				mat45.e21 = t2111;
-				mat45.e22 = t2211;
-				mat45.e23 = t235;
-				mat45.e30 = t305;
-				mat45.e31 = t315;
-				mat45.e32 = t325;
-				mat45.e33 = t335;
-				if(_this58.sizeMat4 == _this58.stackMat4.length) {
-					var newLength22 = _this58.sizeMat4 << 1;
-					var this23 = new Array(newLength22);
-					var newArray22 = this23;
-					var _g45 = 0;
-					var _g125 = _this58.sizeMat4;
-					while(_g45 < _g125) {
-						var i26 = _g45++;
-						newArray22[i26] = _this58.stackMat4[i26];
-						_this58.stackMat4[i26] = null;
-					}
-					_this58.stackMat4 = newArray22;
-				}
-				_this58.stackMat4[_this58.sizeMat4++] = mat45;
-			}
-			if(quat5 != null) {
-				var tx30 = 0;
-				var ty30 = 0;
-				var tz30 = 0;
-				var tw5 = 1;
-				quat5.x = tx30;
-				quat5.y = ty30;
-				quat5.z = tz30;
-				quat5.w = tw5;
-				if(_this58.sizeQuat == _this58.stackQuat.length) {
-					var newLength23 = _this58.sizeQuat << 1;
-					var this24 = new Array(newLength23);
-					var newArray23 = this24;
-					var _g46 = 0;
-					var _g126 = _this58.sizeQuat;
-					while(_g46 < _g126) {
-						var i27 = _g46++;
-						newArray23[i27] = _this58.stackQuat[i27];
-						_this58.stackQuat[i27] = null;
-					}
-					_this58.stackQuat = newArray23;
-				}
-				_this58.stackQuat[_this58.sizeQuat++] = quat5;
-			}
-			var _this59 = this.p;
-			var mat36 = null;
-			var mat46 = null;
-			var quat6 = null;
-			if(bottom3 != null) {
-				bottom3.zero();
-				if(_this59.sizeVec3 == _this59.stackVec3.length) {
-					var newLength24 = _this59.sizeVec3 << 1;
-					var this25 = new Array(newLength24);
-					var newArray24 = this25;
-					var _g47 = 0;
-					var _g127 = _this59.sizeVec3;
-					while(_g47 < _g127) {
-						var i28 = _g47++;
-						newArray24[i28] = _this59.stackVec3[i28];
-						_this59.stackVec3[i28] = null;
-					}
-					_this59.stackVec3 = newArray24;
-				}
-				_this59.stackVec3[_this59.sizeVec3++] = bottom3;
-			}
-			if(mat36 != null) {
-				var t0012 = 1;
-				var t0112 = 0;
-				var t0212 = 0;
-				var t1012 = 0;
-				var t1112 = 1;
-				var t1212 = 0;
-				var t2012 = 0;
-				var t2112 = 0;
-				var t2212 = 1;
-				mat36.e00 = t0012;
-				mat36.e01 = t0112;
-				mat36.e02 = t0212;
-				mat36.e10 = t1012;
-				mat36.e11 = t1112;
-				mat36.e12 = t1212;
-				mat36.e20 = t2012;
-				mat36.e21 = t2112;
-				mat36.e22 = t2212;
-				if(_this59.sizeMat3 == _this59.stackMat3.length) {
-					var newLength25 = _this59.sizeMat3 << 1;
-					var this26 = new Array(newLength25);
-					var newArray25 = this26;
-					var _g48 = 0;
-					var _g128 = _this59.sizeMat3;
-					while(_g48 < _g128) {
-						var i29 = _g48++;
-						newArray25[i29] = _this59.stackMat3[i29];
-						_this59.stackMat3[i29] = null;
-					}
-					_this59.stackMat3 = newArray25;
-				}
-				_this59.stackMat3[_this59.sizeMat3++] = mat36;
-			}
-			if(mat46 != null) {
-				var t0013 = 1;
-				var t0113 = 0;
-				var t0213 = 0;
-				var t036 = 0;
-				var t1013 = 0;
-				var t1113 = 1;
-				var t1213 = 0;
-				var t136 = 0;
-				var t2013 = 0;
-				var t2113 = 0;
-				var t2213 = 1;
-				var t236 = 0;
-				var t306 = 0;
-				var t316 = 0;
-				var t326 = 0;
-				var t336 = 1;
-				mat46.e00 = t0013;
-				mat46.e01 = t0113;
-				mat46.e02 = t0213;
-				mat46.e03 = t036;
-				mat46.e10 = t1013;
-				mat46.e11 = t1113;
-				mat46.e12 = t1213;
-				mat46.e13 = t136;
-				mat46.e20 = t2013;
-				mat46.e21 = t2113;
-				mat46.e22 = t2213;
-				mat46.e23 = t236;
-				mat46.e30 = t306;
-				mat46.e31 = t316;
-				mat46.e32 = t326;
-				mat46.e33 = t336;
-				if(_this59.sizeMat4 == _this59.stackMat4.length) {
-					var newLength26 = _this59.sizeMat4 << 1;
-					var this27 = new Array(newLength26);
-					var newArray26 = this27;
-					var _g49 = 0;
-					var _g129 = _this59.sizeMat4;
-					while(_g49 < _g129) {
-						var i30 = _g49++;
-						newArray26[i30] = _this59.stackMat4[i30];
-						_this59.stackMat4[i30] = null;
-					}
-					_this59.stackMat4 = newArray26;
-				}
-				_this59.stackMat4[_this59.sizeMat4++] = mat46;
-			}
-			if(quat6 != null) {
-				var tx31 = 0;
-				var ty31 = 0;
-				var tz31 = 0;
-				var tw6 = 1;
-				quat6.x = tx31;
-				quat6.y = ty31;
-				quat6.z = tz31;
-				quat6.w = tw6;
-				if(_this59.sizeQuat == _this59.stackQuat.length) {
-					var newLength27 = _this59.sizeQuat << 1;
-					var this28 = new Array(newLength27);
-					var newArray27 = this28;
-					var _g50 = 0;
-					var _g130 = _this59.sizeQuat;
-					while(_g50 < _g130) {
-						var i31 = _g50++;
-						newArray27[i31] = _this59.stackQuat[i31];
-						_this59.stackQuat[i31] = null;
-					}
-					_this59.stackQuat = newArray27;
-				}
-				_this59.stackQuat[_this59.sizeQuat++] = quat6;
-			}
-			var _this60 = this.p;
-			var mat37 = null;
-			var mat47 = null;
-			var quat7 = null;
-			if(bottom4 != null) {
-				bottom4.zero();
-				if(_this60.sizeVec3 == _this60.stackVec3.length) {
-					var newLength28 = _this60.sizeVec3 << 1;
-					var this29 = new Array(newLength28);
-					var newArray28 = this29;
-					var _g51 = 0;
-					var _g131 = _this60.sizeVec3;
-					while(_g51 < _g131) {
-						var i32 = _g51++;
-						newArray28[i32] = _this60.stackVec3[i32];
-						_this60.stackVec3[i32] = null;
-					}
-					_this60.stackVec3 = newArray28;
-				}
-				_this60.stackVec3[_this60.sizeVec3++] = bottom4;
-			}
-			if(mat37 != null) {
-				var t0014 = 1;
-				var t0114 = 0;
-				var t0214 = 0;
-				var t1014 = 0;
-				var t1114 = 1;
-				var t1214 = 0;
-				var t2014 = 0;
-				var t2114 = 0;
-				var t2214 = 1;
-				mat37.e00 = t0014;
-				mat37.e01 = t0114;
-				mat37.e02 = t0214;
-				mat37.e10 = t1014;
-				mat37.e11 = t1114;
-				mat37.e12 = t1214;
-				mat37.e20 = t2014;
-				mat37.e21 = t2114;
-				mat37.e22 = t2214;
-				if(_this60.sizeMat3 == _this60.stackMat3.length) {
-					var newLength29 = _this60.sizeMat3 << 1;
-					var this30 = new Array(newLength29);
-					var newArray29 = this30;
-					var _g52 = 0;
-					var _g132 = _this60.sizeMat3;
-					while(_g52 < _g132) {
-						var i33 = _g52++;
-						newArray29[i33] = _this60.stackMat3[i33];
-						_this60.stackMat3[i33] = null;
-					}
-					_this60.stackMat3 = newArray29;
-				}
-				_this60.stackMat3[_this60.sizeMat3++] = mat37;
-			}
-			if(mat47 != null) {
-				var t0015 = 1;
-				var t0115 = 0;
-				var t0215 = 0;
-				var t037 = 0;
-				var t1015 = 0;
-				var t1115 = 1;
-				var t1215 = 0;
-				var t137 = 0;
-				var t2015 = 0;
-				var t2115 = 0;
-				var t2215 = 1;
-				var t237 = 0;
-				var t307 = 0;
-				var t317 = 0;
-				var t327 = 0;
-				var t337 = 1;
-				mat47.e00 = t0015;
-				mat47.e01 = t0115;
-				mat47.e02 = t0215;
-				mat47.e03 = t037;
-				mat47.e10 = t1015;
-				mat47.e11 = t1115;
-				mat47.e12 = t1215;
-				mat47.e13 = t137;
-				mat47.e20 = t2015;
-				mat47.e21 = t2115;
-				mat47.e22 = t2215;
-				mat47.e23 = t237;
-				mat47.e30 = t307;
-				mat47.e31 = t317;
-				mat47.e32 = t327;
-				mat47.e33 = t337;
-				if(_this60.sizeMat4 == _this60.stackMat4.length) {
-					var newLength30 = _this60.sizeMat4 << 1;
-					var this31 = new Array(newLength30);
-					var newArray30 = this31;
-					var _g53 = 0;
-					var _g133 = _this60.sizeMat4;
-					while(_g53 < _g133) {
-						var i34 = _g53++;
-						newArray30[i34] = _this60.stackMat4[i34];
-						_this60.stackMat4[i34] = null;
-					}
-					_this60.stackMat4 = newArray30;
-				}
-				_this60.stackMat4[_this60.sizeMat4++] = mat47;
-			}
-			if(quat7 != null) {
-				var tx32 = 0;
-				var ty32 = 0;
-				var tz32 = 0;
-				var tw7 = 1;
-				quat7.x = tx32;
-				quat7.y = ty32;
-				quat7.z = tz32;
-				quat7.w = tw7;
-				if(_this60.sizeQuat == _this60.stackQuat.length) {
-					var newLength31 = _this60.sizeQuat << 1;
-					var this32 = new Array(newLength31);
-					var newArray31 = this32;
-					var _g54 = 0;
-					var _g134 = _this60.sizeQuat;
-					while(_g54 < _g134) {
-						var i35 = _g54++;
-						newArray31[i35] = _this60.stackQuat[i35];
-						_this60.stackQuat[i35] = null;
-					}
-					_this60.stackQuat = newArray31;
-				}
-				_this60.stackQuat[_this60.sizeQuat++] = quat7;
-			}
-		} else {
-			var _g410 = 0;
-			while(_g410 < 8) {
-				var i36 = _g410++;
-				var _this61 = this.tmpCircleNorms[i36];
-				var v5 = this.circleCoords[i36];
-				_this61.x = v5.x;
-				_this61.y = v5.y;
-				_this61.z = v5.z;
-				var _this62 = _this61;
-				var tx33 = _this62.x * m.e00 + _this62.y * m.e01 + _this62.z * m.e02;
-				var ty33 = _this62.x * m.e10 + _this62.y * m.e11 + _this62.z * m.e12;
-				var tz33 = _this62.x * m.e20 + _this62.y * m.e21 + _this62.z * m.e22;
-				_this62.x = tx33;
-				_this62.y = ty33;
-				_this62.z = tz33;
-				var _this63 = this.tmpCircleVerts1[i36];
-				var v6 = this.tmpCircleNorms[i36];
-				_this63.x = v6.x;
-				_this63.y = v6.y;
-				_this63.z = v6.z;
-				var _this64 = _this63;
-				var tx34 = _this64.x * radius;
-				var ty34 = _this64.y * radius;
-				var tz34 = _this64.z * radius;
-				_this64.x = tx34;
-				_this64.y = ty34;
-				_this64.z = tz34;
-				var _this65 = _this64;
-				var tx35 = _this65.x + o.x;
-				var ty35 = _this65.y + o.y;
-				var tz35 = _this65.z + o.z;
-				_this65.x = tx35;
-				_this65.y = ty35;
-				_this65.z = tz35;
-				var _this66 = this.tmpCircleVerts2[i36];
-				var v7 = this.tmpCircleVerts1[i36];
-				_this66.x = v7.x;
-				_this66.y = v7.y;
-				_this66.z = v7.z;
-				var _this67 = this.tmpCircleVerts1[i36];
-				var tx36 = _this67.x + ey.x * halfHeight;
-				var ty36 = _this67.y + ey.y * halfHeight;
-				var tz36 = _this67.z + ey.z * halfHeight;
-				_this67.x = tx36;
-				_this67.y = ty36;
-				_this67.z = tz36;
-				var _this68 = this.tmpCircleVerts2[i36];
-				var s6 = -halfHeight;
-				var tx37 = _this68.x + ey.x * s6;
-				var ty37 = _this68.y + ey.y * s6;
-				var tz37 = _this68.z + ey.z * s6;
-				_this68.x = tx37;
-				_this68.y = ty37;
-				_this68.z = tz37;
-			}
-			var _g55 = 0;
-			while(_g55 < 8) {
-				var i37 = _g55++;
-				var v12 = this.tmpCircleVerts1[i37];
-				var v22 = this.tmpCircleVerts2[i37];
-				var v32 = this.tmpCircleVerts2[(i37 + 1) % 8];
-				var v41 = this.tmpCircleVerts1[(i37 + 1) % 8];
-				var n12 = this.tmpCircleNorms[i37];
-				var n22 = this.tmpCircleNorms[(i37 + 1) % 8];
-				this.rect(v12,v22,v32,v41,n12,n12,n22,n22,color);
-			}
-		}
-		var _this69 = this.p;
-		var mat38 = null;
-		var mat48 = null;
-		var quat8 = null;
-		if(top != null) {
-			top.zero();
-			if(_this69.sizeVec3 == _this69.stackVec3.length) {
-				var newLength32 = _this69.sizeVec3 << 1;
-				var this33 = new Array(newLength32);
-				var newArray32 = this33;
-				var _g56 = 0;
-				var _g135 = _this69.sizeVec3;
-				while(_g56 < _g135) {
-					var i38 = _g56++;
-					newArray32[i38] = _this69.stackVec3[i38];
-					_this69.stackVec3[i38] = null;
-				}
-				_this69.stackVec3 = newArray32;
-			}
-			_this69.stackVec3[_this69.sizeVec3++] = top;
-		}
-		if(mat38 != null) {
-			var t0016 = 1;
-			var t0116 = 0;
-			var t0216 = 0;
-			var t1016 = 0;
-			var t1116 = 1;
-			var t1216 = 0;
-			var t2016 = 0;
-			var t2116 = 0;
-			var t2216 = 1;
-			mat38.e00 = t0016;
-			mat38.e01 = t0116;
-			mat38.e02 = t0216;
-			mat38.e10 = t1016;
-			mat38.e11 = t1116;
-			mat38.e12 = t1216;
-			mat38.e20 = t2016;
-			mat38.e21 = t2116;
-			mat38.e22 = t2216;
-			if(_this69.sizeMat3 == _this69.stackMat3.length) {
-				var newLength33 = _this69.sizeMat3 << 1;
-				var this34 = new Array(newLength33);
-				var newArray33 = this34;
-				var _g57 = 0;
-				var _g136 = _this69.sizeMat3;
-				while(_g57 < _g136) {
-					var i39 = _g57++;
-					newArray33[i39] = _this69.stackMat3[i39];
-					_this69.stackMat3[i39] = null;
-				}
-				_this69.stackMat3 = newArray33;
-			}
-			_this69.stackMat3[_this69.sizeMat3++] = mat38;
-		}
-		if(mat48 != null) {
-			var t0017 = 1;
-			var t0117 = 0;
-			var t0217 = 0;
-			var t038 = 0;
-			var t1017 = 0;
-			var t1117 = 1;
-			var t1217 = 0;
-			var t138 = 0;
-			var t2017 = 0;
-			var t2117 = 0;
-			var t2217 = 1;
-			var t238 = 0;
-			var t308 = 0;
-			var t318 = 0;
-			var t328 = 0;
-			var t338 = 1;
-			mat48.e00 = t0017;
-			mat48.e01 = t0117;
-			mat48.e02 = t0217;
-			mat48.e03 = t038;
-			mat48.e10 = t1017;
-			mat48.e11 = t1117;
-			mat48.e12 = t1217;
-			mat48.e13 = t138;
-			mat48.e20 = t2017;
-			mat48.e21 = t2117;
-			mat48.e22 = t2217;
-			mat48.e23 = t238;
-			mat48.e30 = t308;
-			mat48.e31 = t318;
-			mat48.e32 = t328;
-			mat48.e33 = t338;
-			if(_this69.sizeMat4 == _this69.stackMat4.length) {
-				var newLength34 = _this69.sizeMat4 << 1;
-				var this35 = new Array(newLength34);
-				var newArray34 = this35;
-				var _g58 = 0;
-				var _g137 = _this69.sizeMat4;
-				while(_g58 < _g137) {
-					var i40 = _g58++;
-					newArray34[i40] = _this69.stackMat4[i40];
-					_this69.stackMat4[i40] = null;
-				}
-				_this69.stackMat4 = newArray34;
-			}
-			_this69.stackMat4[_this69.sizeMat4++] = mat48;
-		}
-		if(quat8 != null) {
-			var tx38 = 0;
-			var ty38 = 0;
-			var tz38 = 0;
-			var tw8 = 1;
-			quat8.x = tx38;
-			quat8.y = ty38;
-			quat8.z = tz38;
-			quat8.w = tw8;
-			if(_this69.sizeQuat == _this69.stackQuat.length) {
-				var newLength35 = _this69.sizeQuat << 1;
-				var this36 = new Array(newLength35);
-				var newArray35 = this36;
-				var _g59 = 0;
-				var _g138 = _this69.sizeQuat;
-				while(_g59 < _g138) {
-					var i41 = _g59++;
-					newArray35[i41] = _this69.stackQuat[i41];
-					_this69.stackQuat[i41] = null;
-				}
-				_this69.stackQuat = newArray35;
-			}
-			_this69.stackQuat[_this69.sizeQuat++] = quat8;
-		}
-		var _this70 = this.p;
-		var mat39 = null;
-		var mat49 = null;
-		var quat9 = null;
-		if(bottom != null) {
-			bottom.zero();
-			if(_this70.sizeVec3 == _this70.stackVec3.length) {
-				var newLength36 = _this70.sizeVec3 << 1;
-				var this37 = new Array(newLength36);
-				var newArray36 = this37;
-				var _g60 = 0;
-				var _g139 = _this70.sizeVec3;
-				while(_g60 < _g139) {
-					var i42 = _g60++;
-					newArray36[i42] = _this70.stackVec3[i42];
-					_this70.stackVec3[i42] = null;
-				}
-				_this70.stackVec3 = newArray36;
-			}
-			_this70.stackVec3[_this70.sizeVec3++] = bottom;
-		}
-		if(mat39 != null) {
-			var t0018 = 1;
-			var t0118 = 0;
-			var t0218 = 0;
-			var t1018 = 0;
-			var t1118 = 1;
-			var t1218 = 0;
-			var t2018 = 0;
-			var t2118 = 0;
-			var t2218 = 1;
-			mat39.e00 = t0018;
-			mat39.e01 = t0118;
-			mat39.e02 = t0218;
-			mat39.e10 = t1018;
-			mat39.e11 = t1118;
-			mat39.e12 = t1218;
-			mat39.e20 = t2018;
-			mat39.e21 = t2118;
-			mat39.e22 = t2218;
-			if(_this70.sizeMat3 == _this70.stackMat3.length) {
-				var newLength37 = _this70.sizeMat3 << 1;
-				var this38 = new Array(newLength37);
-				var newArray37 = this38;
-				var _g61 = 0;
-				var _g140 = _this70.sizeMat3;
-				while(_g61 < _g140) {
-					var i43 = _g61++;
-					newArray37[i43] = _this70.stackMat3[i43];
-					_this70.stackMat3[i43] = null;
-				}
-				_this70.stackMat3 = newArray37;
-			}
-			_this70.stackMat3[_this70.sizeMat3++] = mat39;
-		}
-		if(mat49 != null) {
-			var t0019 = 1;
-			var t0119 = 0;
-			var t0219 = 0;
-			var t039 = 0;
-			var t1019 = 0;
-			var t1119 = 1;
-			var t1219 = 0;
-			var t139 = 0;
-			var t2019 = 0;
-			var t2119 = 0;
-			var t2219 = 1;
-			var t239 = 0;
-			var t309 = 0;
-			var t319 = 0;
-			var t329 = 0;
-			var t339 = 1;
-			mat49.e00 = t0019;
-			mat49.e01 = t0119;
-			mat49.e02 = t0219;
-			mat49.e03 = t039;
-			mat49.e10 = t1019;
-			mat49.e11 = t1119;
-			mat49.e12 = t1219;
-			mat49.e13 = t139;
-			mat49.e20 = t2019;
-			mat49.e21 = t2119;
-			mat49.e22 = t2219;
-			mat49.e23 = t239;
-			mat49.e30 = t309;
-			mat49.e31 = t319;
-			mat49.e32 = t329;
-			mat49.e33 = t339;
-			if(_this70.sizeMat4 == _this70.stackMat4.length) {
-				var newLength38 = _this70.sizeMat4 << 1;
-				var this39 = new Array(newLength38);
-				var newArray38 = this39;
-				var _g62 = 0;
-				var _g141 = _this70.sizeMat4;
-				while(_g62 < _g141) {
-					var i44 = _g62++;
-					newArray38[i44] = _this70.stackMat4[i44];
-					_this70.stackMat4[i44] = null;
-				}
-				_this70.stackMat4 = newArray38;
-			}
-			_this70.stackMat4[_this70.sizeMat4++] = mat49;
-		}
-		if(quat9 != null) {
-			var tx39 = 0;
-			var ty39 = 0;
-			var tz39 = 0;
-			var tw9 = 1;
-			quat9.x = tx39;
-			quat9.y = ty39;
-			quat9.z = tz39;
-			quat9.w = tw9;
-			if(_this70.sizeQuat == _this70.stackQuat.length) {
-				var newLength39 = _this70.sizeQuat << 1;
-				var this40 = new Array(newLength39);
-				var newArray39 = this40;
-				var _g63 = 0;
-				var _g142 = _this70.sizeQuat;
-				while(_g63 < _g142) {
-					var i45 = _g63++;
-					newArray39[i45] = _this70.stackQuat[i45];
-					_this70.stackQuat[i45] = null;
-				}
-				_this70.stackQuat = newArray39;
-			}
-			_this70.stackQuat[_this70.sizeQuat++] = quat9;
-		}
-		var _this71 = this.p;
-		var mat310 = null;
-		var mat410 = null;
-		var quat10 = null;
-		if(o != null) {
-			o.zero();
-			if(_this71.sizeVec3 == _this71.stackVec3.length) {
-				var newLength40 = _this71.sizeVec3 << 1;
-				var this41 = new Array(newLength40);
-				var newArray40 = this41;
-				var _g64 = 0;
-				var _g143 = _this71.sizeVec3;
-				while(_g64 < _g143) {
-					var i46 = _g64++;
-					newArray40[i46] = _this71.stackVec3[i46];
-					_this71.stackVec3[i46] = null;
-				}
-				_this71.stackVec3 = newArray40;
-			}
-			_this71.stackVec3[_this71.sizeVec3++] = o;
-		}
-		if(mat310 != null) {
-			var t0020 = 1;
-			var t0120 = 0;
-			var t0220 = 0;
-			var t1020 = 0;
-			var t1120 = 1;
-			var t1220 = 0;
-			var t2020 = 0;
-			var t2120 = 0;
-			var t2220 = 1;
-			mat310.e00 = t0020;
-			mat310.e01 = t0120;
-			mat310.e02 = t0220;
-			mat310.e10 = t1020;
-			mat310.e11 = t1120;
-			mat310.e12 = t1220;
-			mat310.e20 = t2020;
-			mat310.e21 = t2120;
-			mat310.e22 = t2220;
-			if(_this71.sizeMat3 == _this71.stackMat3.length) {
-				var newLength41 = _this71.sizeMat3 << 1;
-				var this42 = new Array(newLength41);
-				var newArray41 = this42;
-				var _g65 = 0;
-				var _g144 = _this71.sizeMat3;
-				while(_g65 < _g144) {
-					var i47 = _g65++;
-					newArray41[i47] = _this71.stackMat3[i47];
-					_this71.stackMat3[i47] = null;
-				}
-				_this71.stackMat3 = newArray41;
-			}
-			_this71.stackMat3[_this71.sizeMat3++] = mat310;
-		}
-		if(mat410 != null) {
-			var t0021 = 1;
-			var t0121 = 0;
-			var t0221 = 0;
-			var t0310 = 0;
-			var t1021 = 0;
-			var t1121 = 1;
-			var t1221 = 0;
-			var t1310 = 0;
-			var t2021 = 0;
-			var t2121 = 0;
-			var t2221 = 1;
-			var t2310 = 0;
-			var t3010 = 0;
-			var t3110 = 0;
-			var t3210 = 0;
-			var t3310 = 1;
-			mat410.e00 = t0021;
-			mat410.e01 = t0121;
-			mat410.e02 = t0221;
-			mat410.e03 = t0310;
-			mat410.e10 = t1021;
-			mat410.e11 = t1121;
-			mat410.e12 = t1221;
-			mat410.e13 = t1310;
-			mat410.e20 = t2021;
-			mat410.e21 = t2121;
-			mat410.e22 = t2221;
-			mat410.e23 = t2310;
-			mat410.e30 = t3010;
-			mat410.e31 = t3110;
-			mat410.e32 = t3210;
-			mat410.e33 = t3310;
-			if(_this71.sizeMat4 == _this71.stackMat4.length) {
-				var newLength42 = _this71.sizeMat4 << 1;
-				var this43 = new Array(newLength42);
-				var newArray42 = this43;
-				var _g66 = 0;
-				var _g145 = _this71.sizeMat4;
-				while(_g66 < _g145) {
-					var i48 = _g66++;
-					newArray42[i48] = _this71.stackMat4[i48];
-					_this71.stackMat4[i48] = null;
-				}
-				_this71.stackMat4 = newArray42;
-			}
-			_this71.stackMat4[_this71.sizeMat4++] = mat410;
-		}
-		if(quat10 != null) {
-			var tx40 = 0;
-			var ty40 = 0;
-			var tz40 = 0;
-			var tw10 = 1;
-			quat10.x = tx40;
-			quat10.y = ty40;
-			quat10.z = tz40;
-			quat10.w = tw10;
-			if(_this71.sizeQuat == _this71.stackQuat.length) {
-				var newLength43 = _this71.sizeQuat << 1;
-				var this44 = new Array(newLength43);
-				var newArray43 = this44;
-				var _g67 = 0;
-				var _g146 = _this71.sizeQuat;
-				while(_g67 < _g146) {
-					var i49 = _g67++;
-					newArray43[i49] = _this71.stackQuat[i49];
-					_this71.stackQuat[i49] = null;
-				}
-				_this71.stackQuat = newArray43;
-			}
-			_this71.stackQuat[_this71.sizeQuat++] = quat10;
-		}
-		var _this72 = this.p;
-		var vec3 = null;
-		var mat411 = null;
-		var quat11 = null;
-		if(vec3 != null) {
-			vec3.zero();
-			if(_this72.sizeVec3 == _this72.stackVec3.length) {
-				var newLength44 = _this72.sizeVec3 << 1;
-				var this45 = new Array(newLength44);
-				var newArray44 = this45;
-				var _g68 = 0;
-				var _g147 = _this72.sizeVec3;
-				while(_g68 < _g147) {
-					var i50 = _g68++;
-					newArray44[i50] = _this72.stackVec3[i50];
-					_this72.stackVec3[i50] = null;
-				}
-				_this72.stackVec3 = newArray44;
-			}
-			_this72.stackVec3[_this72.sizeVec3++] = vec3;
-		}
-		if(m != null) {
-			var t0022 = 1;
-			var t0122 = 0;
-			var t0222 = 0;
-			var t1022 = 0;
-			var t1122 = 1;
-			var t1222 = 0;
-			var t2022 = 0;
-			var t2122 = 0;
-			var t2222 = 1;
-			m.e00 = t0022;
-			m.e01 = t0122;
-			m.e02 = t0222;
-			m.e10 = t1022;
-			m.e11 = t1122;
-			m.e12 = t1222;
-			m.e20 = t2022;
-			m.e21 = t2122;
-			m.e22 = t2222;
-			if(_this72.sizeMat3 == _this72.stackMat3.length) {
-				var newLength45 = _this72.sizeMat3 << 1;
-				var this46 = new Array(newLength45);
-				var newArray45 = this46;
-				var _g69 = 0;
-				var _g148 = _this72.sizeMat3;
-				while(_g69 < _g148) {
-					var i51 = _g69++;
-					newArray45[i51] = _this72.stackMat3[i51];
-					_this72.stackMat3[i51] = null;
-				}
-				_this72.stackMat3 = newArray45;
-			}
-			_this72.stackMat3[_this72.sizeMat3++] = m;
-		}
-		if(mat411 != null) {
-			var t0023 = 1;
-			var t0123 = 0;
-			var t0223 = 0;
-			var t0311 = 0;
-			var t1023 = 0;
-			var t1123 = 1;
-			var t1223 = 0;
-			var t1311 = 0;
-			var t2023 = 0;
-			var t2123 = 0;
-			var t2223 = 1;
-			var t2311 = 0;
-			var t3011 = 0;
-			var t3111 = 0;
-			var t3211 = 0;
-			var t3311 = 1;
-			mat411.e00 = t0023;
-			mat411.e01 = t0123;
-			mat411.e02 = t0223;
-			mat411.e03 = t0311;
-			mat411.e10 = t1023;
-			mat411.e11 = t1123;
-			mat411.e12 = t1223;
-			mat411.e13 = t1311;
-			mat411.e20 = t2023;
-			mat411.e21 = t2123;
-			mat411.e22 = t2223;
-			mat411.e23 = t2311;
-			mat411.e30 = t3011;
-			mat411.e31 = t3111;
-			mat411.e32 = t3211;
-			mat411.e33 = t3311;
-			if(_this72.sizeMat4 == _this72.stackMat4.length) {
-				var newLength46 = _this72.sizeMat4 << 1;
-				var this47 = new Array(newLength46);
-				var newArray46 = this47;
-				var _g70 = 0;
-				var _g149 = _this72.sizeMat4;
-				while(_g70 < _g149) {
-					var i52 = _g70++;
-					newArray46[i52] = _this72.stackMat4[i52];
-					_this72.stackMat4[i52] = null;
-				}
-				_this72.stackMat4 = newArray46;
-			}
-			_this72.stackMat4[_this72.sizeMat4++] = mat411;
-		}
-		if(quat11 != null) {
-			var tx41 = 0;
-			var ty41 = 0;
-			var tz41 = 0;
-			var tw11 = 1;
-			quat11.x = tx41;
-			quat11.y = ty41;
-			quat11.z = tz41;
-			quat11.w = tw11;
-			if(_this72.sizeQuat == _this72.stackQuat.length) {
-				var newLength47 = _this72.sizeQuat << 1;
-				var this48 = new Array(newLength47);
-				var newArray47 = this48;
-				var _g71 = 0;
-				var _g150 = _this72.sizeQuat;
-				while(_g71 < _g150) {
-					var i53 = _g71++;
-					newArray47[i53] = _this72.stackQuat[i53];
-					_this72.stackQuat[i53] = null;
-				}
-				_this72.stackQuat = newArray47;
-			}
-			_this72.stackQuat[_this72.sizeQuat++] = quat11;
-		}
-		var _this73 = this.p;
-		var mat311 = null;
-		var mat412 = null;
-		var quat12 = null;
-		if(ex != null) {
-			ex.zero();
-			if(_this73.sizeVec3 == _this73.stackVec3.length) {
-				var newLength48 = _this73.sizeVec3 << 1;
-				var this49 = new Array(newLength48);
-				var newArray48 = this49;
-				var _g72 = 0;
-				var _g151 = _this73.sizeVec3;
-				while(_g72 < _g151) {
-					var i54 = _g72++;
-					newArray48[i54] = _this73.stackVec3[i54];
-					_this73.stackVec3[i54] = null;
-				}
-				_this73.stackVec3 = newArray48;
-			}
-			_this73.stackVec3[_this73.sizeVec3++] = ex;
-		}
-		if(mat311 != null) {
-			var t0024 = 1;
-			var t0124 = 0;
-			var t0224 = 0;
-			var t1024 = 0;
-			var t1124 = 1;
-			var t1224 = 0;
-			var t2024 = 0;
-			var t2124 = 0;
-			var t2224 = 1;
-			mat311.e00 = t0024;
-			mat311.e01 = t0124;
-			mat311.e02 = t0224;
-			mat311.e10 = t1024;
-			mat311.e11 = t1124;
-			mat311.e12 = t1224;
-			mat311.e20 = t2024;
-			mat311.e21 = t2124;
-			mat311.e22 = t2224;
-			if(_this73.sizeMat3 == _this73.stackMat3.length) {
-				var newLength49 = _this73.sizeMat3 << 1;
-				var this50 = new Array(newLength49);
-				var newArray49 = this50;
-				var _g73 = 0;
-				var _g152 = _this73.sizeMat3;
-				while(_g73 < _g152) {
-					var i55 = _g73++;
-					newArray49[i55] = _this73.stackMat3[i55];
-					_this73.stackMat3[i55] = null;
-				}
-				_this73.stackMat3 = newArray49;
-			}
-			_this73.stackMat3[_this73.sizeMat3++] = mat311;
-		}
-		if(mat412 != null) {
-			var t0025 = 1;
-			var t0125 = 0;
-			var t0225 = 0;
-			var t0312 = 0;
-			var t1025 = 0;
-			var t1125 = 1;
-			var t1225 = 0;
-			var t1312 = 0;
-			var t2025 = 0;
-			var t2125 = 0;
-			var t2225 = 1;
-			var t2312 = 0;
-			var t3012 = 0;
-			var t3112 = 0;
-			var t3212 = 0;
-			var t3312 = 1;
-			mat412.e00 = t0025;
-			mat412.e01 = t0125;
-			mat412.e02 = t0225;
-			mat412.e03 = t0312;
-			mat412.e10 = t1025;
-			mat412.e11 = t1125;
-			mat412.e12 = t1225;
-			mat412.e13 = t1312;
-			mat412.e20 = t2025;
-			mat412.e21 = t2125;
-			mat412.e22 = t2225;
-			mat412.e23 = t2312;
-			mat412.e30 = t3012;
-			mat412.e31 = t3112;
-			mat412.e32 = t3212;
-			mat412.e33 = t3312;
-			if(_this73.sizeMat4 == _this73.stackMat4.length) {
-				var newLength50 = _this73.sizeMat4 << 1;
-				var this51 = new Array(newLength50);
-				var newArray50 = this51;
-				var _g74 = 0;
-				var _g153 = _this73.sizeMat4;
-				while(_g74 < _g153) {
-					var i56 = _g74++;
-					newArray50[i56] = _this73.stackMat4[i56];
-					_this73.stackMat4[i56] = null;
-				}
-				_this73.stackMat4 = newArray50;
-			}
-			_this73.stackMat4[_this73.sizeMat4++] = mat412;
-		}
-		if(quat12 != null) {
-			var tx42 = 0;
-			var ty42 = 0;
-			var tz42 = 0;
-			var tw12 = 1;
-			quat12.x = tx42;
-			quat12.y = ty42;
-			quat12.z = tz42;
-			quat12.w = tw12;
-			if(_this73.sizeQuat == _this73.stackQuat.length) {
-				var newLength51 = _this73.sizeQuat << 1;
-				var this52 = new Array(newLength51);
-				var newArray51 = this52;
-				var _g75 = 0;
-				var _g154 = _this73.sizeQuat;
-				while(_g75 < _g154) {
-					var i57 = _g75++;
-					newArray51[i57] = _this73.stackQuat[i57];
-					_this73.stackQuat[i57] = null;
-				}
-				_this73.stackQuat = newArray51;
-			}
-			_this73.stackQuat[_this73.sizeQuat++] = quat12;
-		}
-		var _this74 = this.p;
-		var mat312 = null;
-		var mat413 = null;
-		var quat13 = null;
-		if(ey != null) {
-			ey.zero();
-			if(_this74.sizeVec3 == _this74.stackVec3.length) {
-				var newLength52 = _this74.sizeVec3 << 1;
-				var this53 = new Array(newLength52);
-				var newArray52 = this53;
-				var _g76 = 0;
-				var _g155 = _this74.sizeVec3;
-				while(_g76 < _g155) {
-					var i58 = _g76++;
-					newArray52[i58] = _this74.stackVec3[i58];
-					_this74.stackVec3[i58] = null;
-				}
-				_this74.stackVec3 = newArray52;
-			}
-			_this74.stackVec3[_this74.sizeVec3++] = ey;
-		}
-		if(mat312 != null) {
-			var t0026 = 1;
-			var t0126 = 0;
-			var t0226 = 0;
-			var t1026 = 0;
-			var t1126 = 1;
-			var t1226 = 0;
-			var t2026 = 0;
-			var t2126 = 0;
-			var t2226 = 1;
-			mat312.e00 = t0026;
-			mat312.e01 = t0126;
-			mat312.e02 = t0226;
-			mat312.e10 = t1026;
-			mat312.e11 = t1126;
-			mat312.e12 = t1226;
-			mat312.e20 = t2026;
-			mat312.e21 = t2126;
-			mat312.e22 = t2226;
-			if(_this74.sizeMat3 == _this74.stackMat3.length) {
-				var newLength53 = _this74.sizeMat3 << 1;
-				var this54 = new Array(newLength53);
-				var newArray53 = this54;
-				var _g77 = 0;
-				var _g156 = _this74.sizeMat3;
-				while(_g77 < _g156) {
-					var i59 = _g77++;
-					newArray53[i59] = _this74.stackMat3[i59];
-					_this74.stackMat3[i59] = null;
-				}
-				_this74.stackMat3 = newArray53;
-			}
-			_this74.stackMat3[_this74.sizeMat3++] = mat312;
-		}
-		if(mat413 != null) {
-			var t0027 = 1;
-			var t0127 = 0;
-			var t0227 = 0;
-			var t0313 = 0;
-			var t1027 = 0;
-			var t1127 = 1;
-			var t1227 = 0;
-			var t1313 = 0;
-			var t2027 = 0;
-			var t2127 = 0;
-			var t2227 = 1;
-			var t2313 = 0;
-			var t3013 = 0;
-			var t3113 = 0;
-			var t3213 = 0;
-			var t3313 = 1;
-			mat413.e00 = t0027;
-			mat413.e01 = t0127;
-			mat413.e02 = t0227;
-			mat413.e03 = t0313;
-			mat413.e10 = t1027;
-			mat413.e11 = t1127;
-			mat413.e12 = t1227;
-			mat413.e13 = t1313;
-			mat413.e20 = t2027;
-			mat413.e21 = t2127;
-			mat413.e22 = t2227;
-			mat413.e23 = t2313;
-			mat413.e30 = t3013;
-			mat413.e31 = t3113;
-			mat413.e32 = t3213;
-			mat413.e33 = t3313;
-			if(_this74.sizeMat4 == _this74.stackMat4.length) {
-				var newLength54 = _this74.sizeMat4 << 1;
-				var this55 = new Array(newLength54);
-				var newArray54 = this55;
-				var _g78 = 0;
-				var _g157 = _this74.sizeMat4;
-				while(_g78 < _g157) {
-					var i60 = _g78++;
-					newArray54[i60] = _this74.stackMat4[i60];
-					_this74.stackMat4[i60] = null;
-				}
-				_this74.stackMat4 = newArray54;
-			}
-			_this74.stackMat4[_this74.sizeMat4++] = mat413;
-		}
-		if(quat13 != null) {
-			var tx43 = 0;
-			var ty43 = 0;
-			var tz43 = 0;
-			var tw13 = 1;
-			quat13.x = tx43;
-			quat13.y = ty43;
-			quat13.z = tz43;
-			quat13.w = tw13;
-			if(_this74.sizeQuat == _this74.stackQuat.length) {
-				var newLength55 = _this74.sizeQuat << 1;
-				var this56 = new Array(newLength55);
-				var newArray55 = this56;
-				var _g79 = 0;
-				var _g158 = _this74.sizeQuat;
-				while(_g79 < _g158) {
-					var i61 = _g79++;
-					newArray55[i61] = _this74.stackQuat[i61];
-					_this74.stackQuat[i61] = null;
-				}
-				_this74.stackQuat = newArray55;
-			}
-			_this74.stackQuat[_this74.sizeQuat++] = quat13;
-		}
-		var _this75 = this.p;
-		var mat313 = null;
-		var mat414 = null;
-		var quat14 = null;
-		if(ez != null) {
-			ez.zero();
-			if(_this75.sizeVec3 == _this75.stackVec3.length) {
-				var newLength56 = _this75.sizeVec3 << 1;
-				var this57 = new Array(newLength56);
-				var newArray56 = this57;
-				var _g80 = 0;
-				var _g159 = _this75.sizeVec3;
-				while(_g80 < _g159) {
-					var i62 = _g80++;
-					newArray56[i62] = _this75.stackVec3[i62];
-					_this75.stackVec3[i62] = null;
-				}
-				_this75.stackVec3 = newArray56;
-			}
-			_this75.stackVec3[_this75.sizeVec3++] = ez;
-		}
-		if(mat313 != null) {
-			var t0028 = 1;
-			var t0128 = 0;
-			var t0228 = 0;
-			var t1028 = 0;
-			var t1128 = 1;
-			var t1228 = 0;
-			var t2028 = 0;
-			var t2128 = 0;
-			var t2228 = 1;
-			mat313.e00 = t0028;
-			mat313.e01 = t0128;
-			mat313.e02 = t0228;
-			mat313.e10 = t1028;
-			mat313.e11 = t1128;
-			mat313.e12 = t1228;
-			mat313.e20 = t2028;
-			mat313.e21 = t2128;
-			mat313.e22 = t2228;
-			if(_this75.sizeMat3 == _this75.stackMat3.length) {
-				var newLength57 = _this75.sizeMat3 << 1;
-				var this58 = new Array(newLength57);
-				var newArray57 = this58;
-				var _g81 = 0;
-				var _g160 = _this75.sizeMat3;
-				while(_g81 < _g160) {
-					var i63 = _g81++;
-					newArray57[i63] = _this75.stackMat3[i63];
-					_this75.stackMat3[i63] = null;
-				}
-				_this75.stackMat3 = newArray57;
-			}
-			_this75.stackMat3[_this75.sizeMat3++] = mat313;
-		}
-		if(mat414 != null) {
-			var t0029 = 1;
-			var t0129 = 0;
-			var t0229 = 0;
-			var t0314 = 0;
-			var t1029 = 0;
-			var t1129 = 1;
-			var t1229 = 0;
-			var t1314 = 0;
-			var t2029 = 0;
-			var t2129 = 0;
-			var t2229 = 1;
-			var t2314 = 0;
-			var t3014 = 0;
-			var t3114 = 0;
-			var t3214 = 0;
-			var t3314 = 1;
-			mat414.e00 = t0029;
-			mat414.e01 = t0129;
-			mat414.e02 = t0229;
-			mat414.e03 = t0314;
-			mat414.e10 = t1029;
-			mat414.e11 = t1129;
-			mat414.e12 = t1229;
-			mat414.e13 = t1314;
-			mat414.e20 = t2029;
-			mat414.e21 = t2129;
-			mat414.e22 = t2229;
-			mat414.e23 = t2314;
-			mat414.e30 = t3014;
-			mat414.e31 = t3114;
-			mat414.e32 = t3214;
-			mat414.e33 = t3314;
-			if(_this75.sizeMat4 == _this75.stackMat4.length) {
-				var newLength58 = _this75.sizeMat4 << 1;
-				var this59 = new Array(newLength58);
-				var newArray58 = this59;
-				var _g82 = 0;
-				var _g161 = _this75.sizeMat4;
-				while(_g82 < _g161) {
-					var i64 = _g82++;
-					newArray58[i64] = _this75.stackMat4[i64];
-					_this75.stackMat4[i64] = null;
-				}
-				_this75.stackMat4 = newArray58;
-			}
-			_this75.stackMat4[_this75.sizeMat4++] = mat414;
-		}
-		if(quat14 != null) {
-			var tx44 = 0;
-			var ty44 = 0;
-			var tz44 = 0;
-			var tw14 = 1;
-			quat14.x = tx44;
-			quat14.y = ty44;
-			quat14.z = tz44;
-			quat14.w = tw14;
-			if(_this75.sizeQuat == _this75.stackQuat.length) {
-				var newLength59 = _this75.sizeQuat << 1;
-				var this60 = new Array(newLength59);
-				var newArray59 = this60;
-				var _g83 = 0;
-				var _g162 = _this75.sizeQuat;
-				while(_g83 < _g162) {
-					var i65 = _g83++;
-					newArray59[i65] = _this75.stackQuat[i65];
-					_this75.stackQuat[i65] = null;
-				}
-				_this75.stackQuat = newArray59;
-			}
-			_this75.stackQuat[_this75.sizeQuat++] = quat14;
-		}
-	}
-	sphere(tf,radius,color) {
-		var _this = this.p;
-		var o = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-		var _this1 = this.p;
-		var m = _this1.sizeMat3 == 0 ? new oimo.common.Mat3() : _this1.stackMat3[--_this1.sizeMat3];
-		var v = o;
-		v.x = tf._positionX;
-		v.y = tf._positionY;
-		v.z = tf._positionZ;
-		var m1 = m;
-		m1.e00 = tf._rotation00;
-		m1.e01 = tf._rotation01;
-		m1.e02 = tf._rotation02;
-		m1.e10 = tf._rotation10;
-		m1.e11 = tf._rotation11;
-		m1.e12 = tf._rotation12;
-		m1.e20 = tf._rotation20;
-		m1.e21 = tf._rotation21;
-		m1.e22 = tf._rotation22;
-		var nt = 4;
-		var np = 8;
-		var vs = this.tmpSphereVerts;
-		var ns = this.tmpSphereNorms;
-		var _g = 0;
-		var _g1 = nt + 1;
-		while(_g < _g1) {
-			var i = _g++;
-			var n = this.tmpSphereVerts[i].length;
-			var _g2 = 0;
-			var _g11 = n;
-			while(_g2 < _g11) {
-				var j = _g2++;
-				var _this2 = ns[i][j];
-				var v1 = this.sphereCoords[i][j];
-				_this2.x = v1.x;
-				_this2.y = v1.y;
-				_this2.z = v1.z;
-				var _this3 = _this2;
-				var tx = _this3.x * m.e00 + _this3.y * m.e01 + _this3.z * m.e02;
-				var ty = _this3.x * m.e10 + _this3.y * m.e11 + _this3.z * m.e12;
-				var tz = _this3.x * m.e20 + _this3.y * m.e21 + _this3.z * m.e22;
-				_this3.x = tx;
-				_this3.y = ty;
-				_this3.z = tz;
-				var _this4 = vs[i][j];
-				var v2 = ns[i][j];
-				_this4.x = v2.x;
-				_this4.y = v2.y;
-				_this4.z = v2.z;
-				var _this5 = _this4;
-				var tx1 = _this5.x * radius;
-				var ty1 = _this5.y * radius;
-				var tz1 = _this5.z * radius;
-				_this5.x = tx1;
-				_this5.y = ty1;
-				_this5.z = tz1;
-				var _this6 = _this5;
-				var tx2 = _this6.x + o.x;
-				var ty2 = _this6.y + o.y;
-				var tz2 = _this6.z + o.z;
-				_this6.x = tx2;
-				_this6.y = ty2;
-				_this6.z = tz2;
-			}
-		}
-		var _g21 = 0;
-		var _g3 = nt;
-		while(_g21 < _g3) {
-			var i1 = _g21++;
-			var _g22 = 0;
-			var _g31 = np;
-			while(_g22 < _g31) {
-				var j1 = _g22++;
-				var v11;
-				var v21;
-				var v3;
-				var v4;
-				var n1;
-				var n2;
-				var n3;
-				var n4;
-				if(i1 == 0) {
-					if(this.wireframe) {
-						v11 = vs[0][0];
-						v21 = vs[1][j1];
-						this.line(v11,v21,color);
-					} else {
-						v11 = vs[0][0];
-						v21 = vs[1][j1];
-						v3 = vs[1][(j1 + 1) % np];
-						n1 = ns[0][0];
-						n2 = ns[1][j1];
-						n3 = ns[1][(j1 + 1) % np];
-						this.triangle(v11,v21,v3,n1,n2,n3,color);
-					}
-				} else if(i1 == nt - 1) {
-					if(this.wireframe) {
-						v11 = vs[nt][0];
-						v21 = vs[i1][(j1 + 1) % np];
-						v3 = vs[i1][j1];
-						this.line(v11,v21,color);
-						this.line(v21,v3,color);
-					} else {
-						v11 = vs[nt][0];
-						v21 = vs[i1][(j1 + 1) % np];
-						v3 = vs[i1][j1];
-						n1 = ns[nt][0];
-						n2 = ns[i1][(j1 + 1) % np];
-						n3 = ns[i1][j1];
-						this.triangle(v11,v21,v3,n1,n2,n3,color);
-					}
-				} else if(this.wireframe) {
-					v11 = vs[i1][j1];
-					v21 = vs[i1][(j1 + 1) % np];
-					v3 = vs[i1 + 1][j1];
-					this.line(v11,v21,color);
-					this.line(v11,v3,color);
-				} else {
-					v11 = vs[i1][j1];
-					v21 = vs[i1][(j1 + 1) % np];
-					v3 = vs[i1 + 1][j1];
-					v4 = vs[i1 + 1][(j1 + 1) % np];
-					n1 = ns[i1][j1];
-					n2 = ns[i1][(j1 + 1) % np];
-					n3 = ns[i1 + 1][j1];
-					n4 = ns[i1 + 1][(j1 + 1) % np];
-					this.rect(v11,v3,v4,v21,n1,n3,n4,n2,color);
-				}
-			}
-		}
-		var _this7 = this.p;
-		var mat3 = null;
-		var mat4 = null;
-		var quat = null;
-		if(o != null) {
-			o.zero();
-			if(_this7.sizeVec3 == _this7.stackVec3.length) {
-				var newLength = _this7.sizeVec3 << 1;
-				var this1 = new Array(newLength);
-				var newArray = this1;
-				var _g4 = 0;
-				var _g12 = _this7.sizeVec3;
-				while(_g4 < _g12) {
-					var i2 = _g4++;
-					newArray[i2] = _this7.stackVec3[i2];
-					_this7.stackVec3[i2] = null;
-				}
-				_this7.stackVec3 = newArray;
-			}
-			_this7.stackVec3[_this7.sizeVec3++] = o;
-		}
-		if(mat3 != null) {
-			var t00 = 1;
-			var t01 = 0;
-			var t02 = 0;
-			var t10 = 0;
-			var t11 = 1;
-			var t12 = 0;
-			var t20 = 0;
-			var t21 = 0;
-			var t22 = 1;
-			mat3.e00 = t00;
-			mat3.e01 = t01;
-			mat3.e02 = t02;
-			mat3.e10 = t10;
-			mat3.e11 = t11;
-			mat3.e12 = t12;
-			mat3.e20 = t20;
-			mat3.e21 = t21;
-			mat3.e22 = t22;
-			if(_this7.sizeMat3 == _this7.stackMat3.length) {
-				var newLength1 = _this7.sizeMat3 << 1;
-				var this2 = new Array(newLength1);
-				var newArray1 = this2;
-				var _g5 = 0;
-				var _g13 = _this7.sizeMat3;
-				while(_g5 < _g13) {
-					var i3 = _g5++;
-					newArray1[i3] = _this7.stackMat3[i3];
-					_this7.stackMat3[i3] = null;
-				}
-				_this7.stackMat3 = newArray1;
-			}
-			_this7.stackMat3[_this7.sizeMat3++] = mat3;
-		}
-		if(mat4 != null) {
-			var t001 = 1;
-			var t011 = 0;
-			var t021 = 0;
-			var t03 = 0;
-			var t101 = 0;
-			var t111 = 1;
-			var t121 = 0;
-			var t13 = 0;
-			var t201 = 0;
-			var t211 = 0;
-			var t221 = 1;
-			var t23 = 0;
-			var t30 = 0;
-			var t31 = 0;
-			var t32 = 0;
-			var t33 = 1;
-			mat4.e00 = t001;
-			mat4.e01 = t011;
-			mat4.e02 = t021;
-			mat4.e03 = t03;
-			mat4.e10 = t101;
-			mat4.e11 = t111;
-			mat4.e12 = t121;
-			mat4.e13 = t13;
-			mat4.e20 = t201;
-			mat4.e21 = t211;
-			mat4.e22 = t221;
-			mat4.e23 = t23;
-			mat4.e30 = t30;
-			mat4.e31 = t31;
-			mat4.e32 = t32;
-			mat4.e33 = t33;
-			if(_this7.sizeMat4 == _this7.stackMat4.length) {
-				var newLength2 = _this7.sizeMat4 << 1;
-				var this3 = new Array(newLength2);
-				var newArray2 = this3;
-				var _g6 = 0;
-				var _g14 = _this7.sizeMat4;
-				while(_g6 < _g14) {
-					var i4 = _g6++;
-					newArray2[i4] = _this7.stackMat4[i4];
-					_this7.stackMat4[i4] = null;
-				}
-				_this7.stackMat4 = newArray2;
-			}
-			_this7.stackMat4[_this7.sizeMat4++] = mat4;
-		}
-		if(quat != null) {
-			var tx3 = 0;
-			var ty3 = 0;
-			var tz3 = 0;
-			var tw = 1;
-			quat.x = tx3;
-			quat.y = ty3;
-			quat.z = tz3;
-			quat.w = tw;
-			if(_this7.sizeQuat == _this7.stackQuat.length) {
-				var newLength3 = _this7.sizeQuat << 1;
-				var this4 = new Array(newLength3);
-				var newArray3 = this4;
-				var _g7 = 0;
-				var _g15 = _this7.sizeQuat;
-				while(_g7 < _g15) {
-					var i5 = _g7++;
-					newArray3[i5] = _this7.stackQuat[i5];
-					_this7.stackQuat[i5] = null;
-				}
-				_this7.stackQuat = newArray3;
-			}
-			_this7.stackQuat[_this7.sizeQuat++] = quat;
-		}
-		var _this8 = this.p;
-		var vec3 = null;
-		var mat41 = null;
-		var quat1 = null;
-		if(vec3 != null) {
-			vec3.zero();
-			if(_this8.sizeVec3 == _this8.stackVec3.length) {
-				var newLength4 = _this8.sizeVec3 << 1;
-				var this5 = new Array(newLength4);
-				var newArray4 = this5;
-				var _g8 = 0;
-				var _g16 = _this8.sizeVec3;
-				while(_g8 < _g16) {
-					var i6 = _g8++;
-					newArray4[i6] = _this8.stackVec3[i6];
-					_this8.stackVec3[i6] = null;
-				}
-				_this8.stackVec3 = newArray4;
-			}
-			_this8.stackVec3[_this8.sizeVec3++] = vec3;
-		}
-		if(m != null) {
-			var t002 = 1;
-			var t012 = 0;
-			var t022 = 0;
-			var t102 = 0;
-			var t112 = 1;
-			var t122 = 0;
-			var t202 = 0;
-			var t212 = 0;
-			var t222 = 1;
-			m.e00 = t002;
-			m.e01 = t012;
-			m.e02 = t022;
-			m.e10 = t102;
-			m.e11 = t112;
-			m.e12 = t122;
-			m.e20 = t202;
-			m.e21 = t212;
-			m.e22 = t222;
-			if(_this8.sizeMat3 == _this8.stackMat3.length) {
-				var newLength5 = _this8.sizeMat3 << 1;
-				var this6 = new Array(newLength5);
-				var newArray5 = this6;
-				var _g9 = 0;
-				var _g17 = _this8.sizeMat3;
-				while(_g9 < _g17) {
-					var i7 = _g9++;
-					newArray5[i7] = _this8.stackMat3[i7];
-					_this8.stackMat3[i7] = null;
-				}
-				_this8.stackMat3 = newArray5;
-			}
-			_this8.stackMat3[_this8.sizeMat3++] = m;
-		}
-		if(mat41 != null) {
-			var t003 = 1;
-			var t013 = 0;
-			var t023 = 0;
-			var t031 = 0;
-			var t103 = 0;
-			var t113 = 1;
-			var t123 = 0;
-			var t131 = 0;
-			var t203 = 0;
-			var t213 = 0;
-			var t223 = 1;
-			var t231 = 0;
-			var t301 = 0;
-			var t311 = 0;
-			var t321 = 0;
-			var t331 = 1;
-			mat41.e00 = t003;
-			mat41.e01 = t013;
-			mat41.e02 = t023;
-			mat41.e03 = t031;
-			mat41.e10 = t103;
-			mat41.e11 = t113;
-			mat41.e12 = t123;
-			mat41.e13 = t131;
-			mat41.e20 = t203;
-			mat41.e21 = t213;
-			mat41.e22 = t223;
-			mat41.e23 = t231;
-			mat41.e30 = t301;
-			mat41.e31 = t311;
-			mat41.e32 = t321;
-			mat41.e33 = t331;
-			if(_this8.sizeMat4 == _this8.stackMat4.length) {
-				var newLength6 = _this8.sizeMat4 << 1;
-				var this7 = new Array(newLength6);
-				var newArray6 = this7;
-				var _g10 = 0;
-				var _g18 = _this8.sizeMat4;
-				while(_g10 < _g18) {
-					var i8 = _g10++;
-					newArray6[i8] = _this8.stackMat4[i8];
-					_this8.stackMat4[i8] = null;
-				}
-				_this8.stackMat4 = newArray6;
-			}
-			_this8.stackMat4[_this8.sizeMat4++] = mat41;
-		}
-		if(quat1 != null) {
-			var tx4 = 0;
-			var ty4 = 0;
-			var tz4 = 0;
-			var tw1 = 1;
-			quat1.x = tx4;
-			quat1.y = ty4;
-			quat1.z = tz4;
-			quat1.w = tw1;
-			if(_this8.sizeQuat == _this8.stackQuat.length) {
-				var newLength7 = _this8.sizeQuat << 1;
-				var this8 = new Array(newLength7);
-				var newArray7 = this8;
-				var _g19 = 0;
-				var _g110 = _this8.sizeQuat;
-				while(_g19 < _g110) {
-					var i9 = _g19++;
-					newArray7[i9] = _this8.stackQuat[i9];
-					_this8.stackQuat[i9] = null;
-				}
-				_this8.stackQuat = newArray7;
-			}
-			_this8.stackQuat[_this8.sizeQuat++] = quat1;
-		}
-	}
-	box(tf,halfExtents,color) {
-		var _this = this.p;
-		var ex = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
-		var _this1 = this.p;
-		var ey = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
-		var _this2 = this.p;
-		var ez = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
-		var _this3 = this.p;
-		var o = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
-		var _this4 = this.p;
-		var m = _this4.sizeMat3 == 0 ? new oimo.common.Mat3() : _this4.stackMat3[--_this4.sizeMat3];
-		var v = o;
-		v.x = tf._positionX;
-		v.y = tf._positionY;
-		v.z = tf._positionZ;
-		var m1 = m;
-		m1.e00 = tf._rotation00;
-		m1.e01 = tf._rotation01;
-		m1.e02 = tf._rotation02;
-		m1.e10 = tf._rotation10;
-		m1.e11 = tf._rotation11;
-		m1.e12 = tf._rotation12;
-		m1.e20 = tf._rotation20;
-		m1.e21 = tf._rotation21;
-		m1.e22 = tf._rotation22;
-		ex.init(m.e00,m.e10,m.e20);
-		ey.init(m.e01,m.e11,m.e21);
-		ez.init(m.e02,m.e12,m.e22);
-		var hx = halfExtents.x;
-		var hy = halfExtents.y;
-		var hz = halfExtents.z;
-		var _this5 = this.p;
-		var _this6 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
-		_this6.x = o.x;
-		_this6.y = o.y;
-		_this6.z = o.z;
-		var _this7 = _this6;
-		var s = -hx;
-		var tx = _this7.x + ex.x * s;
-		var ty = _this7.y + ex.y * s;
-		var tz = _this7.z + ex.z * s;
-		_this7.x = tx;
-		_this7.y = ty;
-		_this7.z = tz;
-		var _this8 = _this7;
-		var s1 = -hy;
-		var tx1 = _this8.x + ey.x * s1;
-		var ty1 = _this8.y + ey.y * s1;
-		var tz1 = _this8.z + ey.z * s1;
-		_this8.x = tx1;
-		_this8.y = ty1;
-		_this8.z = tz1;
-		var _this9 = _this8;
-		var s2 = -hz;
-		var tx2 = _this9.x + ez.x * s2;
-		var ty2 = _this9.y + ez.y * s2;
-		var tz2 = _this9.z + ez.z * s2;
-		_this9.x = tx2;
-		_this9.y = ty2;
-		_this9.z = tz2;
-		var v1 = _this9;
-		var _this10 = this.p;
-		var _this11 = _this10.sizeVec3 == 0 ? new oimo.common.Vec3() : _this10.stackVec3[--_this10.sizeVec3];
-		_this11.x = o.x;
-		_this11.y = o.y;
-		_this11.z = o.z;
-		var _this12 = _this11;
-		var s3 = -hx;
-		var tx3 = _this12.x + ex.x * s3;
-		var ty3 = _this12.y + ex.y * s3;
-		var tz3 = _this12.z + ex.z * s3;
-		_this12.x = tx3;
-		_this12.y = ty3;
-		_this12.z = tz3;
-		var _this13 = _this12;
-		var s4 = -hy;
-		var tx4 = _this13.x + ey.x * s4;
-		var ty4 = _this13.y + ey.y * s4;
-		var tz4 = _this13.z + ey.z * s4;
-		_this13.x = tx4;
-		_this13.y = ty4;
-		_this13.z = tz4;
-		var _this14 = _this13;
-		var tx5 = _this14.x + ez.x * hz;
-		var ty5 = _this14.y + ez.y * hz;
-		var tz5 = _this14.z + ez.z * hz;
-		_this14.x = tx5;
-		_this14.y = ty5;
-		_this14.z = tz5;
-		var v2 = _this14;
-		var _this15 = this.p;
-		var _this16 = _this15.sizeVec3 == 0 ? new oimo.common.Vec3() : _this15.stackVec3[--_this15.sizeVec3];
-		_this16.x = o.x;
-		_this16.y = o.y;
-		_this16.z = o.z;
-		var _this17 = _this16;
-		var s5 = -hx;
-		var tx6 = _this17.x + ex.x * s5;
-		var ty6 = _this17.y + ex.y * s5;
-		var tz6 = _this17.z + ex.z * s5;
-		_this17.x = tx6;
-		_this17.y = ty6;
-		_this17.z = tz6;
-		var _this18 = _this17;
-		var tx7 = _this18.x + ey.x * hy;
-		var ty7 = _this18.y + ey.y * hy;
-		var tz7 = _this18.z + ey.z * hy;
-		_this18.x = tx7;
-		_this18.y = ty7;
-		_this18.z = tz7;
-		var _this19 = _this18;
-		var s6 = -hz;
-		var tx8 = _this19.x + ez.x * s6;
-		var ty8 = _this19.y + ez.y * s6;
-		var tz8 = _this19.z + ez.z * s6;
-		_this19.x = tx8;
-		_this19.y = ty8;
-		_this19.z = tz8;
-		var v3 = _this19;
-		var _this20 = this.p;
-		var _this21 = _this20.sizeVec3 == 0 ? new oimo.common.Vec3() : _this20.stackVec3[--_this20.sizeVec3];
-		_this21.x = o.x;
-		_this21.y = o.y;
-		_this21.z = o.z;
-		var _this22 = _this21;
-		var s7 = -hx;
-		var tx9 = _this22.x + ex.x * s7;
-		var ty9 = _this22.y + ex.y * s7;
-		var tz9 = _this22.z + ex.z * s7;
-		_this22.x = tx9;
-		_this22.y = ty9;
-		_this22.z = tz9;
-		var _this23 = _this22;
-		var tx10 = _this23.x + ey.x * hy;
-		var ty10 = _this23.y + ey.y * hy;
-		var tz10 = _this23.z + ey.z * hy;
-		_this23.x = tx10;
-		_this23.y = ty10;
-		_this23.z = tz10;
-		var _this24 = _this23;
-		var tx11 = _this24.x + ez.x * hz;
-		var ty11 = _this24.y + ez.y * hz;
-		var tz11 = _this24.z + ez.z * hz;
-		_this24.x = tx11;
-		_this24.y = ty11;
-		_this24.z = tz11;
-		var v4 = _this24;
-		var _this25 = this.p;
-		var _this26 = _this25.sizeVec3 == 0 ? new oimo.common.Vec3() : _this25.stackVec3[--_this25.sizeVec3];
-		_this26.x = o.x;
-		_this26.y = o.y;
-		_this26.z = o.z;
-		var _this27 = _this26;
-		var tx12 = _this27.x + ex.x * hx;
-		var ty12 = _this27.y + ex.y * hx;
-		var tz12 = _this27.z + ex.z * hx;
-		_this27.x = tx12;
-		_this27.y = ty12;
-		_this27.z = tz12;
-		var _this28 = _this27;
-		var s8 = -hy;
-		var tx13 = _this28.x + ey.x * s8;
-		var ty13 = _this28.y + ey.y * s8;
-		var tz13 = _this28.z + ey.z * s8;
-		_this28.x = tx13;
-		_this28.y = ty13;
-		_this28.z = tz13;
-		var _this29 = _this28;
-		var s9 = -hz;
-		var tx14 = _this29.x + ez.x * s9;
-		var ty14 = _this29.y + ez.y * s9;
-		var tz14 = _this29.z + ez.z * s9;
-		_this29.x = tx14;
-		_this29.y = ty14;
-		_this29.z = tz14;
-		var v5 = _this29;
-		var _this30 = this.p;
-		var _this31 = _this30.sizeVec3 == 0 ? new oimo.common.Vec3() : _this30.stackVec3[--_this30.sizeVec3];
-		_this31.x = o.x;
-		_this31.y = o.y;
-		_this31.z = o.z;
-		var _this32 = _this31;
-		var tx15 = _this32.x + ex.x * hx;
-		var ty15 = _this32.y + ex.y * hx;
-		var tz15 = _this32.z + ex.z * hx;
-		_this32.x = tx15;
-		_this32.y = ty15;
-		_this32.z = tz15;
-		var _this33 = _this32;
-		var s10 = -hy;
-		var tx16 = _this33.x + ey.x * s10;
-		var ty16 = _this33.y + ey.y * s10;
-		var tz16 = _this33.z + ey.z * s10;
-		_this33.x = tx16;
-		_this33.y = ty16;
-		_this33.z = tz16;
-		var _this34 = _this33;
-		var tx17 = _this34.x + ez.x * hz;
-		var ty17 = _this34.y + ez.y * hz;
-		var tz17 = _this34.z + ez.z * hz;
-		_this34.x = tx17;
-		_this34.y = ty17;
-		_this34.z = tz17;
-		var v6 = _this34;
-		var _this35 = this.p;
-		var _this36 = _this35.sizeVec3 == 0 ? new oimo.common.Vec3() : _this35.stackVec3[--_this35.sizeVec3];
-		_this36.x = o.x;
-		_this36.y = o.y;
-		_this36.z = o.z;
-		var _this37 = _this36;
-		var tx18 = _this37.x + ex.x * hx;
-		var ty18 = _this37.y + ex.y * hx;
-		var tz18 = _this37.z + ex.z * hx;
-		_this37.x = tx18;
-		_this37.y = ty18;
-		_this37.z = tz18;
-		var _this38 = _this37;
-		var tx19 = _this38.x + ey.x * hy;
-		var ty19 = _this38.y + ey.y * hy;
-		var tz19 = _this38.z + ey.z * hy;
-		_this38.x = tx19;
-		_this38.y = ty19;
-		_this38.z = tz19;
-		var _this39 = _this38;
-		var s11 = -hz;
-		var tx20 = _this39.x + ez.x * s11;
-		var ty20 = _this39.y + ez.y * s11;
-		var tz20 = _this39.z + ez.z * s11;
-		_this39.x = tx20;
-		_this39.y = ty20;
-		_this39.z = tz20;
-		var v7 = _this39;
-		var _this40 = this.p;
-		var _this41 = _this40.sizeVec3 == 0 ? new oimo.common.Vec3() : _this40.stackVec3[--_this40.sizeVec3];
-		_this41.x = o.x;
-		_this41.y = o.y;
-		_this41.z = o.z;
-		var _this42 = _this41;
-		var tx21 = _this42.x + ex.x * hx;
-		var ty21 = _this42.y + ex.y * hx;
-		var tz21 = _this42.z + ex.z * hx;
-		_this42.x = tx21;
-		_this42.y = ty21;
-		_this42.z = tz21;
-		var _this43 = _this42;
-		var tx22 = _this43.x + ey.x * hy;
-		var ty22 = _this43.y + ey.y * hy;
-		var tz22 = _this43.z + ey.z * hy;
-		_this43.x = tx22;
-		_this43.y = ty22;
-		_this43.z = tz22;
-		var _this44 = _this43;
-		var tx23 = _this44.x + ez.x * hz;
-		var ty23 = _this44.y + ez.y * hz;
-		var tz23 = _this44.z + ez.z * hz;
-		_this44.x = tx23;
-		_this44.y = ty23;
-		_this44.z = tz23;
-		var v8 = _this44;
-		if(this.wireframe) {
-			this.line(v1,v2,color);
-			this.line(v3,v4,color);
-			this.line(v5,v6,color);
-			this.line(v7,v8,color);
-			this.line(v1,v3,color);
-			this.line(v2,v4,color);
-			this.line(v5,v7,color);
-			this.line(v6,v8,color);
-			this.line(v1,v5,color);
-			this.line(v2,v6,color);
-			this.line(v3,v7,color);
-			this.line(v4,v8,color);
-		} else {
-			var _this45 = this.p;
-			var _this46 = _this45.sizeVec3 == 0 ? new oimo.common.Vec3() : _this45.stackVec3[--_this45.sizeVec3];
-			_this46.x = ex.x;
-			_this46.y = ex.y;
-			_this46.z = ex.z;
-			var _this47 = _this46;
-			var tx24 = -_this47.x;
-			var ty24 = -_this47.y;
-			var tz24 = -_this47.z;
-			_this47.x = tx24;
-			_this47.y = ty24;
-			_this47.z = tz24;
-			var nex = _this47;
-			var _this48 = this.p;
-			var _this49 = _this48.sizeVec3 == 0 ? new oimo.common.Vec3() : _this48.stackVec3[--_this48.sizeVec3];
-			_this49.x = ey.x;
-			_this49.y = ey.y;
-			_this49.z = ey.z;
-			var _this50 = _this49;
-			var tx25 = -_this50.x;
-			var ty25 = -_this50.y;
-			var tz25 = -_this50.z;
-			_this50.x = tx25;
-			_this50.y = ty25;
-			_this50.z = tz25;
-			var ney = _this50;
-			var _this51 = this.p;
-			var _this52 = _this51.sizeVec3 == 0 ? new oimo.common.Vec3() : _this51.stackVec3[--_this51.sizeVec3];
-			_this52.x = ez.x;
-			_this52.y = ez.y;
-			_this52.z = ez.z;
-			var _this53 = _this52;
-			var tx26 = -_this53.x;
-			var ty26 = -_this53.y;
-			var tz26 = -_this53.z;
-			_this53.x = tx26;
-			_this53.y = ty26;
-			_this53.z = tz26;
-			var nez = _this53;
-			this.rect(v1,v2,v4,v3,nex,nex,nex,nex,color);
-			this.rect(v5,v7,v8,v6,ex,ex,ex,ex,color);
-			this.rect(v1,v5,v6,v2,ney,ney,ney,ney,color);
-			this.rect(v3,v4,v8,v7,ey,ey,ey,ey,color);
-			this.rect(v1,v3,v7,v5,nez,nez,nez,nez,color);
-			this.rect(v2,v6,v8,v4,ez,ez,ez,ez,color);
-			var _this54 = this.p;
-			var mat3 = null;
-			var mat4 = null;
-			var quat = null;
-			if(nex != null) {
-				nex.zero();
-				if(_this54.sizeVec3 == _this54.stackVec3.length) {
-					var newLength = _this54.sizeVec3 << 1;
-					var this1 = new Array(newLength);
-					var newArray = this1;
-					var _g = 0;
-					var _g1 = _this54.sizeVec3;
-					while(_g < _g1) {
-						var i = _g++;
-						newArray[i] = _this54.stackVec3[i];
-						_this54.stackVec3[i] = null;
-					}
-					_this54.stackVec3 = newArray;
-				}
-				_this54.stackVec3[_this54.sizeVec3++] = nex;
-			}
-			if(mat3 != null) {
-				var t00 = 1;
-				var t01 = 0;
-				var t02 = 0;
-				var t10 = 0;
-				var t11 = 1;
-				var t12 = 0;
-				var t20 = 0;
-				var t21 = 0;
-				var t22 = 1;
-				mat3.e00 = t00;
-				mat3.e01 = t01;
-				mat3.e02 = t02;
-				mat3.e10 = t10;
-				mat3.e11 = t11;
-				mat3.e12 = t12;
-				mat3.e20 = t20;
-				mat3.e21 = t21;
-				mat3.e22 = t22;
-				if(_this54.sizeMat3 == _this54.stackMat3.length) {
-					var newLength1 = _this54.sizeMat3 << 1;
-					var this2 = new Array(newLength1);
-					var newArray1 = this2;
-					var _g2 = 0;
-					var _g11 = _this54.sizeMat3;
-					while(_g2 < _g11) {
-						var i1 = _g2++;
-						newArray1[i1] = _this54.stackMat3[i1];
-						_this54.stackMat3[i1] = null;
-					}
-					_this54.stackMat3 = newArray1;
-				}
-				_this54.stackMat3[_this54.sizeMat3++] = mat3;
-			}
-			if(mat4 != null) {
-				var t001 = 1;
-				var t011 = 0;
-				var t021 = 0;
-				var t03 = 0;
-				var t101 = 0;
-				var t111 = 1;
-				var t121 = 0;
-				var t13 = 0;
-				var t201 = 0;
-				var t211 = 0;
-				var t221 = 1;
-				var t23 = 0;
-				var t30 = 0;
-				var t31 = 0;
-				var t32 = 0;
-				var t33 = 1;
-				mat4.e00 = t001;
-				mat4.e01 = t011;
-				mat4.e02 = t021;
-				mat4.e03 = t03;
-				mat4.e10 = t101;
-				mat4.e11 = t111;
-				mat4.e12 = t121;
-				mat4.e13 = t13;
-				mat4.e20 = t201;
-				mat4.e21 = t211;
-				mat4.e22 = t221;
-				mat4.e23 = t23;
-				mat4.e30 = t30;
-				mat4.e31 = t31;
-				mat4.e32 = t32;
-				mat4.e33 = t33;
-				if(_this54.sizeMat4 == _this54.stackMat4.length) {
-					var newLength2 = _this54.sizeMat4 << 1;
-					var this3 = new Array(newLength2);
-					var newArray2 = this3;
-					var _g3 = 0;
-					var _g12 = _this54.sizeMat4;
-					while(_g3 < _g12) {
-						var i2 = _g3++;
-						newArray2[i2] = _this54.stackMat4[i2];
-						_this54.stackMat4[i2] = null;
-					}
-					_this54.stackMat4 = newArray2;
-				}
-				_this54.stackMat4[_this54.sizeMat4++] = mat4;
-			}
-			if(quat != null) {
-				var tx27 = 0;
-				var ty27 = 0;
-				var tz27 = 0;
-				var tw = 1;
-				quat.x = tx27;
-				quat.y = ty27;
-				quat.z = tz27;
-				quat.w = tw;
-				if(_this54.sizeQuat == _this54.stackQuat.length) {
-					var newLength3 = _this54.sizeQuat << 1;
-					var this4 = new Array(newLength3);
-					var newArray3 = this4;
-					var _g4 = 0;
-					var _g13 = _this54.sizeQuat;
-					while(_g4 < _g13) {
-						var i3 = _g4++;
-						newArray3[i3] = _this54.stackQuat[i3];
-						_this54.stackQuat[i3] = null;
-					}
-					_this54.stackQuat = newArray3;
-				}
-				_this54.stackQuat[_this54.sizeQuat++] = quat;
-			}
-			var _this55 = this.p;
-			var mat31 = null;
-			var mat41 = null;
-			var quat1 = null;
-			if(ney != null) {
-				ney.zero();
-				if(_this55.sizeVec3 == _this55.stackVec3.length) {
-					var newLength4 = _this55.sizeVec3 << 1;
-					var this5 = new Array(newLength4);
-					var newArray4 = this5;
-					var _g5 = 0;
-					var _g14 = _this55.sizeVec3;
-					while(_g5 < _g14) {
-						var i4 = _g5++;
-						newArray4[i4] = _this55.stackVec3[i4];
-						_this55.stackVec3[i4] = null;
-					}
-					_this55.stackVec3 = newArray4;
-				}
-				_this55.stackVec3[_this55.sizeVec3++] = ney;
-			}
-			if(mat31 != null) {
-				var t002 = 1;
-				var t012 = 0;
-				var t022 = 0;
-				var t102 = 0;
-				var t112 = 1;
-				var t122 = 0;
-				var t202 = 0;
-				var t212 = 0;
-				var t222 = 1;
-				mat31.e00 = t002;
-				mat31.e01 = t012;
-				mat31.e02 = t022;
-				mat31.e10 = t102;
-				mat31.e11 = t112;
-				mat31.e12 = t122;
-				mat31.e20 = t202;
-				mat31.e21 = t212;
-				mat31.e22 = t222;
-				if(_this55.sizeMat3 == _this55.stackMat3.length) {
-					var newLength5 = _this55.sizeMat3 << 1;
-					var this6 = new Array(newLength5);
-					var newArray5 = this6;
-					var _g6 = 0;
-					var _g15 = _this55.sizeMat3;
-					while(_g6 < _g15) {
-						var i5 = _g6++;
-						newArray5[i5] = _this55.stackMat3[i5];
-						_this55.stackMat3[i5] = null;
-					}
-					_this55.stackMat3 = newArray5;
-				}
-				_this55.stackMat3[_this55.sizeMat3++] = mat31;
-			}
-			if(mat41 != null) {
-				var t003 = 1;
-				var t013 = 0;
-				var t023 = 0;
-				var t031 = 0;
-				var t103 = 0;
-				var t113 = 1;
-				var t123 = 0;
-				var t131 = 0;
-				var t203 = 0;
-				var t213 = 0;
-				var t223 = 1;
-				var t231 = 0;
-				var t301 = 0;
-				var t311 = 0;
-				var t321 = 0;
-				var t331 = 1;
-				mat41.e00 = t003;
-				mat41.e01 = t013;
-				mat41.e02 = t023;
-				mat41.e03 = t031;
-				mat41.e10 = t103;
-				mat41.e11 = t113;
-				mat41.e12 = t123;
-				mat41.e13 = t131;
-				mat41.e20 = t203;
-				mat41.e21 = t213;
-				mat41.e22 = t223;
-				mat41.e23 = t231;
-				mat41.e30 = t301;
-				mat41.e31 = t311;
-				mat41.e32 = t321;
-				mat41.e33 = t331;
-				if(_this55.sizeMat4 == _this55.stackMat4.length) {
-					var newLength6 = _this55.sizeMat4 << 1;
-					var this7 = new Array(newLength6);
-					var newArray6 = this7;
-					var _g7 = 0;
-					var _g16 = _this55.sizeMat4;
-					while(_g7 < _g16) {
-						var i6 = _g7++;
-						newArray6[i6] = _this55.stackMat4[i6];
-						_this55.stackMat4[i6] = null;
-					}
-					_this55.stackMat4 = newArray6;
-				}
-				_this55.stackMat4[_this55.sizeMat4++] = mat41;
-			}
-			if(quat1 != null) {
-				var tx28 = 0;
-				var ty28 = 0;
-				var tz28 = 0;
-				var tw1 = 1;
-				quat1.x = tx28;
-				quat1.y = ty28;
-				quat1.z = tz28;
-				quat1.w = tw1;
-				if(_this55.sizeQuat == _this55.stackQuat.length) {
-					var newLength7 = _this55.sizeQuat << 1;
-					var this8 = new Array(newLength7);
-					var newArray7 = this8;
-					var _g8 = 0;
-					var _g17 = _this55.sizeQuat;
-					while(_g8 < _g17) {
-						var i7 = _g8++;
-						newArray7[i7] = _this55.stackQuat[i7];
-						_this55.stackQuat[i7] = null;
-					}
-					_this55.stackQuat = newArray7;
-				}
-				_this55.stackQuat[_this55.sizeQuat++] = quat1;
-			}
-			var _this56 = this.p;
-			var mat32 = null;
-			var mat42 = null;
-			var quat2 = null;
-			if(nez != null) {
-				nez.zero();
-				if(_this56.sizeVec3 == _this56.stackVec3.length) {
-					var newLength8 = _this56.sizeVec3 << 1;
-					var this9 = new Array(newLength8);
-					var newArray8 = this9;
-					var _g9 = 0;
-					var _g18 = _this56.sizeVec3;
-					while(_g9 < _g18) {
-						var i8 = _g9++;
-						newArray8[i8] = _this56.stackVec3[i8];
-						_this56.stackVec3[i8] = null;
-					}
-					_this56.stackVec3 = newArray8;
-				}
-				_this56.stackVec3[_this56.sizeVec3++] = nez;
-			}
-			if(mat32 != null) {
-				var t004 = 1;
-				var t014 = 0;
-				var t024 = 0;
-				var t104 = 0;
-				var t114 = 1;
-				var t124 = 0;
-				var t204 = 0;
-				var t214 = 0;
-				var t224 = 1;
-				mat32.e00 = t004;
-				mat32.e01 = t014;
-				mat32.e02 = t024;
-				mat32.e10 = t104;
-				mat32.e11 = t114;
-				mat32.e12 = t124;
-				mat32.e20 = t204;
-				mat32.e21 = t214;
-				mat32.e22 = t224;
-				if(_this56.sizeMat3 == _this56.stackMat3.length) {
-					var newLength9 = _this56.sizeMat3 << 1;
-					var this10 = new Array(newLength9);
-					var newArray9 = this10;
-					var _g10 = 0;
-					var _g19 = _this56.sizeMat3;
-					while(_g10 < _g19) {
-						var i9 = _g10++;
-						newArray9[i9] = _this56.stackMat3[i9];
-						_this56.stackMat3[i9] = null;
-					}
-					_this56.stackMat3 = newArray9;
-				}
-				_this56.stackMat3[_this56.sizeMat3++] = mat32;
-			}
-			if(mat42 != null) {
-				var t005 = 1;
-				var t015 = 0;
-				var t025 = 0;
-				var t032 = 0;
-				var t105 = 0;
-				var t115 = 1;
-				var t125 = 0;
-				var t132 = 0;
-				var t205 = 0;
-				var t215 = 0;
-				var t225 = 1;
-				var t232 = 0;
-				var t302 = 0;
-				var t312 = 0;
-				var t322 = 0;
-				var t332 = 1;
-				mat42.e00 = t005;
-				mat42.e01 = t015;
-				mat42.e02 = t025;
-				mat42.e03 = t032;
-				mat42.e10 = t105;
-				mat42.e11 = t115;
-				mat42.e12 = t125;
-				mat42.e13 = t132;
-				mat42.e20 = t205;
-				mat42.e21 = t215;
-				mat42.e22 = t225;
-				mat42.e23 = t232;
-				mat42.e30 = t302;
-				mat42.e31 = t312;
-				mat42.e32 = t322;
-				mat42.e33 = t332;
-				if(_this56.sizeMat4 == _this56.stackMat4.length) {
-					var newLength10 = _this56.sizeMat4 << 1;
-					var this11 = new Array(newLength10);
-					var newArray10 = this11;
-					var _g20 = 0;
-					var _g110 = _this56.sizeMat4;
-					while(_g20 < _g110) {
-						var i10 = _g20++;
-						newArray10[i10] = _this56.stackMat4[i10];
-						_this56.stackMat4[i10] = null;
-					}
-					_this56.stackMat4 = newArray10;
-				}
-				_this56.stackMat4[_this56.sizeMat4++] = mat42;
-			}
-			if(quat2 != null) {
-				var tx29 = 0;
-				var ty29 = 0;
-				var tz29 = 0;
-				var tw2 = 1;
-				quat2.x = tx29;
-				quat2.y = ty29;
-				quat2.z = tz29;
-				quat2.w = tw2;
-				if(_this56.sizeQuat == _this56.stackQuat.length) {
-					var newLength11 = _this56.sizeQuat << 1;
-					var this12 = new Array(newLength11);
-					var newArray11 = this12;
-					var _g21 = 0;
-					var _g111 = _this56.sizeQuat;
-					while(_g21 < _g111) {
-						var i11 = _g21++;
-						newArray11[i11] = _this56.stackQuat[i11];
-						_this56.stackQuat[i11] = null;
-					}
-					_this56.stackQuat = newArray11;
-				}
-				_this56.stackQuat[_this56.sizeQuat++] = quat2;
-			}
-		}
-		var _this57 = this.p;
-		var mat33 = null;
-		var mat43 = null;
-		var quat3 = null;
-		if(v1 != null) {
-			v1.zero();
-			if(_this57.sizeVec3 == _this57.stackVec3.length) {
-				var newLength12 = _this57.sizeVec3 << 1;
-				var this13 = new Array(newLength12);
-				var newArray12 = this13;
-				var _g22 = 0;
-				var _g112 = _this57.sizeVec3;
-				while(_g22 < _g112) {
-					var i12 = _g22++;
-					newArray12[i12] = _this57.stackVec3[i12];
-					_this57.stackVec3[i12] = null;
-				}
-				_this57.stackVec3 = newArray12;
-			}
-			_this57.stackVec3[_this57.sizeVec3++] = v1;
-		}
-		if(mat33 != null) {
-			var t006 = 1;
-			var t016 = 0;
-			var t026 = 0;
-			var t106 = 0;
-			var t116 = 1;
-			var t126 = 0;
-			var t206 = 0;
-			var t216 = 0;
-			var t226 = 1;
-			mat33.e00 = t006;
-			mat33.e01 = t016;
-			mat33.e02 = t026;
-			mat33.e10 = t106;
-			mat33.e11 = t116;
-			mat33.e12 = t126;
-			mat33.e20 = t206;
-			mat33.e21 = t216;
-			mat33.e22 = t226;
-			if(_this57.sizeMat3 == _this57.stackMat3.length) {
-				var newLength13 = _this57.sizeMat3 << 1;
-				var this14 = new Array(newLength13);
-				var newArray13 = this14;
-				var _g23 = 0;
-				var _g113 = _this57.sizeMat3;
-				while(_g23 < _g113) {
-					var i13 = _g23++;
-					newArray13[i13] = _this57.stackMat3[i13];
-					_this57.stackMat3[i13] = null;
-				}
-				_this57.stackMat3 = newArray13;
-			}
-			_this57.stackMat3[_this57.sizeMat3++] = mat33;
-		}
-		if(mat43 != null) {
-			var t007 = 1;
-			var t017 = 0;
-			var t027 = 0;
-			var t033 = 0;
-			var t107 = 0;
-			var t117 = 1;
-			var t127 = 0;
-			var t133 = 0;
-			var t207 = 0;
-			var t217 = 0;
-			var t227 = 1;
-			var t233 = 0;
-			var t303 = 0;
-			var t313 = 0;
-			var t323 = 0;
-			var t333 = 1;
-			mat43.e00 = t007;
-			mat43.e01 = t017;
-			mat43.e02 = t027;
-			mat43.e03 = t033;
-			mat43.e10 = t107;
-			mat43.e11 = t117;
-			mat43.e12 = t127;
-			mat43.e13 = t133;
-			mat43.e20 = t207;
-			mat43.e21 = t217;
-			mat43.e22 = t227;
-			mat43.e23 = t233;
-			mat43.e30 = t303;
-			mat43.e31 = t313;
-			mat43.e32 = t323;
-			mat43.e33 = t333;
-			if(_this57.sizeMat4 == _this57.stackMat4.length) {
-				var newLength14 = _this57.sizeMat4 << 1;
-				var this15 = new Array(newLength14);
-				var newArray14 = this15;
-				var _g24 = 0;
-				var _g114 = _this57.sizeMat4;
-				while(_g24 < _g114) {
-					var i14 = _g24++;
-					newArray14[i14] = _this57.stackMat4[i14];
-					_this57.stackMat4[i14] = null;
-				}
-				_this57.stackMat4 = newArray14;
-			}
-			_this57.stackMat4[_this57.sizeMat4++] = mat43;
-		}
-		if(quat3 != null) {
-			var tx30 = 0;
-			var ty30 = 0;
-			var tz30 = 0;
-			var tw3 = 1;
-			quat3.x = tx30;
-			quat3.y = ty30;
-			quat3.z = tz30;
-			quat3.w = tw3;
-			if(_this57.sizeQuat == _this57.stackQuat.length) {
-				var newLength15 = _this57.sizeQuat << 1;
-				var this16 = new Array(newLength15);
-				var newArray15 = this16;
-				var _g25 = 0;
-				var _g115 = _this57.sizeQuat;
-				while(_g25 < _g115) {
-					var i15 = _g25++;
-					newArray15[i15] = _this57.stackQuat[i15];
-					_this57.stackQuat[i15] = null;
-				}
-				_this57.stackQuat = newArray15;
-			}
-			_this57.stackQuat[_this57.sizeQuat++] = quat3;
-		}
-		var _this58 = this.p;
-		var mat34 = null;
-		var mat44 = null;
-		var quat4 = null;
-		if(v2 != null) {
-			v2.zero();
-			if(_this58.sizeVec3 == _this58.stackVec3.length) {
-				var newLength16 = _this58.sizeVec3 << 1;
-				var this17 = new Array(newLength16);
-				var newArray16 = this17;
-				var _g26 = 0;
-				var _g116 = _this58.sizeVec3;
-				while(_g26 < _g116) {
-					var i16 = _g26++;
-					newArray16[i16] = _this58.stackVec3[i16];
-					_this58.stackVec3[i16] = null;
-				}
-				_this58.stackVec3 = newArray16;
-			}
-			_this58.stackVec3[_this58.sizeVec3++] = v2;
-		}
-		if(mat34 != null) {
-			var t008 = 1;
-			var t018 = 0;
-			var t028 = 0;
-			var t108 = 0;
-			var t118 = 1;
-			var t128 = 0;
-			var t208 = 0;
-			var t218 = 0;
-			var t228 = 1;
-			mat34.e00 = t008;
-			mat34.e01 = t018;
-			mat34.e02 = t028;
-			mat34.e10 = t108;
-			mat34.e11 = t118;
-			mat34.e12 = t128;
-			mat34.e20 = t208;
-			mat34.e21 = t218;
-			mat34.e22 = t228;
-			if(_this58.sizeMat3 == _this58.stackMat3.length) {
-				var newLength17 = _this58.sizeMat3 << 1;
-				var this18 = new Array(newLength17);
-				var newArray17 = this18;
-				var _g27 = 0;
-				var _g117 = _this58.sizeMat3;
-				while(_g27 < _g117) {
-					var i17 = _g27++;
-					newArray17[i17] = _this58.stackMat3[i17];
-					_this58.stackMat3[i17] = null;
-				}
-				_this58.stackMat3 = newArray17;
-			}
-			_this58.stackMat3[_this58.sizeMat3++] = mat34;
-		}
-		if(mat44 != null) {
-			var t009 = 1;
-			var t019 = 0;
-			var t029 = 0;
-			var t034 = 0;
-			var t109 = 0;
-			var t119 = 1;
-			var t129 = 0;
-			var t134 = 0;
-			var t209 = 0;
-			var t219 = 0;
-			var t229 = 1;
-			var t234 = 0;
-			var t304 = 0;
-			var t314 = 0;
-			var t324 = 0;
-			var t334 = 1;
-			mat44.e00 = t009;
-			mat44.e01 = t019;
-			mat44.e02 = t029;
-			mat44.e03 = t034;
-			mat44.e10 = t109;
-			mat44.e11 = t119;
-			mat44.e12 = t129;
-			mat44.e13 = t134;
-			mat44.e20 = t209;
-			mat44.e21 = t219;
-			mat44.e22 = t229;
-			mat44.e23 = t234;
-			mat44.e30 = t304;
-			mat44.e31 = t314;
-			mat44.e32 = t324;
-			mat44.e33 = t334;
-			if(_this58.sizeMat4 == _this58.stackMat4.length) {
-				var newLength18 = _this58.sizeMat4 << 1;
-				var this19 = new Array(newLength18);
-				var newArray18 = this19;
-				var _g28 = 0;
-				var _g118 = _this58.sizeMat4;
-				while(_g28 < _g118) {
-					var i18 = _g28++;
-					newArray18[i18] = _this58.stackMat4[i18];
-					_this58.stackMat4[i18] = null;
-				}
-				_this58.stackMat4 = newArray18;
-			}
-			_this58.stackMat4[_this58.sizeMat4++] = mat44;
-		}
-		if(quat4 != null) {
-			var tx31 = 0;
-			var ty31 = 0;
-			var tz31 = 0;
-			var tw4 = 1;
-			quat4.x = tx31;
-			quat4.y = ty31;
-			quat4.z = tz31;
-			quat4.w = tw4;
-			if(_this58.sizeQuat == _this58.stackQuat.length) {
-				var newLength19 = _this58.sizeQuat << 1;
-				var this20 = new Array(newLength19);
-				var newArray19 = this20;
-				var _g29 = 0;
-				var _g119 = _this58.sizeQuat;
-				while(_g29 < _g119) {
-					var i19 = _g29++;
-					newArray19[i19] = _this58.stackQuat[i19];
-					_this58.stackQuat[i19] = null;
-				}
-				_this58.stackQuat = newArray19;
-			}
-			_this58.stackQuat[_this58.sizeQuat++] = quat4;
-		}
-		var _this59 = this.p;
-		var mat35 = null;
-		var mat45 = null;
-		var quat5 = null;
-		if(v3 != null) {
-			v3.zero();
-			if(_this59.sizeVec3 == _this59.stackVec3.length) {
-				var newLength20 = _this59.sizeVec3 << 1;
-				var this21 = new Array(newLength20);
-				var newArray20 = this21;
-				var _g30 = 0;
-				var _g120 = _this59.sizeVec3;
-				while(_g30 < _g120) {
-					var i20 = _g30++;
-					newArray20[i20] = _this59.stackVec3[i20];
-					_this59.stackVec3[i20] = null;
-				}
-				_this59.stackVec3 = newArray20;
-			}
-			_this59.stackVec3[_this59.sizeVec3++] = v3;
-		}
-		if(mat35 != null) {
-			var t0010 = 1;
-			var t0110 = 0;
-			var t0210 = 0;
-			var t1010 = 0;
-			var t1110 = 1;
-			var t1210 = 0;
-			var t2010 = 0;
-			var t2110 = 0;
-			var t2210 = 1;
-			mat35.e00 = t0010;
-			mat35.e01 = t0110;
-			mat35.e02 = t0210;
-			mat35.e10 = t1010;
-			mat35.e11 = t1110;
-			mat35.e12 = t1210;
-			mat35.e20 = t2010;
-			mat35.e21 = t2110;
-			mat35.e22 = t2210;
-			if(_this59.sizeMat3 == _this59.stackMat3.length) {
-				var newLength21 = _this59.sizeMat3 << 1;
-				var this22 = new Array(newLength21);
-				var newArray21 = this22;
-				var _g31 = 0;
-				var _g121 = _this59.sizeMat3;
-				while(_g31 < _g121) {
-					var i21 = _g31++;
-					newArray21[i21] = _this59.stackMat3[i21];
-					_this59.stackMat3[i21] = null;
-				}
-				_this59.stackMat3 = newArray21;
-			}
-			_this59.stackMat3[_this59.sizeMat3++] = mat35;
-		}
-		if(mat45 != null) {
-			var t0011 = 1;
-			var t0111 = 0;
-			var t0211 = 0;
-			var t035 = 0;
-			var t1011 = 0;
-			var t1111 = 1;
-			var t1211 = 0;
-			var t135 = 0;
-			var t2011 = 0;
-			var t2111 = 0;
-			var t2211 = 1;
-			var t235 = 0;
-			var t305 = 0;
-			var t315 = 0;
-			var t325 = 0;
-			var t335 = 1;
-			mat45.e00 = t0011;
-			mat45.e01 = t0111;
-			mat45.e02 = t0211;
-			mat45.e03 = t035;
-			mat45.e10 = t1011;
-			mat45.e11 = t1111;
-			mat45.e12 = t1211;
-			mat45.e13 = t135;
-			mat45.e20 = t2011;
-			mat45.e21 = t2111;
-			mat45.e22 = t2211;
-			mat45.e23 = t235;
-			mat45.e30 = t305;
-			mat45.e31 = t315;
-			mat45.e32 = t325;
-			mat45.e33 = t335;
-			if(_this59.sizeMat4 == _this59.stackMat4.length) {
-				var newLength22 = _this59.sizeMat4 << 1;
-				var this23 = new Array(newLength22);
-				var newArray22 = this23;
-				var _g32 = 0;
-				var _g122 = _this59.sizeMat4;
-				while(_g32 < _g122) {
-					var i22 = _g32++;
-					newArray22[i22] = _this59.stackMat4[i22];
-					_this59.stackMat4[i22] = null;
-				}
-				_this59.stackMat4 = newArray22;
-			}
-			_this59.stackMat4[_this59.sizeMat4++] = mat45;
-		}
-		if(quat5 != null) {
-			var tx32 = 0;
-			var ty32 = 0;
-			var tz32 = 0;
-			var tw5 = 1;
-			quat5.x = tx32;
-			quat5.y = ty32;
-			quat5.z = tz32;
-			quat5.w = tw5;
-			if(_this59.sizeQuat == _this59.stackQuat.length) {
-				var newLength23 = _this59.sizeQuat << 1;
-				var this24 = new Array(newLength23);
-				var newArray23 = this24;
-				var _g33 = 0;
-				var _g123 = _this59.sizeQuat;
-				while(_g33 < _g123) {
-					var i23 = _g33++;
-					newArray23[i23] = _this59.stackQuat[i23];
-					_this59.stackQuat[i23] = null;
-				}
-				_this59.stackQuat = newArray23;
-			}
-			_this59.stackQuat[_this59.sizeQuat++] = quat5;
-		}
-		var _this60 = this.p;
-		var mat36 = null;
-		var mat46 = null;
-		var quat6 = null;
-		if(v4 != null) {
-			v4.zero();
-			if(_this60.sizeVec3 == _this60.stackVec3.length) {
-				var newLength24 = _this60.sizeVec3 << 1;
-				var this25 = new Array(newLength24);
-				var newArray24 = this25;
-				var _g34 = 0;
-				var _g124 = _this60.sizeVec3;
-				while(_g34 < _g124) {
-					var i24 = _g34++;
-					newArray24[i24] = _this60.stackVec3[i24];
-					_this60.stackVec3[i24] = null;
-				}
-				_this60.stackVec3 = newArray24;
-			}
-			_this60.stackVec3[_this60.sizeVec3++] = v4;
-		}
-		if(mat36 != null) {
-			var t0012 = 1;
-			var t0112 = 0;
-			var t0212 = 0;
-			var t1012 = 0;
-			var t1112 = 1;
-			var t1212 = 0;
-			var t2012 = 0;
-			var t2112 = 0;
-			var t2212 = 1;
-			mat36.e00 = t0012;
-			mat36.e01 = t0112;
-			mat36.e02 = t0212;
-			mat36.e10 = t1012;
-			mat36.e11 = t1112;
-			mat36.e12 = t1212;
-			mat36.e20 = t2012;
-			mat36.e21 = t2112;
-			mat36.e22 = t2212;
-			if(_this60.sizeMat3 == _this60.stackMat3.length) {
-				var newLength25 = _this60.sizeMat3 << 1;
-				var this26 = new Array(newLength25);
-				var newArray25 = this26;
-				var _g35 = 0;
-				var _g125 = _this60.sizeMat3;
-				while(_g35 < _g125) {
-					var i25 = _g35++;
-					newArray25[i25] = _this60.stackMat3[i25];
-					_this60.stackMat3[i25] = null;
-				}
-				_this60.stackMat3 = newArray25;
-			}
-			_this60.stackMat3[_this60.sizeMat3++] = mat36;
-		}
-		if(mat46 != null) {
-			var t0013 = 1;
-			var t0113 = 0;
-			var t0213 = 0;
-			var t036 = 0;
-			var t1013 = 0;
-			var t1113 = 1;
-			var t1213 = 0;
-			var t136 = 0;
-			var t2013 = 0;
-			var t2113 = 0;
-			var t2213 = 1;
-			var t236 = 0;
-			var t306 = 0;
-			var t316 = 0;
-			var t326 = 0;
-			var t336 = 1;
-			mat46.e00 = t0013;
-			mat46.e01 = t0113;
-			mat46.e02 = t0213;
-			mat46.e03 = t036;
-			mat46.e10 = t1013;
-			mat46.e11 = t1113;
-			mat46.e12 = t1213;
-			mat46.e13 = t136;
-			mat46.e20 = t2013;
-			mat46.e21 = t2113;
-			mat46.e22 = t2213;
-			mat46.e23 = t236;
-			mat46.e30 = t306;
-			mat46.e31 = t316;
-			mat46.e32 = t326;
-			mat46.e33 = t336;
-			if(_this60.sizeMat4 == _this60.stackMat4.length) {
-				var newLength26 = _this60.sizeMat4 << 1;
-				var this27 = new Array(newLength26);
-				var newArray26 = this27;
-				var _g36 = 0;
-				var _g126 = _this60.sizeMat4;
-				while(_g36 < _g126) {
-					var i26 = _g36++;
-					newArray26[i26] = _this60.stackMat4[i26];
-					_this60.stackMat4[i26] = null;
-				}
-				_this60.stackMat4 = newArray26;
-			}
-			_this60.stackMat4[_this60.sizeMat4++] = mat46;
-		}
-		if(quat6 != null) {
-			var tx33 = 0;
-			var ty33 = 0;
-			var tz33 = 0;
-			var tw6 = 1;
-			quat6.x = tx33;
-			quat6.y = ty33;
-			quat6.z = tz33;
-			quat6.w = tw6;
-			if(_this60.sizeQuat == _this60.stackQuat.length) {
-				var newLength27 = _this60.sizeQuat << 1;
-				var this28 = new Array(newLength27);
-				var newArray27 = this28;
-				var _g37 = 0;
-				var _g127 = _this60.sizeQuat;
-				while(_g37 < _g127) {
-					var i27 = _g37++;
-					newArray27[i27] = _this60.stackQuat[i27];
-					_this60.stackQuat[i27] = null;
-				}
-				_this60.stackQuat = newArray27;
-			}
-			_this60.stackQuat[_this60.sizeQuat++] = quat6;
-		}
-		var _this61 = this.p;
-		var mat37 = null;
-		var mat47 = null;
-		var quat7 = null;
-		if(v5 != null) {
-			v5.zero();
-			if(_this61.sizeVec3 == _this61.stackVec3.length) {
-				var newLength28 = _this61.sizeVec3 << 1;
-				var this29 = new Array(newLength28);
-				var newArray28 = this29;
-				var _g38 = 0;
-				var _g128 = _this61.sizeVec3;
-				while(_g38 < _g128) {
-					var i28 = _g38++;
-					newArray28[i28] = _this61.stackVec3[i28];
-					_this61.stackVec3[i28] = null;
-				}
-				_this61.stackVec3 = newArray28;
-			}
-			_this61.stackVec3[_this61.sizeVec3++] = v5;
-		}
-		if(mat37 != null) {
-			var t0014 = 1;
-			var t0114 = 0;
-			var t0214 = 0;
-			var t1014 = 0;
-			var t1114 = 1;
-			var t1214 = 0;
-			var t2014 = 0;
-			var t2114 = 0;
-			var t2214 = 1;
-			mat37.e00 = t0014;
-			mat37.e01 = t0114;
-			mat37.e02 = t0214;
-			mat37.e10 = t1014;
-			mat37.e11 = t1114;
-			mat37.e12 = t1214;
-			mat37.e20 = t2014;
-			mat37.e21 = t2114;
-			mat37.e22 = t2214;
-			if(_this61.sizeMat3 == _this61.stackMat3.length) {
-				var newLength29 = _this61.sizeMat3 << 1;
-				var this30 = new Array(newLength29);
-				var newArray29 = this30;
-				var _g39 = 0;
-				var _g129 = _this61.sizeMat3;
-				while(_g39 < _g129) {
-					var i29 = _g39++;
-					newArray29[i29] = _this61.stackMat3[i29];
-					_this61.stackMat3[i29] = null;
-				}
-				_this61.stackMat3 = newArray29;
-			}
-			_this61.stackMat3[_this61.sizeMat3++] = mat37;
-		}
-		if(mat47 != null) {
-			var t0015 = 1;
-			var t0115 = 0;
-			var t0215 = 0;
-			var t037 = 0;
-			var t1015 = 0;
-			var t1115 = 1;
-			var t1215 = 0;
-			var t137 = 0;
-			var t2015 = 0;
-			var t2115 = 0;
-			var t2215 = 1;
-			var t237 = 0;
-			var t307 = 0;
-			var t317 = 0;
-			var t327 = 0;
-			var t337 = 1;
-			mat47.e00 = t0015;
-			mat47.e01 = t0115;
-			mat47.e02 = t0215;
-			mat47.e03 = t037;
-			mat47.e10 = t1015;
-			mat47.e11 = t1115;
-			mat47.e12 = t1215;
-			mat47.e13 = t137;
-			mat47.e20 = t2015;
-			mat47.e21 = t2115;
-			mat47.e22 = t2215;
-			mat47.e23 = t237;
-			mat47.e30 = t307;
-			mat47.e31 = t317;
-			mat47.e32 = t327;
-			mat47.e33 = t337;
-			if(_this61.sizeMat4 == _this61.stackMat4.length) {
-				var newLength30 = _this61.sizeMat4 << 1;
-				var this31 = new Array(newLength30);
-				var newArray30 = this31;
-				var _g40 = 0;
-				var _g130 = _this61.sizeMat4;
-				while(_g40 < _g130) {
-					var i30 = _g40++;
-					newArray30[i30] = _this61.stackMat4[i30];
-					_this61.stackMat4[i30] = null;
-				}
-				_this61.stackMat4 = newArray30;
-			}
-			_this61.stackMat4[_this61.sizeMat4++] = mat47;
-		}
-		if(quat7 != null) {
-			var tx34 = 0;
-			var ty34 = 0;
-			var tz34 = 0;
-			var tw7 = 1;
-			quat7.x = tx34;
-			quat7.y = ty34;
-			quat7.z = tz34;
-			quat7.w = tw7;
-			if(_this61.sizeQuat == _this61.stackQuat.length) {
-				var newLength31 = _this61.sizeQuat << 1;
-				var this32 = new Array(newLength31);
-				var newArray31 = this32;
-				var _g41 = 0;
-				var _g131 = _this61.sizeQuat;
-				while(_g41 < _g131) {
-					var i31 = _g41++;
-					newArray31[i31] = _this61.stackQuat[i31];
-					_this61.stackQuat[i31] = null;
-				}
-				_this61.stackQuat = newArray31;
-			}
-			_this61.stackQuat[_this61.sizeQuat++] = quat7;
-		}
-		var _this62 = this.p;
-		var mat38 = null;
-		var mat48 = null;
-		var quat8 = null;
-		if(v6 != null) {
-			v6.zero();
-			if(_this62.sizeVec3 == _this62.stackVec3.length) {
-				var newLength32 = _this62.sizeVec3 << 1;
-				var this33 = new Array(newLength32);
-				var newArray32 = this33;
-				var _g42 = 0;
-				var _g132 = _this62.sizeVec3;
-				while(_g42 < _g132) {
-					var i32 = _g42++;
-					newArray32[i32] = _this62.stackVec3[i32];
-					_this62.stackVec3[i32] = null;
-				}
-				_this62.stackVec3 = newArray32;
-			}
-			_this62.stackVec3[_this62.sizeVec3++] = v6;
-		}
-		if(mat38 != null) {
-			var t0016 = 1;
-			var t0116 = 0;
-			var t0216 = 0;
-			var t1016 = 0;
-			var t1116 = 1;
-			var t1216 = 0;
-			var t2016 = 0;
-			var t2116 = 0;
-			var t2216 = 1;
-			mat38.e00 = t0016;
-			mat38.e01 = t0116;
-			mat38.e02 = t0216;
-			mat38.e10 = t1016;
-			mat38.e11 = t1116;
-			mat38.e12 = t1216;
-			mat38.e20 = t2016;
-			mat38.e21 = t2116;
-			mat38.e22 = t2216;
-			if(_this62.sizeMat3 == _this62.stackMat3.length) {
-				var newLength33 = _this62.sizeMat3 << 1;
-				var this34 = new Array(newLength33);
-				var newArray33 = this34;
-				var _g43 = 0;
-				var _g133 = _this62.sizeMat3;
-				while(_g43 < _g133) {
-					var i33 = _g43++;
-					newArray33[i33] = _this62.stackMat3[i33];
-					_this62.stackMat3[i33] = null;
-				}
-				_this62.stackMat3 = newArray33;
-			}
-			_this62.stackMat3[_this62.sizeMat3++] = mat38;
-		}
-		if(mat48 != null) {
-			var t0017 = 1;
-			var t0117 = 0;
-			var t0217 = 0;
-			var t038 = 0;
-			var t1017 = 0;
-			var t1117 = 1;
-			var t1217 = 0;
-			var t138 = 0;
-			var t2017 = 0;
-			var t2117 = 0;
-			var t2217 = 1;
-			var t238 = 0;
-			var t308 = 0;
-			var t318 = 0;
-			var t328 = 0;
-			var t338 = 1;
-			mat48.e00 = t0017;
-			mat48.e01 = t0117;
-			mat48.e02 = t0217;
-			mat48.e03 = t038;
-			mat48.e10 = t1017;
-			mat48.e11 = t1117;
-			mat48.e12 = t1217;
-			mat48.e13 = t138;
-			mat48.e20 = t2017;
-			mat48.e21 = t2117;
-			mat48.e22 = t2217;
-			mat48.e23 = t238;
-			mat48.e30 = t308;
-			mat48.e31 = t318;
-			mat48.e32 = t328;
-			mat48.e33 = t338;
-			if(_this62.sizeMat4 == _this62.stackMat4.length) {
-				var newLength34 = _this62.sizeMat4 << 1;
-				var this35 = new Array(newLength34);
-				var newArray34 = this35;
-				var _g44 = 0;
-				var _g134 = _this62.sizeMat4;
-				while(_g44 < _g134) {
-					var i34 = _g44++;
-					newArray34[i34] = _this62.stackMat4[i34];
-					_this62.stackMat4[i34] = null;
-				}
-				_this62.stackMat4 = newArray34;
-			}
-			_this62.stackMat4[_this62.sizeMat4++] = mat48;
-		}
-		if(quat8 != null) {
-			var tx35 = 0;
-			var ty35 = 0;
-			var tz35 = 0;
-			var tw8 = 1;
-			quat8.x = tx35;
-			quat8.y = ty35;
-			quat8.z = tz35;
-			quat8.w = tw8;
-			if(_this62.sizeQuat == _this62.stackQuat.length) {
-				var newLength35 = _this62.sizeQuat << 1;
-				var this36 = new Array(newLength35);
-				var newArray35 = this36;
-				var _g45 = 0;
-				var _g135 = _this62.sizeQuat;
-				while(_g45 < _g135) {
-					var i35 = _g45++;
-					newArray35[i35] = _this62.stackQuat[i35];
-					_this62.stackQuat[i35] = null;
-				}
-				_this62.stackQuat = newArray35;
-			}
-			_this62.stackQuat[_this62.sizeQuat++] = quat8;
-		}
-		var _this63 = this.p;
-		var mat39 = null;
-		var mat49 = null;
-		var quat9 = null;
-		if(v7 != null) {
-			v7.zero();
-			if(_this63.sizeVec3 == _this63.stackVec3.length) {
-				var newLength36 = _this63.sizeVec3 << 1;
-				var this37 = new Array(newLength36);
-				var newArray36 = this37;
-				var _g46 = 0;
-				var _g136 = _this63.sizeVec3;
-				while(_g46 < _g136) {
-					var i36 = _g46++;
-					newArray36[i36] = _this63.stackVec3[i36];
-					_this63.stackVec3[i36] = null;
-				}
-				_this63.stackVec3 = newArray36;
-			}
-			_this63.stackVec3[_this63.sizeVec3++] = v7;
-		}
-		if(mat39 != null) {
-			var t0018 = 1;
-			var t0118 = 0;
-			var t0218 = 0;
-			var t1018 = 0;
-			var t1118 = 1;
-			var t1218 = 0;
-			var t2018 = 0;
-			var t2118 = 0;
-			var t2218 = 1;
-			mat39.e00 = t0018;
-			mat39.e01 = t0118;
-			mat39.e02 = t0218;
-			mat39.e10 = t1018;
-			mat39.e11 = t1118;
-			mat39.e12 = t1218;
-			mat39.e20 = t2018;
-			mat39.e21 = t2118;
-			mat39.e22 = t2218;
-			if(_this63.sizeMat3 == _this63.stackMat3.length) {
-				var newLength37 = _this63.sizeMat3 << 1;
-				var this38 = new Array(newLength37);
-				var newArray37 = this38;
-				var _g47 = 0;
-				var _g137 = _this63.sizeMat3;
-				while(_g47 < _g137) {
-					var i37 = _g47++;
-					newArray37[i37] = _this63.stackMat3[i37];
-					_this63.stackMat3[i37] = null;
-				}
-				_this63.stackMat3 = newArray37;
-			}
-			_this63.stackMat3[_this63.sizeMat3++] = mat39;
-		}
-		if(mat49 != null) {
-			var t0019 = 1;
-			var t0119 = 0;
-			var t0219 = 0;
-			var t039 = 0;
-			var t1019 = 0;
-			var t1119 = 1;
-			var t1219 = 0;
-			var t139 = 0;
-			var t2019 = 0;
-			var t2119 = 0;
-			var t2219 = 1;
-			var t239 = 0;
-			var t309 = 0;
-			var t319 = 0;
-			var t329 = 0;
-			var t339 = 1;
-			mat49.e00 = t0019;
-			mat49.e01 = t0119;
-			mat49.e02 = t0219;
-			mat49.e03 = t039;
-			mat49.e10 = t1019;
-			mat49.e11 = t1119;
-			mat49.e12 = t1219;
-			mat49.e13 = t139;
-			mat49.e20 = t2019;
-			mat49.e21 = t2119;
-			mat49.e22 = t2219;
-			mat49.e23 = t239;
-			mat49.e30 = t309;
-			mat49.e31 = t319;
-			mat49.e32 = t329;
-			mat49.e33 = t339;
-			if(_this63.sizeMat4 == _this63.stackMat4.length) {
-				var newLength38 = _this63.sizeMat4 << 1;
-				var this39 = new Array(newLength38);
-				var newArray38 = this39;
-				var _g48 = 0;
-				var _g138 = _this63.sizeMat4;
-				while(_g48 < _g138) {
-					var i38 = _g48++;
-					newArray38[i38] = _this63.stackMat4[i38];
-					_this63.stackMat4[i38] = null;
-				}
-				_this63.stackMat4 = newArray38;
-			}
-			_this63.stackMat4[_this63.sizeMat4++] = mat49;
-		}
-		if(quat9 != null) {
-			var tx36 = 0;
-			var ty36 = 0;
-			var tz36 = 0;
-			var tw9 = 1;
-			quat9.x = tx36;
-			quat9.y = ty36;
-			quat9.z = tz36;
-			quat9.w = tw9;
-			if(_this63.sizeQuat == _this63.stackQuat.length) {
-				var newLength39 = _this63.sizeQuat << 1;
-				var this40 = new Array(newLength39);
-				var newArray39 = this40;
-				var _g49 = 0;
-				var _g139 = _this63.sizeQuat;
-				while(_g49 < _g139) {
-					var i39 = _g49++;
-					newArray39[i39] = _this63.stackQuat[i39];
-					_this63.stackQuat[i39] = null;
-				}
-				_this63.stackQuat = newArray39;
-			}
-			_this63.stackQuat[_this63.sizeQuat++] = quat9;
-		}
-		var _this64 = this.p;
-		var mat310 = null;
-		var mat410 = null;
-		var quat10 = null;
-		if(v8 != null) {
-			v8.zero();
-			if(_this64.sizeVec3 == _this64.stackVec3.length) {
-				var newLength40 = _this64.sizeVec3 << 1;
-				var this41 = new Array(newLength40);
-				var newArray40 = this41;
-				var _g50 = 0;
-				var _g140 = _this64.sizeVec3;
-				while(_g50 < _g140) {
-					var i40 = _g50++;
-					newArray40[i40] = _this64.stackVec3[i40];
-					_this64.stackVec3[i40] = null;
-				}
-				_this64.stackVec3 = newArray40;
-			}
-			_this64.stackVec3[_this64.sizeVec3++] = v8;
-		}
-		if(mat310 != null) {
-			var t0020 = 1;
-			var t0120 = 0;
-			var t0220 = 0;
-			var t1020 = 0;
-			var t1120 = 1;
-			var t1220 = 0;
-			var t2020 = 0;
-			var t2120 = 0;
-			var t2220 = 1;
-			mat310.e00 = t0020;
-			mat310.e01 = t0120;
-			mat310.e02 = t0220;
-			mat310.e10 = t1020;
-			mat310.e11 = t1120;
-			mat310.e12 = t1220;
-			mat310.e20 = t2020;
-			mat310.e21 = t2120;
-			mat310.e22 = t2220;
-			if(_this64.sizeMat3 == _this64.stackMat3.length) {
-				var newLength41 = _this64.sizeMat3 << 1;
-				var this42 = new Array(newLength41);
-				var newArray41 = this42;
-				var _g51 = 0;
-				var _g141 = _this64.sizeMat3;
-				while(_g51 < _g141) {
-					var i41 = _g51++;
-					newArray41[i41] = _this64.stackMat3[i41];
-					_this64.stackMat3[i41] = null;
-				}
-				_this64.stackMat3 = newArray41;
-			}
-			_this64.stackMat3[_this64.sizeMat3++] = mat310;
-		}
-		if(mat410 != null) {
-			var t0021 = 1;
-			var t0121 = 0;
-			var t0221 = 0;
-			var t0310 = 0;
-			var t1021 = 0;
-			var t1121 = 1;
-			var t1221 = 0;
-			var t1310 = 0;
-			var t2021 = 0;
-			var t2121 = 0;
-			var t2221 = 1;
-			var t2310 = 0;
-			var t3010 = 0;
-			var t3110 = 0;
-			var t3210 = 0;
-			var t3310 = 1;
-			mat410.e00 = t0021;
-			mat410.e01 = t0121;
-			mat410.e02 = t0221;
-			mat410.e03 = t0310;
-			mat410.e10 = t1021;
-			mat410.e11 = t1121;
-			mat410.e12 = t1221;
-			mat410.e13 = t1310;
-			mat410.e20 = t2021;
-			mat410.e21 = t2121;
-			mat410.e22 = t2221;
-			mat410.e23 = t2310;
-			mat410.e30 = t3010;
-			mat410.e31 = t3110;
-			mat410.e32 = t3210;
-			mat410.e33 = t3310;
-			if(_this64.sizeMat4 == _this64.stackMat4.length) {
-				var newLength42 = _this64.sizeMat4 << 1;
-				var this43 = new Array(newLength42);
-				var newArray42 = this43;
-				var _g52 = 0;
-				var _g142 = _this64.sizeMat4;
-				while(_g52 < _g142) {
-					var i42 = _g52++;
-					newArray42[i42] = _this64.stackMat4[i42];
-					_this64.stackMat4[i42] = null;
-				}
-				_this64.stackMat4 = newArray42;
-			}
-			_this64.stackMat4[_this64.sizeMat4++] = mat410;
-		}
-		if(quat10 != null) {
-			var tx37 = 0;
-			var ty37 = 0;
-			var tz37 = 0;
-			var tw10 = 1;
-			quat10.x = tx37;
-			quat10.y = ty37;
-			quat10.z = tz37;
-			quat10.w = tw10;
-			if(_this64.sizeQuat == _this64.stackQuat.length) {
-				var newLength43 = _this64.sizeQuat << 1;
-				var this44 = new Array(newLength43);
-				var newArray43 = this44;
-				var _g53 = 0;
-				var _g143 = _this64.sizeQuat;
-				while(_g53 < _g143) {
-					var i43 = _g53++;
-					newArray43[i43] = _this64.stackQuat[i43];
-					_this64.stackQuat[i43] = null;
-				}
-				_this64.stackQuat = newArray43;
-			}
-			_this64.stackQuat[_this64.sizeQuat++] = quat10;
-		}
-		var _this65 = this.p;
-		var mat311 = null;
-		var mat411 = null;
-		var quat11 = null;
-		if(o != null) {
-			o.zero();
-			if(_this65.sizeVec3 == _this65.stackVec3.length) {
-				var newLength44 = _this65.sizeVec3 << 1;
-				var this45 = new Array(newLength44);
-				var newArray44 = this45;
-				var _g54 = 0;
-				var _g144 = _this65.sizeVec3;
-				while(_g54 < _g144) {
-					var i44 = _g54++;
-					newArray44[i44] = _this65.stackVec3[i44];
-					_this65.stackVec3[i44] = null;
-				}
-				_this65.stackVec3 = newArray44;
-			}
-			_this65.stackVec3[_this65.sizeVec3++] = o;
-		}
-		if(mat311 != null) {
-			var t0022 = 1;
-			var t0122 = 0;
-			var t0222 = 0;
-			var t1022 = 0;
-			var t1122 = 1;
-			var t1222 = 0;
-			var t2022 = 0;
-			var t2122 = 0;
-			var t2222 = 1;
-			mat311.e00 = t0022;
-			mat311.e01 = t0122;
-			mat311.e02 = t0222;
-			mat311.e10 = t1022;
-			mat311.e11 = t1122;
-			mat311.e12 = t1222;
-			mat311.e20 = t2022;
-			mat311.e21 = t2122;
-			mat311.e22 = t2222;
-			if(_this65.sizeMat3 == _this65.stackMat3.length) {
-				var newLength45 = _this65.sizeMat3 << 1;
-				var this46 = new Array(newLength45);
-				var newArray45 = this46;
-				var _g55 = 0;
-				var _g145 = _this65.sizeMat3;
-				while(_g55 < _g145) {
-					var i45 = _g55++;
-					newArray45[i45] = _this65.stackMat3[i45];
-					_this65.stackMat3[i45] = null;
-				}
-				_this65.stackMat3 = newArray45;
-			}
-			_this65.stackMat3[_this65.sizeMat3++] = mat311;
-		}
-		if(mat411 != null) {
-			var t0023 = 1;
-			var t0123 = 0;
-			var t0223 = 0;
-			var t0311 = 0;
-			var t1023 = 0;
-			var t1123 = 1;
-			var t1223 = 0;
-			var t1311 = 0;
-			var t2023 = 0;
-			var t2123 = 0;
-			var t2223 = 1;
-			var t2311 = 0;
-			var t3011 = 0;
-			var t3111 = 0;
-			var t3211 = 0;
-			var t3311 = 1;
-			mat411.e00 = t0023;
-			mat411.e01 = t0123;
-			mat411.e02 = t0223;
-			mat411.e03 = t0311;
-			mat411.e10 = t1023;
-			mat411.e11 = t1123;
-			mat411.e12 = t1223;
-			mat411.e13 = t1311;
-			mat411.e20 = t2023;
-			mat411.e21 = t2123;
-			mat411.e22 = t2223;
-			mat411.e23 = t2311;
-			mat411.e30 = t3011;
-			mat411.e31 = t3111;
-			mat411.e32 = t3211;
-			mat411.e33 = t3311;
-			if(_this65.sizeMat4 == _this65.stackMat4.length) {
-				var newLength46 = _this65.sizeMat4 << 1;
-				var this47 = new Array(newLength46);
-				var newArray46 = this47;
-				var _g56 = 0;
-				var _g146 = _this65.sizeMat4;
-				while(_g56 < _g146) {
-					var i46 = _g56++;
-					newArray46[i46] = _this65.stackMat4[i46];
-					_this65.stackMat4[i46] = null;
-				}
-				_this65.stackMat4 = newArray46;
-			}
-			_this65.stackMat4[_this65.sizeMat4++] = mat411;
-		}
-		if(quat11 != null) {
-			var tx38 = 0;
-			var ty38 = 0;
-			var tz38 = 0;
-			var tw11 = 1;
-			quat11.x = tx38;
-			quat11.y = ty38;
-			quat11.z = tz38;
-			quat11.w = tw11;
-			if(_this65.sizeQuat == _this65.stackQuat.length) {
-				var newLength47 = _this65.sizeQuat << 1;
-				var this48 = new Array(newLength47);
-				var newArray47 = this48;
-				var _g57 = 0;
-				var _g147 = _this65.sizeQuat;
-				while(_g57 < _g147) {
-					var i47 = _g57++;
-					newArray47[i47] = _this65.stackQuat[i47];
-					_this65.stackQuat[i47] = null;
-				}
-				_this65.stackQuat = newArray47;
-			}
-			_this65.stackQuat[_this65.sizeQuat++] = quat11;
-		}
-		var _this66 = this.p;
-		var vec3 = null;
-		var mat412 = null;
-		var quat12 = null;
-		if(vec3 != null) {
-			vec3.zero();
-			if(_this66.sizeVec3 == _this66.stackVec3.length) {
-				var newLength48 = _this66.sizeVec3 << 1;
-				var this49 = new Array(newLength48);
-				var newArray48 = this49;
-				var _g58 = 0;
-				var _g148 = _this66.sizeVec3;
-				while(_g58 < _g148) {
-					var i48 = _g58++;
-					newArray48[i48] = _this66.stackVec3[i48];
-					_this66.stackVec3[i48] = null;
-				}
-				_this66.stackVec3 = newArray48;
-			}
-			_this66.stackVec3[_this66.sizeVec3++] = vec3;
-		}
-		if(m != null) {
-			var t0024 = 1;
-			var t0124 = 0;
-			var t0224 = 0;
-			var t1024 = 0;
-			var t1124 = 1;
-			var t1224 = 0;
-			var t2024 = 0;
-			var t2124 = 0;
-			var t2224 = 1;
-			m.e00 = t0024;
-			m.e01 = t0124;
-			m.e02 = t0224;
-			m.e10 = t1024;
-			m.e11 = t1124;
-			m.e12 = t1224;
-			m.e20 = t2024;
-			m.e21 = t2124;
-			m.e22 = t2224;
-			if(_this66.sizeMat3 == _this66.stackMat3.length) {
-				var newLength49 = _this66.sizeMat3 << 1;
-				var this50 = new Array(newLength49);
-				var newArray49 = this50;
-				var _g59 = 0;
-				var _g149 = _this66.sizeMat3;
-				while(_g59 < _g149) {
-					var i49 = _g59++;
-					newArray49[i49] = _this66.stackMat3[i49];
-					_this66.stackMat3[i49] = null;
-				}
-				_this66.stackMat3 = newArray49;
-			}
-			_this66.stackMat3[_this66.sizeMat3++] = m;
-		}
-		if(mat412 != null) {
-			var t0025 = 1;
-			var t0125 = 0;
-			var t0225 = 0;
-			var t0312 = 0;
-			var t1025 = 0;
-			var t1125 = 1;
-			var t1225 = 0;
-			var t1312 = 0;
-			var t2025 = 0;
-			var t2125 = 0;
-			var t2225 = 1;
-			var t2312 = 0;
-			var t3012 = 0;
-			var t3112 = 0;
-			var t3212 = 0;
-			var t3312 = 1;
-			mat412.e00 = t0025;
-			mat412.e01 = t0125;
-			mat412.e02 = t0225;
-			mat412.e03 = t0312;
-			mat412.e10 = t1025;
-			mat412.e11 = t1125;
-			mat412.e12 = t1225;
-			mat412.e13 = t1312;
-			mat412.e20 = t2025;
-			mat412.e21 = t2125;
-			mat412.e22 = t2225;
-			mat412.e23 = t2312;
-			mat412.e30 = t3012;
-			mat412.e31 = t3112;
-			mat412.e32 = t3212;
-			mat412.e33 = t3312;
-			if(_this66.sizeMat4 == _this66.stackMat4.length) {
-				var newLength50 = _this66.sizeMat4 << 1;
-				var this51 = new Array(newLength50);
-				var newArray50 = this51;
-				var _g60 = 0;
-				var _g150 = _this66.sizeMat4;
-				while(_g60 < _g150) {
-					var i50 = _g60++;
-					newArray50[i50] = _this66.stackMat4[i50];
-					_this66.stackMat4[i50] = null;
-				}
-				_this66.stackMat4 = newArray50;
-			}
-			_this66.stackMat4[_this66.sizeMat4++] = mat412;
-		}
-		if(quat12 != null) {
-			var tx39 = 0;
-			var ty39 = 0;
-			var tz39 = 0;
-			var tw12 = 1;
-			quat12.x = tx39;
-			quat12.y = ty39;
-			quat12.z = tz39;
-			quat12.w = tw12;
-			if(_this66.sizeQuat == _this66.stackQuat.length) {
-				var newLength51 = _this66.sizeQuat << 1;
-				var this52 = new Array(newLength51);
-				var newArray51 = this52;
-				var _g61 = 0;
-				var _g151 = _this66.sizeQuat;
-				while(_g61 < _g151) {
-					var i51 = _g61++;
-					newArray51[i51] = _this66.stackQuat[i51];
-					_this66.stackQuat[i51] = null;
-				}
-				_this66.stackQuat = newArray51;
-			}
-			_this66.stackQuat[_this66.sizeQuat++] = quat12;
-		}
-		var _this67 = this.p;
-		var mat312 = null;
-		var mat413 = null;
-		var quat13 = null;
-		if(ex != null) {
-			ex.zero();
-			if(_this67.sizeVec3 == _this67.stackVec3.length) {
-				var newLength52 = _this67.sizeVec3 << 1;
-				var this53 = new Array(newLength52);
-				var newArray52 = this53;
-				var _g62 = 0;
-				var _g152 = _this67.sizeVec3;
-				while(_g62 < _g152) {
-					var i52 = _g62++;
-					newArray52[i52] = _this67.stackVec3[i52];
-					_this67.stackVec3[i52] = null;
-				}
-				_this67.stackVec3 = newArray52;
-			}
-			_this67.stackVec3[_this67.sizeVec3++] = ex;
-		}
-		if(mat312 != null) {
-			var t0026 = 1;
-			var t0126 = 0;
-			var t0226 = 0;
-			var t1026 = 0;
-			var t1126 = 1;
-			var t1226 = 0;
-			var t2026 = 0;
-			var t2126 = 0;
-			var t2226 = 1;
-			mat312.e00 = t0026;
-			mat312.e01 = t0126;
-			mat312.e02 = t0226;
-			mat312.e10 = t1026;
-			mat312.e11 = t1126;
-			mat312.e12 = t1226;
-			mat312.e20 = t2026;
-			mat312.e21 = t2126;
-			mat312.e22 = t2226;
-			if(_this67.sizeMat3 == _this67.stackMat3.length) {
-				var newLength53 = _this67.sizeMat3 << 1;
-				var this54 = new Array(newLength53);
-				var newArray53 = this54;
-				var _g63 = 0;
-				var _g153 = _this67.sizeMat3;
-				while(_g63 < _g153) {
-					var i53 = _g63++;
-					newArray53[i53] = _this67.stackMat3[i53];
-					_this67.stackMat3[i53] = null;
-				}
-				_this67.stackMat3 = newArray53;
-			}
-			_this67.stackMat3[_this67.sizeMat3++] = mat312;
-		}
-		if(mat413 != null) {
-			var t0027 = 1;
-			var t0127 = 0;
-			var t0227 = 0;
-			var t0313 = 0;
-			var t1027 = 0;
-			var t1127 = 1;
-			var t1227 = 0;
-			var t1313 = 0;
-			var t2027 = 0;
-			var t2127 = 0;
-			var t2227 = 1;
-			var t2313 = 0;
-			var t3013 = 0;
-			var t3113 = 0;
-			var t3213 = 0;
-			var t3313 = 1;
-			mat413.e00 = t0027;
-			mat413.e01 = t0127;
-			mat413.e02 = t0227;
-			mat413.e03 = t0313;
-			mat413.e10 = t1027;
-			mat413.e11 = t1127;
-			mat413.e12 = t1227;
-			mat413.e13 = t1313;
-			mat413.e20 = t2027;
-			mat413.e21 = t2127;
-			mat413.e22 = t2227;
-			mat413.e23 = t2313;
-			mat413.e30 = t3013;
-			mat413.e31 = t3113;
-			mat413.e32 = t3213;
-			mat413.e33 = t3313;
-			if(_this67.sizeMat4 == _this67.stackMat4.length) {
-				var newLength54 = _this67.sizeMat4 << 1;
-				var this55 = new Array(newLength54);
-				var newArray54 = this55;
-				var _g64 = 0;
-				var _g154 = _this67.sizeMat4;
-				while(_g64 < _g154) {
-					var i54 = _g64++;
-					newArray54[i54] = _this67.stackMat4[i54];
-					_this67.stackMat4[i54] = null;
-				}
-				_this67.stackMat4 = newArray54;
-			}
-			_this67.stackMat4[_this67.sizeMat4++] = mat413;
-		}
-		if(quat13 != null) {
-			var tx40 = 0;
-			var ty40 = 0;
-			var tz40 = 0;
-			var tw13 = 1;
-			quat13.x = tx40;
-			quat13.y = ty40;
-			quat13.z = tz40;
-			quat13.w = tw13;
-			if(_this67.sizeQuat == _this67.stackQuat.length) {
-				var newLength55 = _this67.sizeQuat << 1;
-				var this56 = new Array(newLength55);
-				var newArray55 = this56;
-				var _g65 = 0;
-				var _g155 = _this67.sizeQuat;
-				while(_g65 < _g155) {
-					var i55 = _g65++;
-					newArray55[i55] = _this67.stackQuat[i55];
-					_this67.stackQuat[i55] = null;
-				}
-				_this67.stackQuat = newArray55;
-			}
-			_this67.stackQuat[_this67.sizeQuat++] = quat13;
-		}
-		var _this68 = this.p;
-		var mat313 = null;
-		var mat414 = null;
-		var quat14 = null;
-		if(ey != null) {
-			ey.zero();
-			if(_this68.sizeVec3 == _this68.stackVec3.length) {
-				var newLength56 = _this68.sizeVec3 << 1;
-				var this57 = new Array(newLength56);
-				var newArray56 = this57;
-				var _g66 = 0;
-				var _g156 = _this68.sizeVec3;
-				while(_g66 < _g156) {
-					var i56 = _g66++;
-					newArray56[i56] = _this68.stackVec3[i56];
-					_this68.stackVec3[i56] = null;
-				}
-				_this68.stackVec3 = newArray56;
-			}
-			_this68.stackVec3[_this68.sizeVec3++] = ey;
-		}
-		if(mat313 != null) {
-			var t0028 = 1;
-			var t0128 = 0;
-			var t0228 = 0;
-			var t1028 = 0;
-			var t1128 = 1;
-			var t1228 = 0;
-			var t2028 = 0;
-			var t2128 = 0;
-			var t2228 = 1;
-			mat313.e00 = t0028;
-			mat313.e01 = t0128;
-			mat313.e02 = t0228;
-			mat313.e10 = t1028;
-			mat313.e11 = t1128;
-			mat313.e12 = t1228;
-			mat313.e20 = t2028;
-			mat313.e21 = t2128;
-			mat313.e22 = t2228;
-			if(_this68.sizeMat3 == _this68.stackMat3.length) {
-				var newLength57 = _this68.sizeMat3 << 1;
-				var this58 = new Array(newLength57);
-				var newArray57 = this58;
-				var _g67 = 0;
-				var _g157 = _this68.sizeMat3;
-				while(_g67 < _g157) {
-					var i57 = _g67++;
-					newArray57[i57] = _this68.stackMat3[i57];
-					_this68.stackMat3[i57] = null;
-				}
-				_this68.stackMat3 = newArray57;
-			}
-			_this68.stackMat3[_this68.sizeMat3++] = mat313;
-		}
-		if(mat414 != null) {
-			var t0029 = 1;
-			var t0129 = 0;
-			var t0229 = 0;
-			var t0314 = 0;
-			var t1029 = 0;
-			var t1129 = 1;
-			var t1229 = 0;
-			var t1314 = 0;
-			var t2029 = 0;
-			var t2129 = 0;
-			var t2229 = 1;
-			var t2314 = 0;
-			var t3014 = 0;
-			var t3114 = 0;
-			var t3214 = 0;
-			var t3314 = 1;
-			mat414.e00 = t0029;
-			mat414.e01 = t0129;
-			mat414.e02 = t0229;
-			mat414.e03 = t0314;
-			mat414.e10 = t1029;
-			mat414.e11 = t1129;
-			mat414.e12 = t1229;
-			mat414.e13 = t1314;
-			mat414.e20 = t2029;
-			mat414.e21 = t2129;
-			mat414.e22 = t2229;
-			mat414.e23 = t2314;
-			mat414.e30 = t3014;
-			mat414.e31 = t3114;
-			mat414.e32 = t3214;
-			mat414.e33 = t3314;
-			if(_this68.sizeMat4 == _this68.stackMat4.length) {
-				var newLength58 = _this68.sizeMat4 << 1;
-				var this59 = new Array(newLength58);
-				var newArray58 = this59;
-				var _g68 = 0;
-				var _g158 = _this68.sizeMat4;
-				while(_g68 < _g158) {
-					var i58 = _g68++;
-					newArray58[i58] = _this68.stackMat4[i58];
-					_this68.stackMat4[i58] = null;
-				}
-				_this68.stackMat4 = newArray58;
-			}
-			_this68.stackMat4[_this68.sizeMat4++] = mat414;
-		}
-		if(quat14 != null) {
-			var tx41 = 0;
-			var ty41 = 0;
-			var tz41 = 0;
-			var tw14 = 1;
-			quat14.x = tx41;
-			quat14.y = ty41;
-			quat14.z = tz41;
-			quat14.w = tw14;
-			if(_this68.sizeQuat == _this68.stackQuat.length) {
-				var newLength59 = _this68.sizeQuat << 1;
-				var this60 = new Array(newLength59);
-				var newArray59 = this60;
-				var _g69 = 0;
-				var _g159 = _this68.sizeQuat;
-				while(_g69 < _g159) {
-					var i59 = _g69++;
-					newArray59[i59] = _this68.stackQuat[i59];
-					_this68.stackQuat[i59] = null;
-				}
-				_this68.stackQuat = newArray59;
-			}
-			_this68.stackQuat[_this68.sizeQuat++] = quat14;
-		}
-		var _this69 = this.p;
-		var mat314 = null;
-		var mat415 = null;
-		var quat15 = null;
-		if(ez != null) {
-			ez.zero();
-			if(_this69.sizeVec3 == _this69.stackVec3.length) {
-				var newLength60 = _this69.sizeVec3 << 1;
-				var this61 = new Array(newLength60);
-				var newArray60 = this61;
-				var _g70 = 0;
-				var _g160 = _this69.sizeVec3;
-				while(_g70 < _g160) {
-					var i60 = _g70++;
-					newArray60[i60] = _this69.stackVec3[i60];
-					_this69.stackVec3[i60] = null;
-				}
-				_this69.stackVec3 = newArray60;
-			}
-			_this69.stackVec3[_this69.sizeVec3++] = ez;
-		}
-		if(mat314 != null) {
-			var t0030 = 1;
-			var t0130 = 0;
-			var t0230 = 0;
-			var t1030 = 0;
-			var t1130 = 1;
-			var t1230 = 0;
-			var t2030 = 0;
-			var t2130 = 0;
-			var t2230 = 1;
-			mat314.e00 = t0030;
-			mat314.e01 = t0130;
-			mat314.e02 = t0230;
-			mat314.e10 = t1030;
-			mat314.e11 = t1130;
-			mat314.e12 = t1230;
-			mat314.e20 = t2030;
-			mat314.e21 = t2130;
-			mat314.e22 = t2230;
-			if(_this69.sizeMat3 == _this69.stackMat3.length) {
-				var newLength61 = _this69.sizeMat3 << 1;
-				var this62 = new Array(newLength61);
-				var newArray61 = this62;
-				var _g71 = 0;
-				var _g161 = _this69.sizeMat3;
-				while(_g71 < _g161) {
-					var i61 = _g71++;
-					newArray61[i61] = _this69.stackMat3[i61];
-					_this69.stackMat3[i61] = null;
-				}
-				_this69.stackMat3 = newArray61;
-			}
-			_this69.stackMat3[_this69.sizeMat3++] = mat314;
-		}
-		if(mat415 != null) {
-			var t0031 = 1;
-			var t0131 = 0;
-			var t0231 = 0;
-			var t0315 = 0;
-			var t1031 = 0;
-			var t1131 = 1;
-			var t1231 = 0;
-			var t1315 = 0;
-			var t2031 = 0;
-			var t2131 = 0;
-			var t2231 = 1;
-			var t2315 = 0;
-			var t3015 = 0;
-			var t3115 = 0;
-			var t3215 = 0;
-			var t3315 = 1;
-			mat415.e00 = t0031;
-			mat415.e01 = t0131;
-			mat415.e02 = t0231;
-			mat415.e03 = t0315;
-			mat415.e10 = t1031;
-			mat415.e11 = t1131;
-			mat415.e12 = t1231;
-			mat415.e13 = t1315;
-			mat415.e20 = t2031;
-			mat415.e21 = t2131;
-			mat415.e22 = t2231;
-			mat415.e23 = t2315;
-			mat415.e30 = t3015;
-			mat415.e31 = t3115;
-			mat415.e32 = t3215;
-			mat415.e33 = t3315;
-			if(_this69.sizeMat4 == _this69.stackMat4.length) {
-				var newLength62 = _this69.sizeMat4 << 1;
-				var this63 = new Array(newLength62);
-				var newArray62 = this63;
-				var _g72 = 0;
-				var _g162 = _this69.sizeMat4;
-				while(_g72 < _g162) {
-					var i62 = _g72++;
-					newArray62[i62] = _this69.stackMat4[i62];
-					_this69.stackMat4[i62] = null;
-				}
-				_this69.stackMat4 = newArray62;
-			}
-			_this69.stackMat4[_this69.sizeMat4++] = mat415;
-		}
-		if(quat15 != null) {
-			var tx42 = 0;
-			var ty42 = 0;
-			var tz42 = 0;
-			var tw15 = 1;
-			quat15.x = tx42;
-			quat15.y = ty42;
-			quat15.z = tz42;
-			quat15.w = tw15;
-			if(_this69.sizeQuat == _this69.stackQuat.length) {
-				var newLength63 = _this69.sizeQuat << 1;
-				var this64 = new Array(newLength63);
-				var newArray63 = this64;
-				var _g73 = 0;
-				var _g163 = _this69.sizeQuat;
-				while(_g73 < _g163) {
-					var i63 = _g73++;
-					newArray63[i63] = _this69.stackQuat[i63];
-					_this69.stackQuat[i63] = null;
-				}
-				_this69.stackQuat = newArray63;
-			}
-			_this69.stackQuat[_this69.sizeQuat++] = quat15;
-		}
-	}
-	rect(v1,v2,v3,v4,n1,n2,n3,n4,color) {
-		this.triangle(v1,v2,v3,n1,n2,n3,color);
-		this.triangle(v1,v3,v4,n1,n3,n4,color);
-	}
-	point(v,color) {
-	}
-	triangle(v1,v2,v3,n1,n2,n3,color) {
-	}
-	line(v1,v2,color) {
-	}
-}
-oimo.dynamics.common.DebugDrawStyle = class oimo_dynamics_common_DebugDrawStyle {
-	constructor() {
-		this.basisColorZ = new oimo.common.Vec3(0.0,0.0,1.0);
-		this.basisColorY = new oimo.common.Vec3(0.0,1.0,0.0);
-		this.basisColorX = new oimo.common.Vec3(1.0,0.0,0.0);
-		this.basisLength = 0.5;
-		this.jointRotationalConstraintRadius = 0.3;
-		this.jointErrorColor = new oimo.common.Vec3(1.0,0.1,0.1);
-		this.jointLineColor = new oimo.common.Vec3(0.8,0.8,0.8);
-		this.contactBinormalLength = 0.5;
-		this.contactTangentLength = 0.5;
-		this.contactNormalLength = 0.5;
-		this.contactBinormalColor = new oimo.common.Vec3(0.2,0.2,1.0);
-		this.contactTangentColor = new oimo.common.Vec3(0.1,0.8,0.1);
-		this.contactNormalColor = new oimo.common.Vec3(1.0,0.1,0.1);
-		this.disabledContactColor = new oimo.common.Vec3(0.5,0.1,0.1);
-		this.newContactColor = new oimo.common.Vec3(1.0,1.0,0.1);
-		this.contactColor4 = new oimo.common.Vec3(0.8,0.1,1.0);
-		this.contactColor3 = new oimo.common.Vec3(0.1,0.8,0.6);
-		this.contactColor2 = new oimo.common.Vec3(1.0,0.6,0.1);
-		this.contactColor = new oimo.common.Vec3(1.0,0.1,0.1);
-		this.pairColor = new oimo.common.Vec3(1.0,1.0,0.1);
-		this.bvhNodeColor = new oimo.common.Vec3(0.4,0.4,0.4);
-		this.aabbColor = new oimo.common.Vec3(1.0,0.1,0.1);
-		this.kinematicShapeColor = new oimo.common.Vec3(1.0,0.5,0.1);
-		this.staticShapeColor = new oimo.common.Vec3(0.7,0.7,0.7);
-		this.sleepingShapeColor2 = new oimo.common.Vec3(0.2,0.8,0.5);
-		this.sleepingShapeColor1 = new oimo.common.Vec3(0.3,0.3,0.8);
-		this.sleepyShapeColor2 = new oimo.common.Vec3(0.6,0.8,0.3);
-		this.sleepyShapeColor1 = new oimo.common.Vec3(0.5,0.25,0.6);
-		this.shapeColor2 = new oimo.common.Vec3(1.0,0.8,0.1);
-		this.shapeColor1 = new oimo.common.Vec3(0.7,0.2,0.4);
-	}
-}
-oimo.dynamics.common.Performance = class oimo_dynamics_common_Performance {
-}
-if(!oimo.dynamics.constraint) oimo.dynamics.constraint = {};
-oimo.dynamics.constraint.ConstraintSolver = class oimo_dynamics_constraint_ConstraintSolver {
-	constructor() {
-		this._b1 = null;
-		this._b2 = null;
-		this._addedToIsland = false;
-	}
-	preSolveVelocity(timeStep) {
-	}
-	warmStart(timeStep) {
-	}
-	solveVelocity() {
-	}
-	postSolveVelocity(timeStep) {
-	}
-	preSolvePosition(timeStep) {
-	}
-	solvePositionSplitImpulse() {
-	}
-	solvePositionNgs(timeStep) {
-	}
-	postSolve() {
-	}
-}
-oimo.dynamics.constraint.PositionCorrectionAlgorithm = class oimo_dynamics_constraint_PositionCorrectionAlgorithm {
-}
-if(!oimo.dynamics.constraint.contact) oimo.dynamics.constraint.contact = {};
-oimo.dynamics.constraint.contact.ContactConstraint = class oimo_dynamics_constraint_contact_ContactConstraint {
-	constructor(manifold) {
-		this._solver = new oimo.dynamics.constraint.solver.pgs.PgsContactConstraintSolver(this);
-		this._manifold = manifold;
-	}
-	_getVelocitySolverInfo(timeStep,info) {
-		info.b1 = this._b1;
-		info.b2 = this._b2;
-		var normal;
-		var normalX;
-		var normalY;
-		var normalZ;
-		var tangent;
-		var tangentX;
-		var tangentY;
-		var tangentZ;
-		var binormal;
-		var binormalX;
-		var binormalY;
-		var binormalZ;
-		normalX = this._manifold._normalX;
-		normalY = this._manifold._normalY;
-		normalZ = this._manifold._normalZ;
-		tangentX = this._manifold._tangentX;
-		tangentY = this._manifold._tangentY;
-		tangentZ = this._manifold._tangentZ;
-		binormalX = this._manifold._binormalX;
-		binormalY = this._manifold._binormalY;
-		binormalZ = this._manifold._binormalZ;
-		var friction = Math.sqrt(this._s1._friction * this._s2._friction);
-		var restitution = Math.sqrt(this._s1._restitution * this._s2._restitution);
-		var num = this._manifold._numPoints;
-		info.numRows = 0;
-		var posDiff;
-		var posDiffX;
-		var posDiffY;
-		var posDiffZ;
-		posDiffX = this._tf1._positionX - this._tf2._positionX;
-		posDiffY = this._tf1._positionY - this._tf2._positionY;
-		posDiffZ = this._tf1._positionZ - this._tf2._positionZ;
-		var _g = 0;
-		var _g1 = num;
-		while(_g < _g1) {
-			var i = _g++;
-			var p = this._manifold._points[i];
-			if(p._depth < 0) {
-				p._disabled = true;
-				var _this = p._impulse;
-				_this.impulseN = 0;
-				_this.impulseT = 0;
-				_this.impulseB = 0;
-				_this.impulseP = 0;
-				_this.impulseLX = 0;
-				_this.impulseLY = 0;
-				_this.impulseLZ = 0;
-				continue;
-			} else {
-				p._disabled = false;
-			}
-			var row = info.rows[info.numRows++];
-			row.friction = friction;
-			row.cfm = 0;
-			var j = row.jacobianN;
-			j.lin1X = normalX;
-			j.lin1Y = normalY;
-			j.lin1Z = normalZ;
-			j.lin2X = normalX;
-			j.lin2Y = normalY;
-			j.lin2Z = normalZ;
-			j.ang1X = p._relPos1Y * normalZ - p._relPos1Z * normalY;
-			j.ang1Y = p._relPos1Z * normalX - p._relPos1X * normalZ;
-			j.ang1Z = p._relPos1X * normalY - p._relPos1Y * normalX;
-			j.ang2X = p._relPos2Y * normalZ - p._relPos2Z * normalY;
-			j.ang2Y = p._relPos2Z * normalX - p._relPos2X * normalZ;
-			j.ang2Z = p._relPos2X * normalY - p._relPos2Y * normalX;
-			j = row.jacobianT;
-			j.lin1X = tangentX;
-			j.lin1Y = tangentY;
-			j.lin1Z = tangentZ;
-			j.lin2X = tangentX;
-			j.lin2Y = tangentY;
-			j.lin2Z = tangentZ;
-			j.ang1X = p._relPos1Y * tangentZ - p._relPos1Z * tangentY;
-			j.ang1Y = p._relPos1Z * tangentX - p._relPos1X * tangentZ;
-			j.ang1Z = p._relPos1X * tangentY - p._relPos1Y * tangentX;
-			j.ang2X = p._relPos2Y * tangentZ - p._relPos2Z * tangentY;
-			j.ang2Y = p._relPos2Z * tangentX - p._relPos2X * tangentZ;
-			j.ang2Z = p._relPos2X * tangentY - p._relPos2Y * tangentX;
-			j = row.jacobianB;
-			j.lin1X = binormalX;
-			j.lin1Y = binormalY;
-			j.lin1Z = binormalZ;
-			j.lin2X = binormalX;
-			j.lin2Y = binormalY;
-			j.lin2Z = binormalZ;
-			j.ang1X = p._relPos1Y * binormalZ - p._relPos1Z * binormalY;
-			j.ang1Y = p._relPos1Z * binormalX - p._relPos1X * binormalZ;
-			j.ang1Z = p._relPos1X * binormalY - p._relPos1Y * binormalX;
-			j.ang2X = p._relPos2Y * binormalZ - p._relPos2Z * binormalY;
-			j.ang2Y = p._relPos2Z * binormalX - p._relPos2X * binormalZ;
-			j.ang2Z = p._relPos2X * binormalY - p._relPos2Y * binormalX;
-			j = row.jacobianN;
-			var rvn = j.lin1X * this._b1._velX + j.lin1Y * this._b1._velY + j.lin1Z * this._b1._velZ + (j.ang1X * this._b1._angVelX + j.ang1Y * this._b1._angVelY + j.ang1Z * this._b1._angVelZ) - (j.lin2X * this._b2._velX + j.lin2Y * this._b2._velY + j.lin2Z * this._b2._velZ + (j.ang2X * this._b2._angVelX + j.ang2Y * this._b2._angVelY + j.ang2Z * this._b2._angVelZ));
-			if(rvn < -oimo.common.Setting.contactEnableBounceThreshold && !p._warmStarted) {
-				row.rhs = -rvn * restitution;
-			} else {
-				row.rhs = 0;
-			}
-			if(this._positionCorrectionAlgorithm == oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE) {
-				if(p._depth > oimo.common.Setting.linearSlop) {
-					var minRhs = (p._depth - oimo.common.Setting.linearSlop) * oimo.common.Setting.velocityBaumgarte * timeStep.invDt;
-					if(row.rhs < minRhs) {
-						row.rhs = minRhs;
-					}
-				}
-			}
-			if(!p._warmStarted) {
-				var _this1 = p._impulse;
-				_this1.impulseN = 0;
-				_this1.impulseT = 0;
-				_this1.impulseB = 0;
-				_this1.impulseP = 0;
-				_this1.impulseLX = 0;
-				_this1.impulseLY = 0;
-				_this1.impulseLZ = 0;
-			}
-			row.impulse = p._impulse;
-		}
-	}
-	_getPositionSolverInfo(info) {
-		info.b1 = this._b1;
-		info.b2 = this._b2;
-		var normal;
-		var normalX;
-		var normalY;
-		var normalZ;
-		normalX = this._manifold._normalX;
-		normalY = this._manifold._normalY;
-		normalZ = this._manifold._normalZ;
-		var num = this._manifold._numPoints;
-		info.numRows = 0;
-		var _g = 0;
-		var _g1 = num;
-		while(_g < _g1) {
-			var i = _g++;
-			var p = this._manifold._points[i];
-			if(p._disabled) {
-				continue;
-			}
-			var row = info.rows[info.numRows++];
-			var j = row.jacobianN;
-			j.lin1X = normalX;
-			j.lin1Y = normalY;
-			j.lin1Z = normalZ;
-			j.lin2X = normalX;
-			j.lin2Y = normalY;
-			j.lin2Z = normalZ;
-			j.ang1X = p._relPos1Y * normalZ - p._relPos1Z * normalY;
-			j.ang1Y = p._relPos1Z * normalX - p._relPos1X * normalZ;
-			j.ang1Z = p._relPos1X * normalY - p._relPos1Y * normalX;
-			j.ang2X = p._relPos2Y * normalZ - p._relPos2Z * normalY;
-			j.ang2Y = p._relPos2Z * normalX - p._relPos2X * normalZ;
-			j.ang2Z = p._relPos2X * normalY - p._relPos2Y * normalX;
-			row.rhs = p._depth - oimo.common.Setting.linearSlop;
-			if(row.rhs < 0) {
-				row.rhs = 0;
-			}
-			row.impulse = p._impulse;
-		}
-	}
-	_syncManifold() {
-		this._manifold._updateDepthsAndPositions(this._tf1,this._tf2);
-	}
-	getShape1() {
-		return this._s1;
-	}
-	getShape2() {
-		return this._s2;
-	}
-	getManifold() {
-		return this._manifold;
-	}
-	isTouching() {
-		var _g = 0;
-		var _g1 = this._manifold._numPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			if(this._manifold._points[i]._depth >= 0) {
-				return true;
-			}
-		}
-		return false;
-	}
-}
-oimo.dynamics.constraint.contact.ContactImpulse = class oimo_dynamics_constraint_contact_ContactImpulse {
-	constructor() {
-		this.impulseN = 0;
-		this.impulseT = 0;
-		this.impulseB = 0;
-		this.impulseP = 0;
-		this.impulseLX = 0;
-		this.impulseLY = 0;
-		this.impulseLZ = 0;
-	}
-	copyFrom(imp) {
-		this.impulseN = imp.impulseN;
-		this.impulseT = imp.impulseT;
-		this.impulseB = imp.impulseB;
-		this.impulseLX = imp.impulseLX;
-		this.impulseLY = imp.impulseLY;
-		this.impulseLZ = imp.impulseLZ;
-	}
-}
-oimo.dynamics.constraint.contact.Manifold = class oimo_dynamics_constraint_contact_Manifold {
-	constructor() {
-		this._normalX = 0;
-		this._normalY = 0;
-		this._normalZ = 0;
-		this._tangentX = 0;
-		this._tangentY = 0;
-		this._tangentZ = 0;
-		this._binormalX = 0;
-		this._binormalY = 0;
-		this._binormalZ = 0;
-		this._numPoints = 0;
-		var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
-		this._points = this1;
-		var _g = 0;
-		var _g1 = oimo.common.Setting.maxManifoldPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			this._points[i] = new oimo.dynamics.constraint.contact.ManifoldPoint();
-		}
-	}
-	_clear() {
-		var _g = 0;
-		var _g1 = this._numPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			var _this = this._points[i];
-			_this._localPos1X = 0;
-			_this._localPos1Y = 0;
-			_this._localPos1Z = 0;
-			_this._localPos2X = 0;
-			_this._localPos2Y = 0;
-			_this._localPos2Z = 0;
-			_this._relPos1X = 0;
-			_this._relPos1Y = 0;
-			_this._relPos1Z = 0;
-			_this._relPos2X = 0;
-			_this._relPos2Y = 0;
-			_this._relPos2Z = 0;
-			_this._pos1X = 0;
-			_this._pos1Y = 0;
-			_this._pos1Z = 0;
-			_this._pos2X = 0;
-			_this._pos2Y = 0;
-			_this._pos2Z = 0;
-			_this._depth = 0;
-			var _this1 = _this._impulse;
-			_this1.impulseN = 0;
-			_this1.impulseT = 0;
-			_this1.impulseB = 0;
-			_this1.impulseP = 0;
-			_this1.impulseLX = 0;
-			_this1.impulseLY = 0;
-			_this1.impulseLZ = 0;
-			_this._warmStarted = false;
-			_this._disabled = false;
-			_this._id = -1;
-		}
-		this._numPoints = 0;
-	}
-	_buildBasis(normal) {
-		var v = normal;
-		this._normalX = v.x;
-		this._normalY = v.y;
-		this._normalZ = v.z;
-		var nx = normal.x;
-		var ny = normal.y;
-		var nz = normal.z;
-		var nx2 = nx * nx;
-		var ny2 = ny * ny;
-		var nz2 = nz * nz;
-		var tx;
-		var ty;
-		var tz;
-		var bx;
-		var by;
-		var bz;
-		if(nx2 < ny2) {
-			if(nx2 < nz2) {
-				var invL = 1 / Math.sqrt(ny2 + nz2);
-				tx = 0;
-				ty = -nz * invL;
-				tz = ny * invL;
-				bx = ny * tz - nz * ty;
-				by = -nx * tz;
-				bz = nx * ty;
-			} else {
-				var invL1 = 1 / Math.sqrt(nx2 + ny2);
-				tx = -ny * invL1;
-				ty = nx * invL1;
-				tz = 0;
-				bx = -nz * ty;
-				by = nz * tx;
-				bz = nx * ty - ny * tx;
-			}
-		} else if(ny2 < nz2) {
-			var invL2 = 1 / Math.sqrt(nx2 + nz2);
-			tx = nz * invL2;
-			ty = 0;
-			tz = -nx * invL2;
-			bx = ny * tz;
-			by = nz * tx - nx * tz;
-			bz = -ny * tx;
-		} else {
-			var invL3 = 1 / Math.sqrt(nx2 + ny2);
-			tx = -ny * invL3;
-			ty = nx * invL3;
-			tz = 0;
-			bx = -nz * ty;
-			by = nz * tx;
-			bz = nx * ty - ny * tx;
-		}
-		this._tangentX = tx;
-		this._tangentY = ty;
-		this._tangentZ = tz;
-		this._binormalX = bx;
-		this._binormalY = by;
-		this._binormalZ = bz;
-	}
-	_updateDepthsAndPositions(tf1,tf2) {
-		var _g = 0;
-		var _g1 = this._numPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			var p = this._points[i];
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = tf1._rotation00 * p._localPos1X + tf1._rotation01 * p._localPos1Y + tf1._rotation02 * p._localPos1Z;
-			__tmp__Y = tf1._rotation10 * p._localPos1X + tf1._rotation11 * p._localPos1Y + tf1._rotation12 * p._localPos1Z;
-			__tmp__Z = tf1._rotation20 * p._localPos1X + tf1._rotation21 * p._localPos1Y + tf1._rotation22 * p._localPos1Z;
-			p._relPos1X = __tmp__X;
-			p._relPos1Y = __tmp__Y;
-			p._relPos1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = tf2._rotation00 * p._localPos2X + tf2._rotation01 * p._localPos2Y + tf2._rotation02 * p._localPos2Z;
-			__tmp__Y1 = tf2._rotation10 * p._localPos2X + tf2._rotation11 * p._localPos2Y + tf2._rotation12 * p._localPos2Z;
-			__tmp__Z1 = tf2._rotation20 * p._localPos2X + tf2._rotation21 * p._localPos2Y + tf2._rotation22 * p._localPos2Z;
-			p._relPos2X = __tmp__X1;
-			p._relPos2Y = __tmp__Y1;
-			p._relPos2Z = __tmp__Z1;
-			p._pos1X = p._relPos1X + tf1._positionX;
-			p._pos1Y = p._relPos1Y + tf1._positionY;
-			p._pos1Z = p._relPos1Z + tf1._positionZ;
-			p._pos2X = p._relPos2X + tf2._positionX;
-			p._pos2Y = p._relPos2Y + tf2._positionY;
-			p._pos2Z = p._relPos2Z + tf2._positionZ;
-			var diff;
-			var diffX;
-			var diffY;
-			var diffZ;
-			diffX = p._pos1X - p._pos2X;
-			diffY = p._pos1Y - p._pos2Y;
-			diffZ = p._pos1Z - p._pos2Z;
-			var dotN = diffX * this._normalX + diffY * this._normalY + diffZ * this._normalZ;
-			p._depth = -dotN;
-		}
-	}
-	getNormal() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._normalX;
-		v1.y = this._normalY;
-		v1.z = this._normalZ;
-		return v;
-	}
-	getNormalTo(normal) {
-		var v = normal;
-		v.x = this._normalX;
-		v.y = this._normalY;
-		v.z = this._normalZ;
-	}
-	getTangent() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._tangentX;
-		v1.y = this._tangentY;
-		v1.z = this._tangentZ;
-		return v;
-	}
-	getTangentTo(tangent) {
-		var v = tangent;
-		v.x = this._tangentX;
-		v.y = this._tangentY;
-		v.z = this._tangentZ;
-	}
-	getBinormal() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._binormalX;
-		v1.y = this._binormalY;
-		v1.z = this._binormalZ;
-		return v;
-	}
-	getBinormalTo(binormal) {
-		var v = binormal;
-		v.x = this._binormalX;
-		v.y = this._binormalY;
-		v.z = this._binormalZ;
-	}
-	getPoints() {
-		return this._points;
-	}
-	getNumPoints() {
-		return this._numPoints;
-	}
-}
-oimo.dynamics.constraint.contact.ManifoldPoint = class oimo_dynamics_constraint_contact_ManifoldPoint {
-	constructor() {
-		this._localPos1X = 0;
-		this._localPos1Y = 0;
-		this._localPos1Z = 0;
-		this._localPos2X = 0;
-		this._localPos2Y = 0;
-		this._localPos2Z = 0;
-		this._relPos1X = 0;
-		this._relPos1Y = 0;
-		this._relPos1Z = 0;
-		this._relPos2X = 0;
-		this._relPos2Y = 0;
-		this._relPos2Z = 0;
-		this._pos1X = 0;
-		this._pos1Y = 0;
-		this._pos1Z = 0;
-		this._pos2X = 0;
-		this._pos2Y = 0;
-		this._pos2Z = 0;
-		this._depth = 0;
-		this._impulse = new oimo.dynamics.constraint.contact.ContactImpulse();
-		this._warmStarted = false;
-		this._disabled = false;
-		this._id = -1;
-	}
-	getPosition1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._pos1X;
-		v1.y = this._pos1Y;
-		v1.z = this._pos1Z;
-		return v;
-	}
-	getPosition1To(position) {
-		var v = position;
-		v.x = this._pos1X;
-		v.y = this._pos1Y;
-		v.z = this._pos1Z;
-	}
-	getPosition2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._pos2X;
-		v1.y = this._pos2Y;
-		v1.z = this._pos2Z;
-		return v;
-	}
-	getPosition2To(position) {
-		var v = position;
-		v.x = this._pos2X;
-		v.y = this._pos2Y;
-		v.z = this._pos2Z;
-	}
-	getDepth() {
-		return this._depth;
-	}
-	isWarmStarted() {
-		return this._warmStarted;
-	}
-	getNormalImpulse() {
-		return this._impulse.impulseN;
-	}
-	getTangentImpulse() {
-		return this._impulse.impulseT;
-	}
-	getBinormalImpulse() {
-		return this._impulse.impulseB;
-	}
-	isEnabled() {
-		return !this._disabled;
-	}
-}
-oimo.dynamics.constraint.contact.ManifoldUpdater = class oimo_dynamics_constraint_contact_ManifoldUpdater {
-	constructor(manifold) {
-		this._manifold = manifold;
-		this.numOldPoints = 0;
-		var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
-		this.oldPoints = this1;
-		var _g = 0;
-		var _g1 = oimo.common.Setting.maxManifoldPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			this.oldPoints[i] = new oimo.dynamics.constraint.contact.ManifoldPoint();
-		}
-	}
-	removeOutdatedPoints() {
-		var num = this._manifold._numPoints;
-		var index = num;
-		while(--index >= 0) {
-			var p = this._manifold._points[index];
-			var diff;
-			var diffX;
-			var diffY;
-			var diffZ;
-			diffX = p._pos1X - p._pos2X;
-			diffY = p._pos1Y - p._pos2Y;
-			diffZ = p._pos1Z - p._pos2Z;
-			var dotN = this._manifold._normalX * diffX + this._manifold._normalY * diffY + this._manifold._normalZ * diffZ;
-			if(dotN > oimo.common.Setting.contactPersistenceThreshold) {
-				this.removeManifoldPoint(index);
-				continue;
-			}
-			diffX += this._manifold._normalX * -dotN;
-			diffY += this._manifold._normalY * -dotN;
-			diffZ += this._manifold._normalZ * -dotN;
-			if(diffX * diffX + diffY * diffY + diffZ * diffZ > oimo.common.Setting.contactPersistenceThreshold * oimo.common.Setting.contactPersistenceThreshold) {
-				this.removeManifoldPoint(index);
-				continue;
-			}
-		}
-	}
-	removeManifoldPoint(index) {
-		var lastIndex = --this._manifold._numPoints;
-		if(index != lastIndex) {
-			var tmp = this._manifold._points[index];
-			this._manifold._points[index] = this._manifold._points[lastIndex];
-			this._manifold._points[lastIndex] = tmp;
-		}
-		var _this = this._manifold._points[lastIndex];
-		_this._localPos1X = 0;
-		_this._localPos1Y = 0;
-		_this._localPos1Z = 0;
-		_this._localPos2X = 0;
-		_this._localPos2Y = 0;
-		_this._localPos2Z = 0;
-		_this._relPos1X = 0;
-		_this._relPos1Y = 0;
-		_this._relPos1Z = 0;
-		_this._relPos2X = 0;
-		_this._relPos2Y = 0;
-		_this._relPos2Z = 0;
-		_this._pos1X = 0;
-		_this._pos1Y = 0;
-		_this._pos1Z = 0;
-		_this._pos2X = 0;
-		_this._pos2Y = 0;
-		_this._pos2Z = 0;
-		_this._depth = 0;
-		var _this1 = _this._impulse;
-		_this1.impulseN = 0;
-		_this1.impulseT = 0;
-		_this1.impulseB = 0;
-		_this1.impulseP = 0;
-		_this1.impulseLX = 0;
-		_this1.impulseLY = 0;
-		_this1.impulseLZ = 0;
-		_this._warmStarted = false;
-		_this._disabled = false;
-		_this._id = -1;
-	}
-	addManifoldPoint(point,tf1,tf2) {
-		var num = this._manifold._numPoints;
-		if(num == oimo.common.Setting.maxManifoldPoints) {
-			var targetIndex = this.computeTargetIndex(point,tf1,tf2);
-			var _this = this._manifold._points[targetIndex];
-			var v = point.position1;
-			_this._pos1X = v.x;
-			_this._pos1Y = v.y;
-			_this._pos1Z = v.z;
-			var v1 = point.position2;
-			_this._pos2X = v1.x;
-			_this._pos2Y = v1.y;
-			_this._pos2Z = v1.z;
-			_this._relPos1X = _this._pos1X - tf1._positionX;
-			_this._relPos1Y = _this._pos1Y - tf1._positionY;
-			_this._relPos1Z = _this._pos1Z - tf1._positionZ;
-			_this._relPos2X = _this._pos2X - tf2._positionX;
-			_this._relPos2Y = _this._pos2Y - tf2._positionY;
-			_this._relPos2Z = _this._pos2Z - tf2._positionZ;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = tf1._rotation00 * _this._relPos1X + tf1._rotation10 * _this._relPos1Y + tf1._rotation20 * _this._relPos1Z;
-			__tmp__Y = tf1._rotation01 * _this._relPos1X + tf1._rotation11 * _this._relPos1Y + tf1._rotation21 * _this._relPos1Z;
-			__tmp__Z = tf1._rotation02 * _this._relPos1X + tf1._rotation12 * _this._relPos1Y + tf1._rotation22 * _this._relPos1Z;
-			_this._localPos1X = __tmp__X;
-			_this._localPos1Y = __tmp__Y;
-			_this._localPos1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = tf2._rotation00 * _this._relPos2X + tf2._rotation10 * _this._relPos2Y + tf2._rotation20 * _this._relPos2Z;
-			__tmp__Y1 = tf2._rotation01 * _this._relPos2X + tf2._rotation11 * _this._relPos2Y + tf2._rotation21 * _this._relPos2Z;
-			__tmp__Z1 = tf2._rotation02 * _this._relPos2X + tf2._rotation12 * _this._relPos2Y + tf2._rotation22 * _this._relPos2Z;
-			_this._localPos2X = __tmp__X1;
-			_this._localPos2Y = __tmp__Y1;
-			_this._localPos2Z = __tmp__Z1;
-			_this._depth = point.depth;
-			var _this1 = _this._impulse;
-			_this1.impulseN = 0;
-			_this1.impulseT = 0;
-			_this1.impulseB = 0;
-			_this1.impulseP = 0;
-			_this1.impulseLX = 0;
-			_this1.impulseLY = 0;
-			_this1.impulseLZ = 0;
-			_this._id = point.id;
-			_this._warmStarted = false;
-			_this._disabled = false;
-			return;
-		}
-		var _this2 = this._manifold._points[num];
-		var v2 = point.position1;
-		_this2._pos1X = v2.x;
-		_this2._pos1Y = v2.y;
-		_this2._pos1Z = v2.z;
-		var v3 = point.position2;
-		_this2._pos2X = v3.x;
-		_this2._pos2Y = v3.y;
-		_this2._pos2Z = v3.z;
-		_this2._relPos1X = _this2._pos1X - tf1._positionX;
-		_this2._relPos1Y = _this2._pos1Y - tf1._positionY;
-		_this2._relPos1Z = _this2._pos1Z - tf1._positionZ;
-		_this2._relPos2X = _this2._pos2X - tf2._positionX;
-		_this2._relPos2Y = _this2._pos2Y - tf2._positionY;
-		_this2._relPos2Z = _this2._pos2Z - tf2._positionZ;
-		var __tmp__X2;
-		var __tmp__Y2;
-		var __tmp__Z2;
-		__tmp__X2 = tf1._rotation00 * _this2._relPos1X + tf1._rotation10 * _this2._relPos1Y + tf1._rotation20 * _this2._relPos1Z;
-		__tmp__Y2 = tf1._rotation01 * _this2._relPos1X + tf1._rotation11 * _this2._relPos1Y + tf1._rotation21 * _this2._relPos1Z;
-		__tmp__Z2 = tf1._rotation02 * _this2._relPos1X + tf1._rotation12 * _this2._relPos1Y + tf1._rotation22 * _this2._relPos1Z;
-		_this2._localPos1X = __tmp__X2;
-		_this2._localPos1Y = __tmp__Y2;
-		_this2._localPos1Z = __tmp__Z2;
-		var __tmp__X3;
-		var __tmp__Y3;
-		var __tmp__Z3;
-		__tmp__X3 = tf2._rotation00 * _this2._relPos2X + tf2._rotation10 * _this2._relPos2Y + tf2._rotation20 * _this2._relPos2Z;
-		__tmp__Y3 = tf2._rotation01 * _this2._relPos2X + tf2._rotation11 * _this2._relPos2Y + tf2._rotation21 * _this2._relPos2Z;
-		__tmp__Z3 = tf2._rotation02 * _this2._relPos2X + tf2._rotation12 * _this2._relPos2Y + tf2._rotation22 * _this2._relPos2Z;
-		_this2._localPos2X = __tmp__X3;
-		_this2._localPos2Y = __tmp__Y3;
-		_this2._localPos2Z = __tmp__Z3;
-		_this2._depth = point.depth;
-		var _this3 = _this2._impulse;
-		_this3.impulseN = 0;
-		_this3.impulseT = 0;
-		_this3.impulseB = 0;
-		_this3.impulseP = 0;
-		_this3.impulseLX = 0;
-		_this3.impulseLY = 0;
-		_this3.impulseLZ = 0;
-		_this2._id = point.id;
-		_this2._warmStarted = false;
-		_this2._disabled = false;
-		this._manifold._numPoints++;
-	}
-	computeTargetIndex(newPoint,tf1,tf2) {
-		var p1 = this._manifold._points[0];
-		var p2 = this._manifold._points[1];
-		var p3 = this._manifold._points[2];
-		var p4 = this._manifold._points[3];
-		var maxDepth = p1._depth;
-		var maxDepthIndex = 0;
-		if(p2._depth > maxDepth) {
-			maxDepth = p2._depth;
-			maxDepthIndex = 1;
-		}
-		if(p3._depth > maxDepth) {
-			maxDepth = p3._depth;
-			maxDepthIndex = 2;
-		}
-		if(p4._depth > maxDepth) {
-			maxDepth = p4._depth;
-			maxDepthIndex = 3;
-		}
-		var rp1;
-		var rp1X;
-		var rp1Y;
-		var rp1Z;
-		var v = newPoint.position1;
-		rp1X = v.x;
-		rp1Y = v.y;
-		rp1Z = v.z;
-		rp1X -= tf1._positionX;
-		rp1Y -= tf1._positionY;
-		rp1Z -= tf1._positionZ;
-		var p1X = p2._relPos1X;
-		var p1Y = p2._relPos1Y;
-		var p1Z = p2._relPos1Z;
-		var p2X = p3._relPos1X;
-		var p2Y = p3._relPos1Y;
-		var p2Z = p3._relPos1Z;
-		var p3X = p4._relPos1X;
-		var p3Y = p4._relPos1Y;
-		var p3Z = p4._relPos1Z;
-		var v12;
-		var v12X;
-		var v12Y;
-		var v12Z;
-		var v34;
-		var v34X;
-		var v34Y;
-		var v34Z;
-		var v13;
-		var v13X;
-		var v13Y;
-		var v13Z;
-		var v24;
-		var v24X;
-		var v24Y;
-		var v24Z;
-		var v14;
-		var v14X;
-		var v14Y;
-		var v14Z;
-		var v23;
-		var v23X;
-		var v23Y;
-		var v23Z;
-		v12X = p2X - p1X;
-		v12Y = p2Y - p1Y;
-		v12Z = p2Z - p1Z;
-		v34X = rp1X - p3X;
-		v34Y = rp1Y - p3Y;
-		v34Z = rp1Z - p3Z;
-		v13X = p3X - p1X;
-		v13Y = p3Y - p1Y;
-		v13Z = p3Z - p1Z;
-		v24X = rp1X - p2X;
-		v24Y = rp1Y - p2Y;
-		v24Z = rp1Z - p2Z;
-		v14X = rp1X - p1X;
-		v14Y = rp1Y - p1Y;
-		v14Z = rp1Z - p1Z;
-		v23X = p3X - p2X;
-		v23Y = p3Y - p2Y;
-		v23Z = p3Z - p2Z;
-		var cross1;
-		var cross1X;
-		var cross1Y;
-		var cross1Z;
-		var cross2;
-		var cross2X;
-		var cross2Y;
-		var cross2Z;
-		var cross3;
-		var cross3X;
-		var cross3Y;
-		var cross3Z;
-		cross1X = v12Y * v34Z - v12Z * v34Y;
-		cross1Y = v12Z * v34X - v12X * v34Z;
-		cross1Z = v12X * v34Y - v12Y * v34X;
-		cross2X = v13Y * v24Z - v13Z * v24Y;
-		cross2Y = v13Z * v24X - v13X * v24Z;
-		cross2Z = v13X * v24Y - v13Y * v24X;
-		cross3X = v14Y * v23Z - v14Z * v23Y;
-		cross3Y = v14Z * v23X - v14X * v23Z;
-		cross3Z = v14X * v23Y - v14Y * v23X;
-		var a1 = cross1X * cross1X + cross1Y * cross1Y + cross1Z * cross1Z;
-		var a2 = cross2X * cross2X + cross2Y * cross2Y + cross2Z * cross2Z;
-		var a3 = cross3X * cross3X + cross3Y * cross3Y + cross3Z * cross3Z;
-		var a11 = a1 > a2 ? a1 > a3 ? a1 : a3 : a2 > a3 ? a2 : a3;
-		var p1X1 = p1._relPos1X;
-		var p1Y1 = p1._relPos1Y;
-		var p1Z1 = p1._relPos1Z;
-		var p2X1 = p3._relPos1X;
-		var p2Y1 = p3._relPos1Y;
-		var p2Z1 = p3._relPos1Z;
-		var p3X1 = p4._relPos1X;
-		var p3Y1 = p4._relPos1Y;
-		var p3Z1 = p4._relPos1Z;
-		var v121;
-		var v12X1;
-		var v12Y1;
-		var v12Z1;
-		var v341;
-		var v34X1;
-		var v34Y1;
-		var v34Z1;
-		var v131;
-		var v13X1;
-		var v13Y1;
-		var v13Z1;
-		var v241;
-		var v24X1;
-		var v24Y1;
-		var v24Z1;
-		var v141;
-		var v14X1;
-		var v14Y1;
-		var v14Z1;
-		var v231;
-		var v23X1;
-		var v23Y1;
-		var v23Z1;
-		v12X1 = p2X1 - p1X1;
-		v12Y1 = p2Y1 - p1Y1;
-		v12Z1 = p2Z1 - p1Z1;
-		v34X1 = rp1X - p3X1;
-		v34Y1 = rp1Y - p3Y1;
-		v34Z1 = rp1Z - p3Z1;
-		v13X1 = p3X1 - p1X1;
-		v13Y1 = p3Y1 - p1Y1;
-		v13Z1 = p3Z1 - p1Z1;
-		v24X1 = rp1X - p2X1;
-		v24Y1 = rp1Y - p2Y1;
-		v24Z1 = rp1Z - p2Z1;
-		v14X1 = rp1X - p1X1;
-		v14Y1 = rp1Y - p1Y1;
-		v14Z1 = rp1Z - p1Z1;
-		v23X1 = p3X1 - p2X1;
-		v23Y1 = p3Y1 - p2Y1;
-		v23Z1 = p3Z1 - p2Z1;
-		var cross11;
-		var cross1X1;
-		var cross1Y1;
-		var cross1Z1;
-		var cross21;
-		var cross2X1;
-		var cross2Y1;
-		var cross2Z1;
-		var cross31;
-		var cross3X1;
-		var cross3Y1;
-		var cross3Z1;
-		cross1X1 = v12Y1 * v34Z1 - v12Z1 * v34Y1;
-		cross1Y1 = v12Z1 * v34X1 - v12X1 * v34Z1;
-		cross1Z1 = v12X1 * v34Y1 - v12Y1 * v34X1;
-		cross2X1 = v13Y1 * v24Z1 - v13Z1 * v24Y1;
-		cross2Y1 = v13Z1 * v24X1 - v13X1 * v24Z1;
-		cross2Z1 = v13X1 * v24Y1 - v13Y1 * v24X1;
-		cross3X1 = v14Y1 * v23Z1 - v14Z1 * v23Y1;
-		cross3Y1 = v14Z1 * v23X1 - v14X1 * v23Z1;
-		cross3Z1 = v14X1 * v23Y1 - v14Y1 * v23X1;
-		var a12 = cross1X1 * cross1X1 + cross1Y1 * cross1Y1 + cross1Z1 * cross1Z1;
-		var a21 = cross2X1 * cross2X1 + cross2Y1 * cross2Y1 + cross2Z1 * cross2Z1;
-		var a31 = cross3X1 * cross3X1 + cross3Y1 * cross3Y1 + cross3Z1 * cross3Z1;
-		var a22 = a12 > a21 ? a12 > a31 ? a12 : a31 : a21 > a31 ? a21 : a31;
-		var p1X2 = p1._relPos1X;
-		var p1Y2 = p1._relPos1Y;
-		var p1Z2 = p1._relPos1Z;
-		var p2X2 = p2._relPos1X;
-		var p2Y2 = p2._relPos1Y;
-		var p2Z2 = p2._relPos1Z;
-		var p3X2 = p4._relPos1X;
-		var p3Y2 = p4._relPos1Y;
-		var p3Z2 = p4._relPos1Z;
-		var v122;
-		var v12X2;
-		var v12Y2;
-		var v12Z2;
-		var v342;
-		var v34X2;
-		var v34Y2;
-		var v34Z2;
-		var v132;
-		var v13X2;
-		var v13Y2;
-		var v13Z2;
-		var v242;
-		var v24X2;
-		var v24Y2;
-		var v24Z2;
-		var v142;
-		var v14X2;
-		var v14Y2;
-		var v14Z2;
-		var v232;
-		var v23X2;
-		var v23Y2;
-		var v23Z2;
-		v12X2 = p2X2 - p1X2;
-		v12Y2 = p2Y2 - p1Y2;
-		v12Z2 = p2Z2 - p1Z2;
-		v34X2 = rp1X - p3X2;
-		v34Y2 = rp1Y - p3Y2;
-		v34Z2 = rp1Z - p3Z2;
-		v13X2 = p3X2 - p1X2;
-		v13Y2 = p3Y2 - p1Y2;
-		v13Z2 = p3Z2 - p1Z2;
-		v24X2 = rp1X - p2X2;
-		v24Y2 = rp1Y - p2Y2;
-		v24Z2 = rp1Z - p2Z2;
-		v14X2 = rp1X - p1X2;
-		v14Y2 = rp1Y - p1Y2;
-		v14Z2 = rp1Z - p1Z2;
-		v23X2 = p3X2 - p2X2;
-		v23Y2 = p3Y2 - p2Y2;
-		v23Z2 = p3Z2 - p2Z2;
-		var cross12;
-		var cross1X2;
-		var cross1Y2;
-		var cross1Z2;
-		var cross22;
-		var cross2X2;
-		var cross2Y2;
-		var cross2Z2;
-		var cross32;
-		var cross3X2;
-		var cross3Y2;
-		var cross3Z2;
-		cross1X2 = v12Y2 * v34Z2 - v12Z2 * v34Y2;
-		cross1Y2 = v12Z2 * v34X2 - v12X2 * v34Z2;
-		cross1Z2 = v12X2 * v34Y2 - v12Y2 * v34X2;
-		cross2X2 = v13Y2 * v24Z2 - v13Z2 * v24Y2;
-		cross2Y2 = v13Z2 * v24X2 - v13X2 * v24Z2;
-		cross2Z2 = v13X2 * v24Y2 - v13Y2 * v24X2;
-		cross3X2 = v14Y2 * v23Z2 - v14Z2 * v23Y2;
-		cross3Y2 = v14Z2 * v23X2 - v14X2 * v23Z2;
-		cross3Z2 = v14X2 * v23Y2 - v14Y2 * v23X2;
-		var a13 = cross1X2 * cross1X2 + cross1Y2 * cross1Y2 + cross1Z2 * cross1Z2;
-		var a23 = cross2X2 * cross2X2 + cross2Y2 * cross2Y2 + cross2Z2 * cross2Z2;
-		var a32 = cross3X2 * cross3X2 + cross3Y2 * cross3Y2 + cross3Z2 * cross3Z2;
-		var a33 = a13 > a23 ? a13 > a32 ? a13 : a32 : a23 > a32 ? a23 : a32;
-		var p1X3 = p1._relPos1X;
-		var p1Y3 = p1._relPos1Y;
-		var p1Z3 = p1._relPos1Z;
-		var p2X3 = p2._relPos1X;
-		var p2Y3 = p2._relPos1Y;
-		var p2Z3 = p2._relPos1Z;
-		var p3X3 = p3._relPos1X;
-		var p3Y3 = p3._relPos1Y;
-		var p3Z3 = p3._relPos1Z;
-		var v123;
-		var v12X3;
-		var v12Y3;
-		var v12Z3;
-		var v343;
-		var v34X3;
-		var v34Y3;
-		var v34Z3;
-		var v133;
-		var v13X3;
-		var v13Y3;
-		var v13Z3;
-		var v243;
-		var v24X3;
-		var v24Y3;
-		var v24Z3;
-		var v143;
-		var v14X3;
-		var v14Y3;
-		var v14Z3;
-		var v233;
-		var v23X3;
-		var v23Y3;
-		var v23Z3;
-		v12X3 = p2X3 - p1X3;
-		v12Y3 = p2Y3 - p1Y3;
-		v12Z3 = p2Z3 - p1Z3;
-		v34X3 = rp1X - p3X3;
-		v34Y3 = rp1Y - p3Y3;
-		v34Z3 = rp1Z - p3Z3;
-		v13X3 = p3X3 - p1X3;
-		v13Y3 = p3Y3 - p1Y3;
-		v13Z3 = p3Z3 - p1Z3;
-		v24X3 = rp1X - p2X3;
-		v24Y3 = rp1Y - p2Y3;
-		v24Z3 = rp1Z - p2Z3;
-		v14X3 = rp1X - p1X3;
-		v14Y3 = rp1Y - p1Y3;
-		v14Z3 = rp1Z - p1Z3;
-		v23X3 = p3X3 - p2X3;
-		v23Y3 = p3Y3 - p2Y3;
-		v23Z3 = p3Z3 - p2Z3;
-		var cross13;
-		var cross1X3;
-		var cross1Y3;
-		var cross1Z3;
-		var cross23;
-		var cross2X3;
-		var cross2Y3;
-		var cross2Z3;
-		var cross33;
-		var cross3X3;
-		var cross3Y3;
-		var cross3Z3;
-		cross1X3 = v12Y3 * v34Z3 - v12Z3 * v34Y3;
-		cross1Y3 = v12Z3 * v34X3 - v12X3 * v34Z3;
-		cross1Z3 = v12X3 * v34Y3 - v12Y3 * v34X3;
-		cross2X3 = v13Y3 * v24Z3 - v13Z3 * v24Y3;
-		cross2Y3 = v13Z3 * v24X3 - v13X3 * v24Z3;
-		cross2Z3 = v13X3 * v24Y3 - v13Y3 * v24X3;
-		cross3X3 = v14Y3 * v23Z3 - v14Z3 * v23Y3;
-		cross3Y3 = v14Z3 * v23X3 - v14X3 * v23Z3;
-		cross3Z3 = v14X3 * v23Y3 - v14Y3 * v23X3;
-		var a14 = cross1X3 * cross1X3 + cross1Y3 * cross1Y3 + cross1Z3 * cross1Z3;
-		var a24 = cross2X3 * cross2X3 + cross2Y3 * cross2Y3 + cross2Z3 * cross2Z3;
-		var a34 = cross3X3 * cross3X3 + cross3Y3 * cross3Y3 + cross3Z3 * cross3Z3;
-		var a4 = a14 > a24 ? a14 > a34 ? a14 : a34 : a24 > a34 ? a24 : a34;
-		var max = a11;
-		var target = 0;
-		if(a22 > max && maxDepthIndex != 1 || maxDepthIndex == 0) {
-			max = a22;
-			target = 1;
-		}
-		if(a33 > max && maxDepthIndex != 2) {
-			max = a33;
-			target = 2;
-		}
-		if(a4 > max && maxDepthIndex != 3) {
-			max = a4;
-			target = 3;
-		}
-		return target;
-	}
-	computeRelativePositions(tf1,tf2) {
-		var num = this._manifold._numPoints;
-		var _g = 0;
-		var _g1 = num;
-		while(_g < _g1) {
-			var i = _g++;
-			var p = this._manifold._points[i];
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = tf1._rotation00 * p._localPos1X + tf1._rotation01 * p._localPos1Y + tf1._rotation02 * p._localPos1Z;
-			__tmp__Y = tf1._rotation10 * p._localPos1X + tf1._rotation11 * p._localPos1Y + tf1._rotation12 * p._localPos1Z;
-			__tmp__Z = tf1._rotation20 * p._localPos1X + tf1._rotation21 * p._localPos1Y + tf1._rotation22 * p._localPos1Z;
-			p._relPos1X = __tmp__X;
-			p._relPos1Y = __tmp__Y;
-			p._relPos1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = tf2._rotation00 * p._localPos2X + tf2._rotation01 * p._localPos2Y + tf2._rotation02 * p._localPos2Z;
-			__tmp__Y1 = tf2._rotation10 * p._localPos2X + tf2._rotation11 * p._localPos2Y + tf2._rotation12 * p._localPos2Z;
-			__tmp__Z1 = tf2._rotation20 * p._localPos2X + tf2._rotation21 * p._localPos2Y + tf2._rotation22 * p._localPos2Z;
-			p._relPos2X = __tmp__X1;
-			p._relPos2Y = __tmp__Y1;
-			p._relPos2Z = __tmp__Z1;
-			p._warmStarted = true;
-		}
-	}
-	findNearestContactPointIndex(target,tf1,tf2) {
-		var nearestSq = oimo.common.Setting.contactPersistenceThreshold * oimo.common.Setting.contactPersistenceThreshold;
-		var idx = -1;
-		var _g = 0;
-		var _g1 = this._manifold._numPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			var mp = this._manifold._points[i];
-			var rp1;
-			var rp1X;
-			var rp1Y;
-			var rp1Z;
-			var rp2;
-			var rp2X;
-			var rp2Y;
-			var rp2Z;
-			var v = target.position1;
-			rp1X = v.x;
-			rp1Y = v.y;
-			rp1Z = v.z;
-			var v1 = target.position2;
-			rp2X = v1.x;
-			rp2Y = v1.y;
-			rp2Z = v1.z;
-			rp1X -= tf1._positionX;
-			rp1Y -= tf1._positionY;
-			rp1Z -= tf1._positionZ;
-			rp2X -= tf2._positionX;
-			rp2Y -= tf2._positionY;
-			rp2Z -= tf2._positionZ;
-			var diff1;
-			var diff1X;
-			var diff1Y;
-			var diff1Z;
-			var diff2;
-			var diff2X;
-			var diff2Y;
-			var diff2Z;
-			diff1X = mp._relPos1X - rp1X;
-			diff1Y = mp._relPos1Y - rp1Y;
-			diff1Z = mp._relPos1Z - rp1Z;
-			diff2X = mp._relPos2X - rp2X;
-			diff2Y = mp._relPos2Y - rp2Y;
-			diff2Z = mp._relPos2Z - rp2Z;
-			var sq1 = diff1X * diff1X + diff1Y * diff1Y + diff1Z * diff1Z;
-			var sq2 = diff2X * diff2X + diff2Y * diff2Y + diff2Z * diff2Z;
-			var d = sq1 < sq2 ? sq1 : sq2;
-			if(d < nearestSq) {
-				nearestSq = d;
-				idx = i;
-			}
-		}
-		return idx;
-	}
-	totalUpdate(result,tf1,tf2) {
-		this.numOldPoints = this._manifold._numPoints;
-		var _g = 0;
-		var _g1 = this.numOldPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			var _this = this.oldPoints[i];
-			var cp = this._manifold._points[i];
-			_this._localPos1X = cp._localPos1X;
-			_this._localPos1Y = cp._localPos1Y;
-			_this._localPos1Z = cp._localPos1Z;
-			_this._localPos2X = cp._localPos2X;
-			_this._localPos2Y = cp._localPos2Y;
-			_this._localPos2Z = cp._localPos2Z;
-			_this._relPos1X = cp._relPos1X;
-			_this._relPos1Y = cp._relPos1Y;
-			_this._relPos1Z = cp._relPos1Z;
-			_this._relPos2X = cp._relPos2X;
-			_this._relPos2Y = cp._relPos2Y;
-			_this._relPos2Z = cp._relPos2Z;
-			_this._pos1X = cp._pos1X;
-			_this._pos1Y = cp._pos1Y;
-			_this._pos1Z = cp._pos1Z;
-			_this._pos2X = cp._pos2X;
-			_this._pos2Y = cp._pos2Y;
-			_this._pos2Z = cp._pos2Z;
-			_this._depth = cp._depth;
-			_this._impulse.copyFrom(cp._impulse);
-			_this._id = cp._id;
-			_this._warmStarted = cp._warmStarted;
-			_this._disabled = false;
-		}
-		var num = result.numPoints;
-		this._manifold._numPoints = num;
-		var _g2 = 0;
-		var _g11 = num;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			var p = this._manifold._points[i1];
-			var ref = result.points[i1];
-			var v = ref.position1;
-			p._pos1X = v.x;
-			p._pos1Y = v.y;
-			p._pos1Z = v.z;
-			var v1 = ref.position2;
-			p._pos2X = v1.x;
-			p._pos2Y = v1.y;
-			p._pos2Z = v1.z;
-			p._relPos1X = p._pos1X - tf1._positionX;
-			p._relPos1Y = p._pos1Y - tf1._positionY;
-			p._relPos1Z = p._pos1Z - tf1._positionZ;
-			p._relPos2X = p._pos2X - tf2._positionX;
-			p._relPos2Y = p._pos2Y - tf2._positionY;
-			p._relPos2Z = p._pos2Z - tf2._positionZ;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = tf1._rotation00 * p._relPos1X + tf1._rotation10 * p._relPos1Y + tf1._rotation20 * p._relPos1Z;
-			__tmp__Y = tf1._rotation01 * p._relPos1X + tf1._rotation11 * p._relPos1Y + tf1._rotation21 * p._relPos1Z;
-			__tmp__Z = tf1._rotation02 * p._relPos1X + tf1._rotation12 * p._relPos1Y + tf1._rotation22 * p._relPos1Z;
-			p._localPos1X = __tmp__X;
-			p._localPos1Y = __tmp__Y;
-			p._localPos1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = tf2._rotation00 * p._relPos2X + tf2._rotation10 * p._relPos2Y + tf2._rotation20 * p._relPos2Z;
-			__tmp__Y1 = tf2._rotation01 * p._relPos2X + tf2._rotation11 * p._relPos2Y + tf2._rotation21 * p._relPos2Z;
-			__tmp__Z1 = tf2._rotation02 * p._relPos2X + tf2._rotation12 * p._relPos2Y + tf2._rotation22 * p._relPos2Z;
-			p._localPos2X = __tmp__X1;
-			p._localPos2Y = __tmp__Y1;
-			p._localPos2Z = __tmp__Z1;
-			p._depth = ref.depth;
-			var _this1 = p._impulse;
-			_this1.impulseN = 0;
-			_this1.impulseT = 0;
-			_this1.impulseB = 0;
-			_this1.impulseP = 0;
-			_this1.impulseLX = 0;
-			_this1.impulseLY = 0;
-			_this1.impulseLZ = 0;
-			p._id = ref.id;
-			p._warmStarted = false;
-			p._disabled = false;
-			var _g3 = 0;
-			var _g12 = this.numOldPoints;
-			while(_g3 < _g12) {
-				var i2 = _g3++;
-				var ocp = this.oldPoints[i2];
-				if(p._id == ocp._id) {
-					p._impulse.copyFrom(ocp._impulse);
-					p._warmStarted = true;
-					break;
-				}
-			}
-		}
-	}
-	incrementalUpdate(result,tf1,tf2) {
-		this._manifold._updateDepthsAndPositions(tf1,tf2);
-		var _g = 0;
-		var _g1 = this._manifold._numPoints;
-		while(_g < _g1) {
-			var i = _g++;
-			this._manifold._points[i]._warmStarted = true;
-		}
-		var newPoint = result.points[0];
-		var index = this.findNearestContactPointIndex(newPoint,tf1,tf2);
-		if(index == -1) {
-			this.addManifoldPoint(newPoint,tf1,tf2);
-		} else {
-			var cp = this._manifold._points[index];
-			var v = newPoint.position1;
-			cp._pos1X = v.x;
-			cp._pos1Y = v.y;
-			cp._pos1Z = v.z;
-			var v1 = newPoint.position2;
-			cp._pos2X = v1.x;
-			cp._pos2Y = v1.y;
-			cp._pos2Z = v1.z;
-			cp._relPos1X = cp._pos1X - tf1._positionX;
-			cp._relPos1Y = cp._pos1Y - tf1._positionY;
-			cp._relPos1Z = cp._pos1Z - tf1._positionZ;
-			cp._relPos2X = cp._pos2X - tf2._positionX;
-			cp._relPos2Y = cp._pos2Y - tf2._positionY;
-			cp._relPos2Z = cp._pos2Z - tf2._positionZ;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = tf1._rotation00 * cp._relPos1X + tf1._rotation10 * cp._relPos1Y + tf1._rotation20 * cp._relPos1Z;
-			__tmp__Y = tf1._rotation01 * cp._relPos1X + tf1._rotation11 * cp._relPos1Y + tf1._rotation21 * cp._relPos1Z;
-			__tmp__Z = tf1._rotation02 * cp._relPos1X + tf1._rotation12 * cp._relPos1Y + tf1._rotation22 * cp._relPos1Z;
-			cp._localPos1X = __tmp__X;
-			cp._localPos1Y = __tmp__Y;
-			cp._localPos1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = tf2._rotation00 * cp._relPos2X + tf2._rotation10 * cp._relPos2Y + tf2._rotation20 * cp._relPos2Z;
-			__tmp__Y1 = tf2._rotation01 * cp._relPos2X + tf2._rotation11 * cp._relPos2Y + tf2._rotation21 * cp._relPos2Z;
-			__tmp__Z1 = tf2._rotation02 * cp._relPos2X + tf2._rotation12 * cp._relPos2Y + tf2._rotation22 * cp._relPos2Z;
-			cp._localPos2X = __tmp__X1;
-			cp._localPos2Y = __tmp__Y1;
-			cp._localPos2Z = __tmp__Z1;
-			cp._depth = newPoint.depth;
-		}
-		this.removeOutdatedPoints();
-	}
-}
-if(!oimo.dynamics.constraint.info) oimo.dynamics.constraint.info = {};
-oimo.dynamics.constraint.info.JacobianRow = class oimo_dynamics_constraint_info_JacobianRow {
-	constructor() {
-		this.lin1X = 0;
-		this.lin1Y = 0;
-		this.lin1Z = 0;
-		this.lin2X = 0;
-		this.lin2Y = 0;
-		this.lin2Z = 0;
-		this.ang1X = 0;
-		this.ang1Y = 0;
-		this.ang1Z = 0;
-		this.ang2X = 0;
-		this.ang2Y = 0;
-		this.ang2Z = 0;
-		this.flag = 0;
-	}
-	updateSparsity() {
-		this.flag = 0;
-		if(!(this.lin1X == 0 && this.lin1Y == 0 && this.lin1Z == 0) || !(this.lin2X == 0 && this.lin2Y == 0 && this.lin2Z == 0)) {
-			this.flag |= 1;
-		}
-		if(!(this.ang1X == 0 && this.ang1Y == 0 && this.ang1Z == 0) || !(this.ang2X == 0 && this.ang2Y == 0 && this.ang2Z == 0)) {
-			this.flag |= 2;
-		}
-	}
-}
-if(!oimo.dynamics.constraint.info.contact) oimo.dynamics.constraint.info.contact = {};
-oimo.dynamics.constraint.info.contact.ContactSolverInfo = class oimo_dynamics_constraint_info_contact_ContactSolverInfo {
-	constructor() {
-		this.b1 = null;
-		this.b2 = null;
-		this.numRows = 0;
-		var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
-		this.rows = this1;
-		var _g = 0;
-		var _g1 = this.rows.length;
-		while(_g < _g1) {
-			var i = _g++;
-			this.rows[i] = new oimo.dynamics.constraint.info.contact.ContactSolverInfoRow();
-		}
-	}
-}
-oimo.dynamics.constraint.info.contact.ContactSolverInfoRow = class oimo_dynamics_constraint_info_contact_ContactSolverInfoRow {
-	constructor() {
-		this.jacobianN = new oimo.dynamics.constraint.info.JacobianRow();
-		this.jacobianT = new oimo.dynamics.constraint.info.JacobianRow();
-		this.jacobianB = new oimo.dynamics.constraint.info.JacobianRow();
-		this.rhs = 0;
-		this.cfm = 0;
-		this.friction = 0;
-		this.impulse = null;
-	}
-}
-if(!oimo.dynamics.constraint.info.joint) oimo.dynamics.constraint.info.joint = {};
-oimo.dynamics.constraint.info.joint.JointSolverInfo = class oimo_dynamics_constraint_info_joint_JointSolverInfo {
-	constructor() {
-		this.b1 = null;
-		this.b2 = null;
-		this.numRows = 0;
-		var this1 = new Array(oimo.common.Setting.maxJacobianRows);
-		this.rows = this1;
-		var _g = 0;
-		var _g1 = this.rows.length;
-		while(_g < _g1) {
-			var i = _g++;
-			this.rows[i] = new oimo.dynamics.constraint.info.joint.JointSolverInfoRow();
-		}
-	}
-}
-oimo.dynamics.constraint.info.joint.JointSolverInfoRow = class oimo_dynamics_constraint_info_joint_JointSolverInfoRow {
-	constructor() {
-		this.jacobian = new oimo.dynamics.constraint.info.JacobianRow();
-		this.rhs = 0;
-		this.cfm = 0;
-		this.minImpulse = 0;
-		this.maxImpulse = 0;
-		this.motorSpeed = 0;
-		this.motorMaxImpulse = 0;
-		this.impulse = null;
-	}
-}
-if(!oimo.dynamics.constraint.joint) oimo.dynamics.constraint.joint = {};
-oimo.dynamics.constraint.joint.BasisTracker = class oimo_dynamics_constraint_joint_BasisTracker {
-	constructor(joint) {
-		this.joint = joint;
-		this.xX = 0;
-		this.xY = 0;
-		this.xZ = 0;
-		this.yX = 0;
-		this.yY = 0;
-		this.yZ = 0;
-		this.zX = 0;
-		this.zY = 0;
-		this.zZ = 0;
-	}
-}
-oimo.dynamics.constraint.joint.Joint = class oimo_dynamics_constraint_joint_Joint {
-	constructor(config,type) {
-		this._link1 = new oimo.dynamics.constraint.joint.JointLink(this);
-		this._link2 = new oimo.dynamics.constraint.joint.JointLink(this);
-		this._positionCorrectionAlgorithm = oimo.common.Setting.defaultJointPositionCorrectionAlgorithm;
-		this._type = type;
-		this._world = null;
-		this._b1 = config.rigidBody1;
-		this._b2 = config.rigidBody2;
-		this._allowCollision = config.allowCollision;
-		this._breakForce = config.breakForce;
-		this._breakTorque = config.breakTorque;
-		switch(config.solverType) {
-		case 0:
-			this._solver = new oimo.dynamics.constraint.solver.pgs.PgsJointConstraintSolver(this);
-			break;
-		case 1:
-			this._solver = new oimo.dynamics.constraint.solver.direct.DirectJointConstraintSolver(this);
-			break;
-		}
-		var v = config.localAnchor1;
-		this._localAnchor1X = v.x;
-		this._localAnchor1Y = v.y;
-		this._localAnchor1Z = v.z;
-		var v1 = config.localAnchor2;
-		this._localAnchor2X = v1.x;
-		this._localAnchor2Y = v1.y;
-		this._localAnchor2Z = v1.z;
-		this._relativeAnchor1X = 0;
-		this._relativeAnchor1Y = 0;
-		this._relativeAnchor1Z = 0;
-		this._relativeAnchor2X = 0;
-		this._relativeAnchor2Y = 0;
-		this._relativeAnchor2Z = 0;
-		this._anchor1X = 0;
-		this._anchor1Y = 0;
-		this._anchor1Z = 0;
-		this._anchor2X = 0;
-		this._anchor2Y = 0;
-		this._anchor2Z = 0;
-		this._localBasisX1X = 0;
-		this._localBasisX1Y = 0;
-		this._localBasisX1Z = 0;
-		this._localBasisY1X = 0;
-		this._localBasisY1Y = 0;
-		this._localBasisY1Z = 0;
-		this._localBasisZ1X = 0;
-		this._localBasisZ1Y = 0;
-		this._localBasisZ1Z = 0;
-		this._localBasisX2X = 0;
-		this._localBasisX2Y = 0;
-		this._localBasisX2Z = 0;
-		this._localBasisY2X = 0;
-		this._localBasisY2Y = 0;
-		this._localBasisY2Z = 0;
-		this._localBasisZ2X = 0;
-		this._localBasisZ2Y = 0;
-		this._localBasisZ2Z = 0;
-		var this1 = new Array(oimo.common.Setting.maxJacobianRows);
-		this._impulses = this1;
-		var _g1 = 0;
-		var _g2 = oimo.common.Setting.maxJacobianRows;
-		while(_g1 < _g2) {
-			var i = _g1++;
-			this._impulses[i] = new oimo.dynamics.constraint.joint.JointImpulse();
-		}
-	}
-	buildLocalBasesFromX() {
-		if(this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z == 0) {
-			this._localBasisX1X = 1;
-			this._localBasisX1Y = 0;
-			this._localBasisX1Z = 0;
-		} else {
-			var l = this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z;
-			if(l > 0) {
-				l = 1 / Math.sqrt(l);
-			}
-			this._localBasisX1X *= l;
-			this._localBasisX1Y *= l;
-			this._localBasisX1Z *= l;
-		}
-		if(this._localBasisX2X * this._localBasisX2X + this._localBasisX2Y * this._localBasisX2Y + this._localBasisX2Z * this._localBasisX2Z == 0) {
-			this._localBasisX2X = 1;
-			this._localBasisX2Y = 0;
-			this._localBasisX2Z = 0;
-		} else {
-			var l1 = this._localBasisX2X * this._localBasisX2X + this._localBasisX2Y * this._localBasisX2Y + this._localBasisX2Z * this._localBasisX2Z;
-			if(l1 > 0) {
-				l1 = 1 / Math.sqrt(l1);
-			}
-			this._localBasisX2X *= l1;
-			this._localBasisX2Y *= l1;
-			this._localBasisX2Z *= l1;
-		}
-		var slerpQ;
-		var slerpQX;
-		var slerpQY;
-		var slerpQZ;
-		var slerpQW;
-		var slerpM;
-		var slerpM00;
-		var slerpM01;
-		var slerpM02;
-		var slerpM10;
-		var slerpM11;
-		var slerpM12;
-		var slerpM20;
-		var slerpM21;
-		var slerpM22;
-		var d = this._localBasisX1X * this._localBasisX2X + this._localBasisX1Y * this._localBasisX2Y + this._localBasisX1Z * this._localBasisX2Z;
-		if(d < -0.999999999) {
-			var vX;
-			var vY;
-			var vZ;
-			var x1 = this._localBasisX1X;
-			var y1 = this._localBasisX1Y;
-			var z1 = this._localBasisX1Z;
-			var x2 = x1 * x1;
-			var y2 = y1 * y1;
-			var z2 = z1 * z1;
-			var d1;
-			if(x2 < y2) {
-				if(x2 < z2) {
-					d1 = 1 / Math.sqrt(y2 + z2);
-					vX = 0;
-					vY = z1 * d1;
-					vZ = -y1 * d1;
-				} else {
-					d1 = 1 / Math.sqrt(x2 + y2);
-					vX = y1 * d1;
-					vY = -x1 * d1;
-					vZ = 0;
-				}
-			} else if(y2 < z2) {
-				d1 = 1 / Math.sqrt(z2 + x2);
-				vX = -z1 * d1;
-				vY = 0;
-				vZ = x1 * d1;
-			} else {
-				d1 = 1 / Math.sqrt(x2 + y2);
-				vX = y1 * d1;
-				vY = -x1 * d1;
-				vZ = 0;
-			}
-			slerpQX = vX;
-			slerpQY = vY;
-			slerpQZ = vZ;
-			slerpQW = 0;
-		} else {
-			var cX;
-			var cY;
-			var cZ;
-			cX = this._localBasisX1Y * this._localBasisX2Z - this._localBasisX1Z * this._localBasisX2Y;
-			cY = this._localBasisX1Z * this._localBasisX2X - this._localBasisX1X * this._localBasisX2Z;
-			cZ = this._localBasisX1X * this._localBasisX2Y - this._localBasisX1Y * this._localBasisX2X;
-			var w = Math.sqrt((1 + d) * 0.5);
-			d = 0.5 / w;
-			cX *= d;
-			cY *= d;
-			cZ *= d;
-			slerpQX = cX;
-			slerpQY = cY;
-			slerpQZ = cZ;
-			slerpQW = w;
-		}
-		var x = slerpQX;
-		var y = slerpQY;
-		var z = slerpQZ;
-		var w1 = slerpQW;
-		var x21 = 2 * x;
-		var y21 = 2 * y;
-		var z21 = 2 * z;
-		var xx = x * x21;
-		var yy = y * y21;
-		var zz = z * z21;
-		var xy = x * y21;
-		var yz = y * z21;
-		var xz = x * z21;
-		var wx = w1 * x21;
-		var wy = w1 * y21;
-		var wz = w1 * z21;
-		slerpM00 = 1 - yy - zz;
-		slerpM01 = xy - wz;
-		slerpM02 = xz + wy;
-		slerpM10 = xy + wz;
-		slerpM11 = 1 - xx - zz;
-		slerpM12 = yz - wx;
-		slerpM20 = xz - wy;
-		slerpM21 = yz + wx;
-		slerpM22 = 1 - xx - yy;
-		var x11 = this._localBasisX1X;
-		var y11 = this._localBasisX1Y;
-		var z11 = this._localBasisX1Z;
-		var x22 = x11 * x11;
-		var y22 = y11 * y11;
-		var z22 = z11 * z11;
-		var d2;
-		if(x22 < y22) {
-			if(x22 < z22) {
-				d2 = 1 / Math.sqrt(y22 + z22);
-				this._localBasisY1X = 0;
-				this._localBasisY1Y = z11 * d2;
-				this._localBasisY1Z = -y11 * d2;
-			} else {
-				d2 = 1 / Math.sqrt(x22 + y22);
-				this._localBasisY1X = y11 * d2;
-				this._localBasisY1Y = -x11 * d2;
-				this._localBasisY1Z = 0;
-			}
-		} else if(y22 < z22) {
-			d2 = 1 / Math.sqrt(z22 + x22);
-			this._localBasisY1X = -z11 * d2;
-			this._localBasisY1Y = 0;
-			this._localBasisY1Z = x11 * d2;
-		} else {
-			d2 = 1 / Math.sqrt(x22 + y22);
-			this._localBasisY1X = y11 * d2;
-			this._localBasisY1Y = -x11 * d2;
-			this._localBasisY1Z = 0;
-		}
-		this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
-		this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
-		this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = slerpM00 * this._localBasisX1X + slerpM01 * this._localBasisX1Y + slerpM02 * this._localBasisX1Z;
-		__tmp__Y = slerpM10 * this._localBasisX1X + slerpM11 * this._localBasisX1Y + slerpM12 * this._localBasisX1Z;
-		__tmp__Z = slerpM20 * this._localBasisX1X + slerpM21 * this._localBasisX1Y + slerpM22 * this._localBasisX1Z;
-		this._localBasisX2X = __tmp__X;
-		this._localBasisX2Y = __tmp__Y;
-		this._localBasisX2Z = __tmp__Z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = slerpM00 * this._localBasisY1X + slerpM01 * this._localBasisY1Y + slerpM02 * this._localBasisY1Z;
-		__tmp__Y1 = slerpM10 * this._localBasisY1X + slerpM11 * this._localBasisY1Y + slerpM12 * this._localBasisY1Z;
-		__tmp__Z1 = slerpM20 * this._localBasisY1X + slerpM21 * this._localBasisY1Y + slerpM22 * this._localBasisY1Z;
-		this._localBasisY2X = __tmp__X1;
-		this._localBasisY2Y = __tmp__Y1;
-		this._localBasisY2Z = __tmp__Z1;
-		var __tmp__X2;
-		var __tmp__Y2;
-		var __tmp__Z2;
-		__tmp__X2 = slerpM00 * this._localBasisZ1X + slerpM01 * this._localBasisZ1Y + slerpM02 * this._localBasisZ1Z;
-		__tmp__Y2 = slerpM10 * this._localBasisZ1X + slerpM11 * this._localBasisZ1Y + slerpM12 * this._localBasisZ1Z;
-		__tmp__Z2 = slerpM20 * this._localBasisZ1X + slerpM21 * this._localBasisZ1Y + slerpM22 * this._localBasisZ1Z;
-		this._localBasisZ2X = __tmp__X2;
-		this._localBasisZ2Y = __tmp__Y2;
-		this._localBasisZ2Z = __tmp__Z2;
-	}
-	buildLocalBasesFromXY() {
-		if(this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z == 0) {
-			this._localBasisX1X = 1;
-			this._localBasisX1Y = 0;
-			this._localBasisX1Z = 0;
-		} else {
-			var l = this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z;
-			if(l > 0) {
-				l = 1 / Math.sqrt(l);
-			}
-			this._localBasisX1X *= l;
-			this._localBasisX1Y *= l;
-			this._localBasisX1Z *= l;
-		}
-		if(this._localBasisX2X * this._localBasisX2X + this._localBasisX2Y * this._localBasisX2Y + this._localBasisX2Z * this._localBasisX2Z == 0) {
-			this._localBasisX2X = 1;
-			this._localBasisX2Y = 0;
-			this._localBasisX2Z = 0;
-		} else {
-			var l1 = this._localBasisX2X * this._localBasisX2X + this._localBasisX2Y * this._localBasisX2Y + this._localBasisX2Z * this._localBasisX2Z;
-			if(l1 > 0) {
-				l1 = 1 / Math.sqrt(l1);
-			}
-			this._localBasisX2X *= l1;
-			this._localBasisX2Y *= l1;
-			this._localBasisX2Z *= l1;
-		}
-		this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
-		this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
-		this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
-		this._localBasisZ2X = this._localBasisX2Y * this._localBasisY2Z - this._localBasisX2Z * this._localBasisY2Y;
-		this._localBasisZ2Y = this._localBasisX2Z * this._localBasisY2X - this._localBasisX2X * this._localBasisY2Z;
-		this._localBasisZ2Z = this._localBasisX2X * this._localBasisY2Y - this._localBasisX2Y * this._localBasisY2X;
-		if(this._localBasisZ1X * this._localBasisZ1X + this._localBasisZ1Y * this._localBasisZ1Y + this._localBasisZ1Z * this._localBasisZ1Z == 0) {
-			var x1 = this._localBasisX1X;
-			var y1 = this._localBasisX1Y;
-			var z1 = this._localBasisX1Z;
-			var x2 = x1 * x1;
-			var y2 = y1 * y1;
-			var z2 = z1 * z1;
-			var d;
-			if(x2 < y2) {
-				if(x2 < z2) {
-					d = 1 / Math.sqrt(y2 + z2);
-					this._localBasisY1X = 0;
-					this._localBasisY1Y = z1 * d;
-					this._localBasisY1Z = -y1 * d;
-				} else {
-					d = 1 / Math.sqrt(x2 + y2);
-					this._localBasisY1X = y1 * d;
-					this._localBasisY1Y = -x1 * d;
-					this._localBasisY1Z = 0;
-				}
-			} else if(y2 < z2) {
-				d = 1 / Math.sqrt(z2 + x2);
-				this._localBasisY1X = -z1 * d;
-				this._localBasisY1Y = 0;
-				this._localBasisY1Z = x1 * d;
-			} else {
-				d = 1 / Math.sqrt(x2 + y2);
-				this._localBasisY1X = y1 * d;
-				this._localBasisY1Y = -x1 * d;
-				this._localBasisY1Z = 0;
-			}
-			this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
-			this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
-			this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
-		} else {
-			var l2 = this._localBasisZ1X * this._localBasisZ1X + this._localBasisZ1Y * this._localBasisZ1Y + this._localBasisZ1Z * this._localBasisZ1Z;
-			if(l2 > 0) {
-				l2 = 1 / Math.sqrt(l2);
-			}
-			this._localBasisZ1X *= l2;
-			this._localBasisZ1Y *= l2;
-			this._localBasisZ1Z *= l2;
-			this._localBasisY1X = this._localBasisZ1Y * this._localBasisX1Z - this._localBasisZ1Z * this._localBasisX1Y;
-			this._localBasisY1Y = this._localBasisZ1Z * this._localBasisX1X - this._localBasisZ1X * this._localBasisX1Z;
-			this._localBasisY1Z = this._localBasisZ1X * this._localBasisX1Y - this._localBasisZ1Y * this._localBasisX1X;
-		}
-		if(this._localBasisZ2X * this._localBasisZ2X + this._localBasisZ2Y * this._localBasisZ2Y + this._localBasisZ2Z * this._localBasisZ2Z == 0) {
-			var x11 = this._localBasisX2X;
-			var y11 = this._localBasisX2Y;
-			var z11 = this._localBasisX2Z;
-			var x21 = x11 * x11;
-			var y21 = y11 * y11;
-			var z21 = z11 * z11;
-			var d1;
-			if(x21 < y21) {
-				if(x21 < z21) {
-					d1 = 1 / Math.sqrt(y21 + z21);
-					this._localBasisY2X = 0;
-					this._localBasisY2Y = z11 * d1;
-					this._localBasisY2Z = -y11 * d1;
-				} else {
-					d1 = 1 / Math.sqrt(x21 + y21);
-					this._localBasisY2X = y11 * d1;
-					this._localBasisY2Y = -x11 * d1;
-					this._localBasisY2Z = 0;
-				}
-			} else if(y21 < z21) {
-				d1 = 1 / Math.sqrt(z21 + x21);
-				this._localBasisY2X = -z11 * d1;
-				this._localBasisY2Y = 0;
-				this._localBasisY2Z = x11 * d1;
-			} else {
-				d1 = 1 / Math.sqrt(x21 + y21);
-				this._localBasisY2X = y11 * d1;
-				this._localBasisY2Y = -x11 * d1;
-				this._localBasisY2Z = 0;
-			}
-			this._localBasisZ2X = this._localBasisX2Y * this._localBasisY2Z - this._localBasisX2Z * this._localBasisY2Y;
-			this._localBasisZ2Y = this._localBasisX2Z * this._localBasisY2X - this._localBasisX2X * this._localBasisY2Z;
-			this._localBasisZ2Z = this._localBasisX2X * this._localBasisY2Y - this._localBasisX2Y * this._localBasisY2X;
-		} else {
-			var l3 = this._localBasisZ2X * this._localBasisZ2X + this._localBasisZ2Y * this._localBasisZ2Y + this._localBasisZ2Z * this._localBasisZ2Z;
-			if(l3 > 0) {
-				l3 = 1 / Math.sqrt(l3);
-			}
-			this._localBasisZ2X *= l3;
-			this._localBasisZ2Y *= l3;
-			this._localBasisZ2Z *= l3;
-			this._localBasisY2X = this._localBasisZ2Y * this._localBasisX2Z - this._localBasisZ2Z * this._localBasisX2Y;
-			this._localBasisY2Y = this._localBasisZ2Z * this._localBasisX2X - this._localBasisZ2X * this._localBasisX2Z;
-			this._localBasisY2Z = this._localBasisZ2X * this._localBasisX2Y - this._localBasisZ2Y * this._localBasisX2X;
-		}
-	}
-	buildLocalBasesFromX1Z2() {
-		if(this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z == 0) {
-			this._localBasisX1X = 1;
-			this._localBasisX1Y = 0;
-			this._localBasisX1Z = 0;
-		} else {
-			var l = this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z;
-			if(l > 0) {
-				l = 1 / Math.sqrt(l);
-			}
-			this._localBasisX1X *= l;
-			this._localBasisX1Y *= l;
-			this._localBasisX1Z *= l;
-		}
-		if(this._localBasisZ2X * this._localBasisZ2X + this._localBasisZ2Y * this._localBasisZ2Y + this._localBasisZ2Z * this._localBasisZ2Z == 0) {
-			this._localBasisZ2X = 0;
-			this._localBasisZ2Y = 0;
-			this._localBasisZ2Z = 1;
-		} else {
-			var l1 = this._localBasisZ2X * this._localBasisZ2X + this._localBasisZ2Y * this._localBasisZ2Y + this._localBasisZ2Z * this._localBasisZ2Z;
-			if(l1 > 0) {
-				l1 = 1 / Math.sqrt(l1);
-			}
-			this._localBasisZ2X *= l1;
-			this._localBasisZ2Y *= l1;
-			this._localBasisZ2Z *= l1;
-		}
-		var tf1 = this._b1._transform;
-		var tf2 = this._b2._transform;
-		var worldX1;
-		var worldX1X;
-		var worldX1Y;
-		var worldX1Z;
-		var worldZ1;
-		var worldZ1X;
-		var worldZ1Y;
-		var worldZ1Z;
-		var worldY;
-		var worldYX;
-		var worldYY;
-		var worldYZ;
-		var worldX2;
-		var worldX2X;
-		var worldX2Y;
-		var worldX2Z;
-		var worldZ2;
-		var worldZ2X;
-		var worldZ2Y;
-		var worldZ2Z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = tf1._rotation00 * this._localBasisX1X + tf1._rotation01 * this._localBasisX1Y + tf1._rotation02 * this._localBasisX1Z;
-		__tmp__Y = tf1._rotation10 * this._localBasisX1X + tf1._rotation11 * this._localBasisX1Y + tf1._rotation12 * this._localBasisX1Z;
-		__tmp__Z = tf1._rotation20 * this._localBasisX1X + tf1._rotation21 * this._localBasisX1Y + tf1._rotation22 * this._localBasisX1Z;
-		worldX1X = __tmp__X;
-		worldX1Y = __tmp__Y;
-		worldX1Z = __tmp__Z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = tf2._rotation00 * this._localBasisZ2X + tf2._rotation01 * this._localBasisZ2Y + tf2._rotation02 * this._localBasisZ2Z;
-		__tmp__Y1 = tf2._rotation10 * this._localBasisZ2X + tf2._rotation11 * this._localBasisZ2Y + tf2._rotation12 * this._localBasisZ2Z;
-		__tmp__Z1 = tf2._rotation20 * this._localBasisZ2X + tf2._rotation21 * this._localBasisZ2Y + tf2._rotation22 * this._localBasisZ2Z;
-		worldZ2X = __tmp__X1;
-		worldZ2Y = __tmp__Y1;
-		worldZ2Z = __tmp__Z1;
-		worldYX = worldZ2Y * worldX1Z - worldZ2Z * worldX1Y;
-		worldYY = worldZ2Z * worldX1X - worldZ2X * worldX1Z;
-		worldYZ = worldZ2X * worldX1Y - worldZ2Y * worldX1X;
-		if(worldYX * worldYX + worldYY * worldYY + worldYZ * worldYZ == 0) {
-			var x1 = worldX1X;
-			var y1 = worldX1Y;
-			var z1 = worldX1Z;
-			var x2 = x1 * x1;
-			var y2 = y1 * y1;
-			var z2 = z1 * z1;
-			var d;
-			if(x2 < y2) {
-				if(x2 < z2) {
-					d = 1 / Math.sqrt(y2 + z2);
-					worldYX = 0;
-					worldYY = z1 * d;
-					worldYZ = -y1 * d;
-				} else {
-					d = 1 / Math.sqrt(x2 + y2);
-					worldYX = y1 * d;
-					worldYY = -x1 * d;
-					worldYZ = 0;
-				}
-			} else if(y2 < z2) {
-				d = 1 / Math.sqrt(z2 + x2);
-				worldYX = -z1 * d;
-				worldYY = 0;
-				worldYZ = x1 * d;
-			} else {
-				d = 1 / Math.sqrt(x2 + y2);
-				worldYX = y1 * d;
-				worldYY = -x1 * d;
-				worldYZ = 0;
-			}
-		}
-		worldZ1X = worldX1Y * worldYZ - worldX1Z * worldYY;
-		worldZ1Y = worldX1Z * worldYX - worldX1X * worldYZ;
-		worldZ1Z = worldX1X * worldYY - worldX1Y * worldYX;
-		worldX2X = worldYY * worldZ2Z - worldYZ * worldZ2Y;
-		worldX2Y = worldYZ * worldZ2X - worldYX * worldZ2Z;
-		worldX2Z = worldYX * worldZ2Y - worldYY * worldZ2X;
-		var __tmp__X2;
-		var __tmp__Y2;
-		var __tmp__Z2;
-		__tmp__X2 = tf1._rotation00 * worldX1X + tf1._rotation10 * worldX1Y + tf1._rotation20 * worldX1Z;
-		__tmp__Y2 = tf1._rotation01 * worldX1X + tf1._rotation11 * worldX1Y + tf1._rotation21 * worldX1Z;
-		__tmp__Z2 = tf1._rotation02 * worldX1X + tf1._rotation12 * worldX1Y + tf1._rotation22 * worldX1Z;
-		this._localBasisX1X = __tmp__X2;
-		this._localBasisX1Y = __tmp__Y2;
-		this._localBasisX1Z = __tmp__Z2;
-		var __tmp__X3;
-		var __tmp__Y3;
-		var __tmp__Z3;
-		__tmp__X3 = tf1._rotation00 * worldYX + tf1._rotation10 * worldYY + tf1._rotation20 * worldYZ;
-		__tmp__Y3 = tf1._rotation01 * worldYX + tf1._rotation11 * worldYY + tf1._rotation21 * worldYZ;
-		__tmp__Z3 = tf1._rotation02 * worldYX + tf1._rotation12 * worldYY + tf1._rotation22 * worldYZ;
-		this._localBasisY1X = __tmp__X3;
-		this._localBasisY1Y = __tmp__Y3;
-		this._localBasisY1Z = __tmp__Z3;
-		var __tmp__X4;
-		var __tmp__Y4;
-		var __tmp__Z4;
-		__tmp__X4 = tf1._rotation00 * worldZ1X + tf1._rotation10 * worldZ1Y + tf1._rotation20 * worldZ1Z;
-		__tmp__Y4 = tf1._rotation01 * worldZ1X + tf1._rotation11 * worldZ1Y + tf1._rotation21 * worldZ1Z;
-		__tmp__Z4 = tf1._rotation02 * worldZ1X + tf1._rotation12 * worldZ1Y + tf1._rotation22 * worldZ1Z;
-		this._localBasisZ1X = __tmp__X4;
-		this._localBasisZ1Y = __tmp__Y4;
-		this._localBasisZ1Z = __tmp__Z4;
-		var __tmp__X5;
-		var __tmp__Y5;
-		var __tmp__Z5;
-		__tmp__X5 = tf2._rotation00 * worldX2X + tf2._rotation10 * worldX2Y + tf2._rotation20 * worldX2Z;
-		__tmp__Y5 = tf2._rotation01 * worldX2X + tf2._rotation11 * worldX2Y + tf2._rotation21 * worldX2Z;
-		__tmp__Z5 = tf2._rotation02 * worldX2X + tf2._rotation12 * worldX2Y + tf2._rotation22 * worldX2Z;
-		this._localBasisX2X = __tmp__X5;
-		this._localBasisX2Y = __tmp__Y5;
-		this._localBasisX2Z = __tmp__Z5;
-		var __tmp__X6;
-		var __tmp__Y6;
-		var __tmp__Z6;
-		__tmp__X6 = tf2._rotation00 * worldYX + tf2._rotation10 * worldYY + tf2._rotation20 * worldYZ;
-		__tmp__Y6 = tf2._rotation01 * worldYX + tf2._rotation11 * worldYY + tf2._rotation21 * worldYZ;
-		__tmp__Z6 = tf2._rotation02 * worldYX + tf2._rotation12 * worldYY + tf2._rotation22 * worldYZ;
-		this._localBasisY2X = __tmp__X6;
-		this._localBasisY2Y = __tmp__Y6;
-		this._localBasisY2Z = __tmp__Z6;
-		var __tmp__X7;
-		var __tmp__Y7;
-		var __tmp__Z7;
-		__tmp__X7 = tf2._rotation00 * worldZ2X + tf2._rotation10 * worldZ2Y + tf2._rotation20 * worldZ2Z;
-		__tmp__Y7 = tf2._rotation01 * worldZ2X + tf2._rotation11 * worldZ2Y + tf2._rotation21 * worldZ2Z;
-		__tmp__Z7 = tf2._rotation02 * worldZ2X + tf2._rotation12 * worldZ2Y + tf2._rotation22 * worldZ2Z;
-		this._localBasisZ2X = __tmp__X7;
-		this._localBasisZ2Y = __tmp__Y7;
-		this._localBasisZ2Z = __tmp__Z7;
-	}
-	buildLocalBasesFromXY1X2() {
-		if(this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z == 0) {
-			this._localBasisX1X = 1;
-			this._localBasisX1Y = 0;
-			this._localBasisX1Z = 0;
-		} else {
-			var l = this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z;
-			if(l > 0) {
-				l = 1 / Math.sqrt(l);
-			}
-			this._localBasisX1X *= l;
-			this._localBasisX1Y *= l;
-			this._localBasisX1Z *= l;
-		}
-		this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
-		this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
-		this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
-		if(this._localBasisZ1X * this._localBasisZ1X + this._localBasisZ1Y * this._localBasisZ1Y + this._localBasisZ1Z * this._localBasisZ1Z == 0) {
-			var x1 = this._localBasisX1X;
-			var y1 = this._localBasisX1Y;
-			var z1 = this._localBasisX1Z;
-			var x2 = x1 * x1;
-			var y2 = y1 * y1;
-			var z2 = z1 * z1;
-			var d;
-			if(x2 < y2) {
-				if(x2 < z2) {
-					d = 1 / Math.sqrt(y2 + z2);
-					this._localBasisY1X = 0;
-					this._localBasisY1Y = z1 * d;
-					this._localBasisY1Z = -y1 * d;
-				} else {
-					d = 1 / Math.sqrt(x2 + y2);
-					this._localBasisY1X = y1 * d;
-					this._localBasisY1Y = -x1 * d;
-					this._localBasisY1Z = 0;
-				}
-			} else if(y2 < z2) {
-				d = 1 / Math.sqrt(z2 + x2);
-				this._localBasisY1X = -z1 * d;
-				this._localBasisY1Y = 0;
-				this._localBasisY1Z = x1 * d;
-			} else {
-				d = 1 / Math.sqrt(x2 + y2);
-				this._localBasisY1X = y1 * d;
-				this._localBasisY1Y = -x1 * d;
-				this._localBasisY1Z = 0;
-			}
-			this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
-			this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
-			this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
-		} else {
-			var l1 = this._localBasisZ1X * this._localBasisZ1X + this._localBasisZ1Y * this._localBasisZ1Y + this._localBasisZ1Z * this._localBasisZ1Z;
-			if(l1 > 0) {
-				l1 = 1 / Math.sqrt(l1);
-			}
-			this._localBasisZ1X *= l1;
-			this._localBasisZ1Y *= l1;
-			this._localBasisZ1Z *= l1;
-			this._localBasisY1X = this._localBasisZ1Y * this._localBasisX1Z - this._localBasisZ1Z * this._localBasisX1Y;
-			this._localBasisY1Y = this._localBasisZ1Z * this._localBasisX1X - this._localBasisZ1X * this._localBasisX1Z;
-			this._localBasisY1Z = this._localBasisZ1X * this._localBasisX1Y - this._localBasisZ1Y * this._localBasisX1X;
-		}
-		var slerpQ;
-		var slerpQX;
-		var slerpQY;
-		var slerpQZ;
-		var slerpQW;
-		var slerpM;
-		var slerpM00;
-		var slerpM01;
-		var slerpM02;
-		var slerpM10;
-		var slerpM11;
-		var slerpM12;
-		var slerpM20;
-		var slerpM21;
-		var slerpM22;
-		var d1 = this._localBasisX1X * this._localBasisX2X + this._localBasisX1Y * this._localBasisX2Y + this._localBasisX1Z * this._localBasisX2Z;
-		if(d1 < -0.999999999) {
-			var vX;
-			var vY;
-			var vZ;
-			var x11 = this._localBasisX1X;
-			var y11 = this._localBasisX1Y;
-			var z11 = this._localBasisX1Z;
-			var x21 = x11 * x11;
-			var y21 = y11 * y11;
-			var z21 = z11 * z11;
-			var d2;
-			if(x21 < y21) {
-				if(x21 < z21) {
-					d2 = 1 / Math.sqrt(y21 + z21);
-					vX = 0;
-					vY = z11 * d2;
-					vZ = -y11 * d2;
-				} else {
-					d2 = 1 / Math.sqrt(x21 + y21);
-					vX = y11 * d2;
-					vY = -x11 * d2;
-					vZ = 0;
-				}
-			} else if(y21 < z21) {
-				d2 = 1 / Math.sqrt(z21 + x21);
-				vX = -z11 * d2;
-				vY = 0;
-				vZ = x11 * d2;
-			} else {
-				d2 = 1 / Math.sqrt(x21 + y21);
-				vX = y11 * d2;
-				vY = -x11 * d2;
-				vZ = 0;
-			}
-			slerpQX = vX;
-			slerpQY = vY;
-			slerpQZ = vZ;
-			slerpQW = 0;
-		} else {
-			var cX;
-			var cY;
-			var cZ;
-			cX = this._localBasisX1Y * this._localBasisX2Z - this._localBasisX1Z * this._localBasisX2Y;
-			cY = this._localBasisX1Z * this._localBasisX2X - this._localBasisX1X * this._localBasisX2Z;
-			cZ = this._localBasisX1X * this._localBasisX2Y - this._localBasisX1Y * this._localBasisX2X;
-			var w = Math.sqrt((1 + d1) * 0.5);
-			d1 = 0.5 / w;
-			cX *= d1;
-			cY *= d1;
-			cZ *= d1;
-			slerpQX = cX;
-			slerpQY = cY;
-			slerpQZ = cZ;
-			slerpQW = w;
-		}
-		var x = slerpQX;
-		var y = slerpQY;
-		var z = slerpQZ;
-		var w1 = slerpQW;
-		var x22 = 2 * x;
-		var y22 = 2 * y;
-		var z22 = 2 * z;
-		var xx = x * x22;
-		var yy = y * y22;
-		var zz = z * z22;
-		var xy = x * y22;
-		var yz = y * z22;
-		var xz = x * z22;
-		var wx = w1 * x22;
-		var wy = w1 * y22;
-		var wz = w1 * z22;
-		slerpM00 = 1 - yy - zz;
-		slerpM01 = xy - wz;
-		slerpM02 = xz + wy;
-		slerpM10 = xy + wz;
-		slerpM11 = 1 - xx - zz;
-		slerpM12 = yz - wx;
-		slerpM20 = xz - wy;
-		slerpM21 = yz + wx;
-		slerpM22 = 1 - xx - yy;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = slerpM00 * this._localBasisX1X + slerpM01 * this._localBasisX1Y + slerpM02 * this._localBasisX1Z;
-		__tmp__Y = slerpM10 * this._localBasisX1X + slerpM11 * this._localBasisX1Y + slerpM12 * this._localBasisX1Z;
-		__tmp__Z = slerpM20 * this._localBasisX1X + slerpM21 * this._localBasisX1Y + slerpM22 * this._localBasisX1Z;
-		this._localBasisX2X = __tmp__X;
-		this._localBasisX2Y = __tmp__Y;
-		this._localBasisX2Z = __tmp__Z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = slerpM00 * this._localBasisY1X + slerpM01 * this._localBasisY1Y + slerpM02 * this._localBasisY1Z;
-		__tmp__Y1 = slerpM10 * this._localBasisY1X + slerpM11 * this._localBasisY1Y + slerpM12 * this._localBasisY1Z;
-		__tmp__Z1 = slerpM20 * this._localBasisY1X + slerpM21 * this._localBasisY1Y + slerpM22 * this._localBasisY1Z;
-		this._localBasisY2X = __tmp__X1;
-		this._localBasisY2Y = __tmp__Y1;
-		this._localBasisY2Z = __tmp__Z1;
-		var __tmp__X2;
-		var __tmp__Y2;
-		var __tmp__Z2;
-		__tmp__X2 = slerpM00 * this._localBasisZ1X + slerpM01 * this._localBasisZ1Y + slerpM02 * this._localBasisZ1Z;
-		__tmp__Y2 = slerpM10 * this._localBasisZ1X + slerpM11 * this._localBasisZ1Y + slerpM12 * this._localBasisZ1Z;
-		__tmp__Z2 = slerpM20 * this._localBasisZ1X + slerpM21 * this._localBasisZ1Y + slerpM22 * this._localBasisZ1Z;
-		this._localBasisZ2X = __tmp__X2;
-		this._localBasisZ2Y = __tmp__Y2;
-		this._localBasisZ2Z = __tmp__Z2;
-	}
-	setSolverInfoRowLinear(row,diff,lm,mass,sd,timeStep,isPositionPart) {
-		var cfmFactor;
-		var erp;
-		var slop = oimo.common.Setting.linearSlop;
-		if(isPositionPart) {
-			cfmFactor = 0;
-			erp = 1;
-		} else {
-			if(sd.frequency > 0) {
-				slop = 0;
-				var omega = 6.28318530717958 * sd.frequency;
-				var zeta = sd.dampingRatio;
-				if(zeta < oimo.common.Setting.minSpringDamperDampingRatio) {
-					zeta = oimo.common.Setting.minSpringDamperDampingRatio;
-				}
-				var h = timeStep.dt;
-				var c = 2 * zeta * omega;
-				var k = omega * omega;
-				if(sd.useSymplecticEuler) {
-					cfmFactor = 1 / (h * c);
-					erp = k / c;
-				} else {
-					cfmFactor = 1 / (h * (h * k + c));
-					erp = k / (h * k + c);
-				}
-			} else {
-				cfmFactor = 0;
-				erp = this.getErp(timeStep,false);
-			}
-			if(lm.motorForce > 0) {
-				row.motorSpeed = lm.motorSpeed;
-				row.motorMaxImpulse = lm.motorForce * timeStep.dt;
-			} else {
-				row.motorSpeed = 0;
-				row.motorMaxImpulse = 0;
-			}
-		}
-		var lower = lm.lowerLimit;
-		var upper = lm.upperLimit;
-		var minImp;
-		var maxImp;
-		var error;
-		if(lower > upper) {
-			minImp = 0;
-			maxImp = 0;
-			error = 0;
-		} else if(lower == upper) {
-			minImp = -1e65536;
-			maxImp = 1e65536;
-			error = diff - lower;
-		} else if(diff < lower) {
-			minImp = -1e65536;
-			maxImp = 0;
-			error = diff - lower + slop;
-			if(error > 0) {
-				error = 0;
-			}
-		} else if(diff > upper) {
-			minImp = 0;
-			maxImp = 1e65536;
-			error = diff - upper - slop;
-			if(error < 0) {
-				error = 0;
-			}
-		} else {
-			minImp = 0;
-			maxImp = 0;
-			error = 0;
-		}
-		var invMass = mass == 0 ? 0 : 1 / mass;
-		row.minImpulse = minImp;
-		row.maxImpulse = maxImp;
-		row.cfm = cfmFactor * invMass;
-		row.rhs = error * erp;
-	}
-	setSolverInfoRowAngular(row,diff,lm,mass,sd,timeStep,isPositionPart) {
-		var cfmFactor;
-		var erp;
-		var slop = oimo.common.Setting.angularSlop;
-		if(isPositionPart) {
-			cfmFactor = 0;
-			erp = 1;
-		} else {
-			if(sd.frequency > 0) {
-				slop = 0;
-				var omega = 6.28318530717958 * sd.frequency;
-				var zeta = sd.dampingRatio;
-				if(zeta < oimo.common.Setting.minSpringDamperDampingRatio) {
-					zeta = oimo.common.Setting.minSpringDamperDampingRatio;
-				}
-				var h = timeStep.dt;
-				var c = 2 * zeta * omega;
-				var k = omega * omega;
-				if(sd.useSymplecticEuler) {
-					cfmFactor = 1 / (h * c);
-					erp = k / c;
-				} else {
-					cfmFactor = 1 / (h * (h * k + c));
-					erp = k / (h * k + c);
-				}
-			} else {
-				cfmFactor = 0;
-				erp = this.getErp(timeStep,false);
-			}
-			if(lm.motorTorque > 0) {
-				row.motorSpeed = lm.motorSpeed;
-				row.motorMaxImpulse = lm.motorTorque * timeStep.dt;
-			} else {
-				row.motorSpeed = 0;
-				row.motorMaxImpulse = 0;
-			}
-		}
-		var lower = lm.lowerLimit;
-		var upper = lm.upperLimit;
-		var mid = (lower + upper) * 0.5;
-		diff -= mid;
-		diff = ((diff + 3.14159265358979) % 6.28318530717958 + 6.28318530717958) % 6.28318530717958 - 3.14159265358979;
-		diff += mid;
-		var minImp;
-		var maxImp;
-		var error;
-		if(lower > upper) {
-			minImp = 0;
-			maxImp = 0;
-			error = 0;
-		} else if(lower == upper) {
-			minImp = -1e65536;
-			maxImp = 1e65536;
-			error = diff - lower;
-		} else if(diff < lower) {
-			minImp = -1e65536;
-			maxImp = 0;
-			error = diff - lower + slop;
-			if(error > 0) {
-				error = 0;
-			}
-		} else if(diff > upper) {
-			minImp = 0;
-			maxImp = 1e65536;
-			error = diff - upper - slop;
-			if(error < 0) {
-				error = 0;
-			}
-		} else {
-			minImp = 0;
-			maxImp = 0;
-			error = 0;
-		}
-		var invMass = mass == 0 ? 0 : 1 / mass;
-		row.minImpulse = minImp;
-		row.maxImpulse = maxImp;
-		row.cfm = cfmFactor * invMass;
-		row.rhs = error * erp;
-	}
-	getErp(timeStep,isPositionPart) {
-		if(isPositionPart) {
-			return 1;
-		} else if(this._positionCorrectionAlgorithm == oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE) {
-			return timeStep.invDt * oimo.common.Setting.velocityBaumgarte;
-		} else {
-			return 0;
-		}
-	}
-	computeEffectiveInertiaMoment(axisX,axisY,axisZ) {
-		var ia1;
-		var ia1X;
-		var ia1Y;
-		var ia1Z;
-		var ia2;
-		var ia2X;
-		var ia2Y;
-		var ia2Z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._b1._invInertia00 * axisX + this._b1._invInertia01 * axisY + this._b1._invInertia02 * axisZ;
-		__tmp__Y = this._b1._invInertia10 * axisX + this._b1._invInertia11 * axisY + this._b1._invInertia12 * axisZ;
-		__tmp__Z = this._b1._invInertia20 * axisX + this._b1._invInertia21 * axisY + this._b1._invInertia22 * axisZ;
-		ia1X = __tmp__X;
-		ia1Y = __tmp__Y;
-		ia1Z = __tmp__Z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = this._b2._invInertia00 * axisX + this._b2._invInertia01 * axisY + this._b2._invInertia02 * axisZ;
-		__tmp__Y1 = this._b2._invInertia10 * axisX + this._b2._invInertia11 * axisY + this._b2._invInertia12 * axisZ;
-		__tmp__Z1 = this._b2._invInertia20 * axisX + this._b2._invInertia21 * axisY + this._b2._invInertia22 * axisZ;
-		ia2X = __tmp__X1;
-		ia2Y = __tmp__Y1;
-		ia2Z = __tmp__Z1;
-		var invI1 = ia1X * axisX + ia1Y * axisY + ia1Z * axisZ;
-		var invI2 = ia2X * axisX + ia2Y * axisY + ia2Z * axisZ;
-		if(invI1 > 0) {
-			var rsq = this._relativeAnchor1X * this._relativeAnchor1X + this._relativeAnchor1Y * this._relativeAnchor1Y + this._relativeAnchor1Z * this._relativeAnchor1Z;
-			var dot = axisX * this._relativeAnchor1X + axisY * this._relativeAnchor1Y + axisZ * this._relativeAnchor1Z;
-			var projsq = rsq - dot * dot;
-			if(projsq > 0) {
-				if(this._b1._invMass > 0) {
-					invI1 = 1 / (1 / invI1 + this._b1._mass * projsq);
-				} else {
-					invI1 = 0;
-				}
-			}
-		}
-		if(invI2 > 0) {
-			var rsq1 = this._relativeAnchor2X * this._relativeAnchor2X + this._relativeAnchor2Y * this._relativeAnchor2Y + this._relativeAnchor2Z * this._relativeAnchor2Z;
-			var dot1 = axisX * this._relativeAnchor2X + axisY * this._relativeAnchor2Y + axisZ * this._relativeAnchor2Z;
-			var projsq1 = rsq1 - dot1 * dot1;
-			if(projsq1 > 0) {
-				if(this._b2._invMass > 0) {
-					invI2 = 1 / (1 / invI2 + this._b2._mass * projsq1);
-				} else {
-					invI2 = 0;
-				}
-			}
-		}
-		if(invI1 + invI2 == 0) {
-			return 0;
-		} else {
-			return 1 / (invI1 + invI2);
-		}
-	}
-	computeEffectiveInertiaMoment2(axis1X,axis1Y,axis1Z,axis2X,axis2Y,axis2Z) {
-		var ia1;
-		var ia1X;
-		var ia1Y;
-		var ia1Z;
-		var ia2;
-		var ia2X;
-		var ia2Y;
-		var ia2Z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._b1._invInertia00 * axis1X + this._b1._invInertia01 * axis1Y + this._b1._invInertia02 * axis1Z;
-		__tmp__Y = this._b1._invInertia10 * axis1X + this._b1._invInertia11 * axis1Y + this._b1._invInertia12 * axis1Z;
-		__tmp__Z = this._b1._invInertia20 * axis1X + this._b1._invInertia21 * axis1Y + this._b1._invInertia22 * axis1Z;
-		ia1X = __tmp__X;
-		ia1Y = __tmp__Y;
-		ia1Z = __tmp__Z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = this._b2._invInertia00 * axis2X + this._b2._invInertia01 * axis2Y + this._b2._invInertia02 * axis2Z;
-		__tmp__Y1 = this._b2._invInertia10 * axis2X + this._b2._invInertia11 * axis2Y + this._b2._invInertia12 * axis2Z;
-		__tmp__Z1 = this._b2._invInertia20 * axis2X + this._b2._invInertia21 * axis2Y + this._b2._invInertia22 * axis2Z;
-		ia2X = __tmp__X1;
-		ia2Y = __tmp__Y1;
-		ia2Z = __tmp__Z1;
-		var invI1 = ia1X * axis1X + ia1Y * axis1Y + ia1Z * axis1Z;
-		var invI2 = ia2X * axis2X + ia2Y * axis2Y + ia2Z * axis2Z;
-		if(invI1 > 0) {
-			var rsq = this._relativeAnchor1X * this._relativeAnchor1X + this._relativeAnchor1Y * this._relativeAnchor1Y + this._relativeAnchor1Z * this._relativeAnchor1Z;
-			var dot = axis1X * this._relativeAnchor1X + axis1Y * this._relativeAnchor1Y + axis1Z * this._relativeAnchor1Z;
-			var projsq = rsq * rsq - dot * dot;
-			if(projsq > 0) {
-				if(this._b1._invMass > 0) {
-					invI1 = 1 / (1 / invI1 + this._b1._mass * projsq);
-				} else {
-					invI1 = 0;
-				}
-			}
-		}
-		if(invI2 > 0) {
-			var rsq1 = this._relativeAnchor2X * this._relativeAnchor2X + this._relativeAnchor2Y * this._relativeAnchor2Y + this._relativeAnchor2Z * this._relativeAnchor2Z;
-			var dot1 = axis2X * this._relativeAnchor2X + axis2Y * this._relativeAnchor2Y + axis2Z * this._relativeAnchor2Z;
-			var projsq1 = rsq1 * rsq1 - dot1 * dot1;
-			if(projsq1 > 0) {
-				if(this._b2._invMass > 0) {
-					invI2 = 1 / (1 / invI2 + this._b2._mass * projsq1);
-				} else {
-					invI2 = 0;
-				}
-			}
-		}
-		if(invI1 + invI2 == 0) {
-			return 0;
-		} else {
-			return 1 / (invI1 + invI2);
-		}
-	}
-	_syncAnchors() {
-		var tf1 = this._b1._transform;
-		var tf2 = this._b2._transform;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = tf1._rotation00 * this._localAnchor1X + tf1._rotation01 * this._localAnchor1Y + tf1._rotation02 * this._localAnchor1Z;
-		__tmp__Y = tf1._rotation10 * this._localAnchor1X + tf1._rotation11 * this._localAnchor1Y + tf1._rotation12 * this._localAnchor1Z;
-		__tmp__Z = tf1._rotation20 * this._localAnchor1X + tf1._rotation21 * this._localAnchor1Y + tf1._rotation22 * this._localAnchor1Z;
-		this._relativeAnchor1X = __tmp__X;
-		this._relativeAnchor1Y = __tmp__Y;
-		this._relativeAnchor1Z = __tmp__Z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = tf2._rotation00 * this._localAnchor2X + tf2._rotation01 * this._localAnchor2Y + tf2._rotation02 * this._localAnchor2Z;
-		__tmp__Y1 = tf2._rotation10 * this._localAnchor2X + tf2._rotation11 * this._localAnchor2Y + tf2._rotation12 * this._localAnchor2Z;
-		__tmp__Z1 = tf2._rotation20 * this._localAnchor2X + tf2._rotation21 * this._localAnchor2Y + tf2._rotation22 * this._localAnchor2Z;
-		this._relativeAnchor2X = __tmp__X1;
-		this._relativeAnchor2Y = __tmp__Y1;
-		this._relativeAnchor2Z = __tmp__Z1;
-		this._anchor1X = this._relativeAnchor1X + tf1._positionX;
-		this._anchor1Y = this._relativeAnchor1Y + tf1._positionY;
-		this._anchor1Z = this._relativeAnchor1Z + tf1._positionZ;
-		this._anchor2X = this._relativeAnchor2X + tf2._positionX;
-		this._anchor2Y = this._relativeAnchor2Y + tf2._positionY;
-		this._anchor2Z = this._relativeAnchor2Z + tf2._positionZ;
-		var __tmp__X2;
-		var __tmp__Y2;
-		var __tmp__Z2;
-		__tmp__X2 = tf1._rotation00 * this._localBasisX1X + tf1._rotation01 * this._localBasisX1Y + tf1._rotation02 * this._localBasisX1Z;
-		__tmp__Y2 = tf1._rotation10 * this._localBasisX1X + tf1._rotation11 * this._localBasisX1Y + tf1._rotation12 * this._localBasisX1Z;
-		__tmp__Z2 = tf1._rotation20 * this._localBasisX1X + tf1._rotation21 * this._localBasisX1Y + tf1._rotation22 * this._localBasisX1Z;
-		this._basisX1X = __tmp__X2;
-		this._basisX1Y = __tmp__Y2;
-		this._basisX1Z = __tmp__Z2;
-		var __tmp__X3;
-		var __tmp__Y3;
-		var __tmp__Z3;
-		__tmp__X3 = tf1._rotation00 * this._localBasisY1X + tf1._rotation01 * this._localBasisY1Y + tf1._rotation02 * this._localBasisY1Z;
-		__tmp__Y3 = tf1._rotation10 * this._localBasisY1X + tf1._rotation11 * this._localBasisY1Y + tf1._rotation12 * this._localBasisY1Z;
-		__tmp__Z3 = tf1._rotation20 * this._localBasisY1X + tf1._rotation21 * this._localBasisY1Y + tf1._rotation22 * this._localBasisY1Z;
-		this._basisY1X = __tmp__X3;
-		this._basisY1Y = __tmp__Y3;
-		this._basisY1Z = __tmp__Z3;
-		var __tmp__X4;
-		var __tmp__Y4;
-		var __tmp__Z4;
-		__tmp__X4 = tf1._rotation00 * this._localBasisZ1X + tf1._rotation01 * this._localBasisZ1Y + tf1._rotation02 * this._localBasisZ1Z;
-		__tmp__Y4 = tf1._rotation10 * this._localBasisZ1X + tf1._rotation11 * this._localBasisZ1Y + tf1._rotation12 * this._localBasisZ1Z;
-		__tmp__Z4 = tf1._rotation20 * this._localBasisZ1X + tf1._rotation21 * this._localBasisZ1Y + tf1._rotation22 * this._localBasisZ1Z;
-		this._basisZ1X = __tmp__X4;
-		this._basisZ1Y = __tmp__Y4;
-		this._basisZ1Z = __tmp__Z4;
-		var __tmp__X5;
-		var __tmp__Y5;
-		var __tmp__Z5;
-		__tmp__X5 = tf2._rotation00 * this._localBasisX2X + tf2._rotation01 * this._localBasisX2Y + tf2._rotation02 * this._localBasisX2Z;
-		__tmp__Y5 = tf2._rotation10 * this._localBasisX2X + tf2._rotation11 * this._localBasisX2Y + tf2._rotation12 * this._localBasisX2Z;
-		__tmp__Z5 = tf2._rotation20 * this._localBasisX2X + tf2._rotation21 * this._localBasisX2Y + tf2._rotation22 * this._localBasisX2Z;
-		this._basisX2X = __tmp__X5;
-		this._basisX2Y = __tmp__Y5;
-		this._basisX2Z = __tmp__Z5;
-		var __tmp__X6;
-		var __tmp__Y6;
-		var __tmp__Z6;
-		__tmp__X6 = tf2._rotation00 * this._localBasisY2X + tf2._rotation01 * this._localBasisY2Y + tf2._rotation02 * this._localBasisY2Z;
-		__tmp__Y6 = tf2._rotation10 * this._localBasisY2X + tf2._rotation11 * this._localBasisY2Y + tf2._rotation12 * this._localBasisY2Z;
-		__tmp__Z6 = tf2._rotation20 * this._localBasisY2X + tf2._rotation21 * this._localBasisY2Y + tf2._rotation22 * this._localBasisY2Z;
-		this._basisY2X = __tmp__X6;
-		this._basisY2Y = __tmp__Y6;
-		this._basisY2Z = __tmp__Z6;
-		var __tmp__X7;
-		var __tmp__Y7;
-		var __tmp__Z7;
-		__tmp__X7 = tf2._rotation00 * this._localBasisZ2X + tf2._rotation01 * this._localBasisZ2Y + tf2._rotation02 * this._localBasisZ2Z;
-		__tmp__Y7 = tf2._rotation10 * this._localBasisZ2X + tf2._rotation11 * this._localBasisZ2Y + tf2._rotation12 * this._localBasisZ2Z;
-		__tmp__Z7 = tf2._rotation20 * this._localBasisZ2X + tf2._rotation21 * this._localBasisZ2Y + tf2._rotation22 * this._localBasisZ2Z;
-		this._basisZ2X = __tmp__X7;
-		this._basisZ2Y = __tmp__Y7;
-		this._basisZ2Z = __tmp__Z7;
-	}
-	_getVelocitySolverInfo(timeStep,info) {
-		info.b1 = this._b1;
-		info.b2 = this._b2;
-		info.numRows = 0;
-	}
-	_getPositionSolverInfo(info) {
-		info.b1 = this._b1;
-		info.b2 = this._b2;
-		info.numRows = 0;
-	}
-	_checkDestruction() {
-		var forceSq = this._appliedForceX * this._appliedForceX + this._appliedForceY * this._appliedForceY + this._appliedForceZ * this._appliedForceZ;
-		var torqueSq = this._appliedTorqueX * this._appliedTorqueX + this._appliedTorqueY * this._appliedTorqueY + this._appliedTorqueZ * this._appliedTorqueZ;
-		if(this._breakForce > 0 && forceSq > this._breakForce * this._breakForce) {
-			this._world.removeJoint(this);
-			return;
-		}
-		if(this._breakTorque > 0 && torqueSq > this._breakTorque * this._breakTorque) {
-			this._world.removeJoint(this);
-			return;
-		}
-	}
-	getRigidBody1() {
-		return this._b1;
-	}
-	getRigidBody2() {
-		return this._b2;
-	}
-	getType() {
-		return this._type;
-	}
-	getAnchor1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._anchor1X;
-		v1.y = this._anchor1Y;
-		v1.z = this._anchor1Z;
-		return v;
-	}
-	getAnchor2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._anchor2X;
-		v1.y = this._anchor2Y;
-		v1.z = this._anchor2Z;
-		return v;
-	}
-	getAnchor1To(anchor) {
-		var v = anchor;
-		v.x = this._anchor1X;
-		v.y = this._anchor1Y;
-		v.z = this._anchor1Z;
-	}
-	getAnchor2To(anchor) {
-		var v = anchor;
-		v.x = this._anchor2X;
-		v.y = this._anchor2Y;
-		v.z = this._anchor2Z;
-	}
-	getLocalAnchor1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localAnchor1X;
-		v1.y = this._localAnchor1Y;
-		v1.z = this._localAnchor1Z;
-		return v;
-	}
-	getLocalAnchor2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localAnchor2X;
-		v1.y = this._localAnchor2Y;
-		v1.z = this._localAnchor2Z;
-		return v;
-	}
-	getLocalAnchor1To(localAnchor) {
-		var v = localAnchor;
-		v.x = this._localAnchor1X;
-		v.y = this._localAnchor1Y;
-		v.z = this._localAnchor1Z;
-	}
-	getLocalAnchor2To(localAnchor) {
-		var v = localAnchor;
-		v.x = this._localAnchor2X;
-		v.y = this._localAnchor2Y;
-		v.z = this._localAnchor2Z;
-	}
-	getBasis1() {
-		var m = new oimo.common.Mat3();
-		var b;
-		var b00;
-		var b01;
-		var b02;
-		var b10;
-		var b11;
-		var b12;
-		var b20;
-		var b21;
-		var b22;
-		b00 = this._basisX1X;
-		b01 = this._basisY1X;
-		b02 = this._basisZ1X;
-		b10 = this._basisX1Y;
-		b11 = this._basisY1Y;
-		b12 = this._basisZ1Y;
-		b20 = this._basisX1Z;
-		b21 = this._basisY1Z;
-		b22 = this._basisZ1Z;
-		var m1 = m;
-		m1.e00 = b00;
-		m1.e01 = b01;
-		m1.e02 = b02;
-		m1.e10 = b10;
-		m1.e11 = b11;
-		m1.e12 = b12;
-		m1.e20 = b20;
-		m1.e21 = b21;
-		m1.e22 = b22;
-		return m;
-	}
-	getBasis2() {
-		var m = new oimo.common.Mat3();
-		var b;
-		var b00;
-		var b01;
-		var b02;
-		var b10;
-		var b11;
-		var b12;
-		var b20;
-		var b21;
-		var b22;
-		b00 = this._basisX2X;
-		b01 = this._basisY2X;
-		b02 = this._basisZ2X;
-		b10 = this._basisX2Y;
-		b11 = this._basisY2Y;
-		b12 = this._basisZ2Y;
-		b20 = this._basisX2Z;
-		b21 = this._basisY2Z;
-		b22 = this._basisZ2Z;
-		var m1 = m;
-		m1.e00 = b00;
-		m1.e01 = b01;
-		m1.e02 = b02;
-		m1.e10 = b10;
-		m1.e11 = b11;
-		m1.e12 = b12;
-		m1.e20 = b20;
-		m1.e21 = b21;
-		m1.e22 = b22;
-		return m;
-	}
-	getBasis1To(basis) {
-		var b;
-		var b00;
-		var b01;
-		var b02;
-		var b10;
-		var b11;
-		var b12;
-		var b20;
-		var b21;
-		var b22;
-		b00 = this._basisX1X;
-		b01 = this._basisY1X;
-		b02 = this._basisZ1X;
-		b10 = this._basisX1Y;
-		b11 = this._basisY1Y;
-		b12 = this._basisZ1Y;
-		b20 = this._basisX1Z;
-		b21 = this._basisY1Z;
-		b22 = this._basisZ1Z;
-		var m = basis;
-		m.e00 = b00;
-		m.e01 = b01;
-		m.e02 = b02;
-		m.e10 = b10;
-		m.e11 = b11;
-		m.e12 = b12;
-		m.e20 = b20;
-		m.e21 = b21;
-		m.e22 = b22;
-	}
-	getBasis2To(basis) {
-		var b;
-		var b00;
-		var b01;
-		var b02;
-		var b10;
-		var b11;
-		var b12;
-		var b20;
-		var b21;
-		var b22;
-		b00 = this._basisX2X;
-		b01 = this._basisY2X;
-		b02 = this._basisZ2X;
-		b10 = this._basisX2Y;
-		b11 = this._basisY2Y;
-		b12 = this._basisZ2Y;
-		b20 = this._basisX2Z;
-		b21 = this._basisY2Z;
-		b22 = this._basisZ2Z;
-		var m = basis;
-		m.e00 = b00;
-		m.e01 = b01;
-		m.e02 = b02;
-		m.e10 = b10;
-		m.e11 = b11;
-		m.e12 = b12;
-		m.e20 = b20;
-		m.e21 = b21;
-		m.e22 = b22;
-	}
-	getAllowCollision() {
-		return this._allowCollision;
-	}
-	setAllowCollision(allowCollision) {
-		this._allowCollision = allowCollision;
-	}
-	getBreakForce() {
-		return this._breakForce;
-	}
-	setBreakForce(breakForce) {
-		this._breakForce = breakForce;
-	}
-	getBreakTorque() {
-		return this._breakTorque;
-	}
-	setBreakTorque(breakTorque) {
-		this._breakTorque = breakTorque;
-	}
-	getPositionCorrectionAlgorithm() {
-		return this._positionCorrectionAlgorithm;
-	}
-	setPositionCorrectionAlgorithm(positionCorrectionAlgorithm) {
-		switch(positionCorrectionAlgorithm) {
-		case 0:case 1:case 2:
-			break;
-		default:
-			throw new Error("invalid position correction algorithm id: " + positionCorrectionAlgorithm);
-		}
-		this._positionCorrectionAlgorithm = positionCorrectionAlgorithm;
-	}
-	getAppliedForce() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._appliedForceX;
-		v1.y = this._appliedForceY;
-		v1.z = this._appliedForceZ;
-		return v;
-	}
-	getAppliedForceTo(appliedForce) {
-		var v = appliedForce;
-		v.x = this._appliedForceX;
-		v.y = this._appliedForceY;
-		v.z = this._appliedForceZ;
-	}
-	getAppliedTorque() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._appliedTorqueX;
-		v1.y = this._appliedTorqueY;
-		v1.z = this._appliedTorqueZ;
-		return v;
-	}
-	getAppliedTorqueTo(appliedTorque) {
-		var v = appliedTorque;
-		v.x = this._appliedTorqueX;
-		v.y = this._appliedTorqueY;
-		v.z = this._appliedTorqueZ;
-	}
-	getPrev() {
-		return this._prev;
-	}
-	getNext() {
-		return this._next;
-	}
-}
-oimo.dynamics.constraint.joint.CylindricalJoint = class oimo_dynamics_constraint_joint_CylindricalJoint extends oimo.dynamics.constraint.joint.Joint {
-	constructor(config) {
-		super(config,2);
-		var v = config.localAxis1;
-		this._localBasisX1X = v.x;
-		this._localBasisX1Y = v.y;
-		this._localBasisX1Z = v.z;
-		var v1 = config.localAxis2;
-		this._localBasisX2X = v1.x;
-		this._localBasisX2Y = v1.y;
-		this._localBasisX2Z = v1.z;
-		this.buildLocalBasesFromX();
-		this.angle = 0;
-		this.angularErrorY = 0;
-		this.angularErrorZ = 0;
-		this.translation = 0;
-		this.linearErrorY = 0;
-		this.linearErrorZ = 0;
-		this._basis = new oimo.dynamics.constraint.joint.BasisTracker(this);
-		this._translSd = config.translationalSpringDamper.clone();
-		this._translLm = config.translationalLimitMotor.clone();
-		this._rotSd = config.rotationalSpringDamper.clone();
-		this._rotLm = config.rotationalLimitMotor.clone();
-	}
-	getInfo(info,timeStep,isPositionPart) {
-		var erp = this.getErp(timeStep,isPositionPart);
-		var linRhsY = this.linearErrorY * erp;
-		var linRhsZ = this.linearErrorZ * erp;
-		var angRhsY = this.angularErrorY * erp;
-		var angRhsZ = this.angularErrorZ * erp;
-		var row;
-		var j;
-		var translationalMotorMass = 1 / (this._b1._invMass + this._b2._invMass);
-		var rotationalMotorMass = this.computeEffectiveInertiaMoment(this._basis.xX,this._basis.xY,this._basis.xZ);
-		if(this._translSd.frequency <= 0 || !isPositionPart) {
-			var impulse = this._impulses[0];
-			var row1 = info.rows[info.numRows++];
-			var _this = row1.jacobian;
-			_this.lin1X = 0;
-			_this.lin1Y = 0;
-			_this.lin1Z = 0;
-			_this.lin2X = 0;
-			_this.lin2Y = 0;
-			_this.lin2Z = 0;
-			_this.ang1X = 0;
-			_this.ang1Y = 0;
-			_this.ang1Z = 0;
-			_this.ang2X = 0;
-			_this.ang2Y = 0;
-			_this.ang2Z = 0;
-			row1.rhs = 0;
-			row1.cfm = 0;
-			row1.minImpulse = 0;
-			row1.maxImpulse = 0;
-			row1.motorSpeed = 0;
-			row1.motorMaxImpulse = 0;
-			row1.impulse = null;
-			row1.impulse = impulse;
-			row = row1;
-			this.setSolverInfoRowLinear(row,this.translation,this._translLm,translationalMotorMass,this._translSd,timeStep,isPositionPart);
-			j = row.jacobian;
-			j.lin1X = this._basis.xX;
-			j.lin1Y = this._basis.xY;
-			j.lin1Z = this._basis.xZ;
-			j.lin2X = this._basis.xX;
-			j.lin2Y = this._basis.xY;
-			j.lin2Z = this._basis.xZ;
-			j.ang1X = this._relativeAnchor1Y * this._basis.xZ - this._relativeAnchor1Z * this._basis.xY;
-			j.ang1Y = this._relativeAnchor1Z * this._basis.xX - this._relativeAnchor1X * this._basis.xZ;
-			j.ang1Z = this._relativeAnchor1X * this._basis.xY - this._relativeAnchor1Y * this._basis.xX;
-			j.ang2X = this._relativeAnchor2Y * this._basis.xZ - this._relativeAnchor2Z * this._basis.xY;
-			j.ang2Y = this._relativeAnchor2Z * this._basis.xX - this._relativeAnchor2X * this._basis.xZ;
-			j.ang2Z = this._relativeAnchor2X * this._basis.xY - this._relativeAnchor2Y * this._basis.xX;
-		}
-		var impulse1 = this._impulses[1];
-		var row2 = info.rows[info.numRows++];
-		var _this1 = row2.jacobian;
-		_this1.lin1X = 0;
-		_this1.lin1Y = 0;
-		_this1.lin1Z = 0;
-		_this1.lin2X = 0;
-		_this1.lin2Y = 0;
-		_this1.lin2Z = 0;
-		_this1.ang1X = 0;
-		_this1.ang1Y = 0;
-		_this1.ang1Z = 0;
-		_this1.ang2X = 0;
-		_this1.ang2Y = 0;
-		_this1.ang2Z = 0;
-		row2.rhs = 0;
-		row2.cfm = 0;
-		row2.minImpulse = 0;
-		row2.maxImpulse = 0;
-		row2.motorSpeed = 0;
-		row2.motorMaxImpulse = 0;
-		row2.impulse = null;
-		row2.impulse = impulse1;
-		row = row2;
-		row.rhs = linRhsY;
-		row.cfm = 0;
-		row.minImpulse = -1e65536;
-		row.maxImpulse = 1e65536;
-		j = row.jacobian;
-		j.lin1X = this._basis.yX;
-		j.lin1Y = this._basis.yY;
-		j.lin1Z = this._basis.yZ;
-		j.lin2X = this._basis.yX;
-		j.lin2Y = this._basis.yY;
-		j.lin2Z = this._basis.yZ;
-		j.ang1X = this._relativeAnchor1Y * this._basis.yZ - this._relativeAnchor1Z * this._basis.yY;
-		j.ang1Y = this._relativeAnchor1Z * this._basis.yX - this._relativeAnchor1X * this._basis.yZ;
-		j.ang1Z = this._relativeAnchor1X * this._basis.yY - this._relativeAnchor1Y * this._basis.yX;
-		j.ang2X = this._relativeAnchor2Y * this._basis.yZ - this._relativeAnchor2Z * this._basis.yY;
-		j.ang2Y = this._relativeAnchor2Z * this._basis.yX - this._relativeAnchor2X * this._basis.yZ;
-		j.ang2Z = this._relativeAnchor2X * this._basis.yY - this._relativeAnchor2Y * this._basis.yX;
-		var impulse2 = this._impulses[2];
-		var row3 = info.rows[info.numRows++];
-		var _this2 = row3.jacobian;
-		_this2.lin1X = 0;
-		_this2.lin1Y = 0;
-		_this2.lin1Z = 0;
-		_this2.lin2X = 0;
-		_this2.lin2Y = 0;
-		_this2.lin2Z = 0;
-		_this2.ang1X = 0;
-		_this2.ang1Y = 0;
-		_this2.ang1Z = 0;
-		_this2.ang2X = 0;
-		_this2.ang2Y = 0;
-		_this2.ang2Z = 0;
-		row3.rhs = 0;
-		row3.cfm = 0;
-		row3.minImpulse = 0;
-		row3.maxImpulse = 0;
-		row3.motorSpeed = 0;
-		row3.motorMaxImpulse = 0;
-		row3.impulse = null;
-		row3.impulse = impulse2;
-		row = row3;
-		row.rhs = linRhsZ;
-		row.cfm = 0;
-		row.minImpulse = -1e65536;
-		row.maxImpulse = 1e65536;
-		j = row.jacobian;
-		j.lin1X = this._basis.zX;
-		j.lin1Y = this._basis.zY;
-		j.lin1Z = this._basis.zZ;
-		j.lin2X = this._basis.zX;
-		j.lin2Y = this._basis.zY;
-		j.lin2Z = this._basis.zZ;
-		j.ang1X = this._relativeAnchor1Y * this._basis.zZ - this._relativeAnchor1Z * this._basis.zY;
-		j.ang1Y = this._relativeAnchor1Z * this._basis.zX - this._relativeAnchor1X * this._basis.zZ;
-		j.ang1Z = this._relativeAnchor1X * this._basis.zY - this._relativeAnchor1Y * this._basis.zX;
-		j.ang2X = this._relativeAnchor2Y * this._basis.zZ - this._relativeAnchor2Z * this._basis.zY;
-		j.ang2Y = this._relativeAnchor2Z * this._basis.zX - this._relativeAnchor2X * this._basis.zZ;
-		j.ang2Z = this._relativeAnchor2X * this._basis.zY - this._relativeAnchor2Y * this._basis.zX;
-		if(this._rotSd.frequency <= 0 || !isPositionPart) {
-			var impulse3 = this._impulses[3];
-			var row4 = info.rows[info.numRows++];
-			var _this3 = row4.jacobian;
-			_this3.lin1X = 0;
-			_this3.lin1Y = 0;
-			_this3.lin1Z = 0;
-			_this3.lin2X = 0;
-			_this3.lin2Y = 0;
-			_this3.lin2Z = 0;
-			_this3.ang1X = 0;
-			_this3.ang1Y = 0;
-			_this3.ang1Z = 0;
-			_this3.ang2X = 0;
-			_this3.ang2Y = 0;
-			_this3.ang2Z = 0;
-			row4.rhs = 0;
-			row4.cfm = 0;
-			row4.minImpulse = 0;
-			row4.maxImpulse = 0;
-			row4.motorSpeed = 0;
-			row4.motorMaxImpulse = 0;
-			row4.impulse = null;
-			row4.impulse = impulse3;
-			row = row4;
-			this.setSolverInfoRowAngular(row,this.angle,this._rotLm,rotationalMotorMass,this._rotSd,timeStep,isPositionPart);
-			j = row.jacobian;
-			j.ang1X = this._basis.xX;
-			j.ang1Y = this._basis.xY;
-			j.ang1Z = this._basis.xZ;
-			j.ang2X = this._basis.xX;
-			j.ang2Y = this._basis.xY;
-			j.ang2Z = this._basis.xZ;
-		}
-		var impulse4 = this._impulses[4];
-		var row5 = info.rows[info.numRows++];
-		var _this4 = row5.jacobian;
-		_this4.lin1X = 0;
-		_this4.lin1Y = 0;
-		_this4.lin1Z = 0;
-		_this4.lin2X = 0;
-		_this4.lin2Y = 0;
-		_this4.lin2Z = 0;
-		_this4.ang1X = 0;
-		_this4.ang1Y = 0;
-		_this4.ang1Z = 0;
-		_this4.ang2X = 0;
-		_this4.ang2Y = 0;
-		_this4.ang2Z = 0;
-		row5.rhs = 0;
-		row5.cfm = 0;
-		row5.minImpulse = 0;
-		row5.maxImpulse = 0;
-		row5.motorSpeed = 0;
-		row5.motorMaxImpulse = 0;
-		row5.impulse = null;
-		row5.impulse = impulse4;
-		row = row5;
-		row.rhs = angRhsY;
-		row.cfm = 0;
-		row.minImpulse = -1e65536;
-		row.maxImpulse = 1e65536;
-		j = row.jacobian;
-		j.ang1X = this._basis.yX;
-		j.ang1Y = this._basis.yY;
-		j.ang1Z = this._basis.yZ;
-		j.ang2X = this._basis.yX;
-		j.ang2Y = this._basis.yY;
-		j.ang2Z = this._basis.yZ;
-		var impulse5 = this._impulses[5];
-		var row6 = info.rows[info.numRows++];
-		var _this5 = row6.jacobian;
-		_this5.lin1X = 0;
-		_this5.lin1Y = 0;
-		_this5.lin1Z = 0;
-		_this5.lin2X = 0;
-		_this5.lin2Y = 0;
-		_this5.lin2Z = 0;
-		_this5.ang1X = 0;
-		_this5.ang1Y = 0;
-		_this5.ang1Z = 0;
-		_this5.ang2X = 0;
-		_this5.ang2Y = 0;
-		_this5.ang2Z = 0;
-		row6.rhs = 0;
-		row6.cfm = 0;
-		row6.minImpulse = 0;
-		row6.maxImpulse = 0;
-		row6.motorSpeed = 0;
-		row6.motorMaxImpulse = 0;
-		row6.impulse = null;
-		row6.impulse = impulse5;
-		row = row6;
-		row.rhs = angRhsZ;
-		row.cfm = 0;
-		row.minImpulse = -1e65536;
-		row.maxImpulse = 1e65536;
-		j = row.jacobian;
-		j.ang1X = this._basis.zX;
-		j.ang1Y = this._basis.zY;
-		j.ang1Z = this._basis.zZ;
-		j.ang2X = this._basis.zX;
-		j.ang2Y = this._basis.zY;
-		j.ang2Z = this._basis.zZ;
-	}
-	_syncAnchors() {
-		super._syncAnchors();
-		var _this = this._basis;
-		var invM1 = _this.joint._b1._invMass;
-		var invM2 = _this.joint._b2._invMass;
-		var q;
-		var qX;
-		var qY;
-		var qZ;
-		var qW;
-		var idQ;
-		var idQX;
-		var idQY;
-		var idQZ;
-		var idQW;
-		var slerpQ;
-		var slerpQX;
-		var slerpQY;
-		var slerpQZ;
-		var slerpQW;
-		var slerpM;
-		var slerpM00;
-		var slerpM01;
-		var slerpM02;
-		var slerpM10;
-		var slerpM11;
-		var slerpM12;
-		var slerpM20;
-		var slerpM21;
-		var slerpM22;
-		var newX;
-		var newXX;
-		var newXY;
-		var newXZ;
-		var newY;
-		var newYX;
-		var newYY;
-		var newYZ;
-		var newZ;
-		var newZX;
-		var newZY;
-		var newZZ;
-		var prevX;
-		var prevXX;
-		var prevXY;
-		var prevXZ;
-		var prevY;
-		var prevYX;
-		var prevYY;
-		var prevYZ;
-		var d = _this.joint._basisX1X * _this.joint._basisX2X + _this.joint._basisX1Y * _this.joint._basisX2Y + _this.joint._basisX1Z * _this.joint._basisX2Z;
-		if(d < -0.999999999) {
-			var vX;
-			var vY;
-			var vZ;
-			var x1 = _this.joint._basisX1X;
-			var y1 = _this.joint._basisX1Y;
-			var z1 = _this.joint._basisX1Z;
-			var x2 = x1 * x1;
-			var y2 = y1 * y1;
-			var z2 = z1 * z1;
-			var d1;
-			if(x2 < y2) {
-				if(x2 < z2) {
-					d1 = 1 / Math.sqrt(y2 + z2);
-					vX = 0;
-					vY = z1 * d1;
-					vZ = -y1 * d1;
-				} else {
-					d1 = 1 / Math.sqrt(x2 + y2);
-					vX = y1 * d1;
-					vY = -x1 * d1;
-					vZ = 0;
-				}
-			} else if(y2 < z2) {
-				d1 = 1 / Math.sqrt(z2 + x2);
-				vX = -z1 * d1;
-				vY = 0;
-				vZ = x1 * d1;
-			} else {
-				d1 = 1 / Math.sqrt(x2 + y2);
-				vX = y1 * d1;
-				vY = -x1 * d1;
-				vZ = 0;
-			}
-			qX = vX;
-			qY = vY;
-			qZ = vZ;
-			qW = 0;
-		} else {
-			var cX;
-			var cY;
-			var cZ;
-			cX = _this.joint._basisX1Y * _this.joint._basisX2Z - _this.joint._basisX1Z * _this.joint._basisX2Y;
-			cY = _this.joint._basisX1Z * _this.joint._basisX2X - _this.joint._basisX1X * _this.joint._basisX2Z;
-			cZ = _this.joint._basisX1X * _this.joint._basisX2Y - _this.joint._basisX1Y * _this.joint._basisX2X;
-			var w = Math.sqrt((1 + d) * 0.5);
-			d = 0.5 / w;
-			cX *= d;
-			cY *= d;
-			cZ *= d;
-			qX = cX;
-			qY = cY;
-			qZ = cZ;
-			qW = w;
-		}
-		idQX = 0;
-		idQY = 0;
-		idQZ = 0;
-		idQW = 1;
-		var qx;
-		var qy;
-		var qz;
-		var qw;
-		var q1X;
-		var q1Y;
-		var q1Z;
-		var q1W;
-		var q2X;
-		var q2Y;
-		var q2Z;
-		var q2W;
-		q1X = idQX;
-		q1Y = idQY;
-		q1Z = idQZ;
-		q1W = idQW;
-		q2X = qX;
-		q2Y = qY;
-		q2Z = qZ;
-		q2W = qW;
-		var d2 = q1X * q2X + q1Y * q2Y + q1Z * q2Z + q1W * q2W;
-		if(d2 < 0) {
-			d2 = -d2;
-			q2X = -q2X;
-			q2Y = -q2Y;
-			q2Z = -q2Z;
-			q2W = -q2W;
-		}
-		if(d2 > 0.999999) {
-			var dqX;
-			var dqY;
-			var dqZ;
-			var dqW;
-			dqX = q2X - q1X;
-			dqY = q2Y - q1Y;
-			dqZ = q2Z - q1Z;
-			dqW = q2W - q1W;
-			q2X = q1X + dqX * (invM1 / (invM1 + invM2));
-			q2Y = q1Y + dqY * (invM1 / (invM1 + invM2));
-			q2Z = q1Z + dqZ * (invM1 / (invM1 + invM2));
-			q2W = q1W + dqW * (invM1 / (invM1 + invM2));
-			var l = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
-			if(l > 1e-32) {
-				l = 1 / Math.sqrt(l);
-			}
-			slerpQX = q2X * l;
-			slerpQY = q2Y * l;
-			slerpQZ = q2Z * l;
-			slerpQW = q2W * l;
-		} else {
-			var theta = invM1 / (invM1 + invM2) * Math.acos(d2);
-			q2X += q1X * -d2;
-			q2Y += q1Y * -d2;
-			q2Z += q1Z * -d2;
-			q2W += q1W * -d2;
-			var l1 = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
-			if(l1 > 1e-32) {
-				l1 = 1 / Math.sqrt(l1);
-			}
-			q2X *= l1;
-			q2Y *= l1;
-			q2Z *= l1;
-			q2W *= l1;
-			var sin = Math.sin(theta);
-			var cos = Math.cos(theta);
-			q1X *= cos;
-			q1Y *= cos;
-			q1Z *= cos;
-			q1W *= cos;
-			slerpQX = q1X + q2X * sin;
-			slerpQY = q1Y + q2Y * sin;
-			slerpQZ = q1Z + q2Z * sin;
-			slerpQW = q1W + q2W * sin;
-		}
-		var x = slerpQX;
-		var y = slerpQY;
-		var z = slerpQZ;
-		var w1 = slerpQW;
-		var x21 = 2 * x;
-		var y21 = 2 * y;
-		var z21 = 2 * z;
-		var xx = x * x21;
-		var yy = y * y21;
-		var zz = z * z21;
-		var xy = x * y21;
-		var yz = y * z21;
-		var xz = x * z21;
-		var wx = w1 * x21;
-		var wy = w1 * y21;
-		var wz = w1 * z21;
-		slerpM00 = 1 - yy - zz;
-		slerpM01 = xy - wz;
-		slerpM02 = xz + wy;
-		slerpM10 = xy + wz;
-		slerpM11 = 1 - xx - zz;
-		slerpM12 = yz - wx;
-		slerpM20 = xz - wy;
-		slerpM21 = yz + wx;
-		slerpM22 = 1 - xx - yy;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = slerpM00 * _this.joint._basisX1X + slerpM01 * _this.joint._basisX1Y + slerpM02 * _this.joint._basisX1Z;
-		__tmp__Y = slerpM10 * _this.joint._basisX1X + slerpM11 * _this.joint._basisX1Y + slerpM12 * _this.joint._basisX1Z;
-		__tmp__Z = slerpM20 * _this.joint._basisX1X + slerpM21 * _this.joint._basisX1Y + slerpM22 * _this.joint._basisX1Z;
-		newXX = __tmp__X;
-		newXY = __tmp__Y;
-		newXZ = __tmp__Z;
-		prevXX = _this.xX;
-		prevXY = _this.xY;
-		prevXZ = _this.xZ;
-		prevYX = _this.yX;
-		prevYY = _this.yY;
-		prevYZ = _this.yZ;
-		var d3 = prevXX * newXX + prevXY * newXY + prevXZ * newXZ;
-		if(d3 < -0.999999999) {
-			var vX1;
-			var vY1;
-			var vZ1;
-			var x11 = prevXX;
-			var y11 = prevXY;
-			var z11 = prevXZ;
-			var x22 = x11 * x11;
-			var y22 = y11 * y11;
-			var z22 = z11 * z11;
-			var d4;
-			if(x22 < y22) {
-				if(x22 < z22) {
-					d4 = 1 / Math.sqrt(y22 + z22);
-					vX1 = 0;
-					vY1 = z11 * d4;
-					vZ1 = -y11 * d4;
-				} else {
-					d4 = 1 / Math.sqrt(x22 + y22);
-					vX1 = y11 * d4;
-					vY1 = -x11 * d4;
-					vZ1 = 0;
-				}
-			} else if(y22 < z22) {
-				d4 = 1 / Math.sqrt(z22 + x22);
-				vX1 = -z11 * d4;
-				vY1 = 0;
-				vZ1 = x11 * d4;
-			} else {
-				d4 = 1 / Math.sqrt(x22 + y22);
-				vX1 = y11 * d4;
-				vY1 = -x11 * d4;
-				vZ1 = 0;
-			}
-			slerpQX = vX1;
-			slerpQY = vY1;
-			slerpQZ = vZ1;
-			slerpQW = 0;
-		} else {
-			var cX1;
-			var cY1;
-			var cZ1;
-			cX1 = prevXY * newXZ - prevXZ * newXY;
-			cY1 = prevXZ * newXX - prevXX * newXZ;
-			cZ1 = prevXX * newXY - prevXY * newXX;
-			var w2 = Math.sqrt((1 + d3) * 0.5);
-			d3 = 0.5 / w2;
-			cX1 *= d3;
-			cY1 *= d3;
-			cZ1 *= d3;
-			slerpQX = cX1;
-			slerpQY = cY1;
-			slerpQZ = cZ1;
-			slerpQW = w2;
-		}
-		var x3 = slerpQX;
-		var y3 = slerpQY;
-		var z3 = slerpQZ;
-		var w3 = slerpQW;
-		var x23 = 2 * x3;
-		var y23 = 2 * y3;
-		var z23 = 2 * z3;
-		var xx1 = x3 * x23;
-		var yy1 = y3 * y23;
-		var zz1 = z3 * z23;
-		var xy1 = x3 * y23;
-		var yz1 = y3 * z23;
-		var xz1 = x3 * z23;
-		var wx1 = w3 * x23;
-		var wy1 = w3 * y23;
-		var wz1 = w3 * z23;
-		slerpM00 = 1 - yy1 - zz1;
-		slerpM01 = xy1 - wz1;
-		slerpM02 = xz1 + wy1;
-		slerpM10 = xy1 + wz1;
-		slerpM11 = 1 - xx1 - zz1;
-		slerpM12 = yz1 - wx1;
-		slerpM20 = xz1 - wy1;
-		slerpM21 = yz1 + wx1;
-		slerpM22 = 1 - xx1 - yy1;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = slerpM00 * prevYX + slerpM01 * prevYY + slerpM02 * prevYZ;
-		__tmp__Y1 = slerpM10 * prevYX + slerpM11 * prevYY + slerpM12 * prevYZ;
-		__tmp__Z1 = slerpM20 * prevYX + slerpM21 * prevYY + slerpM22 * prevYZ;
-		newYX = __tmp__X1;
-		newYY = __tmp__Y1;
-		newYZ = __tmp__Z1;
-		newZX = newXY * newYZ - newXZ * newYY;
-		newZY = newXZ * newYX - newXX * newYZ;
-		newZZ = newXX * newYY - newXY * newYX;
-		if(newZX * newZX + newZY * newZY + newZZ * newZZ > 1e-6) {
-			var l2 = newZX * newZX + newZY * newZY + newZZ * newZZ;
-			if(l2 > 0) {
-				l2 = 1 / Math.sqrt(l2);
-			}
-			newZX *= l2;
-			newZY *= l2;
-			newZZ *= l2;
-		} else {
-			var x12 = newXX;
-			var y12 = newXY;
-			var z12 = newXZ;
-			var x24 = x12 * x12;
-			var y24 = y12 * y12;
-			var z24 = z12 * z12;
-			var d5;
-			if(x24 < y24) {
-				if(x24 < z24) {
-					d5 = 1 / Math.sqrt(y24 + z24);
-					newZX = 0;
-					newZY = z12 * d5;
-					newZZ = -y12 * d5;
-				} else {
-					d5 = 1 / Math.sqrt(x24 + y24);
-					newZX = y12 * d5;
-					newZY = -x12 * d5;
-					newZZ = 0;
-				}
-			} else if(y24 < z24) {
-				d5 = 1 / Math.sqrt(z24 + x24);
-				newZX = -z12 * d5;
-				newZY = 0;
-				newZZ = x12 * d5;
-			} else {
-				d5 = 1 / Math.sqrt(x24 + y24);
-				newZX = y12 * d5;
-				newZY = -x12 * d5;
-				newZZ = 0;
-			}
-		}
-		newYX = newZY * newXZ - newZZ * newXY;
-		newYY = newZZ * newXX - newZX * newXZ;
-		newYZ = newZX * newXY - newZY * newXX;
-		_this.xX = newXX;
-		_this.xY = newXY;
-		_this.xZ = newXZ;
-		_this.yX = newYX;
-		_this.yY = newYY;
-		_this.yZ = newYZ;
-		_this.zX = newZX;
-		_this.zY = newZY;
-		_this.zZ = newZZ;
-		var angError;
-		var angErrorX;
-		var angErrorY;
-		var angErrorZ;
-		angErrorX = this._basisX1Y * this._basisX2Z - this._basisX1Z * this._basisX2Y;
-		angErrorY = this._basisX1Z * this._basisX2X - this._basisX1X * this._basisX2Z;
-		angErrorZ = this._basisX1X * this._basisX2Y - this._basisX1Y * this._basisX2X;
-		var cos1 = this._basisX1X * this._basisX2X + this._basisX1Y * this._basisX2Y + this._basisX1Z * this._basisX2Z;
-		var theta1 = cos1 <= -1 ? 3.14159265358979 : cos1 >= 1 ? 0 : Math.acos(cos1);
-		var l3 = angErrorX * angErrorX + angErrorY * angErrorY + angErrorZ * angErrorZ;
-		if(l3 > 0) {
-			l3 = 1 / Math.sqrt(l3);
-		}
-		angErrorX *= l3;
-		angErrorY *= l3;
-		angErrorZ *= l3;
-		angErrorX *= theta1;
-		angErrorY *= theta1;
-		angErrorZ *= theta1;
-		this.angularErrorY = angErrorX * this._basis.yX + angErrorY * this._basis.yY + angErrorZ * this._basis.yZ;
-		this.angularErrorZ = angErrorX * this._basis.zX + angErrorY * this._basis.zY + angErrorZ * this._basis.zZ;
-		var perpCross;
-		var perpCrossX;
-		var perpCrossY;
-		var perpCrossZ;
-		perpCrossX = this._basisY1Y * this._basisY2Z - this._basisY1Z * this._basisY2Y;
-		perpCrossY = this._basisY1Z * this._basisY2X - this._basisY1X * this._basisY2Z;
-		perpCrossZ = this._basisY1X * this._basisY2Y - this._basisY1Y * this._basisY2X;
-		cos1 = this._basisY1X * this._basisY2X + this._basisY1Y * this._basisY2Y + this._basisY1Z * this._basisY2Z;
-		this.angle = cos1 <= -1 ? 3.14159265358979 : cos1 >= 1 ? 0 : Math.acos(cos1);
-		if(perpCrossX * this._basis.xX + perpCrossY * this._basis.xY + perpCrossZ * this._basis.xZ < 0) {
-			this.angle = -this.angle;
-		}
-		var anchorDiff;
-		var anchorDiffX;
-		var anchorDiffY;
-		var anchorDiffZ;
-		anchorDiffX = this._anchor2X - this._anchor1X;
-		anchorDiffY = this._anchor2Y - this._anchor1Y;
-		anchorDiffZ = this._anchor2Z - this._anchor1Z;
-		this.translation = anchorDiffX * this._basis.xX + anchorDiffY * this._basis.xY + anchorDiffZ * this._basis.xZ;
-		this.linearErrorY = anchorDiffX * this._basis.yX + anchorDiffY * this._basis.yY + anchorDiffZ * this._basis.yZ;
-		this.linearErrorZ = anchorDiffX * this._basis.zX + anchorDiffY * this._basis.zY + anchorDiffZ * this._basis.zZ;
-	}
-	_getVelocitySolverInfo(timeStep,info) {
-		super._getVelocitySolverInfo(timeStep,info);
-		this.getInfo(info,timeStep,false);
-	}
-	_getPositionSolverInfo(info) {
-		super._getPositionSolverInfo(info);
-		this.getInfo(info,null,true);
-	}
-	getAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX1X;
-		v1.y = this._basisX1Y;
-		v1.z = this._basisX1Z;
-		return v;
-	}
-	getAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX2X;
-		v1.y = this._basisX2Y;
-		v1.z = this._basisX2Z;
-		return v;
-	}
-	getAxis1To(axis) {
-		var v = axis;
-		v.x = this._basisX1X;
-		v.y = this._basisX1Y;
-		v.z = this._basisX1Z;
-	}
-	getAxis2To(axis) {
-		var v = axis;
-		v.x = this._basisX2X;
-		v.y = this._basisX2Y;
-		v.z = this._basisX2Z;
-	}
-	getLocalAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisX1X;
-		v1.y = this._localBasisX1Y;
-		v1.z = this._localBasisX1Z;
-		return v;
-	}
-	getLocalAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisX2X;
-		v1.y = this._localBasisX2Y;
-		v1.z = this._localBasisX2Z;
-		return v;
-	}
-	getLocalAxis1To(axis) {
-		var v = axis;
-		v.x = this._localBasisX1X;
-		v.y = this._localBasisX1Y;
-		v.z = this._localBasisX1Z;
-	}
-	getLocalAxis2To(axis) {
-		var v = axis;
-		v.x = this._localBasisX2X;
-		v.y = this._localBasisX2Y;
-		v.z = this._localBasisX2Z;
-	}
-	getTranslationalSpringDamper() {
-		return this._translSd;
-	}
-	getRotationalSpringDamper() {
-		return this._rotSd;
-	}
-	getTranslationalLimitMotor() {
-		return this._translLm;
-	}
-	getRotationalLimitMotor() {
-		return this._rotLm;
-	}
-	getAngle() {
-		return this.angle;
-	}
-	getTranslation() {
-		return this.translation;
-	}
-}
-oimo.dynamics.constraint.joint.JointConfig = class oimo_dynamics_constraint_joint_JointConfig {
-	constructor() {
-		this.rigidBody1 = null;
-		this.rigidBody2 = null;
-		this.localAnchor1 = new oimo.common.Vec3();
-		this.localAnchor2 = new oimo.common.Vec3();
-		this.allowCollision = false;
-		this.solverType = oimo.common.Setting.defaultJointConstraintSolverType;
-		this.positionCorrectionAlgorithm = oimo.common.Setting.defaultJointPositionCorrectionAlgorithm;
-		this.breakForce = 0;
-		this.breakTorque = 0;
-	}
-	_init(rb1,rb2,worldAnchor) {
-		this.rigidBody1 = rb1;
-		this.rigidBody2 = rb2;
-		var _this = this.rigidBody1;
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldAnchor;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		vX -= _this._transform._positionX;
-		vY -= _this._transform._positionY;
-		vZ -= _this._transform._positionZ;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = _this._transform._rotation00 * vX + _this._transform._rotation10 * vY + _this._transform._rotation20 * vZ;
-		__tmp__Y = _this._transform._rotation01 * vX + _this._transform._rotation11 * vY + _this._transform._rotation21 * vZ;
-		__tmp__Z = _this._transform._rotation02 * vX + _this._transform._rotation12 * vY + _this._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var v2 = this.localAnchor1;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		var _this1 = this.rigidBody2;
-		var v3;
-		var vX1;
-		var vY1;
-		var vZ1;
-		var v4 = worldAnchor;
-		vX1 = v4.x;
-		vY1 = v4.y;
-		vZ1 = v4.z;
-		vX1 -= _this1._transform._positionX;
-		vY1 -= _this1._transform._positionY;
-		vZ1 -= _this1._transform._positionZ;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = _this1._transform._rotation00 * vX1 + _this1._transform._rotation10 * vY1 + _this1._transform._rotation20 * vZ1;
-		__tmp__Y1 = _this1._transform._rotation01 * vX1 + _this1._transform._rotation11 * vY1 + _this1._transform._rotation21 * vZ1;
-		__tmp__Z1 = _this1._transform._rotation02 * vX1 + _this1._transform._rotation12 * vY1 + _this1._transform._rotation22 * vZ1;
-		vX1 = __tmp__X1;
-		vY1 = __tmp__Y1;
-		vZ1 = __tmp__Z1;
-		var v5 = this.localAnchor2;
-		v5.x = vX1;
-		v5.y = vY1;
-		v5.z = vZ1;
-	}
-}
-oimo.dynamics.constraint.joint.CylindricalJointConfig = class oimo_dynamics_constraint_joint_CylindricalJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
-	constructor() {
-		super();
-		this.localAxis1 = new oimo.common.Vec3(1,0,0);
-		this.localAxis2 = new oimo.common.Vec3(1,0,0);
-		this.translationalLimitMotor = new oimo.dynamics.constraint.joint.TranslationalLimitMotor();
-		this.translationalSpringDamper = new oimo.dynamics.constraint.joint.SpringDamper();
-		this.rotationalLimitMotor = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
-		this.rotationalSpringDamper = new oimo.dynamics.constraint.joint.SpringDamper();
-	}
-	init(rigidBody1,rigidBody2,worldAnchor,worldAxis) {
-		this._init(rigidBody1,rigidBody2,worldAnchor);
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldAxis;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
-		__tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
-		__tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var v2 = this.localAxis1;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		var v3;
-		var vX1;
-		var vY1;
-		var vZ1;
-		var v4 = worldAxis;
-		vX1 = v4.x;
-		vY1 = v4.y;
-		vZ1 = v4.z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
-		__tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
-		__tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
-		vX1 = __tmp__X1;
-		vY1 = __tmp__Y1;
-		vZ1 = __tmp__Z1;
-		var v5 = this.localAxis2;
-		v5.x = vX1;
-		v5.y = vY1;
-		v5.z = vZ1;
-		return this;
-	}
-}
-oimo.dynamics.constraint.joint.GenericJoint = class oimo_dynamics_constraint_joint_GenericJoint extends oimo.dynamics.constraint.joint.Joint {
-	constructor(config) {
-		super(config,oimo.dynamics.constraint.joint.JointType.GENERIC);
-		var tmp;
-		var _this = config.localBasis1;
-		if(!(_this.e00 * (_this.e11 * _this.e22 - _this.e12 * _this.e21) - _this.e01 * (_this.e10 * _this.e22 - _this.e12 * _this.e20) + _this.e02 * (_this.e10 * _this.e21 - _this.e11 * _this.e20) < 0)) {
-			var _this1 = config.localBasis2;
-			tmp = _this1.e00 * (_this1.e11 * _this1.e22 - _this1.e12 * _this1.e21) - _this1.e01 * (_this1.e10 * _this1.e22 - _this1.e12 * _this1.e20) + _this1.e02 * (_this1.e10 * _this1.e21 - _this1.e11 * _this1.e20) < 0;
-		} else {
-			tmp = true;
-		}
-		if(tmp) {
-			console.log("src/oimo/dynamics/constraint/joint/GenericJoint.hx:50:","[warning] joint basis must be right handed");
-		}
-		var lb1;
-		var lb100;
-		var lb101;
-		var lb102;
-		var lb110;
-		var lb111;
-		var lb112;
-		var lb120;
-		var lb121;
-		var lb122;
-		var lb2;
-		var lb200;
-		var lb201;
-		var lb202;
-		var lb210;
-		var lb211;
-		var lb212;
-		var lb220;
-		var lb221;
-		var lb222;
-		var m = config.localBasis1;
-		lb100 = m.e00;
-		lb101 = m.e01;
-		lb102 = m.e02;
-		lb110 = m.e10;
-		lb111 = m.e11;
-		lb112 = m.e12;
-		lb120 = m.e20;
-		lb121 = m.e21;
-		lb122 = m.e22;
-		var m1 = config.localBasis2;
-		lb200 = m1.e00;
-		lb201 = m1.e01;
-		lb202 = m1.e02;
-		lb210 = m1.e10;
-		lb211 = m1.e11;
-		lb212 = m1.e12;
-		lb220 = m1.e20;
-		lb221 = m1.e21;
-		lb222 = m1.e22;
-		this._localBasisX1X = lb100;
-		this._localBasisX1Y = lb110;
-		this._localBasisX1Z = lb120;
-		this._localBasisY1X = lb101;
-		this._localBasisY1Y = lb111;
-		this._localBasisY1Z = lb121;
-		this._localBasisZ1X = lb102;
-		this._localBasisZ1Y = lb112;
-		this._localBasisZ1Z = lb122;
-		this._localBasisX2X = lb200;
-		this._localBasisX2Y = lb210;
-		this._localBasisX2Z = lb220;
-		this._localBasisY2X = lb201;
-		this._localBasisY2Y = lb211;
-		this._localBasisY2Z = lb221;
-		this._localBasisZ2X = lb202;
-		this._localBasisZ2Y = lb212;
-		this._localBasisZ2Z = lb222;
-		this._angleX = 0;
-		this._angleY = 0;
-		this._angleZ = 0;
-		this.translationX = 0;
-		this.translationY = 0;
-		this.translationZ = 0;
-		this.xSingular = false;
-		this.ySingular = false;
-		this.zSingular = false;
-		var this1 = new Array(3);
-		this._translLms = this1;
-		var this2 = new Array(3);
-		this._translSds = this2;
-		var this3 = new Array(3);
-		this._rotLms = this3;
-		var this4 = new Array(3);
-		this._rotSds = this4;
-		this._translLms[0] = config.translationalLimitMotors[0].clone();
-		this._translLms[1] = config.translationalLimitMotors[1].clone();
-		this._translLms[2] = config.translationalLimitMotors[2].clone();
-		this._translSds[0] = config.translationalSpringDampers[0].clone();
-		this._translSds[1] = config.translationalSpringDampers[1].clone();
-		this._translSds[2] = config.translationalSpringDampers[2].clone();
-		this._rotLms[0] = config.rotationalLimitMotors[0].clone();
-		this._rotLms[1] = config.rotationalLimitMotors[1].clone();
-		this._rotLms[2] = config.rotationalLimitMotors[2].clone();
-		this._rotSds[0] = config.rotationalSpringDampers[0].clone();
-		this._rotSds[1] = config.rotationalSpringDampers[1].clone();
-		this._rotSds[2] = config.rotationalSpringDampers[2].clone();
-	}
-	getInfo(info,timeStep,isPositionPart) {
-		var row;
-		var j;
-		var translMotorMass = 1 / (this._b1._invMass + this._b2._invMass);
-		var motorMassX = this.computeEffectiveInertiaMoment(this._axisXX,this._axisXY,this._axisXZ);
-		var motorMassY = this.computeEffectiveInertiaMoment(this._axisYX,this._axisYY,this._axisYZ);
-		var motorMassZ = this.computeEffectiveInertiaMoment(this._axisZX,this._axisZY,this._axisZZ);
-		if(this._translSds[0].frequency <= 0 || !isPositionPart) {
-			var impulse = this._impulses[0];
-			var row1 = info.rows[info.numRows++];
-			var _this = row1.jacobian;
-			_this.lin1X = 0;
-			_this.lin1Y = 0;
-			_this.lin1Z = 0;
-			_this.lin2X = 0;
-			_this.lin2Y = 0;
-			_this.lin2Z = 0;
-			_this.ang1X = 0;
-			_this.ang1Y = 0;
-			_this.ang1Z = 0;
-			_this.ang2X = 0;
-			_this.ang2Y = 0;
-			_this.ang2Z = 0;
-			row1.rhs = 0;
-			row1.cfm = 0;
-			row1.minImpulse = 0;
-			row1.maxImpulse = 0;
-			row1.motorSpeed = 0;
-			row1.motorMaxImpulse = 0;
-			row1.impulse = null;
-			row1.impulse = impulse;
-			row = row1;
-			this.setSolverInfoRowLinear(row,this.translationX,this._translLms[0],translMotorMass,this._translSds[0],timeStep,isPositionPart);
-			j = row.jacobian;
-			j.lin1X = this._basisX1X;
-			j.lin1Y = this._basisX1Y;
-			j.lin1Z = this._basisX1Z;
-			j.lin2X = this._basisX1X;
-			j.lin2Y = this._basisX1Y;
-			j.lin2Z = this._basisX1Z;
-			j.ang1X = this._relativeAnchor1Y * this._basisX1Z - this._relativeAnchor1Z * this._basisX1Y;
-			j.ang1Y = this._relativeAnchor1Z * this._basisX1X - this._relativeAnchor1X * this._basisX1Z;
-			j.ang1Z = this._relativeAnchor1X * this._basisX1Y - this._relativeAnchor1Y * this._basisX1X;
-			j.ang2X = this._relativeAnchor2Y * this._basisX1Z - this._relativeAnchor2Z * this._basisX1Y;
-			j.ang2Y = this._relativeAnchor2Z * this._basisX1X - this._relativeAnchor2X * this._basisX1Z;
-			j.ang2Z = this._relativeAnchor2X * this._basisX1Y - this._relativeAnchor2Y * this._basisX1X;
-		}
-		if(this._translSds[1].frequency <= 0 || !isPositionPart) {
-			var impulse1 = this._impulses[1];
-			var row2 = info.rows[info.numRows++];
-			var _this1 = row2.jacobian;
-			_this1.lin1X = 0;
-			_this1.lin1Y = 0;
-			_this1.lin1Z = 0;
-			_this1.lin2X = 0;
-			_this1.lin2Y = 0;
-			_this1.lin2Z = 0;
-			_this1.ang1X = 0;
-			_this1.ang1Y = 0;
-			_this1.ang1Z = 0;
-			_this1.ang2X = 0;
-			_this1.ang2Y = 0;
-			_this1.ang2Z = 0;
-			row2.rhs = 0;
-			row2.cfm = 0;
-			row2.minImpulse = 0;
-			row2.maxImpulse = 0;
-			row2.motorSpeed = 0;
-			row2.motorMaxImpulse = 0;
-			row2.impulse = null;
-			row2.impulse = impulse1;
-			row = row2;
-			this.setSolverInfoRowLinear(row,this.translationY,this._translLms[1],translMotorMass,this._translSds[1],timeStep,isPositionPart);
-			j = row.jacobian;
-			j.lin1X = this._basisY1X;
-			j.lin1Y = this._basisY1Y;
-			j.lin1Z = this._basisY1Z;
-			j.lin2X = this._basisY1X;
-			j.lin2Y = this._basisY1Y;
-			j.lin2Z = this._basisY1Z;
-			j.ang1X = this._relativeAnchor1Y * this._basisY1Z - this._relativeAnchor1Z * this._basisY1Y;
-			j.ang1Y = this._relativeAnchor1Z * this._basisY1X - this._relativeAnchor1X * this._basisY1Z;
-			j.ang1Z = this._relativeAnchor1X * this._basisY1Y - this._relativeAnchor1Y * this._basisY1X;
-			j.ang2X = this._relativeAnchor2Y * this._basisY1Z - this._relativeAnchor2Z * this._basisY1Y;
-			j.ang2Y = this._relativeAnchor2Z * this._basisY1X - this._relativeAnchor2X * this._basisY1Z;
-			j.ang2Z = this._relativeAnchor2X * this._basisY1Y - this._relativeAnchor2Y * this._basisY1X;
-		}
-		if(this._translSds[2].frequency <= 0 || !isPositionPart) {
-			var impulse2 = this._impulses[2];
-			var row3 = info.rows[info.numRows++];
-			var _this2 = row3.jacobian;
-			_this2.lin1X = 0;
-			_this2.lin1Y = 0;
-			_this2.lin1Z = 0;
-			_this2.lin2X = 0;
-			_this2.lin2Y = 0;
-			_this2.lin2Z = 0;
-			_this2.ang1X = 0;
-			_this2.ang1Y = 0;
-			_this2.ang1Z = 0;
-			_this2.ang2X = 0;
-			_this2.ang2Y = 0;
-			_this2.ang2Z = 0;
-			row3.rhs = 0;
-			row3.cfm = 0;
-			row3.minImpulse = 0;
-			row3.maxImpulse = 0;
-			row3.motorSpeed = 0;
-			row3.motorMaxImpulse = 0;
-			row3.impulse = null;
-			row3.impulse = impulse2;
-			row = row3;
-			this.setSolverInfoRowLinear(row,this.translationZ,this._translLms[2],translMotorMass,this._translSds[2],timeStep,isPositionPart);
-			j = row.jacobian;
-			j.lin1X = this._basisZ1X;
-			j.lin1Y = this._basisZ1Y;
-			j.lin1Z = this._basisZ1Z;
-			j.lin2X = this._basisZ1X;
-			j.lin2Y = this._basisZ1Y;
-			j.lin2Z = this._basisZ1Z;
-			j.ang1X = this._relativeAnchor1Y * this._basisZ1Z - this._relativeAnchor1Z * this._basisZ1Y;
-			j.ang1Y = this._relativeAnchor1Z * this._basisZ1X - this._relativeAnchor1X * this._basisZ1Z;
-			j.ang1Z = this._relativeAnchor1X * this._basisZ1Y - this._relativeAnchor1Y * this._basisZ1X;
-			j.ang2X = this._relativeAnchor2Y * this._basisZ1Z - this._relativeAnchor2Z * this._basisZ1Y;
-			j.ang2Y = this._relativeAnchor2Z * this._basisZ1X - this._relativeAnchor2X * this._basisZ1Z;
-			j.ang2Z = this._relativeAnchor2X * this._basisZ1Y - this._relativeAnchor2Y * this._basisZ1X;
-		}
-		if(!this.xSingular && (this._rotSds[0].frequency <= 0 || !isPositionPart)) {
-			var impulse3 = this._impulses[3];
-			var row4 = info.rows[info.numRows++];
-			var _this3 = row4.jacobian;
-			_this3.lin1X = 0;
-			_this3.lin1Y = 0;
-			_this3.lin1Z = 0;
-			_this3.lin2X = 0;
-			_this3.lin2Y = 0;
-			_this3.lin2Z = 0;
-			_this3.ang1X = 0;
-			_this3.ang1Y = 0;
-			_this3.ang1Z = 0;
-			_this3.ang2X = 0;
-			_this3.ang2Y = 0;
-			_this3.ang2Z = 0;
-			row4.rhs = 0;
-			row4.cfm = 0;
-			row4.minImpulse = 0;
-			row4.maxImpulse = 0;
-			row4.motorSpeed = 0;
-			row4.motorMaxImpulse = 0;
-			row4.impulse = null;
-			row4.impulse = impulse3;
-			row = row4;
-			this.setSolverInfoRowAngular(row,this._angleX,this._rotLms[0],motorMassX,this._rotSds[0],timeStep,isPositionPart);
-			j = row.jacobian;
-			j.ang1X = this._axisXX;
-			j.ang1Y = this._axisXY;
-			j.ang1Z = this._axisXZ;
-			j.ang2X = this._axisXX;
-			j.ang2Y = this._axisXY;
-			j.ang2Z = this._axisXZ;
-		}
-		if(!this.ySingular && (this._rotSds[1].frequency <= 0 || !isPositionPart)) {
-			var impulse4 = this._impulses[4];
-			var row5 = info.rows[info.numRows++];
-			var _this4 = row5.jacobian;
-			_this4.lin1X = 0;
-			_this4.lin1Y = 0;
-			_this4.lin1Z = 0;
-			_this4.lin2X = 0;
-			_this4.lin2Y = 0;
-			_this4.lin2Z = 0;
-			_this4.ang1X = 0;
-			_this4.ang1Y = 0;
-			_this4.ang1Z = 0;
-			_this4.ang2X = 0;
-			_this4.ang2Y = 0;
-			_this4.ang2Z = 0;
-			row5.rhs = 0;
-			row5.cfm = 0;
-			row5.minImpulse = 0;
-			row5.maxImpulse = 0;
-			row5.motorSpeed = 0;
-			row5.motorMaxImpulse = 0;
-			row5.impulse = null;
-			row5.impulse = impulse4;
-			row = row5;
-			this.setSolverInfoRowAngular(row,this._angleY,this._rotLms[1],motorMassY,this._rotSds[1],timeStep,isPositionPart);
-			j = row.jacobian;
-			j.ang1X = this._axisYX;
-			j.ang1Y = this._axisYY;
-			j.ang1Z = this._axisYZ;
-			j.ang2X = this._axisYX;
-			j.ang2Y = this._axisYY;
-			j.ang2Z = this._axisYZ;
-		}
-		if(!this.zSingular && (this._rotSds[2].frequency <= 0 || !isPositionPart)) {
-			var impulse5 = this._impulses[5];
-			var row6 = info.rows[info.numRows++];
-			var _this5 = row6.jacobian;
-			_this5.lin1X = 0;
-			_this5.lin1Y = 0;
-			_this5.lin1Z = 0;
-			_this5.lin2X = 0;
-			_this5.lin2Y = 0;
-			_this5.lin2Z = 0;
-			_this5.ang1X = 0;
-			_this5.ang1Y = 0;
-			_this5.ang1Z = 0;
-			_this5.ang2X = 0;
-			_this5.ang2Y = 0;
-			_this5.ang2Z = 0;
-			row6.rhs = 0;
-			row6.cfm = 0;
-			row6.minImpulse = 0;
-			row6.maxImpulse = 0;
-			row6.motorSpeed = 0;
-			row6.motorMaxImpulse = 0;
-			row6.impulse = null;
-			row6.impulse = impulse5;
-			row = row6;
-			this.setSolverInfoRowAngular(row,this._angleZ,this._rotLms[2],motorMassZ,this._rotSds[2],timeStep,isPositionPart);
-			j = row.jacobian;
-			j.ang1X = this._axisZX;
-			j.ang1Y = this._axisZY;
-			j.ang1Z = this._axisZZ;
-			j.ang2X = this._axisZX;
-			j.ang2Y = this._axisZY;
-			j.ang2Z = this._axisZZ;
-		}
-	}
-	_syncAnchors() {
-		super._syncAnchors();
-		var rot1;
-		var rot100;
-		var rot101;
-		var rot102;
-		var rot110;
-		var rot111;
-		var rot112;
-		var rot120;
-		var rot121;
-		var rot122;
-		var rot2;
-		var rot200;
-		var rot201;
-		var rot202;
-		var rot210;
-		var rot211;
-		var rot212;
-		var rot220;
-		var rot221;
-		var rot222;
-		rot100 = this._basisX1X;
-		rot101 = this._basisY1X;
-		rot102 = this._basisZ1X;
-		rot110 = this._basisX1Y;
-		rot111 = this._basisY1Y;
-		rot112 = this._basisZ1Y;
-		rot120 = this._basisX1Z;
-		rot121 = this._basisY1Z;
-		rot122 = this._basisZ1Z;
-		rot200 = this._basisX2X;
-		rot201 = this._basisY2X;
-		rot202 = this._basisZ2X;
-		rot210 = this._basisX2Y;
-		rot211 = this._basisY2Y;
-		rot212 = this._basisZ2Y;
-		rot220 = this._basisX2Z;
-		rot221 = this._basisY2Z;
-		rot222 = this._basisZ2Z;
-		var relRot;
-		var relRot00;
-		var relRot01;
-		var relRot02;
-		var relRot10;
-		var relRot11;
-		var relRot12;
-		var relRot20;
-		var relRot21;
-		var relRot22;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = rot100 * rot200 + rot110 * rot210 + rot120 * rot220;
-		__tmp__01 = rot100 * rot201 + rot110 * rot211 + rot120 * rot221;
-		__tmp__02 = rot100 * rot202 + rot110 * rot212 + rot120 * rot222;
-		__tmp__10 = rot101 * rot200 + rot111 * rot210 + rot121 * rot220;
-		__tmp__11 = rot101 * rot201 + rot111 * rot211 + rot121 * rot221;
-		__tmp__12 = rot101 * rot202 + rot111 * rot212 + rot121 * rot222;
-		__tmp__20 = rot102 * rot200 + rot112 * rot210 + rot122 * rot220;
-		__tmp__21 = rot102 * rot201 + rot112 * rot211 + rot122 * rot221;
-		__tmp__22 = rot102 * rot202 + rot112 * rot212 + rot122 * rot222;
-		relRot00 = __tmp__00;
-		relRot01 = __tmp__01;
-		relRot02 = __tmp__02;
-		relRot10 = __tmp__10;
-		relRot11 = __tmp__11;
-		relRot12 = __tmp__12;
-		relRot20 = __tmp__20;
-		relRot21 = __tmp__21;
-		relRot22 = __tmp__22;
-		var angleAxisX;
-		var angleAxisXX;
-		var angleAxisXY;
-		var angleAxisXZ;
-		var angleAxisY;
-		var angleAxisYX;
-		var angleAxisYY;
-		var angleAxisYZ;
-		var angleAxisZ;
-		var angleAxisZX;
-		var angleAxisZY;
-		var angleAxisZZ;
-		angleAxisXX = this._basisX1X;
-		angleAxisXY = this._basisX1Y;
-		angleAxisXZ = this._basisX1Z;
-		angleAxisZX = this._basisZ2X;
-		angleAxisZY = this._basisZ2Y;
-		angleAxisZZ = this._basisZ2Z;
-		angleAxisYX = angleAxisZY * angleAxisXZ - angleAxisZZ * angleAxisXY;
-		angleAxisYY = angleAxisZZ * angleAxisXX - angleAxisZX * angleAxisXZ;
-		angleAxisYZ = angleAxisZX * angleAxisXY - angleAxisZY * angleAxisXX;
-		this._axisXX = angleAxisYY * angleAxisZZ - angleAxisYZ * angleAxisZY;
-		this._axisXY = angleAxisYZ * angleAxisZX - angleAxisYX * angleAxisZZ;
-		this._axisXZ = angleAxisYX * angleAxisZY - angleAxisYY * angleAxisZX;
-		this._axisYX = angleAxisYX;
-		this._axisYY = angleAxisYY;
-		this._axisYZ = angleAxisYZ;
-		this._axisZX = angleAxisXY * angleAxisYZ - angleAxisXZ * angleAxisYY;
-		this._axisZY = angleAxisXZ * angleAxisYX - angleAxisXX * angleAxisYZ;
-		this._axisZZ = angleAxisXX * angleAxisYY - angleAxisXY * angleAxisYX;
-		var l = this._axisXX * this._axisXX + this._axisXY * this._axisXY + this._axisXZ * this._axisXZ;
-		if(l > 0) {
-			l = 1 / Math.sqrt(l);
-		}
-		this._axisXX *= l;
-		this._axisXY *= l;
-		this._axisXZ *= l;
-		var l1 = this._axisYX * this._axisYX + this._axisYY * this._axisYY + this._axisYZ * this._axisYZ;
-		if(l1 > 0) {
-			l1 = 1 / Math.sqrt(l1);
-		}
-		this._axisYX *= l1;
-		this._axisYY *= l1;
-		this._axisYZ *= l1;
-		var l2 = this._axisZX * this._axisZX + this._axisZY * this._axisZY + this._axisZZ * this._axisZZ;
-		if(l2 > 0) {
-			l2 = 1 / Math.sqrt(l2);
-		}
-		this._axisZX *= l2;
-		this._axisZY *= l2;
-		this._axisZZ *= l2;
-		this.xSingular = this._axisXX * this._axisXX + this._axisXY * this._axisXY + this._axisXZ * this._axisXZ == 0;
-		this.ySingular = this._axisYX * this._axisYX + this._axisYY * this._axisYY + this._axisYZ * this._axisYZ == 0;
-		this.zSingular = this._axisZX * this._axisZX + this._axisZY * this._axisZY + this._axisZZ * this._axisZZ == 0;
-		var rot11;
-		var rot1001;
-		var rot1011;
-		var rot1021;
-		var rot1101;
-		var rot1111;
-		var rot1121;
-		var rot1201;
-		var rot1211;
-		var rot1221;
-		var rot21;
-		var rot2001;
-		var rot2011;
-		var rot2021;
-		var rot2101;
-		var rot2111;
-		var rot2121;
-		var rot2201;
-		var rot2211;
-		var rot2221;
-		rot1001 = this._basisX1X;
-		rot1011 = this._basisY1X;
-		rot1021 = this._basisZ1X;
-		rot1101 = this._basisX1Y;
-		rot1111 = this._basisY1Y;
-		rot1121 = this._basisZ1Y;
-		rot1201 = this._basisX1Z;
-		rot1211 = this._basisY1Z;
-		rot1221 = this._basisZ1Z;
-		rot2001 = this._basisX2X;
-		rot2011 = this._basisY2X;
-		rot2021 = this._basisZ2X;
-		rot2101 = this._basisX2Y;
-		rot2111 = this._basisY2Y;
-		rot2121 = this._basisZ2Y;
-		rot2201 = this._basisX2Z;
-		rot2211 = this._basisY2Z;
-		rot2221 = this._basisZ2Z;
-		var relRot1;
-		var relRot001;
-		var relRot011;
-		var relRot021;
-		var relRot101;
-		var relRot111;
-		var relRot121;
-		var relRot201;
-		var relRot211;
-		var relRot221;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = rot1001 * rot2001 + rot1101 * rot2101 + rot1201 * rot2201;
-		__tmp__011 = rot1001 * rot2011 + rot1101 * rot2111 + rot1201 * rot2211;
-		__tmp__021 = rot1001 * rot2021 + rot1101 * rot2121 + rot1201 * rot2221;
-		__tmp__101 = rot1011 * rot2001 + rot1111 * rot2101 + rot1211 * rot2201;
-		__tmp__111 = rot1011 * rot2011 + rot1111 * rot2111 + rot1211 * rot2211;
-		__tmp__121 = rot1011 * rot2021 + rot1111 * rot2121 + rot1211 * rot2221;
-		__tmp__201 = rot1021 * rot2001 + rot1121 * rot2101 + rot1221 * rot2201;
-		__tmp__211 = rot1021 * rot2011 + rot1121 * rot2111 + rot1221 * rot2211;
-		__tmp__221 = rot1021 * rot2021 + rot1121 * rot2121 + rot1221 * rot2221;
-		relRot001 = __tmp__001;
-		relRot011 = __tmp__011;
-		relRot021 = __tmp__021;
-		relRot101 = __tmp__101;
-		relRot111 = __tmp__111;
-		relRot121 = __tmp__121;
-		relRot201 = __tmp__201;
-		relRot211 = __tmp__211;
-		relRot221 = __tmp__221;
-		var angles;
-		var anglesX;
-		var anglesY;
-		var anglesZ;
-		var sy = relRot021;
-		if(sy <= -1) {
-			var xSubZ = Math.atan2(relRot211,relRot111);
-			anglesX = xSubZ * 0.5;
-			anglesY = -1.570796326794895;
-			anglesZ = -xSubZ * 0.5;
-		} else if(sy >= 1) {
-			var xAddZ = Math.atan2(relRot211,relRot111);
-			anglesX = xAddZ * 0.5;
-			anglesY = 1.570796326794895;
-			anglesZ = xAddZ * 0.5;
-		} else {
-			var y = Math.asin(sy);
-			var x = Math.atan2(-relRot121,relRot221);
-			var z = Math.atan2(-relRot011,relRot001);
-			anglesX = x;
-			anglesY = y;
-			anglesZ = z;
-		}
-		this._angleX = anglesX;
-		this._angleY = anglesY;
-		this._angleZ = anglesZ;
-		var anchorDiff;
-		var anchorDiffX;
-		var anchorDiffY;
-		var anchorDiffZ;
-		anchorDiffX = this._anchor2X - this._anchor1X;
-		anchorDiffY = this._anchor2Y - this._anchor1Y;
-		anchorDiffZ = this._anchor2Z - this._anchor1Z;
-		this.translationX = anchorDiffX * this._basisX1X + anchorDiffY * this._basisX1Y + anchorDiffZ * this._basisX1Z;
-		this.translationY = anchorDiffX * this._basisY1X + anchorDiffY * this._basisY1Y + anchorDiffZ * this._basisY1Z;
-		this.translationZ = anchorDiffX * this._basisZ1X + anchorDiffY * this._basisZ1Y + anchorDiffZ * this._basisZ1Z;
-	}
-	_getVelocitySolverInfo(timeStep,info) {
-		super._getVelocitySolverInfo(timeStep,info);
-		this.getInfo(info,timeStep,false);
-	}
-	_getPositionSolverInfo(info) {
-		super._getPositionSolverInfo(info);
-		this.getInfo(info,null,true);
-	}
-	getAxisX() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX1X;
-		v1.y = this._basisX1Y;
-		v1.z = this._basisX1Z;
-		return v;
-	}
-	getAxisY() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._axisYX;
-		v1.y = this._axisYY;
-		v1.z = this._axisYZ;
-		return v;
-	}
-	getAxisZ() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisZ2X;
-		v1.y = this._basisZ2Y;
-		v1.z = this._basisZ2Z;
-		return v;
-	}
-	getTranslationalSpringDampers() {
-		return this._translSds.slice(0);
-	}
-	getRotationalSpringDampers() {
-		return this._translSds.slice(0);
-	}
-	getTranslationalLimitMotors() {
-		return this._translLms.slice(0);
-	}
-	getRotationalLimitMotors() {
-		return this._rotLms.slice(0);
-	}
-	getAngles() {
-		return new oimo.common.Vec3(this._angleX,this._angleY,this._angleZ);
-	}
-	getTranslations() {
-		return new oimo.common.Vec3(this.translationX,this.translationY,this.translationZ);
-	}
-}
-oimo.dynamics.constraint.joint.GenericJointConfig = class oimo_dynamics_constraint_joint_GenericJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
-	constructor() {
-		super();
-		this.localBasis1 = new oimo.common.Mat3();
-		this.localBasis2 = new oimo.common.Mat3();
-		var _g = [];
-		_g.push(new oimo.dynamics.constraint.joint.TranslationalLimitMotor().setLimits(0,0));
-		_g.push(new oimo.dynamics.constraint.joint.TranslationalLimitMotor().setLimits(0,0));
-		_g.push(new oimo.dynamics.constraint.joint.TranslationalLimitMotor().setLimits(0,0));
-		this.translationalLimitMotors = _g;
-		var _g1 = [];
-		_g1.push(new oimo.dynamics.constraint.joint.RotationalLimitMotor().setLimits(0,0));
-		_g1.push(new oimo.dynamics.constraint.joint.RotationalLimitMotor().setLimits(0,0));
-		_g1.push(new oimo.dynamics.constraint.joint.RotationalLimitMotor().setLimits(0,0));
-		this.rotationalLimitMotors = _g1;
-		this.translationalSpringDampers = [new oimo.dynamics.constraint.joint.SpringDamper(),new oimo.dynamics.constraint.joint.SpringDamper(),new oimo.dynamics.constraint.joint.SpringDamper()];
-		this.rotationalSpringDampers = [new oimo.dynamics.constraint.joint.SpringDamper(),new oimo.dynamics.constraint.joint.SpringDamper(),new oimo.dynamics.constraint.joint.SpringDamper()];
-	}
-	init(rigidBody1,rigidBody2,worldAnchor,worldBasis1,worldBasis2) {
-		this._init(rigidBody1,rigidBody2,worldAnchor);
-		var tf1 = rigidBody1._transform;
-		var tf2 = rigidBody2._transform;
-		var wb1;
-		var wb100;
-		var wb101;
-		var wb102;
-		var wb110;
-		var wb111;
-		var wb112;
-		var wb120;
-		var wb121;
-		var wb122;
-		var wb2;
-		var wb200;
-		var wb201;
-		var wb202;
-		var wb210;
-		var wb211;
-		var wb212;
-		var wb220;
-		var wb221;
-		var wb222;
-		var lb1;
-		var lb100;
-		var lb101;
-		var lb102;
-		var lb110;
-		var lb111;
-		var lb112;
-		var lb120;
-		var lb121;
-		var lb122;
-		var lb2;
-		var lb200;
-		var lb201;
-		var lb202;
-		var lb210;
-		var lb211;
-		var lb212;
-		var lb220;
-		var lb221;
-		var lb222;
-		var m = worldBasis1;
-		wb100 = m.e00;
-		wb101 = m.e01;
-		wb102 = m.e02;
-		wb110 = m.e10;
-		wb111 = m.e11;
-		wb112 = m.e12;
-		wb120 = m.e20;
-		wb121 = m.e21;
-		wb122 = m.e22;
-		var m1 = worldBasis2;
-		wb200 = m1.e00;
-		wb201 = m1.e01;
-		wb202 = m1.e02;
-		wb210 = m1.e10;
-		wb211 = m1.e11;
-		wb212 = m1.e12;
-		wb220 = m1.e20;
-		wb221 = m1.e21;
-		wb222 = m1.e22;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = tf1._rotation00 * wb100 + tf1._rotation10 * wb110 + tf1._rotation20 * wb120;
-		__tmp__01 = tf1._rotation00 * wb101 + tf1._rotation10 * wb111 + tf1._rotation20 * wb121;
-		__tmp__02 = tf1._rotation00 * wb102 + tf1._rotation10 * wb112 + tf1._rotation20 * wb122;
-		__tmp__10 = tf1._rotation01 * wb100 + tf1._rotation11 * wb110 + tf1._rotation21 * wb120;
-		__tmp__11 = tf1._rotation01 * wb101 + tf1._rotation11 * wb111 + tf1._rotation21 * wb121;
-		__tmp__12 = tf1._rotation01 * wb102 + tf1._rotation11 * wb112 + tf1._rotation21 * wb122;
-		__tmp__20 = tf1._rotation02 * wb100 + tf1._rotation12 * wb110 + tf1._rotation22 * wb120;
-		__tmp__21 = tf1._rotation02 * wb101 + tf1._rotation12 * wb111 + tf1._rotation22 * wb121;
-		__tmp__22 = tf1._rotation02 * wb102 + tf1._rotation12 * wb112 + tf1._rotation22 * wb122;
-		lb100 = __tmp__00;
-		lb101 = __tmp__01;
-		lb102 = __tmp__02;
-		lb110 = __tmp__10;
-		lb111 = __tmp__11;
-		lb112 = __tmp__12;
-		lb120 = __tmp__20;
-		lb121 = __tmp__21;
-		lb122 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = tf2._rotation00 * wb200 + tf2._rotation10 * wb210 + tf2._rotation20 * wb220;
-		__tmp__011 = tf2._rotation00 * wb201 + tf2._rotation10 * wb211 + tf2._rotation20 * wb221;
-		__tmp__021 = tf2._rotation00 * wb202 + tf2._rotation10 * wb212 + tf2._rotation20 * wb222;
-		__tmp__101 = tf2._rotation01 * wb200 + tf2._rotation11 * wb210 + tf2._rotation21 * wb220;
-		__tmp__111 = tf2._rotation01 * wb201 + tf2._rotation11 * wb211 + tf2._rotation21 * wb221;
-		__tmp__121 = tf2._rotation01 * wb202 + tf2._rotation11 * wb212 + tf2._rotation21 * wb222;
-		__tmp__201 = tf2._rotation02 * wb200 + tf2._rotation12 * wb210 + tf2._rotation22 * wb220;
-		__tmp__211 = tf2._rotation02 * wb201 + tf2._rotation12 * wb211 + tf2._rotation22 * wb221;
-		__tmp__221 = tf2._rotation02 * wb202 + tf2._rotation12 * wb212 + tf2._rotation22 * wb222;
-		lb200 = __tmp__001;
-		lb201 = __tmp__011;
-		lb202 = __tmp__021;
-		lb210 = __tmp__101;
-		lb211 = __tmp__111;
-		lb212 = __tmp__121;
-		lb220 = __tmp__201;
-		lb221 = __tmp__211;
-		lb222 = __tmp__221;
-		var m2 = this.localBasis1;
-		m2.e00 = lb100;
-		m2.e01 = lb101;
-		m2.e02 = lb102;
-		m2.e10 = lb110;
-		m2.e11 = lb111;
-		m2.e12 = lb112;
-		m2.e20 = lb120;
-		m2.e21 = lb121;
-		m2.e22 = lb122;
-		var m3 = this.localBasis2;
-		m3.e00 = lb200;
-		m3.e01 = lb201;
-		m3.e02 = lb202;
-		m3.e10 = lb210;
-		m3.e11 = lb211;
-		m3.e12 = lb212;
-		m3.e20 = lb220;
-		m3.e21 = lb221;
-		m3.e22 = lb222;
-		return this;
-	}
-}
-oimo.dynamics.constraint.joint.JointImpulse = class oimo_dynamics_constraint_joint_JointImpulse {
-	constructor() {
-		this.impulse = 0;
-		this.impulseM = 0;
-		this.impulseP = 0;
-	}
-}
-oimo.dynamics.constraint.joint.JointLink = class oimo_dynamics_constraint_joint_JointLink {
-	constructor(joint) {
-		this._joint = joint;
-	}
-	getContact() {
-		return this._joint;
-	}
-	getOther() {
-		return this._other;
-	}
-	getPrev() {
-		return this._prev;
-	}
-	getNext() {
-		return this._next;
-	}
-}
-oimo.dynamics.constraint.joint.JointMacro = class oimo_dynamics_constraint_joint_JointMacro {
-}
-oimo.dynamics.constraint.joint.JointType = class oimo_dynamics_constraint_joint_JointType {
-}
-oimo.dynamics.constraint.joint.PrismaticJoint = class oimo_dynamics_constraint_joint_PrismaticJoint extends oimo.dynamics.constraint.joint.Joint {
-	constructor(config) {
-		super(config,oimo.dynamics.constraint.joint.JointType.PRISMATIC);
-		var v = config.localAxis1;
-		this._localBasisX1X = v.x;
-		this._localBasisX1Y = v.y;
-		this._localBasisX1Z = v.z;
-		var v1 = config.localAxis2;
-		this._localBasisX2X = v1.x;
-		this._localBasisX2Y = v1.y;
-		this._localBasisX2Z = v1.z;
-		this.buildLocalBasesFromX();
-		this._basis = new oimo.dynamics.constraint.joint.BasisTracker(this);
-		this.translation = 0;
-		this.linearErrorY = 0;
-		this.linearErrorZ = 0;
-		this.angularErrorX = 0;
-		this.angularErrorY = 0;
-		this.angularErrorZ = 0;
-		this._sd = config.springDamper.clone();
-		this._lm = config.limitMotor.clone();
-	}
-	getInfo(info,timeStep,isPositionPart) {
-		var erp = this.getErp(timeStep,isPositionPart);
-		var linRhsY = this.linearErrorY * erp;
-		var linRhsZ = this.linearErrorZ * erp;
-		var angRhsX = this.angularErrorX * erp;
-		var angRhsY = this.angularErrorY * erp;
-		var angRhsZ = this.angularErrorZ * erp;
-		var row;
-		var j;
-		var motorMass = 1 / (this._b1._invMass + this._b2._invMass);
-		if(this._sd.frequency <= 0 || !isPositionPart) {
-			var impulse = this._impulses[0];
-			var row1 = info.rows[info.numRows++];
-			var _this = row1.jacobian;
-			_this.lin1X = 0;
-			_this.lin1Y = 0;
-			_this.lin1Z = 0;
-			_this.lin2X = 0;
-			_this.lin2Y = 0;
-			_this.lin2Z = 0;
-			_this.ang1X = 0;
-			_this.ang1Y = 0;
-			_this.ang1Z = 0;
-			_this.ang2X = 0;
-			_this.ang2Y = 0;
-			_this.ang2Z = 0;
-			row1.rhs = 0;
-			row1.cfm = 0;
-			row1.minImpulse = 0;
-			row1.maxImpulse = 0;
-			row1.motorSpeed = 0;
-			row1.motorMaxImpulse = 0;
-			row1.impulse = null;
-			row1.impulse = impulse;
-			row = row1;
-			this.setSolverInfoRowLinear(row,this.translation,this._lm,motorMass,this._sd,timeStep,isPositionPart);
-			j = row.jacobian;
-			j.lin1X = this._basis.xX;
-			j.lin1Y = this._basis.xY;
-			j.lin1Z = this._basis.xZ;
-			j.lin2X = this._basis.xX;
-			j.lin2Y = this._basis.xY;
-			j.lin2Z = this._basis.xZ;
-			j.ang1X = this._relativeAnchor1Y * this._basis.xZ - this._relativeAnchor1Z * this._basis.xY;
-			j.ang1Y = this._relativeAnchor1Z * this._basis.xX - this._relativeAnchor1X * this._basis.xZ;
-			j.ang1Z = this._relativeAnchor1X * this._basis.xY - this._relativeAnchor1Y * this._basis.xX;
-			j.ang2X = this._relativeAnchor2Y * this._basis.xZ - this._relativeAnchor2Z * this._basis.xY;
-			j.ang2Y = this._relativeAnchor2Z * this._basis.xX - this._relativeAnchor2X * this._basis.xZ;
-			j.ang2Z = this._relativeAnchor2X * this._basis.xY - this._relativeAnchor2Y * this._basis.xX;
-		}
-		var impulse1 = this._impulses[1];
-		var row2 = info.rows[info.numRows++];
-		var _this1 = row2.jacobian;
-		_this1.lin1X = 0;
-		_this1.lin1Y = 0;
-		_this1.lin1Z = 0;
-		_this1.lin2X = 0;
-		_this1.lin2Y = 0;
-		_this1.lin2Z = 0;
-		_this1.ang1X = 0;
-		_this1.ang1Y = 0;
-		_this1.ang1Z = 0;
-		_this1.ang2X = 0;
-		_this1.ang2Y = 0;
-		_this1.ang2Z = 0;
-		row2.rhs = 0;
-		row2.cfm = 0;
-		row2.minImpulse = 0;
-		row2.maxImpulse = 0;
-		row2.motorSpeed = 0;
-		row2.motorMaxImpulse = 0;
-		row2.impulse = null;
-		row2.impulse = impulse1;
-		row = row2;
-		row.rhs = linRhsY;
-		row.cfm = 0;
-		row.minImpulse = -1e65536;
-		row.maxImpulse = 1e65536;
-		j = row.jacobian;
-		j.lin1X = this._basis.yX;
-		j.lin1Y = this._basis.yY;
-		j.lin1Z = this._basis.yZ;
-		j.lin2X = this._basis.yX;
-		j.lin2Y = this._basis.yY;
-		j.lin2Z = this._basis.yZ;
-		j.ang1X = this._relativeAnchor1Y * this._basis.yZ - this._relativeAnchor1Z * this._basis.yY;
-		j.ang1Y = this._relativeAnchor1Z * this._basis.yX - this._relativeAnchor1X * this._basis.yZ;
-		j.ang1Z = this._relativeAnchor1X * this._basis.yY - this._relativeAnchor1Y * this._basis.yX;
-		j.ang2X = this._relativeAnchor2Y * this._basis.yZ - this._relativeAnchor2Z * this._basis.yY;
-		j.ang2Y = this._relativeAnchor2Z * this._basis.yX - this._relativeAnchor2X * this._basis.yZ;
-		j.ang2Z = this._relativeAnchor2X * this._basis.yY - this._relativeAnchor2Y * this._basis.yX;
-		var impulse2 = this._impulses[2];
-		var row3 = info.rows[info.numRows++];
-		var _this2 = row3.jacobian;
-		_this2.lin1X = 0;
-		_this2.lin1Y = 0;
-		_this2.lin1Z = 0;
-		_this2.lin2X = 0;
-		_this2.lin2Y = 0;
-		_this2.lin2Z = 0;
-		_this2.ang1X = 0;
-		_this2.ang1Y = 0;
-		_this2.ang1Z = 0;
-		_this2.ang2X = 0;
-		_this2.ang2Y = 0;
-		_this2.ang2Z = 0;
-		row3.rhs = 0;
-		row3.cfm = 0;
-		row3.minImpulse = 0;
-		row3.maxImpulse = 0;
-		row3.motorSpeed = 0;
-		row3.motorMaxImpulse = 0;
-		row3.impulse = null;
-		row3.impulse = impulse2;
-		row = row3;
-		row.rhs = linRhsZ;
-		row.cfm = 0;
-		row.minImpulse = -1e65536;
-		row.maxImpulse = 1e65536;
-		j = row.jacobian;
-		j.lin1X = this._basis.zX;
-		j.lin1Y = this._basis.zY;
-		j.lin1Z = this._basis.zZ;
-		j.lin2X = this._basis.zX;
-		j.lin2Y = this._basis.zY;
-		j.lin2Z = this._basis.zZ;
-		j.ang1X = this._relativeAnchor1Y * this._basis.zZ - this._relativeAnchor1Z * this._basis.zY;
-		j.ang1Y = this._relativeAnchor1Z * this._basis.zX - this._relativeAnchor1X * this._basis.zZ;
-		j.ang1Z = this._relativeAnchor1X * this._basis.zY - this._relativeAnchor1Y * this._basis.zX;
-		j.ang2X = this._relativeAnchor2Y * this._basis.zZ - this._relativeAnchor2Z * this._basis.zY;
-		j.ang2Y = this._relativeAnchor2Z * this._basis.zX - this._relativeAnchor2X * this._basis.zZ;
-		j.ang2Z = this._relativeAnchor2X * this._basis.zY - this._relativeAnchor2Y * this._basis.zX;
-		var impulse3 = this._impulses[3];
-		var row4 = info.rows[info.numRows++];
-		var _this3 = row4.jacobian;
-		_this3.lin1X = 0;
-		_this3.lin1Y = 0;
-		_this3.lin1Z = 0;
-		_this3.lin2X = 0;
-		_this3.lin2Y = 0;
-		_this3.lin2Z = 0;
-		_this3.ang1X = 0;
-		_this3.ang1Y = 0;
-		_this3.ang1Z = 0;
-		_this3.ang2X = 0;
-		_this3.ang2Y = 0;
-		_this3.ang2Z = 0;
-		row4.rhs = 0;
-		row4.cfm = 0;
-		row4.minImpulse = 0;
-		row4.maxImpulse = 0;
-		row4.motorSpeed = 0;
-		row4.motorMaxImpulse = 0;
-		row4.impulse = null;
-		row4.impulse = impulse3;
-		row = row4;
-		row.rhs = angRhsX;
-		row.cfm = 0;
-		row.minImpulse = -1e65536;
-		row.maxImpulse = 1e65536;
-		j = row.jacobian;
-		j.ang1X = 1;
-		j.ang1Y = 0;
-		j.ang1Z = 0;
-		j.ang2X = 1;
-		j.ang2Y = 0;
-		j.ang2Z = 0;
-		var impulse4 = this._impulses[4];
-		var row5 = info.rows[info.numRows++];
-		var _this4 = row5.jacobian;
-		_this4.lin1X = 0;
-		_this4.lin1Y = 0;
-		_this4.lin1Z = 0;
-		_this4.lin2X = 0;
-		_this4.lin2Y = 0;
-		_this4.lin2Z = 0;
-		_this4.ang1X = 0;
-		_this4.ang1Y = 0;
-		_this4.ang1Z = 0;
-		_this4.ang2X = 0;
-		_this4.ang2Y = 0;
-		_this4.ang2Z = 0;
-		row5.rhs = 0;
-		row5.cfm = 0;
-		row5.minImpulse = 0;
-		row5.maxImpulse = 0;
-		row5.motorSpeed = 0;
-		row5.motorMaxImpulse = 0;
-		row5.impulse = null;
-		row5.impulse = impulse4;
-		row = row5;
-		row.rhs = angRhsY;
-		row.cfm = 0;
-		row.minImpulse = -1e65536;
-		row.maxImpulse = 1e65536;
-		j = row.jacobian;
-		j.ang1X = 0;
-		j.ang1Y = 1;
-		j.ang1Z = 0;
-		j.ang2X = 0;
-		j.ang2Y = 1;
-		j.ang2Z = 0;
-		var impulse5 = this._impulses[5];
-		var row6 = info.rows[info.numRows++];
-		var _this5 = row6.jacobian;
-		_this5.lin1X = 0;
-		_this5.lin1Y = 0;
-		_this5.lin1Z = 0;
-		_this5.lin2X = 0;
-		_this5.lin2Y = 0;
-		_this5.lin2Z = 0;
-		_this5.ang1X = 0;
-		_this5.ang1Y = 0;
-		_this5.ang1Z = 0;
-		_this5.ang2X = 0;
-		_this5.ang2Y = 0;
-		_this5.ang2Z = 0;
-		row6.rhs = 0;
-		row6.cfm = 0;
-		row6.minImpulse = 0;
-		row6.maxImpulse = 0;
-		row6.motorSpeed = 0;
-		row6.motorMaxImpulse = 0;
-		row6.impulse = null;
-		row6.impulse = impulse5;
-		row = row6;
-		row.rhs = angRhsZ;
-		row.cfm = 0;
-		row.minImpulse = -1e65536;
-		row.maxImpulse = 1e65536;
-		j = row.jacobian;
-		j.ang1X = 0;
-		j.ang1Y = 0;
-		j.ang1Z = 1;
-		j.ang2X = 0;
-		j.ang2Y = 0;
-		j.ang2Z = 1;
-	}
-	_syncAnchors() {
-		super._syncAnchors();
-		var _this = this._basis;
-		var invM1 = _this.joint._b1._invMass;
-		var invM2 = _this.joint._b2._invMass;
-		var q;
-		var qX;
-		var qY;
-		var qZ;
-		var qW;
-		var idQ;
-		var idQX;
-		var idQY;
-		var idQZ;
-		var idQW;
-		var slerpQ;
-		var slerpQX;
-		var slerpQY;
-		var slerpQZ;
-		var slerpQW;
-		var slerpM;
-		var slerpM00;
-		var slerpM01;
-		var slerpM02;
-		var slerpM10;
-		var slerpM11;
-		var slerpM12;
-		var slerpM20;
-		var slerpM21;
-		var slerpM22;
-		var newX;
-		var newXX;
-		var newXY;
-		var newXZ;
-		var newY;
-		var newYX;
-		var newYY;
-		var newYZ;
-		var newZ;
-		var newZX;
-		var newZY;
-		var newZZ;
-		var prevX;
-		var prevXX;
-		var prevXY;
-		var prevXZ;
-		var prevY;
-		var prevYX;
-		var prevYY;
-		var prevYZ;
-		var d = _this.joint._basisX1X * _this.joint._basisX2X + _this.joint._basisX1Y * _this.joint._basisX2Y + _this.joint._basisX1Z * _this.joint._basisX2Z;
-		if(d < -0.999999999) {
-			var vX;
-			var vY;
-			var vZ;
-			var x1 = _this.joint._basisX1X;
-			var y1 = _this.joint._basisX1Y;
-			var z1 = _this.joint._basisX1Z;
-			var x2 = x1 * x1;
-			var y2 = y1 * y1;
-			var z2 = z1 * z1;
-			var d1;
-			if(x2 < y2) {
-				if(x2 < z2) {
-					d1 = 1 / Math.sqrt(y2 + z2);
-					vX = 0;
-					vY = z1 * d1;
-					vZ = -y1 * d1;
-				} else {
-					d1 = 1 / Math.sqrt(x2 + y2);
-					vX = y1 * d1;
-					vY = -x1 * d1;
-					vZ = 0;
-				}
-			} else if(y2 < z2) {
-				d1 = 1 / Math.sqrt(z2 + x2);
-				vX = -z1 * d1;
-				vY = 0;
-				vZ = x1 * d1;
-			} else {
-				d1 = 1 / Math.sqrt(x2 + y2);
-				vX = y1 * d1;
-				vY = -x1 * d1;
-				vZ = 0;
-			}
-			qX = vX;
-			qY = vY;
-			qZ = vZ;
-			qW = 0;
-		} else {
-			var cX;
-			var cY;
-			var cZ;
-			cX = _this.joint._basisX1Y * _this.joint._basisX2Z - _this.joint._basisX1Z * _this.joint._basisX2Y;
-			cY = _this.joint._basisX1Z * _this.joint._basisX2X - _this.joint._basisX1X * _this.joint._basisX2Z;
-			cZ = _this.joint._basisX1X * _this.joint._basisX2Y - _this.joint._basisX1Y * _this.joint._basisX2X;
-			var w = Math.sqrt((1 + d) * 0.5);
-			d = 0.5 / w;
-			cX *= d;
-			cY *= d;
-			cZ *= d;
-			qX = cX;
-			qY = cY;
-			qZ = cZ;
-			qW = w;
-		}
-		idQX = 0;
-		idQY = 0;
-		idQZ = 0;
-		idQW = 1;
-		var qx;
-		var qy;
-		var qz;
-		var qw;
-		var q1X;
-		var q1Y;
-		var q1Z;
-		var q1W;
-		var q2X;
-		var q2Y;
-		var q2Z;
-		var q2W;
-		q1X = idQX;
-		q1Y = idQY;
-		q1Z = idQZ;
-		q1W = idQW;
-		q2X = qX;
-		q2Y = qY;
-		q2Z = qZ;
-		q2W = qW;
-		var d2 = q1X * q2X + q1Y * q2Y + q1Z * q2Z + q1W * q2W;
-		if(d2 < 0) {
-			d2 = -d2;
-			q2X = -q2X;
-			q2Y = -q2Y;
-			q2Z = -q2Z;
-			q2W = -q2W;
-		}
-		if(d2 > 0.999999) {
-			var dqX;
-			var dqY;
-			var dqZ;
-			var dqW;
-			dqX = q2X - q1X;
-			dqY = q2Y - q1Y;
-			dqZ = q2Z - q1Z;
-			dqW = q2W - q1W;
-			q2X = q1X + dqX * (invM1 / (invM1 + invM2));
-			q2Y = q1Y + dqY * (invM1 / (invM1 + invM2));
-			q2Z = q1Z + dqZ * (invM1 / (invM1 + invM2));
-			q2W = q1W + dqW * (invM1 / (invM1 + invM2));
-			var l = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
-			if(l > 1e-32) {
-				l = 1 / Math.sqrt(l);
-			}
-			slerpQX = q2X * l;
-			slerpQY = q2Y * l;
-			slerpQZ = q2Z * l;
-			slerpQW = q2W * l;
-		} else {
-			var theta = invM1 / (invM1 + invM2) * Math.acos(d2);
-			q2X += q1X * -d2;
-			q2Y += q1Y * -d2;
-			q2Z += q1Z * -d2;
-			q2W += q1W * -d2;
-			var l1 = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
-			if(l1 > 1e-32) {
-				l1 = 1 / Math.sqrt(l1);
-			}
-			q2X *= l1;
-			q2Y *= l1;
-			q2Z *= l1;
-			q2W *= l1;
-			var sin = Math.sin(theta);
-			var cos = Math.cos(theta);
-			q1X *= cos;
-			q1Y *= cos;
-			q1Z *= cos;
-			q1W *= cos;
-			slerpQX = q1X + q2X * sin;
-			slerpQY = q1Y + q2Y * sin;
-			slerpQZ = q1Z + q2Z * sin;
-			slerpQW = q1W + q2W * sin;
-		}
-		var x = slerpQX;
-		var y = slerpQY;
-		var z = slerpQZ;
-		var w1 = slerpQW;
-		var x21 = 2 * x;
-		var y21 = 2 * y;
-		var z21 = 2 * z;
-		var xx = x * x21;
-		var yy = y * y21;
-		var zz = z * z21;
-		var xy = x * y21;
-		var yz = y * z21;
-		var xz = x * z21;
-		var wx = w1 * x21;
-		var wy = w1 * y21;
-		var wz = w1 * z21;
-		slerpM00 = 1 - yy - zz;
-		slerpM01 = xy - wz;
-		slerpM02 = xz + wy;
-		slerpM10 = xy + wz;
-		slerpM11 = 1 - xx - zz;
-		slerpM12 = yz - wx;
-		slerpM20 = xz - wy;
-		slerpM21 = yz + wx;
-		slerpM22 = 1 - xx - yy;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = slerpM00 * _this.joint._basisX1X + slerpM01 * _this.joint._basisX1Y + slerpM02 * _this.joint._basisX1Z;
-		__tmp__Y = slerpM10 * _this.joint._basisX1X + slerpM11 * _this.joint._basisX1Y + slerpM12 * _this.joint._basisX1Z;
-		__tmp__Z = slerpM20 * _this.joint._basisX1X + slerpM21 * _this.joint._basisX1Y + slerpM22 * _this.joint._basisX1Z;
-		newXX = __tmp__X;
-		newXY = __tmp__Y;
-		newXZ = __tmp__Z;
-		prevXX = _this.xX;
-		prevXY = _this.xY;
-		prevXZ = _this.xZ;
-		prevYX = _this.yX;
-		prevYY = _this.yY;
-		prevYZ = _this.yZ;
-		var d3 = prevXX * newXX + prevXY * newXY + prevXZ * newXZ;
-		if(d3 < -0.999999999) {
-			var vX1;
-			var vY1;
-			var vZ1;
-			var x11 = prevXX;
-			var y11 = prevXY;
-			var z11 = prevXZ;
-			var x22 = x11 * x11;
-			var y22 = y11 * y11;
-			var z22 = z11 * z11;
-			var d4;
-			if(x22 < y22) {
-				if(x22 < z22) {
-					d4 = 1 / Math.sqrt(y22 + z22);
-					vX1 = 0;
-					vY1 = z11 * d4;
-					vZ1 = -y11 * d4;
-				} else {
-					d4 = 1 / Math.sqrt(x22 + y22);
-					vX1 = y11 * d4;
-					vY1 = -x11 * d4;
-					vZ1 = 0;
-				}
-			} else if(y22 < z22) {
-				d4 = 1 / Math.sqrt(z22 + x22);
-				vX1 = -z11 * d4;
-				vY1 = 0;
-				vZ1 = x11 * d4;
-			} else {
-				d4 = 1 / Math.sqrt(x22 + y22);
-				vX1 = y11 * d4;
-				vY1 = -x11 * d4;
-				vZ1 = 0;
-			}
-			slerpQX = vX1;
-			slerpQY = vY1;
-			slerpQZ = vZ1;
-			slerpQW = 0;
-		} else {
-			var cX1;
-			var cY1;
-			var cZ1;
-			cX1 = prevXY * newXZ - prevXZ * newXY;
-			cY1 = prevXZ * newXX - prevXX * newXZ;
-			cZ1 = prevXX * newXY - prevXY * newXX;
-			var w2 = Math.sqrt((1 + d3) * 0.5);
-			d3 = 0.5 / w2;
-			cX1 *= d3;
-			cY1 *= d3;
-			cZ1 *= d3;
-			slerpQX = cX1;
-			slerpQY = cY1;
-			slerpQZ = cZ1;
-			slerpQW = w2;
-		}
-		var x3 = slerpQX;
-		var y3 = slerpQY;
-		var z3 = slerpQZ;
-		var w3 = slerpQW;
-		var x23 = 2 * x3;
-		var y23 = 2 * y3;
-		var z23 = 2 * z3;
-		var xx1 = x3 * x23;
-		var yy1 = y3 * y23;
-		var zz1 = z3 * z23;
-		var xy1 = x3 * y23;
-		var yz1 = y3 * z23;
-		var xz1 = x3 * z23;
-		var wx1 = w3 * x23;
-		var wy1 = w3 * y23;
-		var wz1 = w3 * z23;
-		slerpM00 = 1 - yy1 - zz1;
-		slerpM01 = xy1 - wz1;
-		slerpM02 = xz1 + wy1;
-		slerpM10 = xy1 + wz1;
-		slerpM11 = 1 - xx1 - zz1;
-		slerpM12 = yz1 - wx1;
-		slerpM20 = xz1 - wy1;
-		slerpM21 = yz1 + wx1;
-		slerpM22 = 1 - xx1 - yy1;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = slerpM00 * prevYX + slerpM01 * prevYY + slerpM02 * prevYZ;
-		__tmp__Y1 = slerpM10 * prevYX + slerpM11 * prevYY + slerpM12 * prevYZ;
-		__tmp__Z1 = slerpM20 * prevYX + slerpM21 * prevYY + slerpM22 * prevYZ;
-		newYX = __tmp__X1;
-		newYY = __tmp__Y1;
-		newYZ = __tmp__Z1;
-		newZX = newXY * newYZ - newXZ * newYY;
-		newZY = newXZ * newYX - newXX * newYZ;
-		newZZ = newXX * newYY - newXY * newYX;
-		if(newZX * newZX + newZY * newZY + newZZ * newZZ > 1e-6) {
-			var l2 = newZX * newZX + newZY * newZY + newZZ * newZZ;
-			if(l2 > 0) {
-				l2 = 1 / Math.sqrt(l2);
-			}
-			newZX *= l2;
-			newZY *= l2;
-			newZZ *= l2;
-		} else {
-			var x12 = newXX;
-			var y12 = newXY;
-			var z12 = newXZ;
-			var x24 = x12 * x12;
-			var y24 = y12 * y12;
-			var z24 = z12 * z12;
-			var d5;
-			if(x24 < y24) {
-				if(x24 < z24) {
-					d5 = 1 / Math.sqrt(y24 + z24);
-					newZX = 0;
-					newZY = z12 * d5;
-					newZZ = -y12 * d5;
-				} else {
-					d5 = 1 / Math.sqrt(x24 + y24);
-					newZX = y12 * d5;
-					newZY = -x12 * d5;
-					newZZ = 0;
-				}
-			} else if(y24 < z24) {
-				d5 = 1 / Math.sqrt(z24 + x24);
-				newZX = -z12 * d5;
-				newZY = 0;
-				newZZ = x12 * d5;
-			} else {
-				d5 = 1 / Math.sqrt(x24 + y24);
-				newZX = y12 * d5;
-				newZY = -x12 * d5;
-				newZZ = 0;
-			}
-		}
-		newYX = newZY * newXZ - newZZ * newXY;
-		newYY = newZZ * newXX - newZX * newXZ;
-		newYZ = newZX * newXY - newZY * newXX;
-		_this.xX = newXX;
-		_this.xY = newXY;
-		_this.xZ = newXZ;
-		_this.yX = newYX;
-		_this.yY = newYY;
-		_this.yZ = newYZ;
-		_this.zX = newZX;
-		_this.zY = newZY;
-		_this.zZ = newZZ;
-		var rot1;
-		var rot100;
-		var rot101;
-		var rot102;
-		var rot110;
-		var rot111;
-		var rot112;
-		var rot120;
-		var rot121;
-		var rot122;
-		var rot2;
-		var rot200;
-		var rot201;
-		var rot202;
-		var rot210;
-		var rot211;
-		var rot212;
-		var rot220;
-		var rot221;
-		var rot222;
-		rot100 = this._basisX1X;
-		rot101 = this._basisY1X;
-		rot102 = this._basisZ1X;
-		rot110 = this._basisX1Y;
-		rot111 = this._basisY1Y;
-		rot112 = this._basisZ1Y;
-		rot120 = this._basisX1Z;
-		rot121 = this._basisY1Z;
-		rot122 = this._basisZ1Z;
-		rot200 = this._basisX2X;
-		rot201 = this._basisY2X;
-		rot202 = this._basisZ2X;
-		rot210 = this._basisX2Y;
-		rot211 = this._basisY2Y;
-		rot212 = this._basisZ2Y;
-		rot220 = this._basisX2Z;
-		rot221 = this._basisY2Z;
-		rot222 = this._basisZ2Z;
-		var relRot;
-		var relRot00;
-		var relRot01;
-		var relRot02;
-		var relRot10;
-		var relRot11;
-		var relRot12;
-		var relRot20;
-		var relRot21;
-		var relRot22;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = rot200 * rot100 + rot201 * rot101 + rot202 * rot102;
-		__tmp__01 = rot200 * rot110 + rot201 * rot111 + rot202 * rot112;
-		__tmp__02 = rot200 * rot120 + rot201 * rot121 + rot202 * rot122;
-		__tmp__10 = rot210 * rot100 + rot211 * rot101 + rot212 * rot102;
-		__tmp__11 = rot210 * rot110 + rot211 * rot111 + rot212 * rot112;
-		__tmp__12 = rot210 * rot120 + rot211 * rot121 + rot212 * rot122;
-		__tmp__20 = rot220 * rot100 + rot221 * rot101 + rot222 * rot102;
-		__tmp__21 = rot220 * rot110 + rot221 * rot111 + rot222 * rot112;
-		__tmp__22 = rot220 * rot120 + rot221 * rot121 + rot222 * rot122;
-		relRot00 = __tmp__00;
-		relRot01 = __tmp__01;
-		relRot02 = __tmp__02;
-		relRot10 = __tmp__10;
-		relRot11 = __tmp__11;
-		relRot12 = __tmp__12;
-		relRot20 = __tmp__20;
-		relRot21 = __tmp__21;
-		relRot22 = __tmp__22;
-		var relQ;
-		var relQX;
-		var relQY;
-		var relQZ;
-		var relQW;
-		var e00 = relRot00;
-		var e11 = relRot11;
-		var e22 = relRot22;
-		var t = e00 + e11 + e22;
-		var s;
-		if(t > 0) {
-			s = Math.sqrt(t + 1);
-			relQW = 0.5 * s;
-			s = 0.5 / s;
-			relQX = (relRot21 - relRot12) * s;
-			relQY = (relRot02 - relRot20) * s;
-			relQZ = (relRot10 - relRot01) * s;
-		} else if(e00 > e11) {
-			if(e00 > e22) {
-				s = Math.sqrt(e00 - e11 - e22 + 1);
-				relQX = 0.5 * s;
-				s = 0.5 / s;
-				relQY = (relRot01 + relRot10) * s;
-				relQZ = (relRot02 + relRot20) * s;
-				relQW = (relRot21 - relRot12) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				relQZ = 0.5 * s;
-				s = 0.5 / s;
-				relQX = (relRot02 + relRot20) * s;
-				relQY = (relRot12 + relRot21) * s;
-				relQW = (relRot10 - relRot01) * s;
-			}
-		} else if(e11 > e22) {
-			s = Math.sqrt(e11 - e22 - e00 + 1);
-			relQY = 0.5 * s;
-			s = 0.5 / s;
-			relQX = (relRot01 + relRot10) * s;
-			relQZ = (relRot12 + relRot21) * s;
-			relQW = (relRot02 - relRot20) * s;
-		} else {
-			s = Math.sqrt(e22 - e00 - e11 + 1);
-			relQZ = 0.5 * s;
-			s = 0.5 / s;
-			relQX = (relRot02 + relRot20) * s;
-			relQY = (relRot12 + relRot21) * s;
-			relQW = (relRot10 - relRot01) * s;
-		}
-		var cosHalfTheta = relQW;
-		var theta1 = (cosHalfTheta <= -1 ? 3.14159265358979 : cosHalfTheta >= 1 ? 0 : Math.acos(cosHalfTheta)) * 2;
-		this.angularErrorX = relQX;
-		this.angularErrorY = relQY;
-		this.angularErrorZ = relQZ;
-		var l3 = this.angularErrorX * this.angularErrorX + this.angularErrorY * this.angularErrorY + this.angularErrorZ * this.angularErrorZ;
-		if(l3 > 0) {
-			l3 = 1 / Math.sqrt(l3);
-		}
-		this.angularErrorX *= l3;
-		this.angularErrorY *= l3;
-		this.angularErrorZ *= l3;
-		this.angularErrorX *= theta1;
-		this.angularErrorY *= theta1;
-		this.angularErrorZ *= theta1;
-		var anchorDiff;
-		var anchorDiffX;
-		var anchorDiffY;
-		var anchorDiffZ;
-		anchorDiffX = this._anchor2X - this._anchor1X;
-		anchorDiffY = this._anchor2Y - this._anchor1Y;
-		anchorDiffZ = this._anchor2Z - this._anchor1Z;
-		this.translation = anchorDiffX * this._basis.xX + anchorDiffY * this._basis.xY + anchorDiffZ * this._basis.xZ;
-		this.linearErrorY = anchorDiffX * this._basis.yX + anchorDiffY * this._basis.yY + anchorDiffZ * this._basis.yZ;
-		this.linearErrorZ = anchorDiffX * this._basis.zX + anchorDiffY * this._basis.zY + anchorDiffZ * this._basis.zZ;
-	}
-	_getVelocitySolverInfo(timeStep,info) {
-		super._getVelocitySolverInfo(timeStep,info);
-		this.getInfo(info,timeStep,false);
-	}
-	_getPositionSolverInfo(info) {
-		super._getPositionSolverInfo(info);
-		this.getInfo(info,null,true);
-	}
-	getAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX1X;
-		v1.y = this._basisX1Y;
-		v1.z = this._basisX1Z;
-		return v;
-	}
-	getAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX2X;
-		v1.y = this._basisX2Y;
-		v1.z = this._basisX2Z;
-		return v;
-	}
-	getAxis1To(axis) {
-		var v = axis;
-		v.x = this._basisX1X;
-		v.y = this._basisX1Y;
-		v.z = this._basisX1Z;
-	}
-	getAxis2To(axis) {
-		var v = axis;
-		v.x = this._basisX2X;
-		v.y = this._basisX2Y;
-		v.z = this._basisX2Z;
-	}
-	getLocalAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisX1X;
-		v1.y = this._localBasisX1Y;
-		v1.z = this._localBasisX1Z;
-		return v;
-	}
-	getLocalAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisX2X;
-		v1.y = this._localBasisX2Y;
-		v1.z = this._localBasisX2Z;
-		return v;
-	}
-	getLocalAxis1To(axis) {
-		var v = axis;
-		v.x = this._localBasisX1X;
-		v.y = this._localBasisX1Y;
-		v.z = this._localBasisX1Z;
-	}
-	getLocalAxis2To(axis) {
-		var v = axis;
-		v.x = this._localBasisX2X;
-		v.y = this._localBasisX2Y;
-		v.z = this._localBasisX2Z;
-	}
-	getSpringDamper() {
-		return this._sd;
-	}
-	getLimitMotor() {
-		return this._lm;
-	}
-	getTranslation() {
-		return this.translation;
-	}
-}
-oimo.dynamics.constraint.joint.PrismaticJointConfig = class oimo_dynamics_constraint_joint_PrismaticJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
-	constructor() {
-		super();
-		this.localAxis1 = new oimo.common.Vec3(1,0,0);
-		this.localAxis2 = new oimo.common.Vec3(1,0,0);
-		this.limitMotor = new oimo.dynamics.constraint.joint.TranslationalLimitMotor();
-		this.springDamper = new oimo.dynamics.constraint.joint.SpringDamper();
-	}
-	init(rigidBody1,rigidBody2,worldAnchor,worldAxis) {
-		this._init(rigidBody1,rigidBody2,worldAnchor);
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldAxis;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
-		__tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
-		__tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var v2 = this.localAxis1;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		var v3;
-		var vX1;
-		var vY1;
-		var vZ1;
-		var v4 = worldAxis;
-		vX1 = v4.x;
-		vY1 = v4.y;
-		vZ1 = v4.z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
-		__tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
-		__tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
-		vX1 = __tmp__X1;
-		vY1 = __tmp__Y1;
-		vZ1 = __tmp__Z1;
-		var v5 = this.localAxis2;
-		v5.x = vX1;
-		v5.y = vY1;
-		v5.z = vZ1;
-		return this;
-	}
-}
-oimo.dynamics.constraint.joint.RagdollJoint = class oimo_dynamics_constraint_joint_RagdollJoint extends oimo.dynamics.constraint.joint.Joint {
-	constructor(config) {
-		super(config,oimo.dynamics.constraint.joint.JointType.RAGDOLL);
-		var v = config.localTwistAxis1;
-		this._localBasisX1X = v.x;
-		this._localBasisX1Y = v.y;
-		this._localBasisX1Z = v.z;
-		var v1 = config.localSwingAxis1;
-		this._localBasisY1X = v1.x;
-		this._localBasisY1Y = v1.y;
-		this._localBasisY1Z = v1.z;
-		var v2 = config.localTwistAxis2;
-		this._localBasisX2X = v2.x;
-		this._localBasisX2Y = v2.y;
-		this._localBasisX2Z = v2.z;
-		this.buildLocalBasesFromXY1X2();
-		this._twistSd = config.twistSpringDamper.clone();
-		this._twistLm = config.twistLimitMotor.clone();
-		this._swingSd = config.swingSpringDamper.clone();
-		this._maxSwingAngle1 = config.maxSwingAngle1;
-		this._maxSwingAngle2 = config.maxSwingAngle2;
-		if(this._maxSwingAngle1 < oimo.common.Setting.minRagdollMaxSwingAngle) {
-			this._maxSwingAngle1 = oimo.common.Setting.minRagdollMaxSwingAngle;
-		}
-		if(this._maxSwingAngle2 < oimo.common.Setting.minRagdollMaxSwingAngle) {
-			this._maxSwingAngle2 = oimo.common.Setting.minRagdollMaxSwingAngle;
-		}
-		this.dummySwingLm = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
-		this.dummySwingLm.lowerLimit = -1;
-		this.dummySwingLm.upperLimit = 0;
-		this._swingAngle = 0;
-		this._twistAngle = 0;
-		this.swingError = 0;
-		this.swingAxisX = 0;
-		this.swingAxisY = 0;
-		this.swingAxisZ = 0;
-		this.twistAxisX = 0;
-		this.twistAxisY = 0;
-		this.twistAxisZ = 0;
-	}
-	getInfo(info,timeStep,isPositionPart) {
-		var erp = this.getErp(timeStep,isPositionPart);
-		var linearRhs;
-		var linearRhsX;
-		var linearRhsY;
-		var linearRhsZ;
-		linearRhsX = this.linearErrorX * erp;
-		linearRhsY = this.linearErrorY * erp;
-		linearRhsZ = this.linearErrorZ * erp;
-		var linRhsX = linearRhsX;
-		var linRhsY = linearRhsY;
-		var linRhsZ = linearRhsZ;
-		var crossR1;
-		var crossR100;
-		var crossR101;
-		var crossR102;
-		var crossR110;
-		var crossR111;
-		var crossR112;
-		var crossR120;
-		var crossR121;
-		var crossR122;
-		var crossR2;
-		var crossR200;
-		var crossR201;
-		var crossR202;
-		var crossR210;
-		var crossR211;
-		var crossR212;
-		var crossR220;
-		var crossR221;
-		var crossR222;
-		crossR100 = 0;
-		crossR101 = -this._relativeAnchor1Z;
-		crossR102 = this._relativeAnchor1Y;
-		crossR110 = this._relativeAnchor1Z;
-		crossR111 = 0;
-		crossR112 = -this._relativeAnchor1X;
-		crossR120 = -this._relativeAnchor1Y;
-		crossR121 = this._relativeAnchor1X;
-		crossR122 = 0;
-		crossR200 = 0;
-		crossR201 = -this._relativeAnchor2Z;
-		crossR202 = this._relativeAnchor2Y;
-		crossR210 = this._relativeAnchor2Z;
-		crossR211 = 0;
-		crossR212 = -this._relativeAnchor2X;
-		crossR220 = -this._relativeAnchor2Y;
-		crossR221 = this._relativeAnchor2X;
-		crossR222 = 0;
-		crossR100 = -crossR100;
-		crossR101 = -crossR101;
-		crossR102 = -crossR102;
-		crossR110 = -crossR110;
-		crossR111 = -crossR111;
-		crossR112 = -crossR112;
-		crossR120 = -crossR120;
-		crossR121 = -crossR121;
-		crossR122 = -crossR122;
-		crossR200 = -crossR200;
-		crossR201 = -crossR201;
-		crossR202 = -crossR202;
-		crossR210 = -crossR210;
-		crossR211 = -crossR211;
-		crossR212 = -crossR212;
-		crossR220 = -crossR220;
-		crossR221 = -crossR221;
-		crossR222 = -crossR222;
-		var swingMass = this.computeEffectiveInertiaMoment(this.swingAxisX,this.swingAxisY,this.swingAxisZ);
-		var twistMass = this.computeEffectiveInertiaMoment(this._basisX2X,this._basisX2Y,this._basisX2Z);
-		var impulse = this._impulses[0];
-		var row = info.rows[info.numRows++];
-		var _this = row.jacobian;
-		_this.lin1X = 0;
-		_this.lin1Y = 0;
-		_this.lin1Z = 0;
-		_this.lin2X = 0;
-		_this.lin2Y = 0;
-		_this.lin2Z = 0;
-		_this.ang1X = 0;
-		_this.ang1Y = 0;
-		_this.ang1Z = 0;
-		_this.ang2X = 0;
-		_this.ang2Y = 0;
-		_this.ang2Z = 0;
-		row.rhs = 0;
-		row.cfm = 0;
-		row.minImpulse = 0;
-		row.maxImpulse = 0;
-		row.motorSpeed = 0;
-		row.motorMaxImpulse = 0;
-		row.impulse = null;
-		row.impulse = impulse;
-		var row1 = row;
-		row1.rhs = linRhsX;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		var j = row1.jacobian;
-		j.lin1X = 1;
-		j.lin1Y = 0;
-		j.lin1Z = 0;
-		j.lin2X = 1;
-		j.lin2Y = 0;
-		j.lin2Z = 0;
-		j.ang1X = crossR100;
-		j.ang1Y = crossR101;
-		j.ang1Z = crossR102;
-		j.ang2X = crossR200;
-		j.ang2Y = crossR201;
-		j.ang2Z = crossR202;
-		var impulse1 = this._impulses[1];
-		var row2 = info.rows[info.numRows++];
-		var _this1 = row2.jacobian;
-		_this1.lin1X = 0;
-		_this1.lin1Y = 0;
-		_this1.lin1Z = 0;
-		_this1.lin2X = 0;
-		_this1.lin2Y = 0;
-		_this1.lin2Z = 0;
-		_this1.ang1X = 0;
-		_this1.ang1Y = 0;
-		_this1.ang1Z = 0;
-		_this1.ang2X = 0;
-		_this1.ang2Y = 0;
-		_this1.ang2Z = 0;
-		row2.rhs = 0;
-		row2.cfm = 0;
-		row2.minImpulse = 0;
-		row2.maxImpulse = 0;
-		row2.motorSpeed = 0;
-		row2.motorMaxImpulse = 0;
-		row2.impulse = null;
-		row2.impulse = impulse1;
-		row1 = row2;
-		row1.rhs = linRhsY;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.lin1X = 0;
-		j.lin1Y = 1;
-		j.lin1Z = 0;
-		j.lin2X = 0;
-		j.lin2Y = 1;
-		j.lin2Z = 0;
-		j.ang1X = crossR110;
-		j.ang1Y = crossR111;
-		j.ang1Z = crossR112;
-		j.ang2X = crossR210;
-		j.ang2Y = crossR211;
-		j.ang2Z = crossR212;
-		var impulse2 = this._impulses[2];
-		var row3 = info.rows[info.numRows++];
-		var _this2 = row3.jacobian;
-		_this2.lin1X = 0;
-		_this2.lin1Y = 0;
-		_this2.lin1Z = 0;
-		_this2.lin2X = 0;
-		_this2.lin2Y = 0;
-		_this2.lin2Z = 0;
-		_this2.ang1X = 0;
-		_this2.ang1Y = 0;
-		_this2.ang1Z = 0;
-		_this2.ang2X = 0;
-		_this2.ang2Y = 0;
-		_this2.ang2Z = 0;
-		row3.rhs = 0;
-		row3.cfm = 0;
-		row3.minImpulse = 0;
-		row3.maxImpulse = 0;
-		row3.motorSpeed = 0;
-		row3.motorMaxImpulse = 0;
-		row3.impulse = null;
-		row3.impulse = impulse2;
-		row1 = row3;
-		row1.rhs = linRhsZ;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.lin1X = 0;
-		j.lin1Y = 0;
-		j.lin1Z = 1;
-		j.lin2X = 0;
-		j.lin2Y = 0;
-		j.lin2Z = 1;
-		j.ang1X = crossR120;
-		j.ang1Y = crossR121;
-		j.ang1Z = crossR122;
-		j.ang2X = crossR220;
-		j.ang2Y = crossR221;
-		j.ang2Z = crossR222;
-		if(this.swingError > 0 && (this._swingSd.frequency <= 0 || !isPositionPart)) {
-			var impulse3 = this._impulses[3];
-			var row4 = info.rows[info.numRows++];
-			var _this3 = row4.jacobian;
-			_this3.lin1X = 0;
-			_this3.lin1Y = 0;
-			_this3.lin1Z = 0;
-			_this3.lin2X = 0;
-			_this3.lin2Y = 0;
-			_this3.lin2Z = 0;
-			_this3.ang1X = 0;
-			_this3.ang1Y = 0;
-			_this3.ang1Z = 0;
-			_this3.ang2X = 0;
-			_this3.ang2Y = 0;
-			_this3.ang2Z = 0;
-			row4.rhs = 0;
-			row4.cfm = 0;
-			row4.minImpulse = 0;
-			row4.maxImpulse = 0;
-			row4.motorSpeed = 0;
-			row4.motorMaxImpulse = 0;
-			row4.impulse = null;
-			row4.impulse = impulse3;
-			row1 = row4;
-			this.setSolverInfoRowAngular(row1,this.swingError,this.dummySwingLm,swingMass,this._swingSd,timeStep,isPositionPart);
-			j = row1.jacobian;
-			j.ang1X = this.swingAxisX;
-			j.ang1Y = this.swingAxisY;
-			j.ang1Z = this.swingAxisZ;
-			j.ang2X = this.swingAxisX;
-			j.ang2Y = this.swingAxisY;
-			j.ang2Z = this.swingAxisZ;
-		}
-		if(this._twistSd.frequency <= 0 || !isPositionPart) {
-			var impulse4 = this._impulses[4];
-			var row5 = info.rows[info.numRows++];
-			var _this4 = row5.jacobian;
-			_this4.lin1X = 0;
-			_this4.lin1Y = 0;
-			_this4.lin1Z = 0;
-			_this4.lin2X = 0;
-			_this4.lin2Y = 0;
-			_this4.lin2Z = 0;
-			_this4.ang1X = 0;
-			_this4.ang1Y = 0;
-			_this4.ang1Z = 0;
-			_this4.ang2X = 0;
-			_this4.ang2Y = 0;
-			_this4.ang2Z = 0;
-			row5.rhs = 0;
-			row5.cfm = 0;
-			row5.minImpulse = 0;
-			row5.maxImpulse = 0;
-			row5.motorSpeed = 0;
-			row5.motorMaxImpulse = 0;
-			row5.impulse = null;
-			row5.impulse = impulse4;
-			row1 = row5;
-			this.setSolverInfoRowAngular(row1,this._twistAngle,this._twistLm,twistMass,this._twistSd,timeStep,isPositionPart);
-			j = row1.jacobian;
-			j.ang1X = this.twistAxisX;
-			j.ang1Y = this.twistAxisY;
-			j.ang1Z = this.twistAxisZ;
-			j.ang2X = this.twistAxisX;
-			j.ang2Y = this.twistAxisY;
-			j.ang2Z = this.twistAxisZ;
-		}
-	}
-	_syncAnchors() {
-		super._syncAnchors();
-		var tf1 = this._b1._transform;
-		var tf2 = this._b2._transform;
-		var axis1;
-		var axis1X;
-		var axis1Y;
-		var axis1Z;
-		var axis2;
-		var axis2X;
-		var axis2Y;
-		var axis2Z;
-		axis1X = this._basisX1X;
-		axis1Y = this._basisX1Y;
-		axis1Z = this._basisX1Z;
-		axis2X = this._basisX2X;
-		axis2Y = this._basisX2Y;
-		axis2Z = this._basisX2Z;
-		var basis1Mat;
-		var basis1Mat00;
-		var basis1Mat01;
-		var basis1Mat02;
-		var basis1Mat10;
-		var basis1Mat11;
-		var basis1Mat12;
-		var basis1Mat20;
-		var basis1Mat21;
-		var basis1Mat22;
-		var basis2Mat;
-		var basis2Mat00;
-		var basis2Mat01;
-		var basis2Mat02;
-		var basis2Mat10;
-		var basis2Mat11;
-		var basis2Mat12;
-		var basis2Mat20;
-		var basis2Mat21;
-		var basis2Mat22;
-		basis1Mat00 = this._basisX1X;
-		basis1Mat01 = this._basisY1X;
-		basis1Mat02 = this._basisZ1X;
-		basis1Mat10 = this._basisX1Y;
-		basis1Mat11 = this._basisY1Y;
-		basis1Mat12 = this._basisZ1Y;
-		basis1Mat20 = this._basisX1Z;
-		basis1Mat21 = this._basisY1Z;
-		basis1Mat22 = this._basisZ1Z;
-		basis2Mat00 = this._basisX2X;
-		basis2Mat01 = this._basisY2X;
-		basis2Mat02 = this._basisZ2X;
-		basis2Mat10 = this._basisX2Y;
-		basis2Mat11 = this._basisY2Y;
-		basis2Mat12 = this._basisZ2Y;
-		basis2Mat20 = this._basisX2Z;
-		basis2Mat21 = this._basisY2Z;
-		basis2Mat22 = this._basisZ2Z;
-		var swingQ;
-		var swingQX;
-		var swingQY;
-		var swingQZ;
-		var swingQW;
-		var swingM;
-		var swingM00;
-		var swingM01;
-		var swingM02;
-		var swingM10;
-		var swingM11;
-		var swingM12;
-		var swingM20;
-		var swingM21;
-		var swingM22;
-		var swingV;
-		var swingVX;
-		var swingVY;
-		var swingVZ;
-		var d = axis1X * axis2X + axis1Y * axis2Y + axis1Z * axis2Z;
-		if(d < -0.999999999) {
-			var vX;
-			var vY;
-			var vZ;
-			var x1 = axis1X;
-			var y1 = axis1Y;
-			var z1 = axis1Z;
-			var x2 = x1 * x1;
-			var y2 = y1 * y1;
-			var z2 = z1 * z1;
-			var d1;
-			if(x2 < y2) {
-				if(x2 < z2) {
-					d1 = 1 / Math.sqrt(y2 + z2);
-					vX = 0;
-					vY = z1 * d1;
-					vZ = -y1 * d1;
-				} else {
-					d1 = 1 / Math.sqrt(x2 + y2);
-					vX = y1 * d1;
-					vY = -x1 * d1;
-					vZ = 0;
-				}
-			} else if(y2 < z2) {
-				d1 = 1 / Math.sqrt(z2 + x2);
-				vX = -z1 * d1;
-				vY = 0;
-				vZ = x1 * d1;
-			} else {
-				d1 = 1 / Math.sqrt(x2 + y2);
-				vX = y1 * d1;
-				vY = -x1 * d1;
-				vZ = 0;
-			}
-			swingQX = vX;
-			swingQY = vY;
-			swingQZ = vZ;
-			swingQW = 0;
-		} else {
-			var cX;
-			var cY;
-			var cZ;
-			cX = axis1Y * axis2Z - axis1Z * axis2Y;
-			cY = axis1Z * axis2X - axis1X * axis2Z;
-			cZ = axis1X * axis2Y - axis1Y * axis2X;
-			var w = Math.sqrt((1 + d) * 0.5);
-			d = 0.5 / w;
-			cX *= d;
-			cY *= d;
-			cZ *= d;
-			swingQX = cX;
-			swingQY = cY;
-			swingQZ = cZ;
-			swingQW = w;
-		}
-		var x = swingQX;
-		var y = swingQY;
-		var z = swingQZ;
-		var w1 = swingQW;
-		var x21 = 2 * x;
-		var y21 = 2 * y;
-		var z21 = 2 * z;
-		var xx = x * x21;
-		var yy = y * y21;
-		var zz = z * z21;
-		var xy = x * y21;
-		var yz = y * z21;
-		var xz = x * z21;
-		var wx = w1 * x21;
-		var wy = w1 * y21;
-		var wz = w1 * z21;
-		swingM00 = 1 - yy - zz;
-		swingM01 = xy - wz;
-		swingM02 = xz + wy;
-		swingM10 = xy + wz;
-		swingM11 = 1 - xx - zz;
-		swingM12 = yz - wx;
-		swingM20 = xz - wy;
-		swingM21 = yz + wx;
-		swingM22 = 1 - xx - yy;
-		this._swingAngle = (swingQW <= -1 ? 3.14159265358979 : swingQW >= 1 ? 0 : Math.acos(swingQW)) * 2;
-		swingVX = swingQX;
-		swingVY = swingQY;
-		swingVZ = swingQZ;
-		var basisY2In1;
-		var basisY2In1X;
-		var basisY2In1Y;
-		var basisY2In1Z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = swingM00 * this._basisY2X + swingM10 * this._basisY2Y + swingM20 * this._basisY2Z;
-		__tmp__Y = swingM01 * this._basisY2X + swingM11 * this._basisY2Y + swingM21 * this._basisY2Z;
-		__tmp__Z = swingM02 * this._basisY2X + swingM12 * this._basisY2Y + swingM22 * this._basisY2Z;
-		basisY2In1X = __tmp__X;
-		basisY2In1Y = __tmp__Y;
-		basisY2In1Z = __tmp__Z;
-		var yCoord = this._basisY1X * basisY2In1X + this._basisY1Y * basisY2In1Y + this._basisY1Z * basisY2In1Z;
-		var zCoord = this._basisZ1X * basisY2In1X + this._basisZ1Y * basisY2In1Y + this._basisZ1Z * basisY2In1Z;
-		this._twistAngle = Math.atan2(zCoord,yCoord);
-		this.twistAxisX = this._basisX1X + this._basisX2X;
-		this.twistAxisY = this._basisX1Y + this._basisX2Y;
-		this.twistAxisZ = this._basisX1Z + this._basisX2Z;
-		var l = this.twistAxisX * this.twistAxisX + this.twistAxisY * this.twistAxisY + this.twistAxisZ * this.twistAxisZ;
-		if(l > 0) {
-			l = 1 / Math.sqrt(l);
-		}
-		this.twistAxisX *= l;
-		this.twistAxisY *= l;
-		this.twistAxisZ *= l;
-		var invLen = Math.sqrt(swingVX * swingVX + swingVY * swingVY + swingVZ * swingVZ);
-		if(invLen > 0) {
-			invLen = 1 / invLen;
-		}
-		swingVX *= invLen * this._swingAngle;
-		swingVY *= invLen * this._swingAngle;
-		swingVZ *= invLen * this._swingAngle;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = basis1Mat00 * swingVX + basis1Mat10 * swingVY + basis1Mat20 * swingVZ;
-		__tmp__Y1 = basis1Mat01 * swingVX + basis1Mat11 * swingVY + basis1Mat21 * swingVZ;
-		__tmp__Z1 = basis1Mat02 * swingVX + basis1Mat12 * swingVY + basis1Mat22 * swingVZ;
-		swingVX = __tmp__X1;
-		swingVY = __tmp__Y1;
-		swingVZ = __tmp__Z1;
-		var x3 = swingVY;
-		var y3 = swingVZ;
-		var a = this._maxSwingAngle1;
-		var b = this._maxSwingAngle2;
-		var invA2 = 1 / (a * a);
-		var invB2 = 1 / (b * b);
-		var w2 = x3 * x3 * invA2 + y3 * y3 * invB2;
-		if(w2 == 0) {
-			this.swingAxisX = 0;
-			this.swingAxisY = 0;
-			this.swingAxisZ = 0;
-			this.swingError = 0;
-		} else {
-			var t = Math.sqrt(1 / w2);
-			var x0 = x3 * t;
-			var y0 = y3 * t;
-			var nx = x0 * invA2;
-			var ny = y0 * invB2;
-			invLen = 1 / Math.sqrt(nx * nx + ny * ny);
-			nx *= invLen;
-			ny *= invLen;
-			var depth = (x3 - x0) * nx + (y3 - y0) * ny;
-			if(depth > 0) {
-				this.swingError = depth;
-				this.swingAxisX = 0;
-				this.swingAxisY = nx;
-				this.swingAxisZ = ny;
-				var __tmp__X2;
-				var __tmp__Y2;
-				var __tmp__Z2;
-				__tmp__X2 = basis1Mat00 * this.swingAxisX + basis1Mat01 * this.swingAxisY + basis1Mat02 * this.swingAxisZ;
-				__tmp__Y2 = basis1Mat10 * this.swingAxisX + basis1Mat11 * this.swingAxisY + basis1Mat12 * this.swingAxisZ;
-				__tmp__Z2 = basis1Mat20 * this.swingAxisX + basis1Mat21 * this.swingAxisY + basis1Mat22 * this.swingAxisZ;
-				this.swingAxisX = __tmp__X2;
-				this.swingAxisY = __tmp__Y2;
-				this.swingAxisZ = __tmp__Z2;
-				var __tmp__X3;
-				var __tmp__Y3;
-				var __tmp__Z3;
-				__tmp__X3 = swingM00 * this.swingAxisX + swingM01 * this.swingAxisY + swingM02 * this.swingAxisZ;
-				__tmp__Y3 = swingM10 * this.swingAxisX + swingM11 * this.swingAxisY + swingM12 * this.swingAxisZ;
-				__tmp__Z3 = swingM20 * this.swingAxisX + swingM21 * this.swingAxisY + swingM22 * this.swingAxisZ;
-				this.swingAxisX = __tmp__X3;
-				this.swingAxisY = __tmp__Y3;
-				this.swingAxisZ = __tmp__Z3;
-			} else {
-				this.swingError = 0;
-			}
-		}
-		this.linearErrorX = this._anchor2X - this._anchor1X;
-		this.linearErrorY = this._anchor2Y - this._anchor1Y;
-		this.linearErrorZ = this._anchor2Z - this._anchor1Z;
-	}
-	_getVelocitySolverInfo(timeStep,info) {
-		super._getVelocitySolverInfo(timeStep,info);
-		this.getInfo(info,timeStep,false);
-	}
-	_getPositionSolverInfo(info) {
-		super._getPositionSolverInfo(info);
-		this.getInfo(info,null,true);
-	}
-	getAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX1X;
-		v1.y = this._basisX1Y;
-		v1.z = this._basisX1Z;
-		return v;
-	}
-	getAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX2X;
-		v1.y = this._basisX2Y;
-		v1.z = this._basisX2Z;
-		return v;
-	}
-	getAxis1To(axis) {
-		var v = axis;
-		v.x = this._basisX1X;
-		v.y = this._basisX1Y;
-		v.z = this._basisX1Z;
-	}
-	getAxis2To(axis) {
-		var v = axis;
-		v.x = this._basisX2X;
-		v.y = this._basisX2Y;
-		v.z = this._basisX2Z;
-	}
-	getLocalAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisX1X;
-		v1.y = this._localBasisX1Y;
-		v1.z = this._localBasisX1Z;
-		return v;
-	}
-	getLocalAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisX2X;
-		v1.y = this._localBasisX2Y;
-		v1.z = this._localBasisX2Z;
-		return v;
-	}
-	getLocalAxis1To(axis) {
-		var v = axis;
-		v.x = this._localBasisX1X;
-		v.y = this._localBasisX1Y;
-		v.z = this._localBasisX1Z;
-	}
-	getLocalAxis2To(axis) {
-		var v = axis;
-		v.x = this._localBasisX2X;
-		v.y = this._localBasisX2Y;
-		v.z = this._localBasisX2Z;
-	}
-	getTwistSpringDamper() {
-		return this._twistSd;
-	}
-	getTwistLimitMotor() {
-		return this._twistLm;
-	}
-	getSwingSpringDamper() {
-		return this._swingSd;
-	}
-	getSwingAxis() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this.swingAxisX;
-		v1.y = this.swingAxisY;
-		v1.z = this.swingAxisZ;
-		return v;
-	}
-	getSwingAxisTo(axis) {
-		var v = axis;
-		v.x = this.swingAxisX;
-		v.y = this.swingAxisY;
-		v.z = this.swingAxisZ;
-	}
-	getSwingAngle() {
-		return this._swingAngle;
-	}
-	getTwistAngle() {
-		return this._twistAngle;
-	}
-}
-oimo.dynamics.constraint.joint.RagdollJointConfig = class oimo_dynamics_constraint_joint_RagdollJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
-	constructor() {
-		super();
-		this.localTwistAxis1 = new oimo.common.Vec3(1,0,0);
-		this.localTwistAxis2 = new oimo.common.Vec3(1,0,0);
-		this.localSwingAxis1 = new oimo.common.Vec3(0,1,0);
-		this.twistSpringDamper = new oimo.dynamics.constraint.joint.SpringDamper();
-		this.swingSpringDamper = new oimo.dynamics.constraint.joint.SpringDamper();
-		this.twistLimitMotor = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
-		this.maxSwingAngle1 = 3.14159265358979;
-		this.maxSwingAngle2 = 3.14159265358979;
-	}
-	init(rigidBody1,rigidBody2,worldAnchor,worldTwistAxis,worldSwingAxis) {
-		this._init(rigidBody1,rigidBody2,worldAnchor);
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldTwistAxis;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
-		__tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
-		__tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var v2 = this.localTwistAxis1;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		var v3;
-		var vX1;
-		var vY1;
-		var vZ1;
-		var v4 = worldTwistAxis;
-		vX1 = v4.x;
-		vY1 = v4.y;
-		vZ1 = v4.z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
-		__tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
-		__tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
-		vX1 = __tmp__X1;
-		vY1 = __tmp__Y1;
-		vZ1 = __tmp__Z1;
-		var v5 = this.localTwistAxis2;
-		v5.x = vX1;
-		v5.y = vY1;
-		v5.z = vZ1;
-		var v6;
-		var vX2;
-		var vY2;
-		var vZ2;
-		var v7 = worldSwingAxis;
-		vX2 = v7.x;
-		vY2 = v7.y;
-		vZ2 = v7.z;
-		var __tmp__X2;
-		var __tmp__Y2;
-		var __tmp__Z2;
-		__tmp__X2 = rigidBody1._transform._rotation00 * vX2 + rigidBody1._transform._rotation10 * vY2 + rigidBody1._transform._rotation20 * vZ2;
-		__tmp__Y2 = rigidBody1._transform._rotation01 * vX2 + rigidBody1._transform._rotation11 * vY2 + rigidBody1._transform._rotation21 * vZ2;
-		__tmp__Z2 = rigidBody1._transform._rotation02 * vX2 + rigidBody1._transform._rotation12 * vY2 + rigidBody1._transform._rotation22 * vZ2;
-		vX2 = __tmp__X2;
-		vY2 = __tmp__Y2;
-		vZ2 = __tmp__Z2;
-		var v8 = this.localSwingAxis1;
-		v8.x = vX2;
-		v8.y = vY2;
-		v8.z = vZ2;
-		return this;
-	}
-}
-oimo.dynamics.constraint.joint.RevoluteJoint = class oimo_dynamics_constraint_joint_RevoluteJoint extends oimo.dynamics.constraint.joint.Joint {
-	constructor(config) {
-		super(config,1);
-		var v = config.localAxis1;
-		this._localBasisX1X = v.x;
-		this._localBasisX1Y = v.y;
-		this._localBasisX1Z = v.z;
-		var v1 = config.localAxis2;
-		this._localBasisX2X = v1.x;
-		this._localBasisX2Y = v1.y;
-		this._localBasisX2Z = v1.z;
-		this.buildLocalBasesFromX();
-		this.angle = 0;
-		this.angularErrorY = 0;
-		this.angularErrorZ = 0;
-		this._basis = new oimo.dynamics.constraint.joint.BasisTracker(this);
-		this._sd = config.springDamper.clone();
-		this._lm = config.limitMotor.clone();
-	}
-	getInfo(info,timeStep,isPositionPart) {
-		var erp = this.getErp(timeStep,isPositionPart);
-		var linearRhs;
-		var linearRhsX;
-		var linearRhsY;
-		var linearRhsZ;
-		linearRhsX = this.linearErrorX * erp;
-		linearRhsY = this.linearErrorY * erp;
-		linearRhsZ = this.linearErrorZ * erp;
-		var linRhsX = linearRhsX;
-		var linRhsY = linearRhsY;
-		var linRhsZ = linearRhsZ;
-		var angRhsY = this.angularErrorY * erp;
-		var angRhsZ = this.angularErrorZ * erp;
-		var crossR1;
-		var crossR100;
-		var crossR101;
-		var crossR102;
-		var crossR110;
-		var crossR111;
-		var crossR112;
-		var crossR120;
-		var crossR121;
-		var crossR122;
-		var crossR2;
-		var crossR200;
-		var crossR201;
-		var crossR202;
-		var crossR210;
-		var crossR211;
-		var crossR212;
-		var crossR220;
-		var crossR221;
-		var crossR222;
-		crossR100 = 0;
-		crossR101 = -this._relativeAnchor1Z;
-		crossR102 = this._relativeAnchor1Y;
-		crossR110 = this._relativeAnchor1Z;
-		crossR111 = 0;
-		crossR112 = -this._relativeAnchor1X;
-		crossR120 = -this._relativeAnchor1Y;
-		crossR121 = this._relativeAnchor1X;
-		crossR122 = 0;
-		crossR200 = 0;
-		crossR201 = -this._relativeAnchor2Z;
-		crossR202 = this._relativeAnchor2Y;
-		crossR210 = this._relativeAnchor2Z;
-		crossR211 = 0;
-		crossR212 = -this._relativeAnchor2X;
-		crossR220 = -this._relativeAnchor2Y;
-		crossR221 = this._relativeAnchor2X;
-		crossR222 = 0;
-		crossR100 = -crossR100;
-		crossR101 = -crossR101;
-		crossR102 = -crossR102;
-		crossR110 = -crossR110;
-		crossR111 = -crossR111;
-		crossR112 = -crossR112;
-		crossR120 = -crossR120;
-		crossR121 = -crossR121;
-		crossR122 = -crossR122;
-		crossR200 = -crossR200;
-		crossR201 = -crossR201;
-		crossR202 = -crossR202;
-		crossR210 = -crossR210;
-		crossR211 = -crossR211;
-		crossR212 = -crossR212;
-		crossR220 = -crossR220;
-		crossR221 = -crossR221;
-		crossR222 = -crossR222;
-		var motorMass = this.computeEffectiveInertiaMoment(this._basis.xX,this._basis.xY,this._basis.xZ);
-		var impulse = this._impulses[0];
-		var row = info.rows[info.numRows++];
-		var _this = row.jacobian;
-		_this.lin1X = 0;
-		_this.lin1Y = 0;
-		_this.lin1Z = 0;
-		_this.lin2X = 0;
-		_this.lin2Y = 0;
-		_this.lin2Z = 0;
-		_this.ang1X = 0;
-		_this.ang1Y = 0;
-		_this.ang1Z = 0;
-		_this.ang2X = 0;
-		_this.ang2Y = 0;
-		_this.ang2Z = 0;
-		row.rhs = 0;
-		row.cfm = 0;
-		row.minImpulse = 0;
-		row.maxImpulse = 0;
-		row.motorSpeed = 0;
-		row.motorMaxImpulse = 0;
-		row.impulse = null;
-		row.impulse = impulse;
-		var row1 = row;
-		row1.rhs = linRhsX;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		var j = row1.jacobian;
-		j.lin1X = 1;
-		j.lin1Y = 0;
-		j.lin1Z = 0;
-		j.lin2X = 1;
-		j.lin2Y = 0;
-		j.lin2Z = 0;
-		j.ang1X = crossR100;
-		j.ang1Y = crossR101;
-		j.ang1Z = crossR102;
-		j.ang2X = crossR200;
-		j.ang2Y = crossR201;
-		j.ang2Z = crossR202;
-		var impulse1 = this._impulses[1];
-		var row2 = info.rows[info.numRows++];
-		var _this1 = row2.jacobian;
-		_this1.lin1X = 0;
-		_this1.lin1Y = 0;
-		_this1.lin1Z = 0;
-		_this1.lin2X = 0;
-		_this1.lin2Y = 0;
-		_this1.lin2Z = 0;
-		_this1.ang1X = 0;
-		_this1.ang1Y = 0;
-		_this1.ang1Z = 0;
-		_this1.ang2X = 0;
-		_this1.ang2Y = 0;
-		_this1.ang2Z = 0;
-		row2.rhs = 0;
-		row2.cfm = 0;
-		row2.minImpulse = 0;
-		row2.maxImpulse = 0;
-		row2.motorSpeed = 0;
-		row2.motorMaxImpulse = 0;
-		row2.impulse = null;
-		row2.impulse = impulse1;
-		row1 = row2;
-		row1.rhs = linRhsY;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.lin1X = 0;
-		j.lin1Y = 1;
-		j.lin1Z = 0;
-		j.lin2X = 0;
-		j.lin2Y = 1;
-		j.lin2Z = 0;
-		j.ang1X = crossR110;
-		j.ang1Y = crossR111;
-		j.ang1Z = crossR112;
-		j.ang2X = crossR210;
-		j.ang2Y = crossR211;
-		j.ang2Z = crossR212;
-		var impulse2 = this._impulses[2];
-		var row3 = info.rows[info.numRows++];
-		var _this2 = row3.jacobian;
-		_this2.lin1X = 0;
-		_this2.lin1Y = 0;
-		_this2.lin1Z = 0;
-		_this2.lin2X = 0;
-		_this2.lin2Y = 0;
-		_this2.lin2Z = 0;
-		_this2.ang1X = 0;
-		_this2.ang1Y = 0;
-		_this2.ang1Z = 0;
-		_this2.ang2X = 0;
-		_this2.ang2Y = 0;
-		_this2.ang2Z = 0;
-		row3.rhs = 0;
-		row3.cfm = 0;
-		row3.minImpulse = 0;
-		row3.maxImpulse = 0;
-		row3.motorSpeed = 0;
-		row3.motorMaxImpulse = 0;
-		row3.impulse = null;
-		row3.impulse = impulse2;
-		row1 = row3;
-		row1.rhs = linRhsZ;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.lin1X = 0;
-		j.lin1Y = 0;
-		j.lin1Z = 1;
-		j.lin2X = 0;
-		j.lin2Y = 0;
-		j.lin2Z = 1;
-		j.ang1X = crossR120;
-		j.ang1Y = crossR121;
-		j.ang1Z = crossR122;
-		j.ang2X = crossR220;
-		j.ang2Y = crossR221;
-		j.ang2Z = crossR222;
-		if(this._sd.frequency <= 0 || !isPositionPart) {
-			var impulse3 = this._impulses[3];
-			var row4 = info.rows[info.numRows++];
-			var _this3 = row4.jacobian;
-			_this3.lin1X = 0;
-			_this3.lin1Y = 0;
-			_this3.lin1Z = 0;
-			_this3.lin2X = 0;
-			_this3.lin2Y = 0;
-			_this3.lin2Z = 0;
-			_this3.ang1X = 0;
-			_this3.ang1Y = 0;
-			_this3.ang1Z = 0;
-			_this3.ang2X = 0;
-			_this3.ang2Y = 0;
-			_this3.ang2Z = 0;
-			row4.rhs = 0;
-			row4.cfm = 0;
-			row4.minImpulse = 0;
-			row4.maxImpulse = 0;
-			row4.motorSpeed = 0;
-			row4.motorMaxImpulse = 0;
-			row4.impulse = null;
-			row4.impulse = impulse3;
-			row1 = row4;
-			this.setSolverInfoRowAngular(row1,this.angle,this._lm,motorMass,this._sd,timeStep,isPositionPart);
-			j = row1.jacobian;
-			j.ang1X = this._basis.xX;
-			j.ang1Y = this._basis.xY;
-			j.ang1Z = this._basis.xZ;
-			j.ang2X = this._basis.xX;
-			j.ang2Y = this._basis.xY;
-			j.ang2Z = this._basis.xZ;
-		}
-		var impulse4 = this._impulses[4];
-		var row5 = info.rows[info.numRows++];
-		var _this4 = row5.jacobian;
-		_this4.lin1X = 0;
-		_this4.lin1Y = 0;
-		_this4.lin1Z = 0;
-		_this4.lin2X = 0;
-		_this4.lin2Y = 0;
-		_this4.lin2Z = 0;
-		_this4.ang1X = 0;
-		_this4.ang1Y = 0;
-		_this4.ang1Z = 0;
-		_this4.ang2X = 0;
-		_this4.ang2Y = 0;
-		_this4.ang2Z = 0;
-		row5.rhs = 0;
-		row5.cfm = 0;
-		row5.minImpulse = 0;
-		row5.maxImpulse = 0;
-		row5.motorSpeed = 0;
-		row5.motorMaxImpulse = 0;
-		row5.impulse = null;
-		row5.impulse = impulse4;
-		row1 = row5;
-		row1.rhs = angRhsY;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.ang1X = this._basis.yX;
-		j.ang1Y = this._basis.yY;
-		j.ang1Z = this._basis.yZ;
-		j.ang2X = this._basis.yX;
-		j.ang2Y = this._basis.yY;
-		j.ang2Z = this._basis.yZ;
-		var impulse5 = this._impulses[5];
-		var row6 = info.rows[info.numRows++];
-		var _this5 = row6.jacobian;
-		_this5.lin1X = 0;
-		_this5.lin1Y = 0;
-		_this5.lin1Z = 0;
-		_this5.lin2X = 0;
-		_this5.lin2Y = 0;
-		_this5.lin2Z = 0;
-		_this5.ang1X = 0;
-		_this5.ang1Y = 0;
-		_this5.ang1Z = 0;
-		_this5.ang2X = 0;
-		_this5.ang2Y = 0;
-		_this5.ang2Z = 0;
-		row6.rhs = 0;
-		row6.cfm = 0;
-		row6.minImpulse = 0;
-		row6.maxImpulse = 0;
-		row6.motorSpeed = 0;
-		row6.motorMaxImpulse = 0;
-		row6.impulse = null;
-		row6.impulse = impulse5;
-		row1 = row6;
-		row1.rhs = angRhsZ;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.ang1X = this._basis.zX;
-		j.ang1Y = this._basis.zY;
-		j.ang1Z = this._basis.zZ;
-		j.ang2X = this._basis.zX;
-		j.ang2Y = this._basis.zY;
-		j.ang2Z = this._basis.zZ;
-	}
-	_syncAnchors() {
-		super._syncAnchors();
-		var _this = this._basis;
-		var invM1 = _this.joint._b1._invMass;
-		var invM2 = _this.joint._b2._invMass;
-		var q;
-		var qX;
-		var qY;
-		var qZ;
-		var qW;
-		var idQ;
-		var idQX;
-		var idQY;
-		var idQZ;
-		var idQW;
-		var slerpQ;
-		var slerpQX;
-		var slerpQY;
-		var slerpQZ;
-		var slerpQW;
-		var slerpM;
-		var slerpM00;
-		var slerpM01;
-		var slerpM02;
-		var slerpM10;
-		var slerpM11;
-		var slerpM12;
-		var slerpM20;
-		var slerpM21;
-		var slerpM22;
-		var newX;
-		var newXX;
-		var newXY;
-		var newXZ;
-		var newY;
-		var newYX;
-		var newYY;
-		var newYZ;
-		var newZ;
-		var newZX;
-		var newZY;
-		var newZZ;
-		var prevX;
-		var prevXX;
-		var prevXY;
-		var prevXZ;
-		var prevY;
-		var prevYX;
-		var prevYY;
-		var prevYZ;
-		var d = _this.joint._basisX1X * _this.joint._basisX2X + _this.joint._basisX1Y * _this.joint._basisX2Y + _this.joint._basisX1Z * _this.joint._basisX2Z;
-		if(d < -0.999999999) {
-			var vX;
-			var vY;
-			var vZ;
-			var x1 = _this.joint._basisX1X;
-			var y1 = _this.joint._basisX1Y;
-			var z1 = _this.joint._basisX1Z;
-			var x2 = x1 * x1;
-			var y2 = y1 * y1;
-			var z2 = z1 * z1;
-			var d1;
-			if(x2 < y2) {
-				if(x2 < z2) {
-					d1 = 1 / Math.sqrt(y2 + z2);
-					vX = 0;
-					vY = z1 * d1;
-					vZ = -y1 * d1;
-				} else {
-					d1 = 1 / Math.sqrt(x2 + y2);
-					vX = y1 * d1;
-					vY = -x1 * d1;
-					vZ = 0;
-				}
-			} else if(y2 < z2) {
-				d1 = 1 / Math.sqrt(z2 + x2);
-				vX = -z1 * d1;
-				vY = 0;
-				vZ = x1 * d1;
-			} else {
-				d1 = 1 / Math.sqrt(x2 + y2);
-				vX = y1 * d1;
-				vY = -x1 * d1;
-				vZ = 0;
-			}
-			qX = vX;
-			qY = vY;
-			qZ = vZ;
-			qW = 0;
-		} else {
-			var cX;
-			var cY;
-			var cZ;
-			cX = _this.joint._basisX1Y * _this.joint._basisX2Z - _this.joint._basisX1Z * _this.joint._basisX2Y;
-			cY = _this.joint._basisX1Z * _this.joint._basisX2X - _this.joint._basisX1X * _this.joint._basisX2Z;
-			cZ = _this.joint._basisX1X * _this.joint._basisX2Y - _this.joint._basisX1Y * _this.joint._basisX2X;
-			var w = Math.sqrt((1 + d) * 0.5);
-			d = 0.5 / w;
-			cX *= d;
-			cY *= d;
-			cZ *= d;
-			qX = cX;
-			qY = cY;
-			qZ = cZ;
-			qW = w;
-		}
-		idQX = 0;
-		idQY = 0;
-		idQZ = 0;
-		idQW = 1;
-		var qx;
-		var qy;
-		var qz;
-		var qw;
-		var q1X;
-		var q1Y;
-		var q1Z;
-		var q1W;
-		var q2X;
-		var q2Y;
-		var q2Z;
-		var q2W;
-		q1X = idQX;
-		q1Y = idQY;
-		q1Z = idQZ;
-		q1W = idQW;
-		q2X = qX;
-		q2Y = qY;
-		q2Z = qZ;
-		q2W = qW;
-		var d2 = q1X * q2X + q1Y * q2Y + q1Z * q2Z + q1W * q2W;
-		if(d2 < 0) {
-			d2 = -d2;
-			q2X = -q2X;
-			q2Y = -q2Y;
-			q2Z = -q2Z;
-			q2W = -q2W;
-		}
-		if(d2 > 0.999999) {
-			var dqX;
-			var dqY;
-			var dqZ;
-			var dqW;
-			dqX = q2X - q1X;
-			dqY = q2Y - q1Y;
-			dqZ = q2Z - q1Z;
-			dqW = q2W - q1W;
-			q2X = q1X + dqX * (invM1 / (invM1 + invM2));
-			q2Y = q1Y + dqY * (invM1 / (invM1 + invM2));
-			q2Z = q1Z + dqZ * (invM1 / (invM1 + invM2));
-			q2W = q1W + dqW * (invM1 / (invM1 + invM2));
-			var l = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
-			if(l > 1e-32) {
-				l = 1 / Math.sqrt(l);
-			}
-			slerpQX = q2X * l;
-			slerpQY = q2Y * l;
-			slerpQZ = q2Z * l;
-			slerpQW = q2W * l;
-		} else {
-			var theta = invM1 / (invM1 + invM2) * Math.acos(d2);
-			q2X += q1X * -d2;
-			q2Y += q1Y * -d2;
-			q2Z += q1Z * -d2;
-			q2W += q1W * -d2;
-			var l1 = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
-			if(l1 > 1e-32) {
-				l1 = 1 / Math.sqrt(l1);
-			}
-			q2X *= l1;
-			q2Y *= l1;
-			q2Z *= l1;
-			q2W *= l1;
-			var sin = Math.sin(theta);
-			var cos = Math.cos(theta);
-			q1X *= cos;
-			q1Y *= cos;
-			q1Z *= cos;
-			q1W *= cos;
-			slerpQX = q1X + q2X * sin;
-			slerpQY = q1Y + q2Y * sin;
-			slerpQZ = q1Z + q2Z * sin;
-			slerpQW = q1W + q2W * sin;
-		}
-		var x = slerpQX;
-		var y = slerpQY;
-		var z = slerpQZ;
-		var w1 = slerpQW;
-		var x21 = 2 * x;
-		var y21 = 2 * y;
-		var z21 = 2 * z;
-		var xx = x * x21;
-		var yy = y * y21;
-		var zz = z * z21;
-		var xy = x * y21;
-		var yz = y * z21;
-		var xz = x * z21;
-		var wx = w1 * x21;
-		var wy = w1 * y21;
-		var wz = w1 * z21;
-		slerpM00 = 1 - yy - zz;
-		slerpM01 = xy - wz;
-		slerpM02 = xz + wy;
-		slerpM10 = xy + wz;
-		slerpM11 = 1 - xx - zz;
-		slerpM12 = yz - wx;
-		slerpM20 = xz - wy;
-		slerpM21 = yz + wx;
-		slerpM22 = 1 - xx - yy;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = slerpM00 * _this.joint._basisX1X + slerpM01 * _this.joint._basisX1Y + slerpM02 * _this.joint._basisX1Z;
-		__tmp__Y = slerpM10 * _this.joint._basisX1X + slerpM11 * _this.joint._basisX1Y + slerpM12 * _this.joint._basisX1Z;
-		__tmp__Z = slerpM20 * _this.joint._basisX1X + slerpM21 * _this.joint._basisX1Y + slerpM22 * _this.joint._basisX1Z;
-		newXX = __tmp__X;
-		newXY = __tmp__Y;
-		newXZ = __tmp__Z;
-		prevXX = _this.xX;
-		prevXY = _this.xY;
-		prevXZ = _this.xZ;
-		prevYX = _this.yX;
-		prevYY = _this.yY;
-		prevYZ = _this.yZ;
-		var d3 = prevXX * newXX + prevXY * newXY + prevXZ * newXZ;
-		if(d3 < -0.999999999) {
-			var vX1;
-			var vY1;
-			var vZ1;
-			var x11 = prevXX;
-			var y11 = prevXY;
-			var z11 = prevXZ;
-			var x22 = x11 * x11;
-			var y22 = y11 * y11;
-			var z22 = z11 * z11;
-			var d4;
-			if(x22 < y22) {
-				if(x22 < z22) {
-					d4 = 1 / Math.sqrt(y22 + z22);
-					vX1 = 0;
-					vY1 = z11 * d4;
-					vZ1 = -y11 * d4;
-				} else {
-					d4 = 1 / Math.sqrt(x22 + y22);
-					vX1 = y11 * d4;
-					vY1 = -x11 * d4;
-					vZ1 = 0;
-				}
-			} else if(y22 < z22) {
-				d4 = 1 / Math.sqrt(z22 + x22);
-				vX1 = -z11 * d4;
-				vY1 = 0;
-				vZ1 = x11 * d4;
-			} else {
-				d4 = 1 / Math.sqrt(x22 + y22);
-				vX1 = y11 * d4;
-				vY1 = -x11 * d4;
-				vZ1 = 0;
-			}
-			slerpQX = vX1;
-			slerpQY = vY1;
-			slerpQZ = vZ1;
-			slerpQW = 0;
-		} else {
-			var cX1;
-			var cY1;
-			var cZ1;
-			cX1 = prevXY * newXZ - prevXZ * newXY;
-			cY1 = prevXZ * newXX - prevXX * newXZ;
-			cZ1 = prevXX * newXY - prevXY * newXX;
-			var w2 = Math.sqrt((1 + d3) * 0.5);
-			d3 = 0.5 / w2;
-			cX1 *= d3;
-			cY1 *= d3;
-			cZ1 *= d3;
-			slerpQX = cX1;
-			slerpQY = cY1;
-			slerpQZ = cZ1;
-			slerpQW = w2;
-		}
-		var x3 = slerpQX;
-		var y3 = slerpQY;
-		var z3 = slerpQZ;
-		var w3 = slerpQW;
-		var x23 = 2 * x3;
-		var y23 = 2 * y3;
-		var z23 = 2 * z3;
-		var xx1 = x3 * x23;
-		var yy1 = y3 * y23;
-		var zz1 = z3 * z23;
-		var xy1 = x3 * y23;
-		var yz1 = y3 * z23;
-		var xz1 = x3 * z23;
-		var wx1 = w3 * x23;
-		var wy1 = w3 * y23;
-		var wz1 = w3 * z23;
-		slerpM00 = 1 - yy1 - zz1;
-		slerpM01 = xy1 - wz1;
-		slerpM02 = xz1 + wy1;
-		slerpM10 = xy1 + wz1;
-		slerpM11 = 1 - xx1 - zz1;
-		slerpM12 = yz1 - wx1;
-		slerpM20 = xz1 - wy1;
-		slerpM21 = yz1 + wx1;
-		slerpM22 = 1 - xx1 - yy1;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = slerpM00 * prevYX + slerpM01 * prevYY + slerpM02 * prevYZ;
-		__tmp__Y1 = slerpM10 * prevYX + slerpM11 * prevYY + slerpM12 * prevYZ;
-		__tmp__Z1 = slerpM20 * prevYX + slerpM21 * prevYY + slerpM22 * prevYZ;
-		newYX = __tmp__X1;
-		newYY = __tmp__Y1;
-		newYZ = __tmp__Z1;
-		newZX = newXY * newYZ - newXZ * newYY;
-		newZY = newXZ * newYX - newXX * newYZ;
-		newZZ = newXX * newYY - newXY * newYX;
-		if(newZX * newZX + newZY * newZY + newZZ * newZZ > 1e-6) {
-			var l2 = newZX * newZX + newZY * newZY + newZZ * newZZ;
-			if(l2 > 0) {
-				l2 = 1 / Math.sqrt(l2);
-			}
-			newZX *= l2;
-			newZY *= l2;
-			newZZ *= l2;
-		} else {
-			var x12 = newXX;
-			var y12 = newXY;
-			var z12 = newXZ;
-			var x24 = x12 * x12;
-			var y24 = y12 * y12;
-			var z24 = z12 * z12;
-			var d5;
-			if(x24 < y24) {
-				if(x24 < z24) {
-					d5 = 1 / Math.sqrt(y24 + z24);
-					newZX = 0;
-					newZY = z12 * d5;
-					newZZ = -y12 * d5;
-				} else {
-					d5 = 1 / Math.sqrt(x24 + y24);
-					newZX = y12 * d5;
-					newZY = -x12 * d5;
-					newZZ = 0;
-				}
-			} else if(y24 < z24) {
-				d5 = 1 / Math.sqrt(z24 + x24);
-				newZX = -z12 * d5;
-				newZY = 0;
-				newZZ = x12 * d5;
-			} else {
-				d5 = 1 / Math.sqrt(x24 + y24);
-				newZX = y12 * d5;
-				newZY = -x12 * d5;
-				newZZ = 0;
-			}
-		}
-		newYX = newZY * newXZ - newZZ * newXY;
-		newYY = newZZ * newXX - newZX * newXZ;
-		newYZ = newZX * newXY - newZY * newXX;
-		_this.xX = newXX;
-		_this.xY = newXY;
-		_this.xZ = newXZ;
-		_this.yX = newYX;
-		_this.yY = newYY;
-		_this.yZ = newYZ;
-		_this.zX = newZX;
-		_this.zY = newZY;
-		_this.zZ = newZZ;
-		var angError;
-		var angErrorX;
-		var angErrorY;
-		var angErrorZ;
-		angErrorX = this._basisX1Y * this._basisX2Z - this._basisX1Z * this._basisX2Y;
-		angErrorY = this._basisX1Z * this._basisX2X - this._basisX1X * this._basisX2Z;
-		angErrorZ = this._basisX1X * this._basisX2Y - this._basisX1Y * this._basisX2X;
-		var cos1 = this._basisX1X * this._basisX2X + this._basisX1Y * this._basisX2Y + this._basisX1Z * this._basisX2Z;
-		var theta1 = cos1 <= -1 ? 3.14159265358979 : cos1 >= 1 ? 0 : Math.acos(cos1);
-		var l3 = angErrorX * angErrorX + angErrorY * angErrorY + angErrorZ * angErrorZ;
-		if(l3 > 0) {
-			l3 = 1 / Math.sqrt(l3);
-		}
-		angErrorX *= l3;
-		angErrorY *= l3;
-		angErrorZ *= l3;
-		angErrorX *= theta1;
-		angErrorY *= theta1;
-		angErrorZ *= theta1;
-		this.angularErrorY = angErrorX * this._basis.yX + angErrorY * this._basis.yY + angErrorZ * this._basis.yZ;
-		this.angularErrorZ = angErrorX * this._basis.zX + angErrorY * this._basis.zY + angErrorZ * this._basis.zZ;
-		var perpCross;
-		var perpCrossX;
-		var perpCrossY;
-		var perpCrossZ;
-		perpCrossX = this._basisY1Y * this._basisY2Z - this._basisY1Z * this._basisY2Y;
-		perpCrossY = this._basisY1Z * this._basisY2X - this._basisY1X * this._basisY2Z;
-		perpCrossZ = this._basisY1X * this._basisY2Y - this._basisY1Y * this._basisY2X;
-		cos1 = this._basisY1X * this._basisY2X + this._basisY1Y * this._basisY2Y + this._basisY1Z * this._basisY2Z;
-		this.angle = cos1 <= -1 ? 3.14159265358979 : cos1 >= 1 ? 0 : Math.acos(cos1);
-		if(perpCrossX * this._basis.xX + perpCrossY * this._basis.xY + perpCrossZ * this._basis.xZ < 0) {
-			this.angle = -this.angle;
-		}
-		this.linearErrorX = this._anchor2X - this._anchor1X;
-		this.linearErrorY = this._anchor2Y - this._anchor1Y;
-		this.linearErrorZ = this._anchor2Z - this._anchor1Z;
-	}
-	_getVelocitySolverInfo(timeStep,info) {
-		super._getVelocitySolverInfo(timeStep,info);
-		this.getInfo(info,timeStep,false);
-	}
-	_getPositionSolverInfo(info) {
-		super._getPositionSolverInfo(info);
-		this.getInfo(info,null,true);
-	}
-	getAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX1X;
-		v1.y = this._basisX1Y;
-		v1.z = this._basisX1Z;
-		return v;
-	}
-	getAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX2X;
-		v1.y = this._basisX2Y;
-		v1.z = this._basisX2Z;
-		return v;
-	}
-	getAxis1To(axis) {
-		var v = axis;
-		v.x = this._basisX1X;
-		v.y = this._basisX1Y;
-		v.z = this._basisX1Z;
-	}
-	getAxis2To(axis) {
-		var v = axis;
-		v.x = this._basisX2X;
-		v.y = this._basisX2Y;
-		v.z = this._basisX2Z;
-	}
-	getLocalAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisX1X;
-		v1.y = this._localBasisX1Y;
-		v1.z = this._localBasisX1Z;
-		return v;
-	}
-	getLocalAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisX2X;
-		v1.y = this._localBasisX2Y;
-		v1.z = this._localBasisX2Z;
-		return v;
-	}
-	getLocalAxis1To(axis) {
-		var v = axis;
-		v.x = this._localBasisX1X;
-		v.y = this._localBasisX1Y;
-		v.z = this._localBasisX1Z;
-	}
-	getLocalAxis2To(axis) {
-		var v = axis;
-		v.x = this._localBasisX2X;
-		v.y = this._localBasisX2Y;
-		v.z = this._localBasisX2Z;
-	}
-	getSpringDamper() {
-		return this._sd;
-	}
-	getLimitMotor() {
-		return this._lm;
-	}
-	getAngle() {
-		return this.angle;
-	}
-}
-oimo.dynamics.constraint.joint.RevoluteJointConfig = class oimo_dynamics_constraint_joint_RevoluteJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
-	constructor() {
-		super();
-		this.localAxis1 = new oimo.common.Vec3(1,0,0);
-		this.localAxis2 = new oimo.common.Vec3(1,0,0);
-		this.springDamper = new oimo.dynamics.constraint.joint.SpringDamper();
-		this.limitMotor = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
-	}
-	init(rigidBody1,rigidBody2,worldAnchor,worldAxis) {
-		this._init(rigidBody1,rigidBody2,worldAnchor);
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldAxis;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
-		__tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
-		__tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var v2 = this.localAxis1;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		var v3;
-		var vX1;
-		var vY1;
-		var vZ1;
-		var v4 = worldAxis;
-		vX1 = v4.x;
-		vY1 = v4.y;
-		vZ1 = v4.z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
-		__tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
-		__tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
-		vX1 = __tmp__X1;
-		vY1 = __tmp__Y1;
-		vZ1 = __tmp__Z1;
-		var v5 = this.localAxis2;
-		v5.x = vX1;
-		v5.y = vY1;
-		v5.z = vZ1;
-		return this;
-	}
-}
-oimo.dynamics.constraint.joint.RotationalLimitMotor = class oimo_dynamics_constraint_joint_RotationalLimitMotor {
-	constructor() {
-		this.lowerLimit = 1;
-		this.upperLimit = 0;
-		this.motorTorque = 0;
-	}
-	setLimits(lower,upper) {
-		this.lowerLimit = lower;
-		this.upperLimit = upper;
-		return this;
-	}
-	setMotor(speed,torque) {
-		this.motorSpeed = speed;
-		this.motorTorque = torque;
-		return this;
-	}
-	clone() {
-		var lm = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
-		lm.lowerLimit = this.lowerLimit;
-		lm.upperLimit = this.upperLimit;
-		lm.motorSpeed = this.motorSpeed;
-		lm.motorTorque = this.motorTorque;
-		return lm;
-	}
-}
-oimo.dynamics.constraint.joint.SphericalJoint = class oimo_dynamics_constraint_joint_SphericalJoint extends oimo.dynamics.constraint.joint.Joint {
-	constructor(config) {
-		super(config,0);
-		this._sd = config.springDamper.clone();
-	}
-	getInfo(info,timeStep,isPositionPart) {
-		if(this._sd.frequency > 0 && isPositionPart) {
-			return;
-		}
-		var error;
-		var errorX;
-		var errorY;
-		var errorZ;
-		errorX = this._anchor2X - this._anchor1X;
-		errorY = this._anchor2Y - this._anchor1Y;
-		errorZ = this._anchor2Z - this._anchor1Z;
-		var cfm;
-		var erp;
-		if(this._sd.frequency > 0) {
-			var omega = 6.28318530717958 * this._sd.frequency;
-			var zeta = this._sd.dampingRatio;
-			if(zeta < oimo.common.Setting.minSpringDamperDampingRatio) {
-				zeta = oimo.common.Setting.minSpringDamperDampingRatio;
-			}
-			var h = timeStep.dt;
-			var c = 2 * zeta * omega;
-			var k = omega * omega;
-			if(this._sd.useSymplecticEuler) {
-				cfm = 1 / (h * c);
-				erp = k / c;
-			} else {
-				cfm = 1 / (h * (h * k + c));
-				erp = k / (h * k + c);
-			}
-			cfm *= this._b1._invMass + this._b2._invMass;
-		} else {
-			cfm = 0;
-			erp = this.getErp(timeStep,isPositionPart);
-		}
-		var linearRhs;
-		var linearRhsX;
-		var linearRhsY;
-		var linearRhsZ;
-		linearRhsX = errorX * erp;
-		linearRhsY = errorY * erp;
-		linearRhsZ = errorZ * erp;
-		var linRhsX = linearRhsX;
-		var linRhsY = linearRhsY;
-		var linRhsZ = linearRhsZ;
-		var crossR1;
-		var crossR100;
-		var crossR101;
-		var crossR102;
-		var crossR110;
-		var crossR111;
-		var crossR112;
-		var crossR120;
-		var crossR121;
-		var crossR122;
-		var crossR2;
-		var crossR200;
-		var crossR201;
-		var crossR202;
-		var crossR210;
-		var crossR211;
-		var crossR212;
-		var crossR220;
-		var crossR221;
-		var crossR222;
-		crossR100 = 0;
-		crossR101 = -this._relativeAnchor1Z;
-		crossR102 = this._relativeAnchor1Y;
-		crossR110 = this._relativeAnchor1Z;
-		crossR111 = 0;
-		crossR112 = -this._relativeAnchor1X;
-		crossR120 = -this._relativeAnchor1Y;
-		crossR121 = this._relativeAnchor1X;
-		crossR122 = 0;
-		crossR200 = 0;
-		crossR201 = -this._relativeAnchor2Z;
-		crossR202 = this._relativeAnchor2Y;
-		crossR210 = this._relativeAnchor2Z;
-		crossR211 = 0;
-		crossR212 = -this._relativeAnchor2X;
-		crossR220 = -this._relativeAnchor2Y;
-		crossR221 = this._relativeAnchor2X;
-		crossR222 = 0;
-		crossR100 = -crossR100;
-		crossR101 = -crossR101;
-		crossR102 = -crossR102;
-		crossR110 = -crossR110;
-		crossR111 = -crossR111;
-		crossR112 = -crossR112;
-		crossR120 = -crossR120;
-		crossR121 = -crossR121;
-		crossR122 = -crossR122;
-		crossR200 = -crossR200;
-		crossR201 = -crossR201;
-		crossR202 = -crossR202;
-		crossR210 = -crossR210;
-		crossR211 = -crossR211;
-		crossR212 = -crossR212;
-		crossR220 = -crossR220;
-		crossR221 = -crossR221;
-		crossR222 = -crossR222;
-		var impulse = this._impulses[0];
-		var row = info.rows[info.numRows++];
-		var _this = row.jacobian;
-		_this.lin1X = 0;
-		_this.lin1Y = 0;
-		_this.lin1Z = 0;
-		_this.lin2X = 0;
-		_this.lin2Y = 0;
-		_this.lin2Z = 0;
-		_this.ang1X = 0;
-		_this.ang1Y = 0;
-		_this.ang1Z = 0;
-		_this.ang2X = 0;
-		_this.ang2Y = 0;
-		_this.ang2Z = 0;
-		row.rhs = 0;
-		row.cfm = 0;
-		row.minImpulse = 0;
-		row.maxImpulse = 0;
-		row.motorSpeed = 0;
-		row.motorMaxImpulse = 0;
-		row.impulse = null;
-		row.impulse = impulse;
-		var row1 = row;
-		row1.rhs = linRhsX;
-		row1.cfm = cfm;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		var j = row1.jacobian;
-		j.lin1X = 1;
-		j.lin1Y = 0;
-		j.lin1Z = 0;
-		j.lin2X = 1;
-		j.lin2Y = 0;
-		j.lin2Z = 0;
-		j.ang1X = crossR100;
-		j.ang1Y = crossR101;
-		j.ang1Z = crossR102;
-		j.ang2X = crossR200;
-		j.ang2Y = crossR201;
-		j.ang2Z = crossR202;
-		var impulse1 = this._impulses[1];
-		var row2 = info.rows[info.numRows++];
-		var _this1 = row2.jacobian;
-		_this1.lin1X = 0;
-		_this1.lin1Y = 0;
-		_this1.lin1Z = 0;
-		_this1.lin2X = 0;
-		_this1.lin2Y = 0;
-		_this1.lin2Z = 0;
-		_this1.ang1X = 0;
-		_this1.ang1Y = 0;
-		_this1.ang1Z = 0;
-		_this1.ang2X = 0;
-		_this1.ang2Y = 0;
-		_this1.ang2Z = 0;
-		row2.rhs = 0;
-		row2.cfm = 0;
-		row2.minImpulse = 0;
-		row2.maxImpulse = 0;
-		row2.motorSpeed = 0;
-		row2.motorMaxImpulse = 0;
-		row2.impulse = null;
-		row2.impulse = impulse1;
-		row1 = row2;
-		row1.rhs = linRhsY;
-		row1.cfm = cfm;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.lin1X = 0;
-		j.lin1Y = 1;
-		j.lin1Z = 0;
-		j.lin2X = 0;
-		j.lin2Y = 1;
-		j.lin2Z = 0;
-		j.ang1X = crossR110;
-		j.ang1Y = crossR111;
-		j.ang1Z = crossR112;
-		j.ang2X = crossR210;
-		j.ang2Y = crossR211;
-		j.ang2Z = crossR212;
-		var impulse2 = this._impulses[2];
-		var row3 = info.rows[info.numRows++];
-		var _this2 = row3.jacobian;
-		_this2.lin1X = 0;
-		_this2.lin1Y = 0;
-		_this2.lin1Z = 0;
-		_this2.lin2X = 0;
-		_this2.lin2Y = 0;
-		_this2.lin2Z = 0;
-		_this2.ang1X = 0;
-		_this2.ang1Y = 0;
-		_this2.ang1Z = 0;
-		_this2.ang2X = 0;
-		_this2.ang2Y = 0;
-		_this2.ang2Z = 0;
-		row3.rhs = 0;
-		row3.cfm = 0;
-		row3.minImpulse = 0;
-		row3.maxImpulse = 0;
-		row3.motorSpeed = 0;
-		row3.motorMaxImpulse = 0;
-		row3.impulse = null;
-		row3.impulse = impulse2;
-		row1 = row3;
-		row1.rhs = linRhsZ;
-		row1.cfm = cfm;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.lin1X = 0;
-		j.lin1Y = 0;
-		j.lin1Z = 1;
-		j.lin2X = 0;
-		j.lin2Y = 0;
-		j.lin2Z = 1;
-		j.ang1X = crossR120;
-		j.ang1Y = crossR121;
-		j.ang1Z = crossR122;
-		j.ang2X = crossR220;
-		j.ang2Y = crossR221;
-		j.ang2Z = crossR222;
-	}
-	_getVelocitySolverInfo(timeStep,info) {
-		super._getVelocitySolverInfo(timeStep,info);
-		this.getInfo(info,timeStep,false);
-	}
-	_getPositionSolverInfo(info) {
-		super._getPositionSolverInfo(info);
-		this.getInfo(info,null,true);
-	}
-	getSpringDamper() {
-		return this._sd;
-	}
-}
-oimo.dynamics.constraint.joint.SphericalJointConfig = class oimo_dynamics_constraint_joint_SphericalJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
-	constructor() {
-		super();
-		this.springDamper = new oimo.dynamics.constraint.joint.SpringDamper();
-	}
-	init(rigidBody1,rigidBody2,worldAnchor) {
-		this._init(rigidBody1,rigidBody2,worldAnchor);
-		return this;
-	}
-}
-oimo.dynamics.constraint.joint.SpringDamper = class oimo_dynamics_constraint_joint_SpringDamper {
-	constructor() {
-		this.frequency = 0;
-		this.dampingRatio = 0;
-		this.useSymplecticEuler = false;
-	}
-	setSpring(frequency,dampingRatio) {
-		this.frequency = frequency;
-		this.dampingRatio = dampingRatio;
-		return this;
-	}
-	setSymplecticEuler(useSymplecticEuler) {
-		this.useSymplecticEuler = useSymplecticEuler;
-		return this;
-	}
-	clone() {
-		var sd = new oimo.dynamics.constraint.joint.SpringDamper();
-		sd.frequency = this.frequency;
-		sd.dampingRatio = this.dampingRatio;
-		sd.useSymplecticEuler = this.useSymplecticEuler;
-		return sd;
-	}
-}
-oimo.dynamics.constraint.joint.TranslationalLimitMotor = class oimo_dynamics_constraint_joint_TranslationalLimitMotor {
-	constructor() {
-		this.lowerLimit = 1;
-		this.upperLimit = 0;
-		this.motorForce = 0;
-	}
-	setLimits(lower,upper) {
-		this.lowerLimit = lower;
-		this.upperLimit = upper;
-		return this;
-	}
-	setMotor(speed,force) {
-		this.motorSpeed = speed;
-		this.motorForce = force;
-		return this;
-	}
-	clone() {
-		var lm = new oimo.dynamics.constraint.joint.TranslationalLimitMotor();
-		lm.lowerLimit = this.lowerLimit;
-		lm.upperLimit = this.upperLimit;
-		lm.motorSpeed = this.motorSpeed;
-		lm.motorForce = this.motorForce;
-		return lm;
-	}
-}
-oimo.dynamics.constraint.joint.UniversalJoint = class oimo_dynamics_constraint_joint_UniversalJoint extends oimo.dynamics.constraint.joint.Joint {
-	constructor(config) {
-		super(config,oimo.dynamics.constraint.joint.JointType.UNIVERSAL);
-		var v = config.localAxis1;
-		this._localBasisX1X = v.x;
-		this._localBasisX1Y = v.y;
-		this._localBasisX1Z = v.z;
-		var v1 = config.localAxis2;
-		this._localBasisZ2X = v1.x;
-		this._localBasisZ2Y = v1.y;
-		this._localBasisZ2Z = v1.z;
-		this.buildLocalBasesFromX1Z2();
-		this._angleX = 0;
-		this._angleY = 0;
-		this._angleZ = 0;
-		this.xSingular = false;
-		this.ySingular = false;
-		this.zSingular = false;
-		this._sd1 = config.springDamper1.clone();
-		this._sd2 = config.springDamper2.clone();
-		this._lm1 = config.limitMotor1.clone();
-		this._lm2 = config.limitMotor2.clone();
-	}
-	getInfo(info,timeStep,isPositionPart) {
-		var erp = this.getErp(timeStep,isPositionPart);
-		var linearRhs;
-		var linearRhsX;
-		var linearRhsY;
-		var linearRhsZ;
-		linearRhsX = this.linearErrorX * erp;
-		linearRhsY = this.linearErrorY * erp;
-		linearRhsZ = this.linearErrorZ * erp;
-		var linRhsX = linearRhsX;
-		var linRhsY = linearRhsY;
-		var linRhsZ = linearRhsZ;
-		var angRhsY = this._angleY * erp;
-		var crossR1;
-		var crossR100;
-		var crossR101;
-		var crossR102;
-		var crossR110;
-		var crossR111;
-		var crossR112;
-		var crossR120;
-		var crossR121;
-		var crossR122;
-		var crossR2;
-		var crossR200;
-		var crossR201;
-		var crossR202;
-		var crossR210;
-		var crossR211;
-		var crossR212;
-		var crossR220;
-		var crossR221;
-		var crossR222;
-		crossR100 = 0;
-		crossR101 = -this._relativeAnchor1Z;
-		crossR102 = this._relativeAnchor1Y;
-		crossR110 = this._relativeAnchor1Z;
-		crossR111 = 0;
-		crossR112 = -this._relativeAnchor1X;
-		crossR120 = -this._relativeAnchor1Y;
-		crossR121 = this._relativeAnchor1X;
-		crossR122 = 0;
-		crossR200 = 0;
-		crossR201 = -this._relativeAnchor2Z;
-		crossR202 = this._relativeAnchor2Y;
-		crossR210 = this._relativeAnchor2Z;
-		crossR211 = 0;
-		crossR212 = -this._relativeAnchor2X;
-		crossR220 = -this._relativeAnchor2Y;
-		crossR221 = this._relativeAnchor2X;
-		crossR222 = 0;
-		crossR100 = -crossR100;
-		crossR101 = -crossR101;
-		crossR102 = -crossR102;
-		crossR110 = -crossR110;
-		crossR111 = -crossR111;
-		crossR112 = -crossR112;
-		crossR120 = -crossR120;
-		crossR121 = -crossR121;
-		crossR122 = -crossR122;
-		crossR200 = -crossR200;
-		crossR201 = -crossR201;
-		crossR202 = -crossR202;
-		crossR210 = -crossR210;
-		crossR211 = -crossR211;
-		crossR212 = -crossR212;
-		crossR220 = -crossR220;
-		crossR221 = -crossR221;
-		crossR222 = -crossR222;
-		var motorMassX = this.computeEffectiveInertiaMoment(this._axisXX,this._axisXY,this._axisXZ);
-		var motorMassZ = this.computeEffectiveInertiaMoment(this._axisZX,this._axisZY,this._axisZZ);
-		var impulse = this._impulses[0];
-		var row = info.rows[info.numRows++];
-		var _this = row.jacobian;
-		_this.lin1X = 0;
-		_this.lin1Y = 0;
-		_this.lin1Z = 0;
-		_this.lin2X = 0;
-		_this.lin2Y = 0;
-		_this.lin2Z = 0;
-		_this.ang1X = 0;
-		_this.ang1Y = 0;
-		_this.ang1Z = 0;
-		_this.ang2X = 0;
-		_this.ang2Y = 0;
-		_this.ang2Z = 0;
-		row.rhs = 0;
-		row.cfm = 0;
-		row.minImpulse = 0;
-		row.maxImpulse = 0;
-		row.motorSpeed = 0;
-		row.motorMaxImpulse = 0;
-		row.impulse = null;
-		row.impulse = impulse;
-		var row1 = row;
-		row1.rhs = linRhsX;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		var j = row1.jacobian;
-		j.lin1X = 1;
-		j.lin1Y = 0;
-		j.lin1Z = 0;
-		j.lin2X = 1;
-		j.lin2Y = 0;
-		j.lin2Z = 0;
-		j.ang1X = crossR100;
-		j.ang1Y = crossR101;
-		j.ang1Z = crossR102;
-		j.ang2X = crossR200;
-		j.ang2Y = crossR201;
-		j.ang2Z = crossR202;
-		var impulse1 = this._impulses[1];
-		var row2 = info.rows[info.numRows++];
-		var _this1 = row2.jacobian;
-		_this1.lin1X = 0;
-		_this1.lin1Y = 0;
-		_this1.lin1Z = 0;
-		_this1.lin2X = 0;
-		_this1.lin2Y = 0;
-		_this1.lin2Z = 0;
-		_this1.ang1X = 0;
-		_this1.ang1Y = 0;
-		_this1.ang1Z = 0;
-		_this1.ang2X = 0;
-		_this1.ang2Y = 0;
-		_this1.ang2Z = 0;
-		row2.rhs = 0;
-		row2.cfm = 0;
-		row2.minImpulse = 0;
-		row2.maxImpulse = 0;
-		row2.motorSpeed = 0;
-		row2.motorMaxImpulse = 0;
-		row2.impulse = null;
-		row2.impulse = impulse1;
-		row1 = row2;
-		row1.rhs = linRhsY;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.lin1X = 0;
-		j.lin1Y = 1;
-		j.lin1Z = 0;
-		j.lin2X = 0;
-		j.lin2Y = 1;
-		j.lin2Z = 0;
-		j.ang1X = crossR110;
-		j.ang1Y = crossR111;
-		j.ang1Z = crossR112;
-		j.ang2X = crossR210;
-		j.ang2Y = crossR211;
-		j.ang2Z = crossR212;
-		var impulse2 = this._impulses[2];
-		var row3 = info.rows[info.numRows++];
-		var _this2 = row3.jacobian;
-		_this2.lin1X = 0;
-		_this2.lin1Y = 0;
-		_this2.lin1Z = 0;
-		_this2.lin2X = 0;
-		_this2.lin2Y = 0;
-		_this2.lin2Z = 0;
-		_this2.ang1X = 0;
-		_this2.ang1Y = 0;
-		_this2.ang1Z = 0;
-		_this2.ang2X = 0;
-		_this2.ang2Y = 0;
-		_this2.ang2Z = 0;
-		row3.rhs = 0;
-		row3.cfm = 0;
-		row3.minImpulse = 0;
-		row3.maxImpulse = 0;
-		row3.motorSpeed = 0;
-		row3.motorMaxImpulse = 0;
-		row3.impulse = null;
-		row3.impulse = impulse2;
-		row1 = row3;
-		row1.rhs = linRhsZ;
-		row1.cfm = 0;
-		row1.minImpulse = -1e65536;
-		row1.maxImpulse = 1e65536;
-		j = row1.jacobian;
-		j.lin1X = 0;
-		j.lin1Y = 0;
-		j.lin1Z = 1;
-		j.lin2X = 0;
-		j.lin2Y = 0;
-		j.lin2Z = 1;
-		j.ang1X = crossR120;
-		j.ang1Y = crossR121;
-		j.ang1Z = crossR122;
-		j.ang2X = crossR220;
-		j.ang2Y = crossR221;
-		j.ang2Z = crossR222;
-		if(!this.xSingular && (this._sd1.frequency <= 0 || !isPositionPart)) {
-			var impulse3 = this._impulses[3];
-			var row4 = info.rows[info.numRows++];
-			var _this3 = row4.jacobian;
-			_this3.lin1X = 0;
-			_this3.lin1Y = 0;
-			_this3.lin1Z = 0;
-			_this3.lin2X = 0;
-			_this3.lin2Y = 0;
-			_this3.lin2Z = 0;
-			_this3.ang1X = 0;
-			_this3.ang1Y = 0;
-			_this3.ang1Z = 0;
-			_this3.ang2X = 0;
-			_this3.ang2Y = 0;
-			_this3.ang2Z = 0;
-			row4.rhs = 0;
-			row4.cfm = 0;
-			row4.minImpulse = 0;
-			row4.maxImpulse = 0;
-			row4.motorSpeed = 0;
-			row4.motorMaxImpulse = 0;
-			row4.impulse = null;
-			row4.impulse = impulse3;
-			row1 = row4;
-			this.setSolverInfoRowAngular(row1,this._angleX,this._lm1,motorMassX,this._sd1,timeStep,isPositionPart);
-			j = row1.jacobian;
-			j.ang1X = this._axisXX;
-			j.ang1Y = this._axisXY;
-			j.ang1Z = this._axisXZ;
-			j.ang2X = this._axisXX;
-			j.ang2Y = this._axisXY;
-			j.ang2Z = this._axisXZ;
-		}
-		if(!this.ySingular) {
-			var impulse4 = this._impulses[4];
-			var row5 = info.rows[info.numRows++];
-			var _this4 = row5.jacobian;
-			_this4.lin1X = 0;
-			_this4.lin1Y = 0;
-			_this4.lin1Z = 0;
-			_this4.lin2X = 0;
-			_this4.lin2Y = 0;
-			_this4.lin2Z = 0;
-			_this4.ang1X = 0;
-			_this4.ang1Y = 0;
-			_this4.ang1Z = 0;
-			_this4.ang2X = 0;
-			_this4.ang2Y = 0;
-			_this4.ang2Z = 0;
-			row5.rhs = 0;
-			row5.cfm = 0;
-			row5.minImpulse = 0;
-			row5.maxImpulse = 0;
-			row5.motorSpeed = 0;
-			row5.motorMaxImpulse = 0;
-			row5.impulse = null;
-			row5.impulse = impulse4;
-			row1 = row5;
-			row1.rhs = angRhsY;
-			row1.cfm = 0;
-			row1.minImpulse = -1e65536;
-			row1.maxImpulse = 1e65536;
-			j = row1.jacobian;
-			j.ang1X = this._axisYX;
-			j.ang1Y = this._axisYY;
-			j.ang1Z = this._axisYZ;
-			j.ang2X = this._axisYX;
-			j.ang2Y = this._axisYY;
-			j.ang2Z = this._axisYZ;
-		}
-		if(!this.zSingular && (this._sd2.frequency <= 0 || !isPositionPart)) {
-			var impulse5 = this._impulses[5];
-			var row6 = info.rows[info.numRows++];
-			var _this5 = row6.jacobian;
-			_this5.lin1X = 0;
-			_this5.lin1Y = 0;
-			_this5.lin1Z = 0;
-			_this5.lin2X = 0;
-			_this5.lin2Y = 0;
-			_this5.lin2Z = 0;
-			_this5.ang1X = 0;
-			_this5.ang1Y = 0;
-			_this5.ang1Z = 0;
-			_this5.ang2X = 0;
-			_this5.ang2Y = 0;
-			_this5.ang2Z = 0;
-			row6.rhs = 0;
-			row6.cfm = 0;
-			row6.minImpulse = 0;
-			row6.maxImpulse = 0;
-			row6.motorSpeed = 0;
-			row6.motorMaxImpulse = 0;
-			row6.impulse = null;
-			row6.impulse = impulse5;
-			row1 = row6;
-			this.setSolverInfoRowAngular(row1,this._angleZ,this._lm2,motorMassZ,this._sd2,timeStep,isPositionPart);
-			j = row1.jacobian;
-			j.ang1X = this._axisZX;
-			j.ang1Y = this._axisZY;
-			j.ang1Z = this._axisZZ;
-			j.ang2X = this._axisZX;
-			j.ang2Y = this._axisZY;
-			j.ang2Z = this._axisZZ;
-		}
-	}
-	_syncAnchors() {
-		super._syncAnchors();
-		var rot1;
-		var rot100;
-		var rot101;
-		var rot102;
-		var rot110;
-		var rot111;
-		var rot112;
-		var rot120;
-		var rot121;
-		var rot122;
-		var rot2;
-		var rot200;
-		var rot201;
-		var rot202;
-		var rot210;
-		var rot211;
-		var rot212;
-		var rot220;
-		var rot221;
-		var rot222;
-		rot100 = this._basisX1X;
-		rot101 = this._basisY1X;
-		rot102 = this._basisZ1X;
-		rot110 = this._basisX1Y;
-		rot111 = this._basisY1Y;
-		rot112 = this._basisZ1Y;
-		rot120 = this._basisX1Z;
-		rot121 = this._basisY1Z;
-		rot122 = this._basisZ1Z;
-		rot200 = this._basisX2X;
-		rot201 = this._basisY2X;
-		rot202 = this._basisZ2X;
-		rot210 = this._basisX2Y;
-		rot211 = this._basisY2Y;
-		rot212 = this._basisZ2Y;
-		rot220 = this._basisX2Z;
-		rot221 = this._basisY2Z;
-		rot222 = this._basisZ2Z;
-		var relRot;
-		var relRot00;
-		var relRot01;
-		var relRot02;
-		var relRot10;
-		var relRot11;
-		var relRot12;
-		var relRot20;
-		var relRot21;
-		var relRot22;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = rot100 * rot200 + rot110 * rot210 + rot120 * rot220;
-		__tmp__01 = rot100 * rot201 + rot110 * rot211 + rot120 * rot221;
-		__tmp__02 = rot100 * rot202 + rot110 * rot212 + rot120 * rot222;
-		__tmp__10 = rot101 * rot200 + rot111 * rot210 + rot121 * rot220;
-		__tmp__11 = rot101 * rot201 + rot111 * rot211 + rot121 * rot221;
-		__tmp__12 = rot101 * rot202 + rot111 * rot212 + rot121 * rot222;
-		__tmp__20 = rot102 * rot200 + rot112 * rot210 + rot122 * rot220;
-		__tmp__21 = rot102 * rot201 + rot112 * rot211 + rot122 * rot221;
-		__tmp__22 = rot102 * rot202 + rot112 * rot212 + rot122 * rot222;
-		relRot00 = __tmp__00;
-		relRot01 = __tmp__01;
-		relRot02 = __tmp__02;
-		relRot10 = __tmp__10;
-		relRot11 = __tmp__11;
-		relRot12 = __tmp__12;
-		relRot20 = __tmp__20;
-		relRot21 = __tmp__21;
-		relRot22 = __tmp__22;
-		var angleAxisX;
-		var angleAxisXX;
-		var angleAxisXY;
-		var angleAxisXZ;
-		var angleAxisY;
-		var angleAxisYX;
-		var angleAxisYY;
-		var angleAxisYZ;
-		var angleAxisZ;
-		var angleAxisZX;
-		var angleAxisZY;
-		var angleAxisZZ;
-		angleAxisXX = this._basisX1X;
-		angleAxisXY = this._basisX1Y;
-		angleAxisXZ = this._basisX1Z;
-		angleAxisZX = this._basisZ2X;
-		angleAxisZY = this._basisZ2Y;
-		angleAxisZZ = this._basisZ2Z;
-		angleAxisYX = angleAxisZY * angleAxisXZ - angleAxisZZ * angleAxisXY;
-		angleAxisYY = angleAxisZZ * angleAxisXX - angleAxisZX * angleAxisXZ;
-		angleAxisYZ = angleAxisZX * angleAxisXY - angleAxisZY * angleAxisXX;
-		this._axisXX = angleAxisYY * angleAxisZZ - angleAxisYZ * angleAxisZY;
-		this._axisXY = angleAxisYZ * angleAxisZX - angleAxisYX * angleAxisZZ;
-		this._axisXZ = angleAxisYX * angleAxisZY - angleAxisYY * angleAxisZX;
-		this._axisYX = angleAxisYX;
-		this._axisYY = angleAxisYY;
-		this._axisYZ = angleAxisYZ;
-		this._axisZX = angleAxisXY * angleAxisYZ - angleAxisXZ * angleAxisYY;
-		this._axisZY = angleAxisXZ * angleAxisYX - angleAxisXX * angleAxisYZ;
-		this._axisZZ = angleAxisXX * angleAxisYY - angleAxisXY * angleAxisYX;
-		var l = this._axisXX * this._axisXX + this._axisXY * this._axisXY + this._axisXZ * this._axisXZ;
-		if(l > 0) {
-			l = 1 / Math.sqrt(l);
-		}
-		this._axisXX *= l;
-		this._axisXY *= l;
-		this._axisXZ *= l;
-		var l1 = this._axisYX * this._axisYX + this._axisYY * this._axisYY + this._axisYZ * this._axisYZ;
-		if(l1 > 0) {
-			l1 = 1 / Math.sqrt(l1);
-		}
-		this._axisYX *= l1;
-		this._axisYY *= l1;
-		this._axisYZ *= l1;
-		var l2 = this._axisZX * this._axisZX + this._axisZY * this._axisZY + this._axisZZ * this._axisZZ;
-		if(l2 > 0) {
-			l2 = 1 / Math.sqrt(l2);
-		}
-		this._axisZX *= l2;
-		this._axisZY *= l2;
-		this._axisZZ *= l2;
-		this.xSingular = this._axisXX * this._axisXX + this._axisXY * this._axisXY + this._axisXZ * this._axisXZ == 0;
-		this.ySingular = this._axisYX * this._axisYX + this._axisYY * this._axisYY + this._axisYZ * this._axisYZ == 0;
-		this.zSingular = this._axisZX * this._axisZX + this._axisZY * this._axisZY + this._axisZZ * this._axisZZ == 0;
-		var rot11;
-		var rot1001;
-		var rot1011;
-		var rot1021;
-		var rot1101;
-		var rot1111;
-		var rot1121;
-		var rot1201;
-		var rot1211;
-		var rot1221;
-		var rot21;
-		var rot2001;
-		var rot2011;
-		var rot2021;
-		var rot2101;
-		var rot2111;
-		var rot2121;
-		var rot2201;
-		var rot2211;
-		var rot2221;
-		rot1001 = this._basisX1X;
-		rot1011 = this._basisY1X;
-		rot1021 = this._basisZ1X;
-		rot1101 = this._basisX1Y;
-		rot1111 = this._basisY1Y;
-		rot1121 = this._basisZ1Y;
-		rot1201 = this._basisX1Z;
-		rot1211 = this._basisY1Z;
-		rot1221 = this._basisZ1Z;
-		rot2001 = this._basisX2X;
-		rot2011 = this._basisY2X;
-		rot2021 = this._basisZ2X;
-		rot2101 = this._basisX2Y;
-		rot2111 = this._basisY2Y;
-		rot2121 = this._basisZ2Y;
-		rot2201 = this._basisX2Z;
-		rot2211 = this._basisY2Z;
-		rot2221 = this._basisZ2Z;
-		var relRot1;
-		var relRot001;
-		var relRot011;
-		var relRot021;
-		var relRot101;
-		var relRot111;
-		var relRot121;
-		var relRot201;
-		var relRot211;
-		var relRot221;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = rot1001 * rot2001 + rot1101 * rot2101 + rot1201 * rot2201;
-		__tmp__011 = rot1001 * rot2011 + rot1101 * rot2111 + rot1201 * rot2211;
-		__tmp__021 = rot1001 * rot2021 + rot1101 * rot2121 + rot1201 * rot2221;
-		__tmp__101 = rot1011 * rot2001 + rot1111 * rot2101 + rot1211 * rot2201;
-		__tmp__111 = rot1011 * rot2011 + rot1111 * rot2111 + rot1211 * rot2211;
-		__tmp__121 = rot1011 * rot2021 + rot1111 * rot2121 + rot1211 * rot2221;
-		__tmp__201 = rot1021 * rot2001 + rot1121 * rot2101 + rot1221 * rot2201;
-		__tmp__211 = rot1021 * rot2011 + rot1121 * rot2111 + rot1221 * rot2211;
-		__tmp__221 = rot1021 * rot2021 + rot1121 * rot2121 + rot1221 * rot2221;
-		relRot001 = __tmp__001;
-		relRot011 = __tmp__011;
-		relRot021 = __tmp__021;
-		relRot101 = __tmp__101;
-		relRot111 = __tmp__111;
-		relRot121 = __tmp__121;
-		relRot201 = __tmp__201;
-		relRot211 = __tmp__211;
-		relRot221 = __tmp__221;
-		var angles;
-		var anglesX;
-		var anglesY;
-		var anglesZ;
-		var sy = relRot021;
-		if(sy <= -1) {
-			var xSubZ = Math.atan2(relRot211,relRot111);
-			anglesX = xSubZ * 0.5;
-			anglesY = -1.570796326794895;
-			anglesZ = -xSubZ * 0.5;
-		} else if(sy >= 1) {
-			var xAddZ = Math.atan2(relRot211,relRot111);
-			anglesX = xAddZ * 0.5;
-			anglesY = 1.570796326794895;
-			anglesZ = xAddZ * 0.5;
-		} else {
-			var y = Math.asin(sy);
-			var x = Math.atan2(-relRot121,relRot221);
-			var z = Math.atan2(-relRot011,relRot001);
-			anglesX = x;
-			anglesY = y;
-			anglesZ = z;
-		}
-		this._angleX = anglesX;
-		this._angleY = anglesY;
-		this._angleZ = anglesZ;
-		this.linearErrorX = this._anchor2X - this._anchor1X;
-		this.linearErrorY = this._anchor2Y - this._anchor1Y;
-		this.linearErrorZ = this._anchor2Z - this._anchor1Z;
-	}
-	_getVelocitySolverInfo(timeStep,info) {
-		super._getVelocitySolverInfo(timeStep,info);
-		this.getInfo(info,timeStep,false);
-	}
-	_getPositionSolverInfo(info) {
-		super._getPositionSolverInfo(info);
-		this.getInfo(info,null,true);
-	}
-	getAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisX1X;
-		v1.y = this._basisX1Y;
-		v1.z = this._basisX1Z;
-		return v;
-	}
-	getAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._basisZ2X;
-		v1.y = this._basisZ2Y;
-		v1.z = this._basisZ2Z;
-		return v;
-	}
-	getAxis1To(axis) {
-		var v = axis;
-		v.x = this._basisX1X;
-		v.y = this._basisX1Y;
-		v.z = this._basisX1Z;
-	}
-	getAxis2To(axis) {
-		var v = axis;
-		v.x = this._basisZ2X;
-		v.y = this._basisZ2Y;
-		v.z = this._basisZ2Z;
-	}
-	getLocalAxis1() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisX1X;
-		v1.y = this._localBasisX1Y;
-		v1.z = this._localBasisX1Z;
-		return v;
-	}
-	getLocalAxis2() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._localBasisZ2X;
-		v1.y = this._localBasisZ2Y;
-		v1.z = this._localBasisZ2Z;
-		return v;
-	}
-	getLocalAxis1To(axis) {
-		var v = axis;
-		v.x = this._localBasisX1X;
-		v.y = this._localBasisX1Y;
-		v.z = this._localBasisX1Z;
-	}
-	getLocalAxis2To(axis) {
-		var v = axis;
-		v.x = this._localBasisZ2X;
-		v.y = this._localBasisZ2Y;
-		v.z = this._localBasisZ2Z;
-	}
-	getSpringDamper1() {
-		return this._sd1;
-	}
-	getSpringDamper2() {
-		return this._sd2;
-	}
-	getLimitMotor1() {
-		return this._lm1;
-	}
-	getLimitMotor2() {
-		return this._lm2;
-	}
-	getAngle1() {
-		return this._angleX;
-	}
-	getAngle2() {
-		return this._angleZ;
-	}
-}
-oimo.dynamics.constraint.joint.UniversalJointConfig = class oimo_dynamics_constraint_joint_UniversalJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
-	constructor() {
-		super();
-		this.localAxis1 = new oimo.common.Vec3(1,0,0);
-		this.localAxis2 = new oimo.common.Vec3(1,0,0);
-		this.springDamper1 = new oimo.dynamics.constraint.joint.SpringDamper();
-		this.springDamper2 = new oimo.dynamics.constraint.joint.SpringDamper();
-		this.limitMotor1 = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
-		this.limitMotor2 = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
-	}
-	init(rigidBody1,rigidBody2,worldAnchor,worldAxis1,worldAxis2) {
-		this._init(rigidBody1,rigidBody2,worldAnchor);
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldAxis1;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
-		__tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
-		__tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var v2 = this.localAxis1;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		var v3;
-		var vX1;
-		var vY1;
-		var vZ1;
-		var v4 = worldAxis2;
-		vX1 = v4.x;
-		vY1 = v4.y;
-		vZ1 = v4.z;
-		var __tmp__X1;
-		var __tmp__Y1;
-		var __tmp__Z1;
-		__tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
-		__tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
-		__tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
-		vX1 = __tmp__X1;
-		vY1 = __tmp__Y1;
-		vZ1 = __tmp__Z1;
-		var v5 = this.localAxis2;
-		v5.x = vX1;
-		v5.y = vY1;
-		v5.z = vZ1;
-		return this;
-	}
-}
-if(!oimo.dynamics.constraint.solver) oimo.dynamics.constraint.solver = {};
-oimo.dynamics.constraint.solver.ConstraintSolverType = class oimo_dynamics_constraint_solver_ConstraintSolverType {
-}
-if(!oimo.dynamics.constraint.solver.common) oimo.dynamics.constraint.solver.common = {};
-oimo.dynamics.constraint.solver.common.ContactSolverMassDataRow = class oimo_dynamics_constraint_solver_common_ContactSolverMassDataRow {
-	constructor() {
-		this.invMLinN1X = 0;
-		this.invMLinN1Y = 0;
-		this.invMLinN1Z = 0;
-		this.invMLinN2X = 0;
-		this.invMLinN2Y = 0;
-		this.invMLinN2Z = 0;
-		this.invMAngN1X = 0;
-		this.invMAngN1Y = 0;
-		this.invMAngN1Z = 0;
-		this.invMAngN2X = 0;
-		this.invMAngN2Y = 0;
-		this.invMAngN2Z = 0;
-		this.invMLinT1X = 0;
-		this.invMLinT1Y = 0;
-		this.invMLinT1Z = 0;
-		this.invMLinT2X = 0;
-		this.invMLinT2Y = 0;
-		this.invMLinT2Z = 0;
-		this.invMAngT1X = 0;
-		this.invMAngT1Y = 0;
-		this.invMAngT1Z = 0;
-		this.invMAngT2X = 0;
-		this.invMAngT2Y = 0;
-		this.invMAngT2Z = 0;
-		this.invMLinB1X = 0;
-		this.invMLinB1Y = 0;
-		this.invMLinB1Z = 0;
-		this.invMLinB2X = 0;
-		this.invMLinB2Y = 0;
-		this.invMLinB2Z = 0;
-		this.invMAngB1X = 0;
-		this.invMAngB1Y = 0;
-		this.invMAngB1Z = 0;
-		this.invMAngB2X = 0;
-		this.invMAngB2Y = 0;
-		this.invMAngB2Z = 0;
-		this.massN = 0;
-		this.massTB00 = 0;
-		this.massTB01 = 0;
-		this.massTB10 = 0;
-		this.massTB11 = 0;
-	}
-}
-oimo.dynamics.constraint.solver.common.JointSolverMassDataRow = class oimo_dynamics_constraint_solver_common_JointSolverMassDataRow {
-	constructor() {
-		this.invMLin1X = 0;
-		this.invMLin1Y = 0;
-		this.invMLin1Z = 0;
-		this.invMLin2X = 0;
-		this.invMLin2Y = 0;
-		this.invMLin2Z = 0;
-		this.invMAng1X = 0;
-		this.invMAng1Y = 0;
-		this.invMAng1Z = 0;
-		this.invMAng2X = 0;
-		this.invMAng2Y = 0;
-		this.invMAng2Z = 0;
-		this.mass = 0;
-		this.massWithoutCfm = 0;
-	}
-}
-if(!oimo.dynamics.constraint.solver.direct) oimo.dynamics.constraint.solver.direct = {};
-oimo.dynamics.constraint.solver.direct.Boundary = class oimo_dynamics_constraint_solver_direct_Boundary {
-	constructor(maxRows) {
-		var this1 = new Array(maxRows);
-		this.iBounded = this1;
-		var this2 = new Array(maxRows);
-		this.iUnbounded = this2;
-		var this3 = new Array(maxRows);
-		this.signs = this3;
-		var this4 = new Array(maxRows);
-		this.b = this4;
-		this.numBounded = 0;
-		this.numUnbounded = 0;
-		this.matrixId = 0;
-	}
-	init(buildInfo) {
-		this.numBounded = buildInfo.numBounded;
-		var _g = 0;
-		var _g1 = this.numBounded;
-		while(_g < _g1) {
-			var i = _g++;
-			this.iBounded[i] = buildInfo.iBounded[i];
-			this.signs[i] = buildInfo.signs[i];
-		}
-		this.numUnbounded = buildInfo.numUnbounded;
-		this.matrixId = 0;
-		var _g2 = 0;
-		var _g3 = this.numUnbounded;
-		while(_g2 < _g3) {
-			var i1 = _g2++;
-			var idx = buildInfo.iUnbounded[i1];
-			this.iUnbounded[i1] = idx;
-			this.matrixId |= 1 << idx;
-		}
-	}
-	computeImpulses(info,mass,relVels,impulses,dImpulses,impulseFactor,noCheck) {
-		var _g = 0;
-		var _g1 = this.numUnbounded;
-		while(_g < _g1) {
-			var i = _g++;
-			var idx = this.iUnbounded[i];
-			var row = info.rows[idx];
-			var relVel = relVels[idx];
-			this.b[idx] = row.rhs * impulseFactor - relVel - row.cfm * impulses[idx];
-		}
-		var invMassWithoutCfm = mass._invMassWithoutCfm;
-		var _g2 = 0;
-		var _g3 = this.numBounded;
-		while(_g2 < _g3) {
-			var i1 = _g2++;
-			var idx1 = this.iBounded[i1];
-			var sign = this.signs[i1];
-			var row1 = info.rows[idx1];
-			var oldImpulse = impulses[idx1];
-			var impulse = sign < 0 ? row1.minImpulse : sign > 0 ? row1.maxImpulse : 0;
-			var dImpulse = impulse - oldImpulse;
-			dImpulses[idx1] = dImpulse;
-			if(dImpulse != 0) {
-				var _g21 = 0;
-				var _g31 = this.numUnbounded;
-				while(_g21 < _g31) {
-					var j = _g21++;
-					var idx2 = this.iUnbounded[j];
-					var dRelVel = invMassWithoutCfm[idx1][idx2] * dImpulse;
-					var _g22 = idx2;
-					var _g32 = this.b;
-					_g32[_g22] = _g32[_g22] - dRelVel;
-				}
-			}
-		}
-		var indices = this.iUnbounded;
-		var n = this.numUnbounded;
-		var id = 0;
-		var _g4 = 0;
-		var _g11 = n;
-		while(_g4 < _g11) {
-			var i2 = _g4++;
-			id |= 1 << indices[i2];
-		}
-		var massMatrix;
-		if(mass._cacheComputed[id]) {
-			massMatrix = mass._cachedSubmatrices[id];
-		} else {
-			mass.computeSubmatrix(id,indices,n);
-			mass._cacheComputed[id] = true;
-			massMatrix = mass._cachedSubmatrices[id];
-		}
-		var ok = true;
-		var _g41 = 0;
-		var _g5 = this.numUnbounded;
-		while(_g41 < _g5) {
-			var i3 = _g41++;
-			var idx3 = this.iUnbounded[i3];
-			var row2 = info.rows[idx3];
-			var oldImpulse1 = impulses[idx3];
-			var impulse1 = oldImpulse1;
-			var _g42 = 0;
-			var _g51 = this.numUnbounded;
-			while(_g42 < _g51) {
-				var j1 = _g42++;
-				var idx21 = this.iUnbounded[j1];
-				impulse1 += this.b[idx21] * massMatrix[i3][j1];
-			}
-			if(impulse1 < row2.minImpulse - oimo.common.Setting.directMlcpSolverEps || impulse1 > row2.maxImpulse + oimo.common.Setting.directMlcpSolverEps) {
-				ok = false;
-				break;
-			}
-			dImpulses[idx3] = impulse1 - oldImpulse1;
-		}
-		if(noCheck) {
-			return true;
-		}
-		if(!ok) {
-			return false;
-		}
-		var _g6 = 0;
-		var _g7 = this.numBounded;
-		while(_g6 < _g7) {
-			var i4 = _g6++;
-			var idx4 = this.iBounded[i4];
-			var row3 = info.rows[idx4];
-			var sign1 = this.signs[i4];
-			var error = 0;
-			var newImpulse = impulses[idx4] + dImpulses[idx4];
-			var relVel1 = relVels[idx4];
-			var _g61 = 0;
-			var _g71 = info.numRows;
-			while(_g61 < _g71) {
-				var j2 = _g61++;
-				relVel1 += invMassWithoutCfm[idx4][j2] * dImpulses[j2];
-			}
-			error = row3.rhs * impulseFactor - relVel1 - row3.cfm * newImpulse;
-			if(sign1 < 0 && error > oimo.common.Setting.directMlcpSolverEps || sign1 > 0 && error < -oimo.common.Setting.directMlcpSolverEps) {
-				ok = false;
-				break;
-			}
-		}
-		return ok;
-	}
-}
-oimo.dynamics.constraint.solver.direct.BoundaryBuildInfo = class oimo_dynamics_constraint_solver_direct_BoundaryBuildInfo {
-	constructor(size) {
-		this.size = size;
-		this.numBounded = 0;
-		var this1 = new Array(size);
-		this.iBounded = this1;
-		var this2 = new Array(size);
-		this.signs = this2;
-		this.numUnbounded = 0;
-		var this3 = new Array(size);
-		this.iUnbounded = this3;
-	}
-}
-oimo.dynamics.constraint.solver.direct.BoundaryBuilder = class oimo_dynamics_constraint_solver_direct_BoundaryBuilder {
-	constructor(maxRows) {
-		this.maxRows = maxRows;
-		this.numBoundaries = 0;
-		var this1 = new Array(1 << maxRows);
-		this.boundaries = this1;
-		this.bbInfo = new oimo.dynamics.constraint.solver.direct.BoundaryBuildInfo(maxRows);
-	}
-	buildBoundariesRecursive(info,i) {
-		if(i == info.numRows) {
-			if(this.boundaries[this.numBoundaries] == null) {
-				this.boundaries[this.numBoundaries] = new oimo.dynamics.constraint.solver.direct.Boundary(this.maxRows);
-			}
-			this.boundaries[this.numBoundaries++].init(this.bbInfo);
-			return;
-		}
-		var row = info.rows[i];
-		var lowerLimitEnabled = row.minImpulse > -1e65536;
-		var upperLimitEnabled = row.maxImpulse < 1e65536;
-		var disabled = row.minImpulse == 0 && row.maxImpulse == 0;
-		if(disabled) {
-			var _this = this.bbInfo;
-			_this.iBounded[_this.numBounded] = i;
-			_this.signs[_this.numBounded] = 0;
-			_this.numBounded++;
-			this.buildBoundariesRecursive(info,i + 1);
-			this.bbInfo.numBounded--;
-			return;
-		}
-		var _this1 = this.bbInfo;
-		_this1.iUnbounded[_this1.numUnbounded] = i;
-		_this1.numUnbounded++;
-		this.buildBoundariesRecursive(info,i + 1);
-		this.bbInfo.numUnbounded--;
-		if(lowerLimitEnabled) {
-			var _this2 = this.bbInfo;
-			_this2.iBounded[_this2.numBounded] = i;
-			_this2.signs[_this2.numBounded] = -1;
-			_this2.numBounded++;
-			this.buildBoundariesRecursive(info,i + 1);
-			this.bbInfo.numBounded--;
-		}
-		if(upperLimitEnabled) {
-			var _this3 = this.bbInfo;
-			_this3.iBounded[_this3.numBounded] = i;
-			_this3.signs[_this3.numBounded] = 1;
-			_this3.numBounded++;
-			this.buildBoundariesRecursive(info,i + 1);
-			this.bbInfo.numBounded--;
-		}
-	}
-	buildBoundaries(info) {
-		this.numBoundaries = 0;
-		var _this = this.bbInfo;
-		_this.numBounded = 0;
-		_this.numUnbounded = 0;
-		this.buildBoundariesRecursive(info,0);
-	}
-}
-oimo.dynamics.constraint.solver.direct.BoundarySelector = class oimo_dynamics_constraint_solver_direct_BoundarySelector {
-	constructor(n) {
-		this.n = n;
-		var this1 = new Array(n);
-		this.indices = this1;
-		var this2 = new Array(n);
-		this.tmpIndices = this2;
-		var _g = 0;
-		var _g1 = n;
-		while(_g < _g1) {
-			var i = _g++;
-			this.indices[i] = i;
-		}
-	}
-	getIndex(i) {
-		return this.indices[i];
-	}
-	select(index) {
-		var i = 0;
-		while(this.indices[i] != index) ++i;
-		while(i > 0) {
-			var tmp = this.indices[i];
-			this.indices[i] = this.indices[i - 1];
-			this.indices[i - 1] = tmp;
-			--i;
-		}
-	}
-	setSize(size) {
-		var numSmaller = 0;
-		var numGreater = 0;
-		var _g = 0;
-		var _g1 = this.n;
-		while(_g < _g1) {
-			var i = _g++;
-			var idx = this.indices[i];
-			if(idx < size) {
-				this.tmpIndices[numSmaller] = idx;
-				++numSmaller;
-			} else {
-				this.tmpIndices[size + numGreater] = idx;
-				++numGreater;
-			}
-		}
-		var tmp = this.indices;
-		this.indices = this.tmpIndices;
-		this.tmpIndices = tmp;
-	}
-}
-oimo.dynamics.constraint.solver.direct.DirectJointConstraintSolver = class oimo_dynamics_constraint_solver_direct_DirectJointConstraintSolver extends oimo.dynamics.constraint.ConstraintSolver {
-	constructor(joint) {
-		super();
-		this.joint = joint;
-		this.info = new oimo.dynamics.constraint.info.joint.JointSolverInfo();
-		var maxRows = oimo.common.Setting.maxJacobianRows;
-		this.massMatrix = new oimo.dynamics.constraint.solver.direct.MassMatrix(maxRows);
-		this.boundaryBuilder = new oimo.dynamics.constraint.solver.direct.BoundaryBuilder(maxRows);
-		var this1 = new Array(maxRows);
-		this.massData = this1;
-		var _g = 0;
-		var _g1 = this.massData.length;
-		while(_g < _g1) {
-			var i = _g++;
-			this.massData[i] = new oimo.dynamics.constraint.solver.common.JointSolverMassDataRow();
-		}
-		var numMaxBoundaries = this.boundaryBuilder.boundaries.length;
-		this.velBoundarySelector = new oimo.dynamics.constraint.solver.direct.BoundarySelector(numMaxBoundaries);
-		this.posBoundarySelector = new oimo.dynamics.constraint.solver.direct.BoundarySelector(numMaxBoundaries);
-		var this2 = new Array(maxRows);
-		this.relVels = this2;
-		var this3 = new Array(maxRows);
-		this.impulses = this3;
-		var this4 = new Array(maxRows);
-		this.dImpulses = this4;
-		var this5 = new Array(maxRows);
-		this.dTotalImpulses = this5;
-		var _g2 = 0;
-		var _g3 = maxRows;
-		while(_g2 < _g3) {
-			var i1 = _g2++;
-			this.relVels[i1] = 0;
-			this.impulses[i1] = 0;
-			this.dImpulses[i1] = 0;
-			this.dTotalImpulses[i1] = 0;
-		}
-	}
-	preSolveVelocity(timeStep) {
-		this.joint._syncAnchors();
-		this.joint._getVelocitySolverInfo(timeStep,this.info);
-		this._b1 = this.info.b1;
-		this._b2 = this.info.b2;
-		this.massMatrix.computeInvMass(this.info,this.massData);
-		var _this = this.boundaryBuilder;
-		_this.numBoundaries = 0;
-		var _this1 = _this.bbInfo;
-		_this1.numBounded = 0;
-		_this1.numUnbounded = 0;
-		_this.buildBoundariesRecursive(this.info,0);
-		var _this2 = this.velBoundarySelector;
-		var size = this.boundaryBuilder.numBoundaries;
-		var numSmaller = 0;
-		var numGreater = 0;
-		var _g = 0;
-		var _g1 = _this2.n;
-		while(_g < _g1) {
-			var i = _g++;
-			var idx = _this2.indices[i];
-			if(idx < size) {
-				_this2.tmpIndices[numSmaller] = idx;
-				++numSmaller;
-			} else {
-				_this2.tmpIndices[size + numGreater] = idx;
-				++numGreater;
-			}
-		}
-		var tmp = _this2.indices;
-		_this2.indices = _this2.tmpIndices;
-		_this2.tmpIndices = tmp;
-	}
-	warmStart(timeStep) {
-		var factor = this.joint._positionCorrectionAlgorithm == oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE ? oimo.common.Setting.jointWarmStartingFactorForBaungarte : oimo.common.Setting.jointWarmStartingFactor;
-		factor *= timeStep.dtRatio;
-		if(factor <= 0) {
-			var _g = 0;
-			var _g1 = this.info.numRows;
-			while(_g < _g1) {
-				var i = _g++;
-				var row = this.info.rows[i];
-				var _this = row.impulse;
-				_this.impulse = 0;
-				_this.impulseM = 0;
-				_this.impulseP = 0;
-			}
-			return;
-		}
-		var _g2 = 0;
-		var _g11 = this.info.numRows;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			var row1 = this.info.rows[i1];
-			var imp = row1.impulse;
-			var impulse = imp.impulse * factor;
-			if(impulse < row1.minImpulse) {
-				impulse = row1.minImpulse;
-			} else if(impulse > row1.maxImpulse) {
-				impulse = row1.maxImpulse;
-			}
-			imp.impulse = impulse;
-			if(row1.motorMaxImpulse > 0) {
-				var impulseM = imp.impulseM * factor;
-				var max = row1.motorMaxImpulse;
-				if(impulseM < -max) {
-					impulseM = -max;
-				} else if(impulseM > max) {
-					impulseM = max;
-				}
-				imp.impulseM = impulseM;
-			} else {
-				imp.impulseM = 0;
-			}
-			this.dImpulses[i1] = imp.impulse + imp.impulseM;
-		}
-		var impulses = this.dImpulses;
-		var linearSet = false;
-		var angularSet = false;
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = this._b1._velX;
-		lv1Y = this._b1._velY;
-		lv1Z = this._b1._velZ;
-		lv2X = this._b2._velX;
-		lv2Y = this._b2._velY;
-		lv2Z = this._b2._velZ;
-		av1X = this._b1._angVelX;
-		av1Y = this._b1._angVelY;
-		av1Z = this._b1._angVelZ;
-		av2X = this._b2._angVelX;
-		av2Y = this._b2._angVelY;
-		av2Z = this._b2._angVelZ;
-		var _g3 = 0;
-		var _g12 = this.info.numRows;
-		while(_g3 < _g12) {
-			var i2 = _g3++;
-			var row2 = this.info.rows[i2];
-			var j = row2.jacobian;
-			var md = this.massData[i2];
-			var imp1 = impulses[i2];
-			if((j.flag & 1) != 0) {
-				lv1X += md.invMLin1X * imp1;
-				lv1Y += md.invMLin1Y * imp1;
-				lv1Z += md.invMLin1Z * imp1;
-				lv2X += md.invMLin2X * -imp1;
-				lv2Y += md.invMLin2Y * -imp1;
-				lv2Z += md.invMLin2Z * -imp1;
-				linearSet = true;
-			}
-			if((j.flag & 2) != 0) {
-				av1X += md.invMAng1X * imp1;
-				av1Y += md.invMAng1Y * imp1;
-				av1Z += md.invMAng1Z * imp1;
-				av2X += md.invMAng2X * -imp1;
-				av2Y += md.invMAng2Y * -imp1;
-				av2Z += md.invMAng2Z * -imp1;
-				angularSet = true;
-			}
-		}
-		if(linearSet) {
-			this._b1._velX = lv1X;
-			this._b1._velY = lv1Y;
-			this._b1._velZ = lv1Z;
-			this._b2._velX = lv2X;
-			this._b2._velY = lv2Y;
-			this._b2._velZ = lv2Z;
-		}
-		if(angularSet) {
-			this._b1._angVelX = av1X;
-			this._b1._angVelY = av1Y;
-			this._b1._angVelZ = av1Z;
-			this._b2._angVelX = av2X;
-			this._b2._angVelY = av2Y;
-			this._b2._angVelZ = av2Z;
-		}
-	}
-	solveVelocity() {
-		var numRows = this.info.numRows;
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = this._b1._velX;
-		lv1Y = this._b1._velY;
-		lv1Z = this._b1._velZ;
-		lv2X = this._b2._velX;
-		lv2Y = this._b2._velY;
-		lv2Z = this._b2._velZ;
-		av1X = this._b1._angVelX;
-		av1Y = this._b1._angVelY;
-		av1Z = this._b1._angVelZ;
-		av2X = this._b2._angVelX;
-		av2Y = this._b2._angVelY;
-		av2Z = this._b2._angVelZ;
-		var _g = 0;
-		var _g1 = numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var imp = row.impulse;
-			var j = row.jacobian;
-			var relVel = 0;
-			relVel += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
-			relVel -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
-			relVel += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
-			relVel -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
-			this.relVels[i] = relVel;
-			this.impulses[i] = imp.impulse;
-			this.dTotalImpulses[i] = 0;
-		}
-		var invMass = this.massMatrix._invMassWithoutCfm;
-		var _g2 = 0;
-		var _g3 = numRows;
-		while(_g2 < _g3) {
-			var i1 = _g2++;
-			var row1 = this.info.rows[i1];
-			var imp1 = row1.impulse;
-			var md = this.massData[i1];
-			if(row1.motorMaxImpulse > 0) {
-				var oldImpulseM = imp1.impulseM;
-				var impulseM = oldImpulseM + md.massWithoutCfm * (-row1.motorSpeed - this.relVels[i1]);
-				var maxImpulseM = row1.motorMaxImpulse;
-				if(impulseM < -maxImpulseM) {
-					impulseM = -maxImpulseM;
-				} else if(impulseM > maxImpulseM) {
-					impulseM = maxImpulseM;
-				}
-				imp1.impulseM = impulseM;
-				var dImpulseM = impulseM - oldImpulseM;
-				this.dTotalImpulses[i1] = dImpulseM;
-				var _g21 = 0;
-				var _g31 = numRows;
-				while(_g21 < _g31) {
-					var j1 = _g21++;
-					var _g22 = j1;
-					var _g32 = this.relVels;
-					_g32[_g22] = _g32[_g22] + dImpulseM * invMass[i1][j1];
-				}
-			}
-		}
-		var solved = false;
-		var _g4 = 0;
-		var _g5 = this.boundaryBuilder.numBoundaries;
-		while(_g4 < _g5) {
-			var i2 = _g4++;
-			var idx = this.velBoundarySelector.indices[i2];
-			var b = this.boundaryBuilder.boundaries[idx];
-			if(b.computeImpulses(this.info,this.massMatrix,this.relVels,this.impulses,this.dImpulses,1,false)) {
-				var _g41 = 0;
-				var _g51 = numRows;
-				while(_g41 < _g51) {
-					var j2 = _g41++;
-					var row2 = this.info.rows[j2];
-					var imp2 = row2.impulse;
-					var dimp = this.dImpulses[j2];
-					imp2.impulse += dimp;
-					var _g42 = j2;
-					var _g52 = this.dTotalImpulses;
-					_g52[_g42] = _g52[_g42] + dimp;
-				}
-				var impulses = this.dTotalImpulses;
-				var linearSet = false;
-				var angularSet = false;
-				var lv11;
-				var lv1X1;
-				var lv1Y1;
-				var lv1Z1;
-				var lv21;
-				var lv2X1;
-				var lv2Y1;
-				var lv2Z1;
-				var av11;
-				var av1X1;
-				var av1Y1;
-				var av1Z1;
-				var av21;
-				var av2X1;
-				var av2Y1;
-				var av2Z1;
-				lv1X1 = this._b1._velX;
-				lv1Y1 = this._b1._velY;
-				lv1Z1 = this._b1._velZ;
-				lv2X1 = this._b2._velX;
-				lv2Y1 = this._b2._velY;
-				lv2Z1 = this._b2._velZ;
-				av1X1 = this._b1._angVelX;
-				av1Y1 = this._b1._angVelY;
-				av1Z1 = this._b1._angVelZ;
-				av2X1 = this._b2._angVelX;
-				av2Y1 = this._b2._angVelY;
-				av2Z1 = this._b2._angVelZ;
-				var _g6 = 0;
-				var _g11 = this.info.numRows;
-				while(_g6 < _g11) {
-					var i3 = _g6++;
-					var row3 = this.info.rows[i3];
-					var j3 = row3.jacobian;
-					var md1 = this.massData[i3];
-					var imp3 = impulses[i3];
-					if((j3.flag & 1) != 0) {
-						lv1X1 += md1.invMLin1X * imp3;
-						lv1Y1 += md1.invMLin1Y * imp3;
-						lv1Z1 += md1.invMLin1Z * imp3;
-						lv2X1 += md1.invMLin2X * -imp3;
-						lv2Y1 += md1.invMLin2Y * -imp3;
-						lv2Z1 += md1.invMLin2Z * -imp3;
-						linearSet = true;
-					}
-					if((j3.flag & 2) != 0) {
-						av1X1 += md1.invMAng1X * imp3;
-						av1Y1 += md1.invMAng1Y * imp3;
-						av1Z1 += md1.invMAng1Z * imp3;
-						av2X1 += md1.invMAng2X * -imp3;
-						av2Y1 += md1.invMAng2Y * -imp3;
-						av2Z1 += md1.invMAng2Z * -imp3;
-						angularSet = true;
-					}
-				}
-				if(linearSet) {
-					this._b1._velX = lv1X1;
-					this._b1._velY = lv1Y1;
-					this._b1._velZ = lv1Z1;
-					this._b2._velX = lv2X1;
-					this._b2._velY = lv2Y1;
-					this._b2._velZ = lv2Z1;
-				}
-				if(angularSet) {
-					this._b1._angVelX = av1X1;
-					this._b1._angVelY = av1Y1;
-					this._b1._angVelZ = av1Z1;
-					this._b2._angVelX = av2X1;
-					this._b2._angVelY = av2Y1;
-					this._b2._angVelZ = av2Z1;
-				}
-				var _this = this.velBoundarySelector;
-				var i4 = 0;
-				while(_this.indices[i4] != idx) ++i4;
-				while(i4 > 0) {
-					var tmp = _this.indices[i4];
-					_this.indices[i4] = _this.indices[i4 - 1];
-					_this.indices[i4 - 1] = tmp;
-					--i4;
-				}
-				solved = true;
-				break;
-			}
-		}
-		if(!solved) {
-			console.log("src/oimo/dynamics/constraint/solver/direct/DirectJointConstraintSolver.hx:335:","could not find solution. (velocity)");
-			return;
-		}
-	}
-	postSolveVelocity(timeStep) {
-		var lin;
-		var linX;
-		var linY;
-		var linZ;
-		var ang;
-		var angX;
-		var angY;
-		var angZ;
-		linX = 0;
-		linY = 0;
-		linZ = 0;
-		angX = 0;
-		angY = 0;
-		angZ = 0;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var imp = row.impulse;
-			var j = row.jacobian;
-			if((j.flag & 1) != 0) {
-				linX += j.lin1X * imp.impulse;
-				linY += j.lin1Y * imp.impulse;
-				linZ += j.lin1Z * imp.impulse;
-			} else if((j.flag & 2) != 0) {
-				angX += j.ang1X * imp.impulse;
-				angY += j.ang1Y * imp.impulse;
-				angZ += j.ang1Z * imp.impulse;
-			}
-		}
-		this.joint._appliedForceX = linX * timeStep.invDt;
-		this.joint._appliedForceY = linY * timeStep.invDt;
-		this.joint._appliedForceZ = linZ * timeStep.invDt;
-		this.joint._appliedTorqueX = angX * timeStep.invDt;
-		this.joint._appliedTorqueY = angY * timeStep.invDt;
-		this.joint._appliedTorqueZ = angZ * timeStep.invDt;
-	}
-	preSolvePosition(timeStep) {
-		this.joint._syncAnchors();
-		this.joint._getPositionSolverInfo(this.info);
-		this._b1 = this.info.b1;
-		this._b2 = this.info.b2;
-		this.massMatrix.computeInvMass(this.info,this.massData);
-		var _this = this.boundaryBuilder;
-		_this.numBoundaries = 0;
-		var _this1 = _this.bbInfo;
-		_this1.numBounded = 0;
-		_this1.numUnbounded = 0;
-		_this.buildBoundariesRecursive(this.info,0);
-		var _this2 = this.posBoundarySelector;
-		var size = this.boundaryBuilder.numBoundaries;
-		var numSmaller = 0;
-		var numGreater = 0;
-		var _g = 0;
-		var _g1 = _this2.n;
-		while(_g < _g1) {
-			var i = _g++;
-			var idx = _this2.indices[i];
-			if(idx < size) {
-				_this2.tmpIndices[numSmaller] = idx;
-				++numSmaller;
-			} else {
-				_this2.tmpIndices[size + numGreater] = idx;
-				++numGreater;
-			}
-		}
-		var tmp = _this2.indices;
-		_this2.indices = _this2.tmpIndices;
-		_this2.tmpIndices = tmp;
-		var _g2 = 0;
-		var _g11 = this.info.numRows;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			this.info.rows[i1].impulse.impulseP = 0;
-		}
-	}
-	solvePositionSplitImpulse() {
-		var numRows = this.info.numRows;
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = this._b1._pseudoVelX;
-		lv1Y = this._b1._pseudoVelY;
-		lv1Z = this._b1._pseudoVelZ;
-		lv2X = this._b2._pseudoVelX;
-		lv2Y = this._b2._pseudoVelY;
-		lv2Z = this._b2._pseudoVelZ;
-		av1X = this._b1._angPseudoVelX;
-		av1Y = this._b1._angPseudoVelY;
-		av1Z = this._b1._angPseudoVelZ;
-		av2X = this._b2._angPseudoVelX;
-		av2Y = this._b2._angPseudoVelY;
-		av2Z = this._b2._angPseudoVelZ;
-		var _g = 0;
-		var _g1 = numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var imp = row.impulse;
-			var j = row.jacobian;
-			var relVel = 0;
-			relVel += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
-			relVel -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
-			relVel += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
-			relVel -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
-			this.relVels[i] = relVel;
-			this.impulses[i] = imp.impulseP;
-		}
-		var solved = false;
-		var _g2 = 0;
-		var _g3 = this.boundaryBuilder.numBoundaries;
-		while(_g2 < _g3) {
-			var i1 = _g2++;
-			var idx = this.posBoundarySelector.indices[i1];
-			var b = this.boundaryBuilder.boundaries[idx];
-			if(b.computeImpulses(this.info,this.massMatrix,this.relVels,this.impulses,this.dImpulses,oimo.common.Setting.positionSplitImpulseBaumgarte,false)) {
-				var _g21 = 0;
-				var _g31 = numRows;
-				while(_g21 < _g31) {
-					var j1 = _g21++;
-					var row1 = this.info.rows[j1];
-					var imp1 = row1.impulse;
-					var dimp = this.dImpulses[j1];
-					imp1.impulseP += dimp;
-				}
-				var impulses = this.dImpulses;
-				var linearSet = false;
-				var angularSet = false;
-				var lv11;
-				var lv1X1;
-				var lv1Y1;
-				var lv1Z1;
-				var lv21;
-				var lv2X1;
-				var lv2Y1;
-				var lv2Z1;
-				var av11;
-				var av1X1;
-				var av1Y1;
-				var av1Z1;
-				var av21;
-				var av2X1;
-				var av2Y1;
-				var av2Z1;
-				lv1X1 = this._b1._pseudoVelX;
-				lv1Y1 = this._b1._pseudoVelY;
-				lv1Z1 = this._b1._pseudoVelZ;
-				lv2X1 = this._b2._pseudoVelX;
-				lv2Y1 = this._b2._pseudoVelY;
-				lv2Z1 = this._b2._pseudoVelZ;
-				av1X1 = this._b1._angPseudoVelX;
-				av1Y1 = this._b1._angPseudoVelY;
-				av1Z1 = this._b1._angPseudoVelZ;
-				av2X1 = this._b2._angPseudoVelX;
-				av2Y1 = this._b2._angPseudoVelY;
-				av2Z1 = this._b2._angPseudoVelZ;
-				var _g4 = 0;
-				var _g11 = this.info.numRows;
-				while(_g4 < _g11) {
-					var i2 = _g4++;
-					var row2 = this.info.rows[i2];
-					var j2 = row2.jacobian;
-					var md = this.massData[i2];
-					var imp2 = impulses[i2];
-					if((j2.flag & 1) != 0) {
-						lv1X1 += md.invMLin1X * imp2;
-						lv1Y1 += md.invMLin1Y * imp2;
-						lv1Z1 += md.invMLin1Z * imp2;
-						lv2X1 += md.invMLin2X * -imp2;
-						lv2Y1 += md.invMLin2Y * -imp2;
-						lv2Z1 += md.invMLin2Z * -imp2;
-						linearSet = true;
-					}
-					if((j2.flag & 2) != 0) {
-						av1X1 += md.invMAng1X * imp2;
-						av1Y1 += md.invMAng1Y * imp2;
-						av1Z1 += md.invMAng1Z * imp2;
-						av2X1 += md.invMAng2X * -imp2;
-						av2Y1 += md.invMAng2Y * -imp2;
-						av2Z1 += md.invMAng2Z * -imp2;
-						angularSet = true;
-					}
-				}
-				if(linearSet) {
-					this._b1._pseudoVelX = lv1X1;
-					this._b1._pseudoVelY = lv1Y1;
-					this._b1._pseudoVelZ = lv1Z1;
-					this._b2._pseudoVelX = lv2X1;
-					this._b2._pseudoVelY = lv2Y1;
-					this._b2._pseudoVelZ = lv2Z1;
-				}
-				if(angularSet) {
-					this._b1._angPseudoVelX = av1X1;
-					this._b1._angPseudoVelY = av1Y1;
-					this._b1._angPseudoVelZ = av1Z1;
-					this._b2._angPseudoVelX = av2X1;
-					this._b2._angPseudoVelY = av2Y1;
-					this._b2._angPseudoVelZ = av2Z1;
-				}
-				var _this = this.posBoundarySelector;
-				var i3 = 0;
-				while(_this.indices[i3] != idx) ++i3;
-				while(i3 > 0) {
-					var tmp = _this.indices[i3];
-					_this.indices[i3] = _this.indices[i3 - 1];
-					_this.indices[i3 - 1] = tmp;
-					--i3;
-				}
-				solved = true;
-				break;
-			}
-		}
-		if(!solved) {
-			console.log("src/oimo/dynamics/constraint/solver/direct/DirectJointConstraintSolver.hx:450:","could not find solution. (split impulse)");
-			return;
-		}
-	}
-	solvePositionNgs(timeStep) {
-		this.joint._syncAnchors();
-		this.joint._getPositionSolverInfo(this.info);
-		this._b1 = this.info.b1;
-		this._b2 = this.info.b2;
-		this.massMatrix.computeInvMass(this.info,this.massData);
-		var _this = this.boundaryBuilder;
-		_this.numBoundaries = 0;
-		var _this1 = _this.bbInfo;
-		_this1.numBounded = 0;
-		_this1.numUnbounded = 0;
-		_this.buildBoundariesRecursive(this.info,0);
-		var _this2 = this.posBoundarySelector;
-		var size = this.boundaryBuilder.numBoundaries;
-		var numSmaller = 0;
-		var numGreater = 0;
-		var _g = 0;
-		var _g1 = _this2.n;
-		while(_g < _g1) {
-			var i = _g++;
-			var idx = _this2.indices[i];
-			if(idx < size) {
-				_this2.tmpIndices[numSmaller] = idx;
-				++numSmaller;
-			} else {
-				_this2.tmpIndices[size + numGreater] = idx;
-				++numGreater;
-			}
-		}
-		var tmp = _this2.indices;
-		_this2.indices = _this2.tmpIndices;
-		_this2.tmpIndices = tmp;
-		var numRows = this.info.numRows;
-		var _g2 = 0;
-		var _g11 = numRows;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			var row = this.info.rows[i1];
-			var imp = row.impulse;
-			var j = row.jacobian;
-			this.relVels[i1] = 0;
-			this.impulses[i1] = imp.impulseP;
-		}
-		var solved = false;
-		var _g21 = 0;
-		var _g3 = this.boundaryBuilder.numBoundaries;
-		while(_g21 < _g3) {
-			var i2 = _g21++;
-			var idx1 = this.posBoundarySelector.indices[i2];
-			var b = this.boundaryBuilder.boundaries[idx1];
-			if(b.computeImpulses(this.info,this.massMatrix,this.relVels,this.impulses,this.dImpulses,oimo.common.Setting.positionNgsBaumgarte,false)) {
-				var _g22 = 0;
-				var _g31 = numRows;
-				while(_g22 < _g31) {
-					var j1 = _g22++;
-					var row1 = this.info.rows[j1];
-					var imp1 = row1.impulse;
-					var dimp = this.dImpulses[j1];
-					imp1.impulseP += dimp;
-				}
-				var impulses = this.dImpulses;
-				var linearSet = false;
-				var angularSet = false;
-				var lv1;
-				var lv1X;
-				var lv1Y;
-				var lv1Z;
-				var lv2;
-				var lv2X;
-				var lv2Y;
-				var lv2Z;
-				var av1;
-				var av1X;
-				var av1Y;
-				var av1Z;
-				var av2;
-				var av2X;
-				var av2Y;
-				var av2Z;
-				lv1X = 0;
-				lv1Y = 0;
-				lv1Z = 0;
-				lv2X = 0;
-				lv2Y = 0;
-				lv2Z = 0;
-				av1X = 0;
-				av1Y = 0;
-				av1Z = 0;
-				av2X = 0;
-				av2Y = 0;
-				av2Z = 0;
-				var _g4 = 0;
-				var _g12 = this.info.numRows;
-				while(_g4 < _g12) {
-					var i3 = _g4++;
-					var row2 = this.info.rows[i3];
-					var j2 = row2.jacobian;
-					var md = this.massData[i3];
-					var imp2 = impulses[i3];
-					if((j2.flag & 1) != 0) {
-						lv1X += md.invMLin1X * imp2;
-						lv1Y += md.invMLin1Y * imp2;
-						lv1Z += md.invMLin1Z * imp2;
-						lv2X += md.invMLin2X * -imp2;
-						lv2Y += md.invMLin2Y * -imp2;
-						lv2Z += md.invMLin2Z * -imp2;
-						linearSet = true;
-					}
-					if((j2.flag & 2) != 0) {
-						av1X += md.invMAng1X * imp2;
-						av1Y += md.invMAng1Y * imp2;
-						av1Z += md.invMAng1Z * imp2;
-						av2X += md.invMAng2X * -imp2;
-						av2Y += md.invMAng2Y * -imp2;
-						av2Z += md.invMAng2Z * -imp2;
-						angularSet = true;
-					}
-				}
-				if(linearSet) {
-					var _this3 = this._b1;
-					_this3._transform._positionX += lv1X;
-					_this3._transform._positionY += lv1Y;
-					_this3._transform._positionZ += lv1Z;
-					var _this4 = this._b2;
-					_this4._transform._positionX += lv2X;
-					_this4._transform._positionY += lv2Y;
-					_this4._transform._positionZ += lv2Z;
-				}
-				if(angularSet) {
-					var _this5 = this._b1;
-					var theta = Math.sqrt(av1X * av1X + av1Y * av1Y + av1Z * av1Z);
-					var halfTheta = theta * 0.5;
-					var rotationToSinAxisFactor;
-					var cosHalfTheta;
-					if(halfTheta < 0.5) {
-						var ht2 = halfTheta * halfTheta;
-						rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
-						cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
-					} else {
-						rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
-						cosHalfTheta = Math.cos(halfTheta);
-					}
-					var sinAxis;
-					var sinAxisX;
-					var sinAxisY;
-					var sinAxisZ;
-					sinAxisX = av1X * rotationToSinAxisFactor;
-					sinAxisY = av1Y * rotationToSinAxisFactor;
-					sinAxisZ = av1Z * rotationToSinAxisFactor;
-					var dq;
-					var dqX;
-					var dqY;
-					var dqZ;
-					var dqW;
-					dqX = sinAxisX;
-					dqY = sinAxisY;
-					dqZ = sinAxisZ;
-					dqW = cosHalfTheta;
-					var q;
-					var qX;
-					var qY;
-					var qZ;
-					var qW;
-					var e00 = _this5._transform._rotation00;
-					var e11 = _this5._transform._rotation11;
-					var e22 = _this5._transform._rotation22;
-					var t = e00 + e11 + e22;
-					var s;
-					if(t > 0) {
-						s = Math.sqrt(t + 1);
-						qW = 0.5 * s;
-						s = 0.5 / s;
-						qX = (_this5._transform._rotation21 - _this5._transform._rotation12) * s;
-						qY = (_this5._transform._rotation02 - _this5._transform._rotation20) * s;
-						qZ = (_this5._transform._rotation10 - _this5._transform._rotation01) * s;
-					} else if(e00 > e11) {
-						if(e00 > e22) {
-							s = Math.sqrt(e00 - e11 - e22 + 1);
-							qX = 0.5 * s;
-							s = 0.5 / s;
-							qY = (_this5._transform._rotation01 + _this5._transform._rotation10) * s;
-							qZ = (_this5._transform._rotation02 + _this5._transform._rotation20) * s;
-							qW = (_this5._transform._rotation21 - _this5._transform._rotation12) * s;
-						} else {
-							s = Math.sqrt(e22 - e00 - e11 + 1);
-							qZ = 0.5 * s;
-							s = 0.5 / s;
-							qX = (_this5._transform._rotation02 + _this5._transform._rotation20) * s;
-							qY = (_this5._transform._rotation12 + _this5._transform._rotation21) * s;
-							qW = (_this5._transform._rotation10 - _this5._transform._rotation01) * s;
-						}
-					} else if(e11 > e22) {
-						s = Math.sqrt(e11 - e22 - e00 + 1);
-						qY = 0.5 * s;
-						s = 0.5 / s;
-						qX = (_this5._transform._rotation01 + _this5._transform._rotation10) * s;
-						qZ = (_this5._transform._rotation12 + _this5._transform._rotation21) * s;
-						qW = (_this5._transform._rotation02 - _this5._transform._rotation20) * s;
-					} else {
-						s = Math.sqrt(e22 - e00 - e11 + 1);
-						qZ = 0.5 * s;
-						s = 0.5 / s;
-						qX = (_this5._transform._rotation02 + _this5._transform._rotation20) * s;
-						qY = (_this5._transform._rotation12 + _this5._transform._rotation21) * s;
-						qW = (_this5._transform._rotation10 - _this5._transform._rotation01) * s;
-					}
-					qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
-					qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
-					qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
-					qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
-					var l = qX * qX + qY * qY + qZ * qZ + qW * qW;
-					if(l > 1e-32) {
-						l = 1 / Math.sqrt(l);
-					}
-					qX *= l;
-					qY *= l;
-					qZ *= l;
-					qW *= l;
-					var x = qX;
-					var y = qY;
-					var z = qZ;
-					var w = qW;
-					var x2 = 2 * x;
-					var y2 = 2 * y;
-					var z2 = 2 * z;
-					var xx = x * x2;
-					var yy = y * y2;
-					var zz = z * z2;
-					var xy = x * y2;
-					var yz = y * z2;
-					var xz = x * z2;
-					var wx = w * x2;
-					var wy = w * y2;
-					var wz = w * z2;
-					_this5._transform._rotation00 = 1 - yy - zz;
-					_this5._transform._rotation01 = xy - wz;
-					_this5._transform._rotation02 = xz + wy;
-					_this5._transform._rotation10 = xy + wz;
-					_this5._transform._rotation11 = 1 - xx - zz;
-					_this5._transform._rotation12 = yz - wx;
-					_this5._transform._rotation20 = xz - wy;
-					_this5._transform._rotation21 = yz + wx;
-					_this5._transform._rotation22 = 1 - xx - yy;
-					var __tmp__00;
-					var __tmp__01;
-					var __tmp__02;
-					var __tmp__10;
-					var __tmp__11;
-					var __tmp__12;
-					var __tmp__20;
-					var __tmp__21;
-					var __tmp__22;
-					__tmp__00 = _this5._transform._rotation00 * _this5._invLocalInertia00 + _this5._transform._rotation01 * _this5._invLocalInertia10 + _this5._transform._rotation02 * _this5._invLocalInertia20;
-					__tmp__01 = _this5._transform._rotation00 * _this5._invLocalInertia01 + _this5._transform._rotation01 * _this5._invLocalInertia11 + _this5._transform._rotation02 * _this5._invLocalInertia21;
-					__tmp__02 = _this5._transform._rotation00 * _this5._invLocalInertia02 + _this5._transform._rotation01 * _this5._invLocalInertia12 + _this5._transform._rotation02 * _this5._invLocalInertia22;
-					__tmp__10 = _this5._transform._rotation10 * _this5._invLocalInertia00 + _this5._transform._rotation11 * _this5._invLocalInertia10 + _this5._transform._rotation12 * _this5._invLocalInertia20;
-					__tmp__11 = _this5._transform._rotation10 * _this5._invLocalInertia01 + _this5._transform._rotation11 * _this5._invLocalInertia11 + _this5._transform._rotation12 * _this5._invLocalInertia21;
-					__tmp__12 = _this5._transform._rotation10 * _this5._invLocalInertia02 + _this5._transform._rotation11 * _this5._invLocalInertia12 + _this5._transform._rotation12 * _this5._invLocalInertia22;
-					__tmp__20 = _this5._transform._rotation20 * _this5._invLocalInertia00 + _this5._transform._rotation21 * _this5._invLocalInertia10 + _this5._transform._rotation22 * _this5._invLocalInertia20;
-					__tmp__21 = _this5._transform._rotation20 * _this5._invLocalInertia01 + _this5._transform._rotation21 * _this5._invLocalInertia11 + _this5._transform._rotation22 * _this5._invLocalInertia21;
-					__tmp__22 = _this5._transform._rotation20 * _this5._invLocalInertia02 + _this5._transform._rotation21 * _this5._invLocalInertia12 + _this5._transform._rotation22 * _this5._invLocalInertia22;
-					_this5._invInertia00 = __tmp__00;
-					_this5._invInertia01 = __tmp__01;
-					_this5._invInertia02 = __tmp__02;
-					_this5._invInertia10 = __tmp__10;
-					_this5._invInertia11 = __tmp__11;
-					_this5._invInertia12 = __tmp__12;
-					_this5._invInertia20 = __tmp__20;
-					_this5._invInertia21 = __tmp__21;
-					_this5._invInertia22 = __tmp__22;
-					var __tmp__001;
-					var __tmp__011;
-					var __tmp__021;
-					var __tmp__101;
-					var __tmp__111;
-					var __tmp__121;
-					var __tmp__201;
-					var __tmp__211;
-					var __tmp__221;
-					__tmp__001 = _this5._invInertia00 * _this5._transform._rotation00 + _this5._invInertia01 * _this5._transform._rotation01 + _this5._invInertia02 * _this5._transform._rotation02;
-					__tmp__011 = _this5._invInertia00 * _this5._transform._rotation10 + _this5._invInertia01 * _this5._transform._rotation11 + _this5._invInertia02 * _this5._transform._rotation12;
-					__tmp__021 = _this5._invInertia00 * _this5._transform._rotation20 + _this5._invInertia01 * _this5._transform._rotation21 + _this5._invInertia02 * _this5._transform._rotation22;
-					__tmp__101 = _this5._invInertia10 * _this5._transform._rotation00 + _this5._invInertia11 * _this5._transform._rotation01 + _this5._invInertia12 * _this5._transform._rotation02;
-					__tmp__111 = _this5._invInertia10 * _this5._transform._rotation10 + _this5._invInertia11 * _this5._transform._rotation11 + _this5._invInertia12 * _this5._transform._rotation12;
-					__tmp__121 = _this5._invInertia10 * _this5._transform._rotation20 + _this5._invInertia11 * _this5._transform._rotation21 + _this5._invInertia12 * _this5._transform._rotation22;
-					__tmp__201 = _this5._invInertia20 * _this5._transform._rotation00 + _this5._invInertia21 * _this5._transform._rotation01 + _this5._invInertia22 * _this5._transform._rotation02;
-					__tmp__211 = _this5._invInertia20 * _this5._transform._rotation10 + _this5._invInertia21 * _this5._transform._rotation11 + _this5._invInertia22 * _this5._transform._rotation12;
-					__tmp__221 = _this5._invInertia20 * _this5._transform._rotation20 + _this5._invInertia21 * _this5._transform._rotation21 + _this5._invInertia22 * _this5._transform._rotation22;
-					_this5._invInertia00 = __tmp__001;
-					_this5._invInertia01 = __tmp__011;
-					_this5._invInertia02 = __tmp__021;
-					_this5._invInertia10 = __tmp__101;
-					_this5._invInertia11 = __tmp__111;
-					_this5._invInertia12 = __tmp__121;
-					_this5._invInertia20 = __tmp__201;
-					_this5._invInertia21 = __tmp__211;
-					_this5._invInertia22 = __tmp__221;
-					_this5._invInertia00 *= _this5._rotFactor.x;
-					_this5._invInertia01 *= _this5._rotFactor.x;
-					_this5._invInertia02 *= _this5._rotFactor.x;
-					_this5._invInertia10 *= _this5._rotFactor.y;
-					_this5._invInertia11 *= _this5._rotFactor.y;
-					_this5._invInertia12 *= _this5._rotFactor.y;
-					_this5._invInertia20 *= _this5._rotFactor.z;
-					_this5._invInertia21 *= _this5._rotFactor.z;
-					_this5._invInertia22 *= _this5._rotFactor.z;
-					var _this6 = this._b2;
-					var theta1 = Math.sqrt(av2X * av2X + av2Y * av2Y + av2Z * av2Z);
-					var halfTheta1 = theta1 * 0.5;
-					var rotationToSinAxisFactor1;
-					var cosHalfTheta1;
-					if(halfTheta1 < 0.5) {
-						var ht21 = halfTheta1 * halfTheta1;
-						rotationToSinAxisFactor1 = 0.5 * (1 - ht21 * 0.166666666666666657 + ht21 * ht21 * 0.00833333333333333322);
-						cosHalfTheta1 = 1 - ht21 * 0.5 + ht21 * ht21 * 0.0416666666666666644;
-					} else {
-						rotationToSinAxisFactor1 = Math.sin(halfTheta1) / theta1;
-						cosHalfTheta1 = Math.cos(halfTheta1);
-					}
-					var sinAxis1;
-					var sinAxisX1;
-					var sinAxisY1;
-					var sinAxisZ1;
-					sinAxisX1 = av2X * rotationToSinAxisFactor1;
-					sinAxisY1 = av2Y * rotationToSinAxisFactor1;
-					sinAxisZ1 = av2Z * rotationToSinAxisFactor1;
-					var dq1;
-					var dqX1;
-					var dqY1;
-					var dqZ1;
-					var dqW1;
-					dqX1 = sinAxisX1;
-					dqY1 = sinAxisY1;
-					dqZ1 = sinAxisZ1;
-					dqW1 = cosHalfTheta1;
-					var q1;
-					var qX1;
-					var qY1;
-					var qZ1;
-					var qW1;
-					var e001 = _this6._transform._rotation00;
-					var e111 = _this6._transform._rotation11;
-					var e221 = _this6._transform._rotation22;
-					var t1 = e001 + e111 + e221;
-					var s1;
-					if(t1 > 0) {
-						s1 = Math.sqrt(t1 + 1);
-						qW1 = 0.5 * s1;
-						s1 = 0.5 / s1;
-						qX1 = (_this6._transform._rotation21 - _this6._transform._rotation12) * s1;
-						qY1 = (_this6._transform._rotation02 - _this6._transform._rotation20) * s1;
-						qZ1 = (_this6._transform._rotation10 - _this6._transform._rotation01) * s1;
-					} else if(e001 > e111) {
-						if(e001 > e221) {
-							s1 = Math.sqrt(e001 - e111 - e221 + 1);
-							qX1 = 0.5 * s1;
-							s1 = 0.5 / s1;
-							qY1 = (_this6._transform._rotation01 + _this6._transform._rotation10) * s1;
-							qZ1 = (_this6._transform._rotation02 + _this6._transform._rotation20) * s1;
-							qW1 = (_this6._transform._rotation21 - _this6._transform._rotation12) * s1;
-						} else {
-							s1 = Math.sqrt(e221 - e001 - e111 + 1);
-							qZ1 = 0.5 * s1;
-							s1 = 0.5 / s1;
-							qX1 = (_this6._transform._rotation02 + _this6._transform._rotation20) * s1;
-							qY1 = (_this6._transform._rotation12 + _this6._transform._rotation21) * s1;
-							qW1 = (_this6._transform._rotation10 - _this6._transform._rotation01) * s1;
-						}
-					} else if(e111 > e221) {
-						s1 = Math.sqrt(e111 - e221 - e001 + 1);
-						qY1 = 0.5 * s1;
-						s1 = 0.5 / s1;
-						qX1 = (_this6._transform._rotation01 + _this6._transform._rotation10) * s1;
-						qZ1 = (_this6._transform._rotation12 + _this6._transform._rotation21) * s1;
-						qW1 = (_this6._transform._rotation02 - _this6._transform._rotation20) * s1;
-					} else {
-						s1 = Math.sqrt(e221 - e001 - e111 + 1);
-						qZ1 = 0.5 * s1;
-						s1 = 0.5 / s1;
-						qX1 = (_this6._transform._rotation02 + _this6._transform._rotation20) * s1;
-						qY1 = (_this6._transform._rotation12 + _this6._transform._rotation21) * s1;
-						qW1 = (_this6._transform._rotation10 - _this6._transform._rotation01) * s1;
-					}
-					qX1 = dqW1 * qX1 + dqX1 * qW1 + dqY1 * qZ1 - dqZ1 * qY1;
-					qY1 = dqW1 * qY1 - dqX1 * qZ1 + dqY1 * qW1 + dqZ1 * qX1;
-					qZ1 = dqW1 * qZ1 + dqX1 * qY1 - dqY1 * qX1 + dqZ1 * qW1;
-					qW1 = dqW1 * qW1 - dqX1 * qX1 - dqY1 * qY1 - dqZ1 * qZ1;
-					var l1 = qX1 * qX1 + qY1 * qY1 + qZ1 * qZ1 + qW1 * qW1;
-					if(l1 > 1e-32) {
-						l1 = 1 / Math.sqrt(l1);
-					}
-					qX1 *= l1;
-					qY1 *= l1;
-					qZ1 *= l1;
-					qW1 *= l1;
-					var x1 = qX1;
-					var y1 = qY1;
-					var z1 = qZ1;
-					var w1 = qW1;
-					var x21 = 2 * x1;
-					var y21 = 2 * y1;
-					var z21 = 2 * z1;
-					var xx1 = x1 * x21;
-					var yy1 = y1 * y21;
-					var zz1 = z1 * z21;
-					var xy1 = x1 * y21;
-					var yz1 = y1 * z21;
-					var xz1 = x1 * z21;
-					var wx1 = w1 * x21;
-					var wy1 = w1 * y21;
-					var wz1 = w1 * z21;
-					_this6._transform._rotation00 = 1 - yy1 - zz1;
-					_this6._transform._rotation01 = xy1 - wz1;
-					_this6._transform._rotation02 = xz1 + wy1;
-					_this6._transform._rotation10 = xy1 + wz1;
-					_this6._transform._rotation11 = 1 - xx1 - zz1;
-					_this6._transform._rotation12 = yz1 - wx1;
-					_this6._transform._rotation20 = xz1 - wy1;
-					_this6._transform._rotation21 = yz1 + wx1;
-					_this6._transform._rotation22 = 1 - xx1 - yy1;
-					var __tmp__002;
-					var __tmp__012;
-					var __tmp__022;
-					var __tmp__102;
-					var __tmp__112;
-					var __tmp__122;
-					var __tmp__202;
-					var __tmp__212;
-					var __tmp__222;
-					__tmp__002 = _this6._transform._rotation00 * _this6._invLocalInertia00 + _this6._transform._rotation01 * _this6._invLocalInertia10 + _this6._transform._rotation02 * _this6._invLocalInertia20;
-					__tmp__012 = _this6._transform._rotation00 * _this6._invLocalInertia01 + _this6._transform._rotation01 * _this6._invLocalInertia11 + _this6._transform._rotation02 * _this6._invLocalInertia21;
-					__tmp__022 = _this6._transform._rotation00 * _this6._invLocalInertia02 + _this6._transform._rotation01 * _this6._invLocalInertia12 + _this6._transform._rotation02 * _this6._invLocalInertia22;
-					__tmp__102 = _this6._transform._rotation10 * _this6._invLocalInertia00 + _this6._transform._rotation11 * _this6._invLocalInertia10 + _this6._transform._rotation12 * _this6._invLocalInertia20;
-					__tmp__112 = _this6._transform._rotation10 * _this6._invLocalInertia01 + _this6._transform._rotation11 * _this6._invLocalInertia11 + _this6._transform._rotation12 * _this6._invLocalInertia21;
-					__tmp__122 = _this6._transform._rotation10 * _this6._invLocalInertia02 + _this6._transform._rotation11 * _this6._invLocalInertia12 + _this6._transform._rotation12 * _this6._invLocalInertia22;
-					__tmp__202 = _this6._transform._rotation20 * _this6._invLocalInertia00 + _this6._transform._rotation21 * _this6._invLocalInertia10 + _this6._transform._rotation22 * _this6._invLocalInertia20;
-					__tmp__212 = _this6._transform._rotation20 * _this6._invLocalInertia01 + _this6._transform._rotation21 * _this6._invLocalInertia11 + _this6._transform._rotation22 * _this6._invLocalInertia21;
-					__tmp__222 = _this6._transform._rotation20 * _this6._invLocalInertia02 + _this6._transform._rotation21 * _this6._invLocalInertia12 + _this6._transform._rotation22 * _this6._invLocalInertia22;
-					_this6._invInertia00 = __tmp__002;
-					_this6._invInertia01 = __tmp__012;
-					_this6._invInertia02 = __tmp__022;
-					_this6._invInertia10 = __tmp__102;
-					_this6._invInertia11 = __tmp__112;
-					_this6._invInertia12 = __tmp__122;
-					_this6._invInertia20 = __tmp__202;
-					_this6._invInertia21 = __tmp__212;
-					_this6._invInertia22 = __tmp__222;
-					var __tmp__003;
-					var __tmp__013;
-					var __tmp__023;
-					var __tmp__103;
-					var __tmp__113;
-					var __tmp__123;
-					var __tmp__203;
-					var __tmp__213;
-					var __tmp__223;
-					__tmp__003 = _this6._invInertia00 * _this6._transform._rotation00 + _this6._invInertia01 * _this6._transform._rotation01 + _this6._invInertia02 * _this6._transform._rotation02;
-					__tmp__013 = _this6._invInertia00 * _this6._transform._rotation10 + _this6._invInertia01 * _this6._transform._rotation11 + _this6._invInertia02 * _this6._transform._rotation12;
-					__tmp__023 = _this6._invInertia00 * _this6._transform._rotation20 + _this6._invInertia01 * _this6._transform._rotation21 + _this6._invInertia02 * _this6._transform._rotation22;
-					__tmp__103 = _this6._invInertia10 * _this6._transform._rotation00 + _this6._invInertia11 * _this6._transform._rotation01 + _this6._invInertia12 * _this6._transform._rotation02;
-					__tmp__113 = _this6._invInertia10 * _this6._transform._rotation10 + _this6._invInertia11 * _this6._transform._rotation11 + _this6._invInertia12 * _this6._transform._rotation12;
-					__tmp__123 = _this6._invInertia10 * _this6._transform._rotation20 + _this6._invInertia11 * _this6._transform._rotation21 + _this6._invInertia12 * _this6._transform._rotation22;
-					__tmp__203 = _this6._invInertia20 * _this6._transform._rotation00 + _this6._invInertia21 * _this6._transform._rotation01 + _this6._invInertia22 * _this6._transform._rotation02;
-					__tmp__213 = _this6._invInertia20 * _this6._transform._rotation10 + _this6._invInertia21 * _this6._transform._rotation11 + _this6._invInertia22 * _this6._transform._rotation12;
-					__tmp__223 = _this6._invInertia20 * _this6._transform._rotation20 + _this6._invInertia21 * _this6._transform._rotation21 + _this6._invInertia22 * _this6._transform._rotation22;
-					_this6._invInertia00 = __tmp__003;
-					_this6._invInertia01 = __tmp__013;
-					_this6._invInertia02 = __tmp__023;
-					_this6._invInertia10 = __tmp__103;
-					_this6._invInertia11 = __tmp__113;
-					_this6._invInertia12 = __tmp__123;
-					_this6._invInertia20 = __tmp__203;
-					_this6._invInertia21 = __tmp__213;
-					_this6._invInertia22 = __tmp__223;
-					_this6._invInertia00 *= _this6._rotFactor.x;
-					_this6._invInertia01 *= _this6._rotFactor.x;
-					_this6._invInertia02 *= _this6._rotFactor.x;
-					_this6._invInertia10 *= _this6._rotFactor.y;
-					_this6._invInertia11 *= _this6._rotFactor.y;
-					_this6._invInertia12 *= _this6._rotFactor.y;
-					_this6._invInertia20 *= _this6._rotFactor.z;
-					_this6._invInertia21 *= _this6._rotFactor.z;
-					_this6._invInertia22 *= _this6._rotFactor.z;
-				}
-				var _this7 = this.posBoundarySelector;
-				var i4 = 0;
-				while(_this7.indices[i4] != idx1) ++i4;
-				while(i4 > 0) {
-					var tmp1 = _this7.indices[i4];
-					_this7.indices[i4] = _this7.indices[i4 - 1];
-					_this7.indices[i4 - 1] = tmp1;
-					--i4;
-				}
-				solved = true;
-				break;
-			}
-		}
-		if(!solved) {
-			console.log("src/oimo/dynamics/constraint/solver/direct/DirectJointConstraintSolver.hx:502:","could not find solution. (NGS)");
-			return;
-		}
-	}
-	postSolve() {
-		this.joint._syncAnchors();
-		this.joint._checkDestruction();
-	}
-}
-oimo.dynamics.constraint.solver.direct.MassMatrix = class oimo_dynamics_constraint_solver_direct_MassMatrix {
-	constructor(size) {
-		this._size = size;
-		var this1 = new Array(this._size);
-		this.tmpMatrix = this1;
-		var this2 = new Array(this._size);
-		this._invMass = this2;
-		var this3 = new Array(this._size);
-		this._invMassWithoutCfm = this3;
-		var _g = 0;
-		var _g1 = this._size;
-		while(_g < _g1) {
-			var i = _g++;
-			var this4 = this.tmpMatrix;
-			var this5 = new Array(this._size);
-			this4[i] = this5;
-			var this6 = this._invMass;
-			var this7 = new Array(this._size);
-			this6[i] = this7;
-			var this8 = this._invMassWithoutCfm;
-			var this9 = new Array(this._size);
-			this8[i] = this9;
-			var _g2 = 0;
-			var _g11 = this._size;
-			while(_g2 < _g11) {
-				var j = _g2++;
-				this.tmpMatrix[i][j] = 0;
-				this._invMass[i][j] = 0;
-				this._invMassWithoutCfm[i][j] = 0;
-			}
-		}
-		this._maxSubmatrixId = 1 << this._size;
-		var this10 = new Array(this._maxSubmatrixId);
-		this._cacheComputed = this10;
-		var this11 = new Array(this._maxSubmatrixId);
-		this._cachedSubmatrices = this11;
-		var _g21 = 0;
-		var _g3 = this._maxSubmatrixId;
-		while(_g21 < _g3) {
-			var i1 = _g21++;
-			var t = i1;
-			t = (t & 85) + (t >> 1 & 85);
-			t = (t & 51) + (t >> 2 & 51);
-			t = (t & 15) + (t >> 4 & 15);
-			var matrixSize = t;
-			var this12 = new Array(matrixSize);
-			var subMatrix = this12;
-			var _g22 = 0;
-			var _g31 = matrixSize;
-			while(_g22 < _g31) {
-				var j1 = _g22++;
-				var this13 = new Array(matrixSize);
-				subMatrix[j1] = this13;
-				var _g23 = 0;
-				var _g32 = matrixSize;
-				while(_g23 < _g32) {
-					var k = _g23++;
-					subMatrix[j1][k] = 0;
-				}
-			}
-			this._cacheComputed[i1] = false;
-			this._cachedSubmatrices[i1] = subMatrix;
-		}
-	}
-	computeSubmatrix(id,indices,size) {
-		var _g = 0;
-		var _g1 = size;
-		while(_g < _g1) {
-			var i = _g++;
-			var ii = indices[i];
-			var _g2 = 0;
-			var _g11 = size;
-			while(_g2 < _g11) {
-				var j = _g2++;
-				this.tmpMatrix[i][j] = this._invMass[ii][indices[j]];
-			}
-		}
-		var src = this.tmpMatrix;
-		var dst = this._cachedSubmatrices[id];
-		var srci;
-		var dsti;
-		var srcj;
-		var dstj;
-		var diag;
-		switch(size) {
-		case 4:
-			srci = src[0];
-			dsti = dst[0];
-			diag = 1 / srci[0];
-			dsti[0] = diag;
-			srci[1] = srci[1] * diag;
-			srci[2] = srci[2] * diag;
-			srci[3] = srci[3] * diag;
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srci = src[1];
-			dsti = dst[1];
-			diag = 1 / srci[1];
-			dsti[1] = diag;
-			dsti[0] = dsti[0] * diag;
-			srci[2] = srci[2] * diag;
-			srci[3] = srci[3] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			dstj[1] = -diag * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			dstj[1] = -diag * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srci = src[2];
-			dsti = dst[2];
-			diag = 1 / srci[2];
-			dsti[2] = diag;
-			dsti[0] = dsti[0] * diag;
-			dsti[1] = dsti[1] * diag;
-			srci[3] = srci[3] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			dstj[1] = dstj[1] - dsti[1] * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			dstj[1] = dstj[1] - dsti[1] * srcj[2];
-			dstj[2] = -diag * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srci = src[3];
-			dsti = dst[3];
-			diag = 1 / srci[3];
-			dsti[3] = diag;
-			dsti[0] = dsti[0] * diag;
-			dsti[1] = dsti[1] * diag;
-			dsti[2] = dsti[2] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			dstj[1] = dstj[1] - dsti[1] * srcj[3];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			dstj[1] = dstj[1] - dsti[1] * srcj[3];
-			dstj[2] = dstj[2] - dsti[2] * srcj[3];
-			dsti = dst[1];
-			dst[0][1] = dsti[0];
-			dsti = dst[2];
-			dst[0][2] = dsti[0];
-			dst[1][2] = dsti[1];
-			dsti = dst[3];
-			dst[0][3] = dsti[0];
-			dst[1][3] = dsti[1];
-			dst[2][3] = dsti[2];
-			break;
-		case 5:
-			srci = src[0];
-			dsti = dst[0];
-			diag = 1 / srci[0];
-			dsti[0] = diag;
-			srci[1] = srci[1] * diag;
-			srci[2] = srci[2] * diag;
-			srci[3] = srci[3] * diag;
-			srci[4] = srci[4] * diag;
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj[4] = srcj[4] - srci[4] * srcj[0];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj[4] = srcj[4] - srci[4] * srcj[0];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj[4] = srcj[4] - srci[4] * srcj[0];
-			srcj = src[4];
-			dstj = dst[4];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj[4] = srcj[4] - srci[4] * srcj[0];
-			srci = src[1];
-			dsti = dst[1];
-			diag = 1 / srci[1];
-			dsti[1] = diag;
-			dsti[0] = dsti[0] * diag;
-			srci[2] = srci[2] * diag;
-			srci[3] = srci[3] * diag;
-			srci[4] = srci[4] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj[4] = srcj[4] - srci[4] * srcj[1];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			dstj[1] = -diag * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj[4] = srcj[4] - srci[4] * srcj[1];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			dstj[1] = -diag * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj[4] = srcj[4] - srci[4] * srcj[1];
-			srcj = src[4];
-			dstj = dst[4];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			dstj[1] = -diag * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj[4] = srcj[4] - srci[4] * srcj[1];
-			srci = src[2];
-			dsti = dst[2];
-			diag = 1 / srci[2];
-			dsti[2] = diag;
-			dsti[0] = dsti[0] * diag;
-			dsti[1] = dsti[1] * diag;
-			srci[3] = srci[3] * diag;
-			srci[4] = srci[4] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj[4] = srcj[4] - srci[4] * srcj[2];
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			dstj[1] = dstj[1] - dsti[1] * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj[4] = srcj[4] - srci[4] * srcj[2];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			dstj[1] = dstj[1] - dsti[1] * srcj[2];
-			dstj[2] = -diag * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj[4] = srcj[4] - srci[4] * srcj[2];
-			srcj = src[4];
-			dstj = dst[4];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			dstj[1] = dstj[1] - dsti[1] * srcj[2];
-			dstj[2] = -diag * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj[4] = srcj[4] - srci[4] * srcj[2];
-			srci = src[3];
-			dsti = dst[3];
-			diag = 1 / srci[3];
-			dsti[3] = diag;
-			dsti[0] = dsti[0] * diag;
-			dsti[1] = dsti[1] * diag;
-			dsti[2] = dsti[2] * diag;
-			srci[4] = srci[4] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			srcj[4] = srcj[4] - srci[4] * srcj[3];
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			dstj[1] = dstj[1] - dsti[1] * srcj[3];
-			srcj[4] = srcj[4] - srci[4] * srcj[3];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			dstj[1] = dstj[1] - dsti[1] * srcj[3];
-			dstj[2] = dstj[2] - dsti[2] * srcj[3];
-			srcj[4] = srcj[4] - srci[4] * srcj[3];
-			srcj = src[4];
-			dstj = dst[4];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			dstj[1] = dstj[1] - dsti[1] * srcj[3];
-			dstj[2] = dstj[2] - dsti[2] * srcj[3];
-			dstj[3] = -diag * srcj[3];
-			srcj[4] = srcj[4] - srci[4] * srcj[3];
-			srci = src[4];
-			dsti = dst[4];
-			diag = 1 / srci[4];
-			dsti[4] = diag;
-			dsti[0] = dsti[0] * diag;
-			dsti[1] = dsti[1] * diag;
-			dsti[2] = dsti[2] * diag;
-			dsti[3] = dsti[3] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[4];
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = dstj[0] - dsti[0] * srcj[4];
-			dstj[1] = dstj[1] - dsti[1] * srcj[4];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = dstj[0] - dsti[0] * srcj[4];
-			dstj[1] = dstj[1] - dsti[1] * srcj[4];
-			dstj[2] = dstj[2] - dsti[2] * srcj[4];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = dstj[0] - dsti[0] * srcj[4];
-			dstj[1] = dstj[1] - dsti[1] * srcj[4];
-			dstj[2] = dstj[2] - dsti[2] * srcj[4];
-			dstj[3] = dstj[3] - dsti[3] * srcj[4];
-			dsti = dst[1];
-			dst[0][1] = dsti[0];
-			dsti = dst[2];
-			dst[0][2] = dsti[0];
-			dst[1][2] = dsti[1];
-			dsti = dst[3];
-			dst[0][3] = dsti[0];
-			dst[1][3] = dsti[1];
-			dst[2][3] = dsti[2];
-			dsti = dst[4];
-			dst[0][4] = dsti[0];
-			dst[1][4] = dsti[1];
-			dst[2][4] = dsti[2];
-			dst[3][4] = dsti[3];
-			break;
-		case 6:
-			srci = src[0];
-			dsti = dst[0];
-			diag = 1 / srci[0];
-			dsti[0] = diag;
-			srci[1] = srci[1] * diag;
-			srci[2] = srci[2] * diag;
-			srci[3] = srci[3] * diag;
-			srci[4] = srci[4] * diag;
-			srci[5] = srci[5] * diag;
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj[4] = srcj[4] - srci[4] * srcj[0];
-			srcj[5] = srcj[5] - srci[5] * srcj[0];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj[4] = srcj[4] - srci[4] * srcj[0];
-			srcj[5] = srcj[5] - srci[5] * srcj[0];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj[4] = srcj[4] - srci[4] * srcj[0];
-			srcj[5] = srcj[5] - srci[5] * srcj[0];
-			srcj = src[4];
-			dstj = dst[4];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj[4] = srcj[4] - srci[4] * srcj[0];
-			srcj[5] = srcj[5] - srci[5] * srcj[0];
-			srcj = src[5];
-			dstj = dst[5];
-			dstj[0] = -diag * srcj[0];
-			srcj[1] = srcj[1] - srci[1] * srcj[0];
-			srcj[2] = srcj[2] - srci[2] * srcj[0];
-			srcj[3] = srcj[3] - srci[3] * srcj[0];
-			srcj[4] = srcj[4] - srci[4] * srcj[0];
-			srcj[5] = srcj[5] - srci[5] * srcj[0];
-			srci = src[1];
-			dsti = dst[1];
-			diag = 1 / srci[1];
-			dsti[1] = diag;
-			dsti[0] = dsti[0] * diag;
-			srci[2] = srci[2] * diag;
-			srci[3] = srci[3] * diag;
-			srci[4] = srci[4] * diag;
-			srci[5] = srci[5] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj[4] = srcj[4] - srci[4] * srcj[1];
-			srcj[5] = srcj[5] - srci[5] * srcj[1];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			dstj[1] = -diag * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj[4] = srcj[4] - srci[4] * srcj[1];
-			srcj[5] = srcj[5] - srci[5] * srcj[1];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			dstj[1] = -diag * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj[4] = srcj[4] - srci[4] * srcj[1];
-			srcj[5] = srcj[5] - srci[5] * srcj[1];
-			srcj = src[4];
-			dstj = dst[4];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			dstj[1] = -diag * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj[4] = srcj[4] - srci[4] * srcj[1];
-			srcj[5] = srcj[5] - srci[5] * srcj[1];
-			srcj = src[5];
-			dstj = dst[5];
-			dstj[0] = dstj[0] - dsti[0] * srcj[1];
-			dstj[1] = -diag * srcj[1];
-			srcj[2] = srcj[2] - srci[2] * srcj[1];
-			srcj[3] = srcj[3] - srci[3] * srcj[1];
-			srcj[4] = srcj[4] - srci[4] * srcj[1];
-			srcj[5] = srcj[5] - srci[5] * srcj[1];
-			srci = src[2];
-			dsti = dst[2];
-			diag = 1 / srci[2];
-			dsti[2] = diag;
-			dsti[0] = dsti[0] * diag;
-			dsti[1] = dsti[1] * diag;
-			srci[3] = srci[3] * diag;
-			srci[4] = srci[4] * diag;
-			srci[5] = srci[5] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj[4] = srcj[4] - srci[4] * srcj[2];
-			srcj[5] = srcj[5] - srci[5] * srcj[2];
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			dstj[1] = dstj[1] - dsti[1] * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj[4] = srcj[4] - srci[4] * srcj[2];
-			srcj[5] = srcj[5] - srci[5] * srcj[2];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			dstj[1] = dstj[1] - dsti[1] * srcj[2];
-			dstj[2] = -diag * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj[4] = srcj[4] - srci[4] * srcj[2];
-			srcj[5] = srcj[5] - srci[5] * srcj[2];
-			srcj = src[4];
-			dstj = dst[4];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			dstj[1] = dstj[1] - dsti[1] * srcj[2];
-			dstj[2] = -diag * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj[4] = srcj[4] - srci[4] * srcj[2];
-			srcj[5] = srcj[5] - srci[5] * srcj[2];
-			srcj = src[5];
-			dstj = dst[5];
-			dstj[0] = dstj[0] - dsti[0] * srcj[2];
-			dstj[1] = dstj[1] - dsti[1] * srcj[2];
-			dstj[2] = -diag * srcj[2];
-			srcj[3] = srcj[3] - srci[3] * srcj[2];
-			srcj[4] = srcj[4] - srci[4] * srcj[2];
-			srcj[5] = srcj[5] - srci[5] * srcj[2];
-			srci = src[3];
-			dsti = dst[3];
-			diag = 1 / srci[3];
-			dsti[3] = diag;
-			dsti[0] = dsti[0] * diag;
-			dsti[1] = dsti[1] * diag;
-			dsti[2] = dsti[2] * diag;
-			srci[4] = srci[4] * diag;
-			srci[5] = srci[5] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			srcj[4] = srcj[4] - srci[4] * srcj[3];
-			srcj[5] = srcj[5] - srci[5] * srcj[3];
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			dstj[1] = dstj[1] - dsti[1] * srcj[3];
-			srcj[4] = srcj[4] - srci[4] * srcj[3];
-			srcj[5] = srcj[5] - srci[5] * srcj[3];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			dstj[1] = dstj[1] - dsti[1] * srcj[3];
-			dstj[2] = dstj[2] - dsti[2] * srcj[3];
-			srcj[4] = srcj[4] - srci[4] * srcj[3];
-			srcj[5] = srcj[5] - srci[5] * srcj[3];
-			srcj = src[4];
-			dstj = dst[4];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			dstj[1] = dstj[1] - dsti[1] * srcj[3];
-			dstj[2] = dstj[2] - dsti[2] * srcj[3];
-			dstj[3] = -diag * srcj[3];
-			srcj[4] = srcj[4] - srci[4] * srcj[3];
-			srcj[5] = srcj[5] - srci[5] * srcj[3];
-			srcj = src[5];
-			dstj = dst[5];
-			dstj[0] = dstj[0] - dsti[0] * srcj[3];
-			dstj[1] = dstj[1] - dsti[1] * srcj[3];
-			dstj[2] = dstj[2] - dsti[2] * srcj[3];
-			dstj[3] = -diag * srcj[3];
-			srcj[4] = srcj[4] - srci[4] * srcj[3];
-			srcj[5] = srcj[5] - srci[5] * srcj[3];
-			srci = src[4];
-			dsti = dst[4];
-			diag = 1 / srci[4];
-			dsti[4] = diag;
-			dsti[0] = dsti[0] * diag;
-			dsti[1] = dsti[1] * diag;
-			dsti[2] = dsti[2] * diag;
-			dsti[3] = dsti[3] * diag;
-			srci[5] = srci[5] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[4];
-			srcj[5] = srcj[5] - srci[5] * srcj[4];
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = dstj[0] - dsti[0] * srcj[4];
-			dstj[1] = dstj[1] - dsti[1] * srcj[4];
-			srcj[5] = srcj[5] - srci[5] * srcj[4];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = dstj[0] - dsti[0] * srcj[4];
-			dstj[1] = dstj[1] - dsti[1] * srcj[4];
-			dstj[2] = dstj[2] - dsti[2] * srcj[4];
-			srcj[5] = srcj[5] - srci[5] * srcj[4];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = dstj[0] - dsti[0] * srcj[4];
-			dstj[1] = dstj[1] - dsti[1] * srcj[4];
-			dstj[2] = dstj[2] - dsti[2] * srcj[4];
-			dstj[3] = dstj[3] - dsti[3] * srcj[4];
-			srcj[5] = srcj[5] - srci[5] * srcj[4];
-			srcj = src[5];
-			dstj = dst[5];
-			dstj[0] = dstj[0] - dsti[0] * srcj[4];
-			dstj[1] = dstj[1] - dsti[1] * srcj[4];
-			dstj[2] = dstj[2] - dsti[2] * srcj[4];
-			dstj[3] = dstj[3] - dsti[3] * srcj[4];
-			dstj[4] = -diag * srcj[4];
-			srcj[5] = srcj[5] - srci[5] * srcj[4];
-			srci = src[5];
-			dsti = dst[5];
-			diag = 1 / srci[5];
-			dsti[5] = diag;
-			dsti[0] = dsti[0] * diag;
-			dsti[1] = dsti[1] * diag;
-			dsti[2] = dsti[2] * diag;
-			dsti[3] = dsti[3] * diag;
-			dsti[4] = dsti[4] * diag;
-			srcj = src[0];
-			dstj = dst[0];
-			dstj[0] = dstj[0] - dsti[0] * srcj[5];
-			srcj = src[1];
-			dstj = dst[1];
-			dstj[0] = dstj[0] - dsti[0] * srcj[5];
-			dstj[1] = dstj[1] - dsti[1] * srcj[5];
-			srcj = src[2];
-			dstj = dst[2];
-			dstj[0] = dstj[0] - dsti[0] * srcj[5];
-			dstj[1] = dstj[1] - dsti[1] * srcj[5];
-			dstj[2] = dstj[2] - dsti[2] * srcj[5];
-			srcj = src[3];
-			dstj = dst[3];
-			dstj[0] = dstj[0] - dsti[0] * srcj[5];
-			dstj[1] = dstj[1] - dsti[1] * srcj[5];
-			dstj[2] = dstj[2] - dsti[2] * srcj[5];
-			dstj[3] = dstj[3] - dsti[3] * srcj[5];
-			srcj = src[4];
-			dstj = dst[4];
-			dstj[0] = dstj[0] - dsti[0] * srcj[5];
-			dstj[1] = dstj[1] - dsti[1] * srcj[5];
-			dstj[2] = dstj[2] - dsti[2] * srcj[5];
-			dstj[3] = dstj[3] - dsti[3] * srcj[5];
-			dstj[4] = dstj[4] - dsti[4] * srcj[5];
-			dsti = dst[1];
-			dst[0][1] = dsti[0];
-			dsti = dst[2];
-			dst[0][2] = dsti[0];
-			dst[1][2] = dsti[1];
-			dsti = dst[3];
-			dst[0][3] = dsti[0];
-			dst[1][3] = dsti[1];
-			dst[2][3] = dsti[2];
-			dsti = dst[4];
-			dst[0][4] = dsti[0];
-			dst[1][4] = dsti[1];
-			dst[2][4] = dsti[2];
-			dst[3][4] = dsti[3];
-			dsti = dst[5];
-			dst[0][5] = dsti[0];
-			dst[1][5] = dsti[1];
-			dst[2][5] = dsti[2];
-			dst[3][5] = dsti[3];
-			dst[4][5] = dsti[4];
-			break;
-		default:
-			var _g21 = 0;
-			var _g3 = size;
-			while(_g21 < _g3) {
-				var i1 = _g21++;
-				srci = src[i1];
-				dsti = dst[i1];
-				var diag1 = 1 / srci[i1];
-				dsti[i1] = diag1;
-				var _g22 = 0;
-				var _g31 = i1;
-				while(_g22 < _g31) {
-					var j1 = _g22++;
-					dsti[j1] = dsti[j1] * diag1;
-				}
-				var _g4 = i1 + 1;
-				var _g5 = size;
-				while(_g4 < _g5) {
-					var j2 = _g4++;
-					srci[j2] = srci[j2] * diag1;
-				}
-				var _g6 = 0;
-				var _g7 = i1;
-				while(_g6 < _g7) {
-					var j3 = _g6++;
-					srcj = src[j3];
-					dstj = dst[j3];
-					var _g61 = 0;
-					var _g71 = j3 + 1;
-					while(_g61 < _g71) {
-						var k = _g61++;
-						dstj[k] = dstj[k] - dsti[k] * srcj[i1];
-					}
-					var _g8 = i1 + 1;
-					var _g9 = size;
-					while(_g8 < _g9) {
-						var k1 = _g8++;
-						srcj[k1] = srcj[k1] - srci[k1] * srcj[i1];
-					}
-				}
-				var _g81 = i1 + 1;
-				var _g91 = size;
-				while(_g81 < _g91) {
-					var j4 = _g81++;
-					srcj = src[j4];
-					dstj = dst[j4];
-					var _g82 = 0;
-					var _g92 = i1;
-					while(_g82 < _g92) {
-						var k2 = _g82++;
-						dstj[k2] = dstj[k2] - dsti[k2] * srcj[i1];
-					}
-					dstj[i1] = -diag1 * srcj[i1];
-					var _g10 = i1 + 1;
-					var _g111 = size;
-					while(_g10 < _g111) {
-						var k3 = _g10++;
-						srcj[k3] = srcj[k3] - srci[k3] * srcj[i1];
-					}
-				}
-			}
-			var _g41 = 1;
-			var _g51 = size;
-			while(_g41 < _g51) {
-				var i2 = _g41++;
-				dsti = dst[i2];
-				var _g42 = 0;
-				var _g52 = i2;
-				while(_g42 < _g52) {
-					var j5 = _g42++;
-					dst[j5][i2] = dsti[j5];
-				}
-			}
-		}
-	}
-	computeInvMass(info,massData) {
-		var invMass = this._invMass;
-		var invMassWithoutCfm = this._invMassWithoutCfm;
-		var numRows = info.numRows;
-		var b1 = info.b1;
-		var b2 = info.b2;
-		var invM1 = b1._invMass;
-		var invM2 = b2._invMass;
-		var invI1;
-		var invI100;
-		var invI101;
-		var invI102;
-		var invI110;
-		var invI111;
-		var invI112;
-		var invI120;
-		var invI121;
-		var invI122;
-		var invI2;
-		var invI200;
-		var invI201;
-		var invI202;
-		var invI210;
-		var invI211;
-		var invI212;
-		var invI220;
-		var invI221;
-		var invI222;
-		invI100 = b1._invInertia00;
-		invI101 = b1._invInertia01;
-		invI102 = b1._invInertia02;
-		invI110 = b1._invInertia10;
-		invI111 = b1._invInertia11;
-		invI112 = b1._invInertia12;
-		invI120 = b1._invInertia20;
-		invI121 = b1._invInertia21;
-		invI122 = b1._invInertia22;
-		invI200 = b2._invInertia00;
-		invI201 = b2._invInertia01;
-		invI202 = b2._invInertia02;
-		invI210 = b2._invInertia10;
-		invI211 = b2._invInertia11;
-		invI212 = b2._invInertia12;
-		invI220 = b2._invInertia20;
-		invI221 = b2._invInertia21;
-		invI222 = b2._invInertia22;
-		var _g = 0;
-		var _g1 = numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var j = info.rows[i].jacobian;
-			var md = massData[i];
-			j.updateSparsity();
-			if((j.flag & 1) != 0) {
-				md.invMLin1X = j.lin1X * invM1;
-				md.invMLin1Y = j.lin1Y * invM1;
-				md.invMLin1Z = j.lin1Z * invM1;
-				md.invMLin2X = j.lin2X * invM2;
-				md.invMLin2Y = j.lin2Y * invM2;
-				md.invMLin2Z = j.lin2Z * invM2;
-			} else {
-				md.invMLin1X = 0;
-				md.invMLin1Y = 0;
-				md.invMLin1Z = 0;
-				md.invMLin2X = 0;
-				md.invMLin2Y = 0;
-				md.invMLin2Z = 0;
-			}
-			if((j.flag & 2) != 0) {
-				var __tmp__X;
-				var __tmp__Y;
-				var __tmp__Z;
-				__tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
-				__tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
-				__tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
-				md.invMAng1X = __tmp__X;
-				md.invMAng1Y = __tmp__Y;
-				md.invMAng1Z = __tmp__Z;
-				var __tmp__X1;
-				var __tmp__Y1;
-				var __tmp__Z1;
-				__tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
-				__tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
-				__tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
-				md.invMAng2X = __tmp__X1;
-				md.invMAng2Y = __tmp__Y1;
-				md.invMAng2Z = __tmp__Z1;
-			} else {
-				md.invMAng1X = 0;
-				md.invMAng1Y = 0;
-				md.invMAng1Z = 0;
-				md.invMAng2X = 0;
-				md.invMAng2Y = 0;
-				md.invMAng2Z = 0;
-			}
-		}
-		var _g2 = 0;
-		var _g3 = numRows;
-		while(_g2 < _g3) {
-			var i1 = _g2++;
-			var j1 = info.rows[i1].jacobian;
-			var _g21 = i1;
-			var _g31 = numRows;
-			while(_g21 < _g31) {
-				var j2 = _g21++;
-				var j21 = info.rows[j2].jacobian;
-				var md2 = massData[j2];
-				var val = j1.lin1X * md2.invMLin1X + j1.lin1Y * md2.invMLin1Y + j1.lin1Z * md2.invMLin1Z + (j1.ang1X * md2.invMAng1X + j1.ang1Y * md2.invMAng1Y + j1.ang1Z * md2.invMAng1Z) + (j1.lin2X * md2.invMLin2X + j1.lin2Y * md2.invMLin2Y + j1.lin2Z * md2.invMLin2Z) + (j1.ang2X * md2.invMAng2X + j1.ang2Y * md2.invMAng2Y + j1.ang2Z * md2.invMAng2Z);
-				if(i1 == j2) {
-					invMass[i1][j2] = val + info.rows[i1].cfm;
-					invMassWithoutCfm[i1][j2] = val;
-					md2.mass = val + info.rows[i1].cfm;
-					md2.massWithoutCfm = val;
-					if(md2.mass != 0) {
-						md2.mass = 1 / md2.mass;
-					}
-					if(md2.massWithoutCfm != 0) {
-						md2.massWithoutCfm = 1 / md2.massWithoutCfm;
-					}
-				} else {
-					invMass[i1][j2] = val;
-					invMass[j2][i1] = val;
-					invMassWithoutCfm[i1][j2] = val;
-					invMassWithoutCfm[j2][i1] = val;
-				}
-			}
-		}
-		var _g4 = 0;
-		var _g11 = this._maxSubmatrixId;
-		while(_g4 < _g11) {
-			var i2 = _g4++;
-			this._cacheComputed[i2] = false;
-		}
-	}
-}
-if(!oimo.dynamics.constraint.solver.pgs) oimo.dynamics.constraint.solver.pgs = {};
-oimo.dynamics.constraint.solver.pgs.PgsContactConstraintSolver = class oimo_dynamics_constraint_solver_pgs_PgsContactConstraintSolver extends oimo.dynamics.constraint.ConstraintSolver {
-	constructor(constraint) {
-		super();
-		this.constraint = constraint;
-		this.info = new oimo.dynamics.constraint.info.contact.ContactSolverInfo();
-		var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
-		this.massData = this1;
-		var _g = 0;
-		var _g1 = this.massData.length;
-		while(_g < _g1) {
-			var i = _g++;
-			this.massData[i] = new oimo.dynamics.constraint.solver.common.ContactSolverMassDataRow();
-		}
-	}
-	preSolveVelocity(timeStep) {
-		this.constraint._getVelocitySolverInfo(timeStep,this.info);
-		this._b1 = this.info.b1;
-		this._b2 = this.info.b2;
-		var invM1 = this._b1._invMass;
-		var invM2 = this._b2._invMass;
-		var invI1;
-		var invI100;
-		var invI101;
-		var invI102;
-		var invI110;
-		var invI111;
-		var invI112;
-		var invI120;
-		var invI121;
-		var invI122;
-		var invI2;
-		var invI200;
-		var invI201;
-		var invI202;
-		var invI210;
-		var invI211;
-		var invI212;
-		var invI220;
-		var invI221;
-		var invI222;
-		invI100 = this._b1._invInertia00;
-		invI101 = this._b1._invInertia01;
-		invI102 = this._b1._invInertia02;
-		invI110 = this._b1._invInertia10;
-		invI111 = this._b1._invInertia11;
-		invI112 = this._b1._invInertia12;
-		invI120 = this._b1._invInertia20;
-		invI121 = this._b1._invInertia21;
-		invI122 = this._b1._invInertia22;
-		invI200 = this._b2._invInertia00;
-		invI201 = this._b2._invInertia01;
-		invI202 = this._b2._invInertia02;
-		invI210 = this._b2._invInertia10;
-		invI211 = this._b2._invInertia11;
-		invI212 = this._b2._invInertia12;
-		invI220 = this._b2._invInertia20;
-		invI221 = this._b2._invInertia21;
-		invI222 = this._b2._invInertia22;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var j = row.jacobianN;
-			md.invMLinN1X = j.lin1X * invM1;
-			md.invMLinN1Y = j.lin1Y * invM1;
-			md.invMLinN1Z = j.lin1Z * invM1;
-			md.invMLinN2X = j.lin2X * invM2;
-			md.invMLinN2Y = j.lin2Y * invM2;
-			md.invMLinN2Z = j.lin2Z * invM2;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
-			__tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
-			__tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
-			md.invMAngN1X = __tmp__X;
-			md.invMAngN1Y = __tmp__Y;
-			md.invMAngN1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
-			__tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
-			__tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
-			md.invMAngN2X = __tmp__X1;
-			md.invMAngN2Y = __tmp__Y1;
-			md.invMAngN2Z = __tmp__Z1;
-			md.massN = invM1 + invM2 + (md.invMAngN1X * j.ang1X + md.invMAngN1Y * j.ang1Y + md.invMAngN1Z * j.ang1Z) + (md.invMAngN2X * j.ang2X + md.invMAngN2Y * j.ang2Y + md.invMAngN2Z * j.ang2Z);
-			if(md.massN != 0) {
-				md.massN = 1 / md.massN;
-			}
-			var jt = row.jacobianT;
-			var jb = row.jacobianB;
-			md.invMLinT1X = jt.lin1X * invM1;
-			md.invMLinT1Y = jt.lin1Y * invM1;
-			md.invMLinT1Z = jt.lin1Z * invM1;
-			md.invMLinT2X = jt.lin2X * invM2;
-			md.invMLinT2Y = jt.lin2Y * invM2;
-			md.invMLinT2Z = jt.lin2Z * invM2;
-			md.invMLinB1X = jb.lin1X * invM1;
-			md.invMLinB1Y = jb.lin1Y * invM1;
-			md.invMLinB1Z = jb.lin1Z * invM1;
-			md.invMLinB2X = jb.lin2X * invM2;
-			md.invMLinB2Y = jb.lin2Y * invM2;
-			md.invMLinB2Z = jb.lin2Z * invM2;
-			var __tmp__X2;
-			var __tmp__Y2;
-			var __tmp__Z2;
-			__tmp__X2 = invI100 * jt.ang1X + invI101 * jt.ang1Y + invI102 * jt.ang1Z;
-			__tmp__Y2 = invI110 * jt.ang1X + invI111 * jt.ang1Y + invI112 * jt.ang1Z;
-			__tmp__Z2 = invI120 * jt.ang1X + invI121 * jt.ang1Y + invI122 * jt.ang1Z;
-			md.invMAngT1X = __tmp__X2;
-			md.invMAngT1Y = __tmp__Y2;
-			md.invMAngT1Z = __tmp__Z2;
-			var __tmp__X3;
-			var __tmp__Y3;
-			var __tmp__Z3;
-			__tmp__X3 = invI200 * jt.ang2X + invI201 * jt.ang2Y + invI202 * jt.ang2Z;
-			__tmp__Y3 = invI210 * jt.ang2X + invI211 * jt.ang2Y + invI212 * jt.ang2Z;
-			__tmp__Z3 = invI220 * jt.ang2X + invI221 * jt.ang2Y + invI222 * jt.ang2Z;
-			md.invMAngT2X = __tmp__X3;
-			md.invMAngT2Y = __tmp__Y3;
-			md.invMAngT2Z = __tmp__Z3;
-			var __tmp__X4;
-			var __tmp__Y4;
-			var __tmp__Z4;
-			__tmp__X4 = invI100 * jb.ang1X + invI101 * jb.ang1Y + invI102 * jb.ang1Z;
-			__tmp__Y4 = invI110 * jb.ang1X + invI111 * jb.ang1Y + invI112 * jb.ang1Z;
-			__tmp__Z4 = invI120 * jb.ang1X + invI121 * jb.ang1Y + invI122 * jb.ang1Z;
-			md.invMAngB1X = __tmp__X4;
-			md.invMAngB1Y = __tmp__Y4;
-			md.invMAngB1Z = __tmp__Z4;
-			var __tmp__X5;
-			var __tmp__Y5;
-			var __tmp__Z5;
-			__tmp__X5 = invI200 * jb.ang2X + invI201 * jb.ang2Y + invI202 * jb.ang2Z;
-			__tmp__Y5 = invI210 * jb.ang2X + invI211 * jb.ang2Y + invI212 * jb.ang2Z;
-			__tmp__Z5 = invI220 * jb.ang2X + invI221 * jb.ang2Y + invI222 * jb.ang2Z;
-			md.invMAngB2X = __tmp__X5;
-			md.invMAngB2Y = __tmp__Y5;
-			md.invMAngB2Z = __tmp__Z5;
-			var invMassTB00 = invM1 + invM2 + (md.invMAngT1X * jt.ang1X + md.invMAngT1Y * jt.ang1Y + md.invMAngT1Z * jt.ang1Z) + (md.invMAngT2X * jt.ang2X + md.invMAngT2Y * jt.ang2Y + md.invMAngT2Z * jt.ang2Z);
-			var invMassTB01 = md.invMAngT1X * jb.ang1X + md.invMAngT1Y * jb.ang1Y + md.invMAngT1Z * jb.ang1Z + (md.invMAngT2X * jb.ang2X + md.invMAngT2Y * jb.ang2Y + md.invMAngT2Z * jb.ang2Z);
-			var invMassTB10 = invMassTB01;
-			var invMassTB11 = invM1 + invM2 + (md.invMAngB1X * jb.ang1X + md.invMAngB1Y * jb.ang1Y + md.invMAngB1Z * jb.ang1Z) + (md.invMAngB2X * jb.ang2X + md.invMAngB2Y * jb.ang2Y + md.invMAngB2Z * jb.ang2Z);
-			var invDet = invMassTB00 * invMassTB11 - invMassTB01 * invMassTB10;
-			if(invDet != 0) {
-				invDet = 1 / invDet;
-			}
-			md.massTB00 = invMassTB11 * invDet;
-			md.massTB01 = -invMassTB01 * invDet;
-			md.massTB10 = -invMassTB10 * invDet;
-			md.massTB11 = invMassTB00 * invDet;
-		}
-	}
-	warmStart(timeStep) {
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = this._b1._velX;
-		lv1Y = this._b1._velY;
-		lv1Z = this._b1._velZ;
-		lv2X = this._b2._velX;
-		lv2Y = this._b2._velY;
-		lv2Z = this._b2._velZ;
-		av1X = this._b1._angVelX;
-		av1Y = this._b1._angVelY;
-		av1Z = this._b1._angVelZ;
-		av2X = this._b2._angVelX;
-		av2Y = this._b2._angVelY;
-		av2Z = this._b2._angVelZ;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var imp = row.impulse;
-			var md = this.massData[i];
-			var jt = row.jacobianT;
-			var jb = row.jacobianB;
-			var impulseN = imp.impulseN;
-			var impulseT = imp.impulseLX * jt.lin1X + imp.impulseLY * jt.lin1Y + imp.impulseLZ * jt.lin1Z;
-			var impulseB = imp.impulseLX * jb.lin1X + imp.impulseLY * jb.lin1Y + imp.impulseLZ * jb.lin1Z;
-			imp.impulseT = impulseT;
-			imp.impulseB = impulseB;
-			imp.impulseN *= timeStep.dtRatio;
-			imp.impulseT *= timeStep.dtRatio;
-			imp.impulseB *= timeStep.dtRatio;
-			lv1X += md.invMLinN1X * impulseN;
-			lv1Y += md.invMLinN1Y * impulseN;
-			lv1Z += md.invMLinN1Z * impulseN;
-			lv1X += md.invMLinT1X * impulseT;
-			lv1Y += md.invMLinT1Y * impulseT;
-			lv1Z += md.invMLinT1Z * impulseT;
-			lv1X += md.invMLinB1X * impulseB;
-			lv1Y += md.invMLinB1Y * impulseB;
-			lv1Z += md.invMLinB1Z * impulseB;
-			lv2X += md.invMLinN2X * -impulseN;
-			lv2Y += md.invMLinN2Y * -impulseN;
-			lv2Z += md.invMLinN2Z * -impulseN;
-			lv2X += md.invMLinT2X * -impulseT;
-			lv2Y += md.invMLinT2Y * -impulseT;
-			lv2Z += md.invMLinT2Z * -impulseT;
-			lv2X += md.invMLinB2X * -impulseB;
-			lv2Y += md.invMLinB2Y * -impulseB;
-			lv2Z += md.invMLinB2Z * -impulseB;
-			av1X += md.invMAngN1X * impulseN;
-			av1Y += md.invMAngN1Y * impulseN;
-			av1Z += md.invMAngN1Z * impulseN;
-			av1X += md.invMAngT1X * impulseT;
-			av1Y += md.invMAngT1Y * impulseT;
-			av1Z += md.invMAngT1Z * impulseT;
-			av1X += md.invMAngB1X * impulseB;
-			av1Y += md.invMAngB1Y * impulseB;
-			av1Z += md.invMAngB1Z * impulseB;
-			av2X += md.invMAngN2X * -impulseN;
-			av2Y += md.invMAngN2Y * -impulseN;
-			av2Z += md.invMAngN2Z * -impulseN;
-			av2X += md.invMAngT2X * -impulseT;
-			av2Y += md.invMAngT2Y * -impulseT;
-			av2Z += md.invMAngT2Z * -impulseT;
-			av2X += md.invMAngB2X * -impulseB;
-			av2Y += md.invMAngB2Y * -impulseB;
-			av2Z += md.invMAngB2Z * -impulseB;
-		}
-		this._b1._velX = lv1X;
-		this._b1._velY = lv1Y;
-		this._b1._velZ = lv1Z;
-		this._b2._velX = lv2X;
-		this._b2._velY = lv2Y;
-		this._b2._velZ = lv2Z;
-		this._b1._angVelX = av1X;
-		this._b1._angVelY = av1Y;
-		this._b1._angVelZ = av1Z;
-		this._b2._angVelX = av2X;
-		this._b2._angVelY = av2Y;
-		this._b2._angVelZ = av2Z;
-	}
-	solveVelocity() {
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = this._b1._velX;
-		lv1Y = this._b1._velY;
-		lv1Z = this._b1._velZ;
-		lv2X = this._b2._velX;
-		lv2Y = this._b2._velY;
-		lv2Z = this._b2._velZ;
-		av1X = this._b1._angVelX;
-		av1Y = this._b1._angVelY;
-		av1Z = this._b1._angVelZ;
-		av2X = this._b2._angVelX;
-		av2Y = this._b2._angVelY;
-		av2Z = this._b2._angVelZ;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var imp = row.impulse;
-			var rvt = 0;
-			var j = row.jacobianT;
-			rvt += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
-			rvt -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
-			rvt += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
-			rvt -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
-			var rvb = 0;
-			j = row.jacobianB;
-			rvb += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
-			rvb -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
-			rvb += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
-			rvb -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
-			var impulseT = -(rvt * md.massTB00 + rvb * md.massTB01);
-			var impulseB = -(rvt * md.massTB10 + rvb * md.massTB11);
-			var oldImpulseT = imp.impulseT;
-			var oldImpulseB = imp.impulseB;
-			imp.impulseT += impulseT;
-			imp.impulseB += impulseB;
-			var maxImpulse = row.friction * imp.impulseN;
-			if(maxImpulse == 0) {
-				imp.impulseT = 0;
-				imp.impulseB = 0;
-			} else {
-				var impulseLengthSq = imp.impulseT * imp.impulseT + imp.impulseB * imp.impulseB;
-				if(impulseLengthSq > maxImpulse * maxImpulse) {
-					var invL = maxImpulse / Math.sqrt(impulseLengthSq);
-					imp.impulseT *= invL;
-					imp.impulseB *= invL;
-				}
-			}
-			impulseT = imp.impulseT - oldImpulseT;
-			impulseB = imp.impulseB - oldImpulseB;
-			lv1X += md.invMLinT1X * impulseT;
-			lv1Y += md.invMLinT1Y * impulseT;
-			lv1Z += md.invMLinT1Z * impulseT;
-			lv1X += md.invMLinB1X * impulseB;
-			lv1Y += md.invMLinB1Y * impulseB;
-			lv1Z += md.invMLinB1Z * impulseB;
-			lv2X += md.invMLinT2X * -impulseT;
-			lv2Y += md.invMLinT2Y * -impulseT;
-			lv2Z += md.invMLinT2Z * -impulseT;
-			lv2X += md.invMLinB2X * -impulseB;
-			lv2Y += md.invMLinB2Y * -impulseB;
-			lv2Z += md.invMLinB2Z * -impulseB;
-			av1X += md.invMAngT1X * impulseT;
-			av1Y += md.invMAngT1Y * impulseT;
-			av1Z += md.invMAngT1Z * impulseT;
-			av1X += md.invMAngB1X * impulseB;
-			av1Y += md.invMAngB1Y * impulseB;
-			av1Z += md.invMAngB1Z * impulseB;
-			av2X += md.invMAngT2X * -impulseT;
-			av2Y += md.invMAngT2Y * -impulseT;
-			av2Z += md.invMAngT2Z * -impulseT;
-			av2X += md.invMAngB2X * -impulseB;
-			av2Y += md.invMAngB2Y * -impulseB;
-			av2Z += md.invMAngB2Z * -impulseB;
-		}
-		var _g2 = 0;
-		var _g3 = this.info.numRows;
-		while(_g2 < _g3) {
-			var i1 = _g2++;
-			var row1 = this.info.rows[i1];
-			var md1 = this.massData[i1];
-			var imp1 = row1.impulse;
-			var rvn = 0;
-			var j1 = row1.jacobianN;
-			rvn += lv1X * j1.lin1X + lv1Y * j1.lin1Y + lv1Z * j1.lin1Z;
-			rvn -= lv2X * j1.lin2X + lv2Y * j1.lin2Y + lv2Z * j1.lin2Z;
-			rvn += av1X * j1.ang1X + av1Y * j1.ang1Y + av1Z * j1.ang1Z;
-			rvn -= av2X * j1.ang2X + av2Y * j1.ang2Y + av2Z * j1.ang2Z;
-			var impulseN = (row1.rhs - rvn) * md1.massN;
-			var oldImpulseN = imp1.impulseN;
-			imp1.impulseN += impulseN;
-			if(imp1.impulseN < 0) {
-				imp1.impulseN = 0;
-			}
-			impulseN = imp1.impulseN - oldImpulseN;
-			lv1X += md1.invMLinN1X * impulseN;
-			lv1Y += md1.invMLinN1Y * impulseN;
-			lv1Z += md1.invMLinN1Z * impulseN;
-			lv2X += md1.invMLinN2X * -impulseN;
-			lv2Y += md1.invMLinN2Y * -impulseN;
-			lv2Z += md1.invMLinN2Z * -impulseN;
-			av1X += md1.invMAngN1X * impulseN;
-			av1Y += md1.invMAngN1Y * impulseN;
-			av1Z += md1.invMAngN1Z * impulseN;
-			av2X += md1.invMAngN2X * -impulseN;
-			av2Y += md1.invMAngN2Y * -impulseN;
-			av2Z += md1.invMAngN2Z * -impulseN;
-		}
-		this._b1._velX = lv1X;
-		this._b1._velY = lv1Y;
-		this._b1._velZ = lv1Z;
-		this._b2._velX = lv2X;
-		this._b2._velY = lv2Y;
-		this._b2._velZ = lv2Z;
-		this._b1._angVelX = av1X;
-		this._b1._angVelY = av1Y;
-		this._b1._angVelZ = av1Z;
-		this._b2._angVelX = av2X;
-		this._b2._angVelY = av2Y;
-		this._b2._angVelZ = av2Z;
-	}
-	preSolvePosition(timeStep) {
-		this.constraint._syncManifold();
-		this.constraint._getPositionSolverInfo(this.info);
-		var invM1 = this._b1._invMass;
-		var invM2 = this._b2._invMass;
-		var invI1;
-		var invI100;
-		var invI101;
-		var invI102;
-		var invI110;
-		var invI111;
-		var invI112;
-		var invI120;
-		var invI121;
-		var invI122;
-		var invI2;
-		var invI200;
-		var invI201;
-		var invI202;
-		var invI210;
-		var invI211;
-		var invI212;
-		var invI220;
-		var invI221;
-		var invI222;
-		invI100 = this._b1._invInertia00;
-		invI101 = this._b1._invInertia01;
-		invI102 = this._b1._invInertia02;
-		invI110 = this._b1._invInertia10;
-		invI111 = this._b1._invInertia11;
-		invI112 = this._b1._invInertia12;
-		invI120 = this._b1._invInertia20;
-		invI121 = this._b1._invInertia21;
-		invI122 = this._b1._invInertia22;
-		invI200 = this._b2._invInertia00;
-		invI201 = this._b2._invInertia01;
-		invI202 = this._b2._invInertia02;
-		invI210 = this._b2._invInertia10;
-		invI211 = this._b2._invInertia11;
-		invI212 = this._b2._invInertia12;
-		invI220 = this._b2._invInertia20;
-		invI221 = this._b2._invInertia21;
-		invI222 = this._b2._invInertia22;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var j = row.jacobianN;
-			md.invMLinN1X = j.lin1X * invM1;
-			md.invMLinN1Y = j.lin1Y * invM1;
-			md.invMLinN1Z = j.lin1Z * invM1;
-			md.invMLinN2X = j.lin2X * invM2;
-			md.invMLinN2Y = j.lin2Y * invM2;
-			md.invMLinN2Z = j.lin2Z * invM2;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
-			__tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
-			__tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
-			md.invMAngN1X = __tmp__X;
-			md.invMAngN1Y = __tmp__Y;
-			md.invMAngN1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
-			__tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
-			__tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
-			md.invMAngN2X = __tmp__X1;
-			md.invMAngN2Y = __tmp__Y1;
-			md.invMAngN2Z = __tmp__Z1;
-			md.massN = invM1 + invM2 + (md.invMAngN1X * j.ang1X + md.invMAngN1Y * j.ang1Y + md.invMAngN1Z * j.ang1Z) + (md.invMAngN2X * j.ang2X + md.invMAngN2Y * j.ang2Y + md.invMAngN2Z * j.ang2Z);
-			if(md.massN != 0) {
-				md.massN = 1 / md.massN;
-			}
-		}
-		var _g2 = 0;
-		var _g11 = this.info.numRows;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			this.info.rows[i1].impulse.impulseP = 0;
-		}
-	}
-	solvePositionSplitImpulse() {
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = this._b1._pseudoVelX;
-		lv1Y = this._b1._pseudoVelY;
-		lv1Z = this._b1._pseudoVelZ;
-		lv2X = this._b2._pseudoVelX;
-		lv2Y = this._b2._pseudoVelY;
-		lv2Z = this._b2._pseudoVelZ;
-		av1X = this._b1._angPseudoVelX;
-		av1Y = this._b1._angPseudoVelY;
-		av1Z = this._b1._angPseudoVelZ;
-		av2X = this._b2._angPseudoVelX;
-		av2Y = this._b2._angPseudoVelY;
-		av2Z = this._b2._angPseudoVelZ;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var imp = row.impulse;
-			var j = row.jacobianN;
-			var rvn = 0;
-			rvn += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
-			rvn -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
-			rvn += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
-			rvn -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
-			var impulseP = (row.rhs - rvn) * md.massN * oimo.common.Setting.positionSplitImpulseBaumgarte;
-			var oldImpulseP = imp.impulseP;
-			imp.impulseP += impulseP;
-			if(imp.impulseP < 0) {
-				imp.impulseP = 0;
-			}
-			impulseP = imp.impulseP - oldImpulseP;
-			lv1X += md.invMLinN1X * impulseP;
-			lv1Y += md.invMLinN1Y * impulseP;
-			lv1Z += md.invMLinN1Z * impulseP;
-			lv2X += md.invMLinN2X * -impulseP;
-			lv2Y += md.invMLinN2Y * -impulseP;
-			lv2Z += md.invMLinN2Z * -impulseP;
-			av1X += md.invMAngN1X * impulseP;
-			av1Y += md.invMAngN1Y * impulseP;
-			av1Z += md.invMAngN1Z * impulseP;
-			av2X += md.invMAngN2X * -impulseP;
-			av2Y += md.invMAngN2Y * -impulseP;
-			av2Z += md.invMAngN2Z * -impulseP;
-		}
-		this._b1._pseudoVelX = lv1X;
-		this._b1._pseudoVelY = lv1Y;
-		this._b1._pseudoVelZ = lv1Z;
-		this._b2._pseudoVelX = lv2X;
-		this._b2._pseudoVelY = lv2Y;
-		this._b2._pseudoVelZ = lv2Z;
-		this._b1._angPseudoVelX = av1X;
-		this._b1._angPseudoVelY = av1Y;
-		this._b1._angPseudoVelZ = av1Z;
-		this._b2._angPseudoVelX = av2X;
-		this._b2._angPseudoVelY = av2Y;
-		this._b2._angPseudoVelZ = av2Z;
-	}
-	solvePositionNgs(timeStep) {
-		this.constraint._syncManifold();
-		this.constraint._getPositionSolverInfo(this.info);
-		var invM1 = this._b1._invMass;
-		var invM2 = this._b2._invMass;
-		var invI1;
-		var invI100;
-		var invI101;
-		var invI102;
-		var invI110;
-		var invI111;
-		var invI112;
-		var invI120;
-		var invI121;
-		var invI122;
-		var invI2;
-		var invI200;
-		var invI201;
-		var invI202;
-		var invI210;
-		var invI211;
-		var invI212;
-		var invI220;
-		var invI221;
-		var invI222;
-		invI100 = this._b1._invInertia00;
-		invI101 = this._b1._invInertia01;
-		invI102 = this._b1._invInertia02;
-		invI110 = this._b1._invInertia10;
-		invI111 = this._b1._invInertia11;
-		invI112 = this._b1._invInertia12;
-		invI120 = this._b1._invInertia20;
-		invI121 = this._b1._invInertia21;
-		invI122 = this._b1._invInertia22;
-		invI200 = this._b2._invInertia00;
-		invI201 = this._b2._invInertia01;
-		invI202 = this._b2._invInertia02;
-		invI210 = this._b2._invInertia10;
-		invI211 = this._b2._invInertia11;
-		invI212 = this._b2._invInertia12;
-		invI220 = this._b2._invInertia20;
-		invI221 = this._b2._invInertia21;
-		invI222 = this._b2._invInertia22;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var j = row.jacobianN;
-			md.invMLinN1X = j.lin1X * invM1;
-			md.invMLinN1Y = j.lin1Y * invM1;
-			md.invMLinN1Z = j.lin1Z * invM1;
-			md.invMLinN2X = j.lin2X * invM2;
-			md.invMLinN2Y = j.lin2Y * invM2;
-			md.invMLinN2Z = j.lin2Z * invM2;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
-			__tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
-			__tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
-			md.invMAngN1X = __tmp__X;
-			md.invMAngN1Y = __tmp__Y;
-			md.invMAngN1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
-			__tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
-			__tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
-			md.invMAngN2X = __tmp__X1;
-			md.invMAngN2Y = __tmp__Y1;
-			md.invMAngN2Z = __tmp__Z1;
-			md.massN = invM1 + invM2 + (md.invMAngN1X * j.ang1X + md.invMAngN1Y * j.ang1Y + md.invMAngN1Z * j.ang1Z) + (md.invMAngN2X * j.ang2X + md.invMAngN2Y * j.ang2Y + md.invMAngN2Z * j.ang2Z);
-			if(md.massN != 0) {
-				md.massN = 1 / md.massN;
-			}
-		}
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = 0;
-		lv1Y = 0;
-		lv1Z = 0;
-		lv2X = 0;
-		lv2Y = 0;
-		lv2Z = 0;
-		av1X = 0;
-		av1Y = 0;
-		av1Z = 0;
-		av2X = 0;
-		av2Y = 0;
-		av2Z = 0;
-		var _g2 = 0;
-		var _g11 = this.info.numRows;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			var row1 = this.info.rows[i1];
-			var md1 = this.massData[i1];
-			var imp = row1.impulse;
-			var j1 = row1.jacobianN;
-			var rvn = 0;
-			rvn += lv1X * j1.lin1X + lv1Y * j1.lin1Y + lv1Z * j1.lin1Z;
-			rvn -= lv2X * j1.lin2X + lv2Y * j1.lin2Y + lv2Z * j1.lin2Z;
-			rvn += av1X * j1.ang1X + av1Y * j1.ang1Y + av1Z * j1.ang1Z;
-			rvn -= av2X * j1.ang2X + av2Y * j1.ang2Y + av2Z * j1.ang2Z;
-			var impulseP = (row1.rhs - rvn) * md1.massN * oimo.common.Setting.positionNgsBaumgarte;
-			var oldImpulseP = imp.impulseP;
-			imp.impulseP += impulseP;
-			if(imp.impulseP < 0) {
-				imp.impulseP = 0;
-			}
-			impulseP = imp.impulseP - oldImpulseP;
-			lv1X += md1.invMLinN1X * impulseP;
-			lv1Y += md1.invMLinN1Y * impulseP;
-			lv1Z += md1.invMLinN1Z * impulseP;
-			lv2X += md1.invMLinN2X * -impulseP;
-			lv2Y += md1.invMLinN2Y * -impulseP;
-			lv2Z += md1.invMLinN2Z * -impulseP;
-			av1X += md1.invMAngN1X * impulseP;
-			av1Y += md1.invMAngN1Y * impulseP;
-			av1Z += md1.invMAngN1Z * impulseP;
-			av2X += md1.invMAngN2X * -impulseP;
-			av2Y += md1.invMAngN2Y * -impulseP;
-			av2Z += md1.invMAngN2Z * -impulseP;
-		}
-		var _this = this._b1;
-		_this._transform._positionX += lv1X;
-		_this._transform._positionY += lv1Y;
-		_this._transform._positionZ += lv1Z;
-		var _this1 = this._b2;
-		_this1._transform._positionX += lv2X;
-		_this1._transform._positionY += lv2Y;
-		_this1._transform._positionZ += lv2Z;
-		var _this2 = this._b1;
-		var theta = Math.sqrt(av1X * av1X + av1Y * av1Y + av1Z * av1Z);
-		var halfTheta = theta * 0.5;
-		var rotationToSinAxisFactor;
-		var cosHalfTheta;
-		if(halfTheta < 0.5) {
-			var ht2 = halfTheta * halfTheta;
-			rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
-			cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
-		} else {
-			rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
-			cosHalfTheta = Math.cos(halfTheta);
-		}
-		var sinAxis;
-		var sinAxisX;
-		var sinAxisY;
-		var sinAxisZ;
-		sinAxisX = av1X * rotationToSinAxisFactor;
-		sinAxisY = av1Y * rotationToSinAxisFactor;
-		sinAxisZ = av1Z * rotationToSinAxisFactor;
-		var dq;
-		var dqX;
-		var dqY;
-		var dqZ;
-		var dqW;
-		dqX = sinAxisX;
-		dqY = sinAxisY;
-		dqZ = sinAxisZ;
-		dqW = cosHalfTheta;
-		var q;
-		var qX;
-		var qY;
-		var qZ;
-		var qW;
-		var e00 = _this2._transform._rotation00;
-		var e11 = _this2._transform._rotation11;
-		var e22 = _this2._transform._rotation22;
-		var t = e00 + e11 + e22;
-		var s;
-		if(t > 0) {
-			s = Math.sqrt(t + 1);
-			qW = 0.5 * s;
-			s = 0.5 / s;
-			qX = (_this2._transform._rotation21 - _this2._transform._rotation12) * s;
-			qY = (_this2._transform._rotation02 - _this2._transform._rotation20) * s;
-			qZ = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
-		} else if(e00 > e11) {
-			if(e00 > e22) {
-				s = Math.sqrt(e00 - e11 - e22 + 1);
-				qX = 0.5 * s;
-				s = 0.5 / s;
-				qY = (_this2._transform._rotation01 + _this2._transform._rotation10) * s;
-				qZ = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
-				qW = (_this2._transform._rotation21 - _this2._transform._rotation12) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				qZ = 0.5 * s;
-				s = 0.5 / s;
-				qX = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
-				qY = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
-				qW = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
-			}
-		} else if(e11 > e22) {
-			s = Math.sqrt(e11 - e22 - e00 + 1);
-			qY = 0.5 * s;
-			s = 0.5 / s;
-			qX = (_this2._transform._rotation01 + _this2._transform._rotation10) * s;
-			qZ = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
-			qW = (_this2._transform._rotation02 - _this2._transform._rotation20) * s;
-		} else {
-			s = Math.sqrt(e22 - e00 - e11 + 1);
-			qZ = 0.5 * s;
-			s = 0.5 / s;
-			qX = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
-			qY = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
-			qW = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
-		}
-		qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
-		qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
-		qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
-		qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
-		var l = qX * qX + qY * qY + qZ * qZ + qW * qW;
-		if(l > 1e-32) {
-			l = 1 / Math.sqrt(l);
-		}
-		qX *= l;
-		qY *= l;
-		qZ *= l;
-		qW *= l;
-		var x = qX;
-		var y = qY;
-		var z = qZ;
-		var w = qW;
-		var x2 = 2 * x;
-		var y2 = 2 * y;
-		var z2 = 2 * z;
-		var xx = x * x2;
-		var yy = y * y2;
-		var zz = z * z2;
-		var xy = x * y2;
-		var yz = y * z2;
-		var xz = x * z2;
-		var wx = w * x2;
-		var wy = w * y2;
-		var wz = w * z2;
-		_this2._transform._rotation00 = 1 - yy - zz;
-		_this2._transform._rotation01 = xy - wz;
-		_this2._transform._rotation02 = xz + wy;
-		_this2._transform._rotation10 = xy + wz;
-		_this2._transform._rotation11 = 1 - xx - zz;
-		_this2._transform._rotation12 = yz - wx;
-		_this2._transform._rotation20 = xz - wy;
-		_this2._transform._rotation21 = yz + wx;
-		_this2._transform._rotation22 = 1 - xx - yy;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = _this2._transform._rotation00 * _this2._invLocalInertia00 + _this2._transform._rotation01 * _this2._invLocalInertia10 + _this2._transform._rotation02 * _this2._invLocalInertia20;
-		__tmp__01 = _this2._transform._rotation00 * _this2._invLocalInertia01 + _this2._transform._rotation01 * _this2._invLocalInertia11 + _this2._transform._rotation02 * _this2._invLocalInertia21;
-		__tmp__02 = _this2._transform._rotation00 * _this2._invLocalInertia02 + _this2._transform._rotation01 * _this2._invLocalInertia12 + _this2._transform._rotation02 * _this2._invLocalInertia22;
-		__tmp__10 = _this2._transform._rotation10 * _this2._invLocalInertia00 + _this2._transform._rotation11 * _this2._invLocalInertia10 + _this2._transform._rotation12 * _this2._invLocalInertia20;
-		__tmp__11 = _this2._transform._rotation10 * _this2._invLocalInertia01 + _this2._transform._rotation11 * _this2._invLocalInertia11 + _this2._transform._rotation12 * _this2._invLocalInertia21;
-		__tmp__12 = _this2._transform._rotation10 * _this2._invLocalInertia02 + _this2._transform._rotation11 * _this2._invLocalInertia12 + _this2._transform._rotation12 * _this2._invLocalInertia22;
-		__tmp__20 = _this2._transform._rotation20 * _this2._invLocalInertia00 + _this2._transform._rotation21 * _this2._invLocalInertia10 + _this2._transform._rotation22 * _this2._invLocalInertia20;
-		__tmp__21 = _this2._transform._rotation20 * _this2._invLocalInertia01 + _this2._transform._rotation21 * _this2._invLocalInertia11 + _this2._transform._rotation22 * _this2._invLocalInertia21;
-		__tmp__22 = _this2._transform._rotation20 * _this2._invLocalInertia02 + _this2._transform._rotation21 * _this2._invLocalInertia12 + _this2._transform._rotation22 * _this2._invLocalInertia22;
-		_this2._invInertia00 = __tmp__00;
-		_this2._invInertia01 = __tmp__01;
-		_this2._invInertia02 = __tmp__02;
-		_this2._invInertia10 = __tmp__10;
-		_this2._invInertia11 = __tmp__11;
-		_this2._invInertia12 = __tmp__12;
-		_this2._invInertia20 = __tmp__20;
-		_this2._invInertia21 = __tmp__21;
-		_this2._invInertia22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = _this2._invInertia00 * _this2._transform._rotation00 + _this2._invInertia01 * _this2._transform._rotation01 + _this2._invInertia02 * _this2._transform._rotation02;
-		__tmp__011 = _this2._invInertia00 * _this2._transform._rotation10 + _this2._invInertia01 * _this2._transform._rotation11 + _this2._invInertia02 * _this2._transform._rotation12;
-		__tmp__021 = _this2._invInertia00 * _this2._transform._rotation20 + _this2._invInertia01 * _this2._transform._rotation21 + _this2._invInertia02 * _this2._transform._rotation22;
-		__tmp__101 = _this2._invInertia10 * _this2._transform._rotation00 + _this2._invInertia11 * _this2._transform._rotation01 + _this2._invInertia12 * _this2._transform._rotation02;
-		__tmp__111 = _this2._invInertia10 * _this2._transform._rotation10 + _this2._invInertia11 * _this2._transform._rotation11 + _this2._invInertia12 * _this2._transform._rotation12;
-		__tmp__121 = _this2._invInertia10 * _this2._transform._rotation20 + _this2._invInertia11 * _this2._transform._rotation21 + _this2._invInertia12 * _this2._transform._rotation22;
-		__tmp__201 = _this2._invInertia20 * _this2._transform._rotation00 + _this2._invInertia21 * _this2._transform._rotation01 + _this2._invInertia22 * _this2._transform._rotation02;
-		__tmp__211 = _this2._invInertia20 * _this2._transform._rotation10 + _this2._invInertia21 * _this2._transform._rotation11 + _this2._invInertia22 * _this2._transform._rotation12;
-		__tmp__221 = _this2._invInertia20 * _this2._transform._rotation20 + _this2._invInertia21 * _this2._transform._rotation21 + _this2._invInertia22 * _this2._transform._rotation22;
-		_this2._invInertia00 = __tmp__001;
-		_this2._invInertia01 = __tmp__011;
-		_this2._invInertia02 = __tmp__021;
-		_this2._invInertia10 = __tmp__101;
-		_this2._invInertia11 = __tmp__111;
-		_this2._invInertia12 = __tmp__121;
-		_this2._invInertia20 = __tmp__201;
-		_this2._invInertia21 = __tmp__211;
-		_this2._invInertia22 = __tmp__221;
-		_this2._invInertia00 *= _this2._rotFactor.x;
-		_this2._invInertia01 *= _this2._rotFactor.x;
-		_this2._invInertia02 *= _this2._rotFactor.x;
-		_this2._invInertia10 *= _this2._rotFactor.y;
-		_this2._invInertia11 *= _this2._rotFactor.y;
-		_this2._invInertia12 *= _this2._rotFactor.y;
-		_this2._invInertia20 *= _this2._rotFactor.z;
-		_this2._invInertia21 *= _this2._rotFactor.z;
-		_this2._invInertia22 *= _this2._rotFactor.z;
-		var _this3 = this._b2;
-		var theta1 = Math.sqrt(av2X * av2X + av2Y * av2Y + av2Z * av2Z);
-		var halfTheta1 = theta1 * 0.5;
-		var rotationToSinAxisFactor1;
-		var cosHalfTheta1;
-		if(halfTheta1 < 0.5) {
-			var ht21 = halfTheta1 * halfTheta1;
-			rotationToSinAxisFactor1 = 0.5 * (1 - ht21 * 0.166666666666666657 + ht21 * ht21 * 0.00833333333333333322);
-			cosHalfTheta1 = 1 - ht21 * 0.5 + ht21 * ht21 * 0.0416666666666666644;
-		} else {
-			rotationToSinAxisFactor1 = Math.sin(halfTheta1) / theta1;
-			cosHalfTheta1 = Math.cos(halfTheta1);
-		}
-		var sinAxis1;
-		var sinAxisX1;
-		var sinAxisY1;
-		var sinAxisZ1;
-		sinAxisX1 = av2X * rotationToSinAxisFactor1;
-		sinAxisY1 = av2Y * rotationToSinAxisFactor1;
-		sinAxisZ1 = av2Z * rotationToSinAxisFactor1;
-		var dq1;
-		var dqX1;
-		var dqY1;
-		var dqZ1;
-		var dqW1;
-		dqX1 = sinAxisX1;
-		dqY1 = sinAxisY1;
-		dqZ1 = sinAxisZ1;
-		dqW1 = cosHalfTheta1;
-		var q1;
-		var qX1;
-		var qY1;
-		var qZ1;
-		var qW1;
-		var e001 = _this3._transform._rotation00;
-		var e111 = _this3._transform._rotation11;
-		var e221 = _this3._transform._rotation22;
-		var t1 = e001 + e111 + e221;
-		var s1;
-		if(t1 > 0) {
-			s1 = Math.sqrt(t1 + 1);
-			qW1 = 0.5 * s1;
-			s1 = 0.5 / s1;
-			qX1 = (_this3._transform._rotation21 - _this3._transform._rotation12) * s1;
-			qY1 = (_this3._transform._rotation02 - _this3._transform._rotation20) * s1;
-			qZ1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
-		} else if(e001 > e111) {
-			if(e001 > e221) {
-				s1 = Math.sqrt(e001 - e111 - e221 + 1);
-				qX1 = 0.5 * s1;
-				s1 = 0.5 / s1;
-				qY1 = (_this3._transform._rotation01 + _this3._transform._rotation10) * s1;
-				qZ1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
-				qW1 = (_this3._transform._rotation21 - _this3._transform._rotation12) * s1;
-			} else {
-				s1 = Math.sqrt(e221 - e001 - e111 + 1);
-				qZ1 = 0.5 * s1;
-				s1 = 0.5 / s1;
-				qX1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
-				qY1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
-				qW1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
-			}
-		} else if(e111 > e221) {
-			s1 = Math.sqrt(e111 - e221 - e001 + 1);
-			qY1 = 0.5 * s1;
-			s1 = 0.5 / s1;
-			qX1 = (_this3._transform._rotation01 + _this3._transform._rotation10) * s1;
-			qZ1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
-			qW1 = (_this3._transform._rotation02 - _this3._transform._rotation20) * s1;
-		} else {
-			s1 = Math.sqrt(e221 - e001 - e111 + 1);
-			qZ1 = 0.5 * s1;
-			s1 = 0.5 / s1;
-			qX1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
-			qY1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
-			qW1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
-		}
-		qX1 = dqW1 * qX1 + dqX1 * qW1 + dqY1 * qZ1 - dqZ1 * qY1;
-		qY1 = dqW1 * qY1 - dqX1 * qZ1 + dqY1 * qW1 + dqZ1 * qX1;
-		qZ1 = dqW1 * qZ1 + dqX1 * qY1 - dqY1 * qX1 + dqZ1 * qW1;
-		qW1 = dqW1 * qW1 - dqX1 * qX1 - dqY1 * qY1 - dqZ1 * qZ1;
-		var l1 = qX1 * qX1 + qY1 * qY1 + qZ1 * qZ1 + qW1 * qW1;
-		if(l1 > 1e-32) {
-			l1 = 1 / Math.sqrt(l1);
-		}
-		qX1 *= l1;
-		qY1 *= l1;
-		qZ1 *= l1;
-		qW1 *= l1;
-		var x1 = qX1;
-		var y1 = qY1;
-		var z1 = qZ1;
-		var w1 = qW1;
-		var x21 = 2 * x1;
-		var y21 = 2 * y1;
-		var z21 = 2 * z1;
-		var xx1 = x1 * x21;
-		var yy1 = y1 * y21;
-		var zz1 = z1 * z21;
-		var xy1 = x1 * y21;
-		var yz1 = y1 * z21;
-		var xz1 = x1 * z21;
-		var wx1 = w1 * x21;
-		var wy1 = w1 * y21;
-		var wz1 = w1 * z21;
-		_this3._transform._rotation00 = 1 - yy1 - zz1;
-		_this3._transform._rotation01 = xy1 - wz1;
-		_this3._transform._rotation02 = xz1 + wy1;
-		_this3._transform._rotation10 = xy1 + wz1;
-		_this3._transform._rotation11 = 1 - xx1 - zz1;
-		_this3._transform._rotation12 = yz1 - wx1;
-		_this3._transform._rotation20 = xz1 - wy1;
-		_this3._transform._rotation21 = yz1 + wx1;
-		_this3._transform._rotation22 = 1 - xx1 - yy1;
-		var __tmp__002;
-		var __tmp__012;
-		var __tmp__022;
-		var __tmp__102;
-		var __tmp__112;
-		var __tmp__122;
-		var __tmp__202;
-		var __tmp__212;
-		var __tmp__222;
-		__tmp__002 = _this3._transform._rotation00 * _this3._invLocalInertia00 + _this3._transform._rotation01 * _this3._invLocalInertia10 + _this3._transform._rotation02 * _this3._invLocalInertia20;
-		__tmp__012 = _this3._transform._rotation00 * _this3._invLocalInertia01 + _this3._transform._rotation01 * _this3._invLocalInertia11 + _this3._transform._rotation02 * _this3._invLocalInertia21;
-		__tmp__022 = _this3._transform._rotation00 * _this3._invLocalInertia02 + _this3._transform._rotation01 * _this3._invLocalInertia12 + _this3._transform._rotation02 * _this3._invLocalInertia22;
-		__tmp__102 = _this3._transform._rotation10 * _this3._invLocalInertia00 + _this3._transform._rotation11 * _this3._invLocalInertia10 + _this3._transform._rotation12 * _this3._invLocalInertia20;
-		__tmp__112 = _this3._transform._rotation10 * _this3._invLocalInertia01 + _this3._transform._rotation11 * _this3._invLocalInertia11 + _this3._transform._rotation12 * _this3._invLocalInertia21;
-		__tmp__122 = _this3._transform._rotation10 * _this3._invLocalInertia02 + _this3._transform._rotation11 * _this3._invLocalInertia12 + _this3._transform._rotation12 * _this3._invLocalInertia22;
-		__tmp__202 = _this3._transform._rotation20 * _this3._invLocalInertia00 + _this3._transform._rotation21 * _this3._invLocalInertia10 + _this3._transform._rotation22 * _this3._invLocalInertia20;
-		__tmp__212 = _this3._transform._rotation20 * _this3._invLocalInertia01 + _this3._transform._rotation21 * _this3._invLocalInertia11 + _this3._transform._rotation22 * _this3._invLocalInertia21;
-		__tmp__222 = _this3._transform._rotation20 * _this3._invLocalInertia02 + _this3._transform._rotation21 * _this3._invLocalInertia12 + _this3._transform._rotation22 * _this3._invLocalInertia22;
-		_this3._invInertia00 = __tmp__002;
-		_this3._invInertia01 = __tmp__012;
-		_this3._invInertia02 = __tmp__022;
-		_this3._invInertia10 = __tmp__102;
-		_this3._invInertia11 = __tmp__112;
-		_this3._invInertia12 = __tmp__122;
-		_this3._invInertia20 = __tmp__202;
-		_this3._invInertia21 = __tmp__212;
-		_this3._invInertia22 = __tmp__222;
-		var __tmp__003;
-		var __tmp__013;
-		var __tmp__023;
-		var __tmp__103;
-		var __tmp__113;
-		var __tmp__123;
-		var __tmp__203;
-		var __tmp__213;
-		var __tmp__223;
-		__tmp__003 = _this3._invInertia00 * _this3._transform._rotation00 + _this3._invInertia01 * _this3._transform._rotation01 + _this3._invInertia02 * _this3._transform._rotation02;
-		__tmp__013 = _this3._invInertia00 * _this3._transform._rotation10 + _this3._invInertia01 * _this3._transform._rotation11 + _this3._invInertia02 * _this3._transform._rotation12;
-		__tmp__023 = _this3._invInertia00 * _this3._transform._rotation20 + _this3._invInertia01 * _this3._transform._rotation21 + _this3._invInertia02 * _this3._transform._rotation22;
-		__tmp__103 = _this3._invInertia10 * _this3._transform._rotation00 + _this3._invInertia11 * _this3._transform._rotation01 + _this3._invInertia12 * _this3._transform._rotation02;
-		__tmp__113 = _this3._invInertia10 * _this3._transform._rotation10 + _this3._invInertia11 * _this3._transform._rotation11 + _this3._invInertia12 * _this3._transform._rotation12;
-		__tmp__123 = _this3._invInertia10 * _this3._transform._rotation20 + _this3._invInertia11 * _this3._transform._rotation21 + _this3._invInertia12 * _this3._transform._rotation22;
-		__tmp__203 = _this3._invInertia20 * _this3._transform._rotation00 + _this3._invInertia21 * _this3._transform._rotation01 + _this3._invInertia22 * _this3._transform._rotation02;
-		__tmp__213 = _this3._invInertia20 * _this3._transform._rotation10 + _this3._invInertia21 * _this3._transform._rotation11 + _this3._invInertia22 * _this3._transform._rotation12;
-		__tmp__223 = _this3._invInertia20 * _this3._transform._rotation20 + _this3._invInertia21 * _this3._transform._rotation21 + _this3._invInertia22 * _this3._transform._rotation22;
-		_this3._invInertia00 = __tmp__003;
-		_this3._invInertia01 = __tmp__013;
-		_this3._invInertia02 = __tmp__023;
-		_this3._invInertia10 = __tmp__103;
-		_this3._invInertia11 = __tmp__113;
-		_this3._invInertia12 = __tmp__123;
-		_this3._invInertia20 = __tmp__203;
-		_this3._invInertia21 = __tmp__213;
-		_this3._invInertia22 = __tmp__223;
-		_this3._invInertia00 *= _this3._rotFactor.x;
-		_this3._invInertia01 *= _this3._rotFactor.x;
-		_this3._invInertia02 *= _this3._rotFactor.x;
-		_this3._invInertia10 *= _this3._rotFactor.y;
-		_this3._invInertia11 *= _this3._rotFactor.y;
-		_this3._invInertia12 *= _this3._rotFactor.y;
-		_this3._invInertia20 *= _this3._rotFactor.z;
-		_this3._invInertia21 *= _this3._rotFactor.z;
-		_this3._invInertia22 *= _this3._rotFactor.z;
-	}
-	postSolve() {
-		var lin1;
-		var lin1X;
-		var lin1Y;
-		var lin1Z;
-		var ang1;
-		var ang1X;
-		var ang1Y;
-		var ang1Z;
-		var ang2;
-		var ang2X;
-		var ang2Y;
-		var ang2Z;
-		lin1X = 0;
-		lin1Y = 0;
-		lin1Z = 0;
-		ang1X = 0;
-		ang1Y = 0;
-		ang1Z = 0;
-		ang2X = 0;
-		ang2Y = 0;
-		ang2Z = 0;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var imp = row.impulse;
-			var jn = row.jacobianN;
-			var jt = row.jacobianT;
-			var jb = row.jacobianB;
-			var impN = imp.impulseN;
-			var impT = imp.impulseT;
-			var impB = imp.impulseB;
-			var impulseL;
-			var impulseLX;
-			var impulseLY;
-			var impulseLZ;
-			impulseLX = 0;
-			impulseLY = 0;
-			impulseLZ = 0;
-			impulseLX += jt.lin1X * impT;
-			impulseLY += jt.lin1Y * impT;
-			impulseLZ += jt.lin1Z * impT;
-			impulseLX += jb.lin1X * impB;
-			impulseLY += jb.lin1Y * impB;
-			impulseLZ += jb.lin1Z * impB;
-			imp.impulseLX = impulseLX;
-			imp.impulseLY = impulseLY;
-			imp.impulseLZ = impulseLZ;
-			lin1X += jn.lin1X * impN;
-			lin1Y += jn.lin1Y * impN;
-			lin1Z += jn.lin1Z * impN;
-			ang1X += jn.ang1X * impN;
-			ang1Y += jn.ang1Y * impN;
-			ang1Z += jn.ang1Z * impN;
-			ang2X += jn.ang2X * impN;
-			ang2Y += jn.ang2Y * impN;
-			ang2Z += jn.ang2Z * impN;
-			lin1X += jt.lin1X * impT;
-			lin1Y += jt.lin1Y * impT;
-			lin1Z += jt.lin1Z * impT;
-			ang1X += jt.ang1X * impT;
-			ang1Y += jt.ang1Y * impT;
-			ang1Z += jt.ang1Z * impT;
-			ang2X += jt.ang2X * impT;
-			ang2Y += jt.ang2Y * impT;
-			ang2Z += jt.ang2Z * impT;
-			lin1X += jb.lin1X * impB;
-			lin1Y += jb.lin1Y * impB;
-			lin1Z += jb.lin1Z * impB;
-			ang1X += jb.ang1X * impB;
-			ang1Y += jb.ang1Y * impB;
-			ang1Z += jb.ang1Z * impB;
-			ang2X += jb.ang2X * impB;
-			ang2Y += jb.ang2Y * impB;
-			ang2Z += jb.ang2Z * impB;
-		}
-		this._b1._linearContactImpulseX += lin1X;
-		this._b1._linearContactImpulseY += lin1Y;
-		this._b1._linearContactImpulseZ += lin1Z;
-		this._b1._angularContactImpulseX += ang1X;
-		this._b1._angularContactImpulseY += ang1Y;
-		this._b1._angularContactImpulseZ += ang1Z;
-		this._b2._linearContactImpulseX -= lin1X;
-		this._b2._linearContactImpulseY -= lin1Y;
-		this._b2._linearContactImpulseZ -= lin1Z;
-		this._b2._angularContactImpulseX -= ang2X;
-		this._b2._angularContactImpulseY -= ang2Y;
-		this._b2._angularContactImpulseZ -= ang2Z;
-		this.constraint._syncManifold();
-	}
-}
-oimo.dynamics.constraint.solver.pgs.PgsJointConstraintSolver = class oimo_dynamics_constraint_solver_pgs_PgsJointConstraintSolver extends oimo.dynamics.constraint.ConstraintSolver {
-	constructor(joint) {
-		super();
-		this.joint = joint;
-		this.info = new oimo.dynamics.constraint.info.joint.JointSolverInfo();
-		var this1 = new Array(oimo.common.Setting.maxJacobianRows);
-		this.massData = this1;
-		var _g = 0;
-		var _g1 = this.massData.length;
-		while(_g < _g1) {
-			var i = _g++;
-			this.massData[i] = new oimo.dynamics.constraint.solver.common.JointSolverMassDataRow();
-		}
-	}
-	preSolveVelocity(timeStep) {
-		this.joint._syncAnchors();
-		this.joint._getVelocitySolverInfo(timeStep,this.info);
-		this._b1 = this.info.b1;
-		this._b2 = this.info.b2;
-		var invM1 = this._b1._invMass;
-		var invM2 = this._b2._invMass;
-		var invI1;
-		var invI100;
-		var invI101;
-		var invI102;
-		var invI110;
-		var invI111;
-		var invI112;
-		var invI120;
-		var invI121;
-		var invI122;
-		var invI2;
-		var invI200;
-		var invI201;
-		var invI202;
-		var invI210;
-		var invI211;
-		var invI212;
-		var invI220;
-		var invI221;
-		var invI222;
-		invI100 = this._b1._invInertia00;
-		invI101 = this._b1._invInertia01;
-		invI102 = this._b1._invInertia02;
-		invI110 = this._b1._invInertia10;
-		invI111 = this._b1._invInertia11;
-		invI112 = this._b1._invInertia12;
-		invI120 = this._b1._invInertia20;
-		invI121 = this._b1._invInertia21;
-		invI122 = this._b1._invInertia22;
-		invI200 = this._b2._invInertia00;
-		invI201 = this._b2._invInertia01;
-		invI202 = this._b2._invInertia02;
-		invI210 = this._b2._invInertia10;
-		invI211 = this._b2._invInertia11;
-		invI212 = this._b2._invInertia12;
-		invI220 = this._b2._invInertia20;
-		invI221 = this._b2._invInertia21;
-		invI222 = this._b2._invInertia22;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var j = row.jacobian;
-			j.updateSparsity();
-			if((j.flag & 1) != 0) {
-				md.invMLin1X = j.lin1X * invM1;
-				md.invMLin1Y = j.lin1Y * invM1;
-				md.invMLin1Z = j.lin1Z * invM1;
-				md.invMLin2X = j.lin2X * invM2;
-				md.invMLin2Y = j.lin2Y * invM2;
-				md.invMLin2Z = j.lin2Z * invM2;
-			} else {
-				md.invMLin1X = 0;
-				md.invMLin1Y = 0;
-				md.invMLin1Z = 0;
-				md.invMLin2X = 0;
-				md.invMLin2Y = 0;
-				md.invMLin2Z = 0;
-			}
-			if((j.flag & 2) != 0) {
-				var __tmp__X;
-				var __tmp__Y;
-				var __tmp__Z;
-				__tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
-				__tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
-				__tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
-				md.invMAng1X = __tmp__X;
-				md.invMAng1Y = __tmp__Y;
-				md.invMAng1Z = __tmp__Z;
-				var __tmp__X1;
-				var __tmp__Y1;
-				var __tmp__Z1;
-				__tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
-				__tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
-				__tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
-				md.invMAng2X = __tmp__X1;
-				md.invMAng2Y = __tmp__Y1;
-				md.invMAng2Z = __tmp__Z1;
-			} else {
-				md.invMAng1X = 0;
-				md.invMAng1Y = 0;
-				md.invMAng1Z = 0;
-				md.invMAng2X = 0;
-				md.invMAng2Y = 0;
-				md.invMAng2Z = 0;
-			}
-			md.massWithoutCfm = md.invMLin1X * j.lin1X + md.invMLin1Y * j.lin1Y + md.invMLin1Z * j.lin1Z + (md.invMLin2X * j.lin2X + md.invMLin2Y * j.lin2Y + md.invMLin2Z * j.lin2Z) + (md.invMAng1X * j.ang1X + md.invMAng1Y * j.ang1Y + md.invMAng1Z * j.ang1Z) + (md.invMAng2X * j.ang2X + md.invMAng2Y * j.ang2Y + md.invMAng2Z * j.ang2Z);
-			md.mass = md.massWithoutCfm + row.cfm;
-			if(md.massWithoutCfm != 0) {
-				md.massWithoutCfm = 1 / md.massWithoutCfm;
-			}
-			if(md.mass != 0) {
-				md.mass = 1 / md.mass;
-			}
-		}
-	}
-	warmStart(timeStep) {
-		var factor = this.joint._positionCorrectionAlgorithm == oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE ? oimo.common.Setting.jointWarmStartingFactorForBaungarte : oimo.common.Setting.jointWarmStartingFactor;
-		factor *= timeStep.dtRatio;
-		if(factor <= 0) {
-			var _g = 0;
-			var _g1 = this.info.numRows;
-			while(_g < _g1) {
-				var i = _g++;
-				var row = this.info.rows[i];
-				var _this = row.impulse;
-				_this.impulse = 0;
-				_this.impulseM = 0;
-				_this.impulseP = 0;
-			}
-			return;
-		}
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = this._b1._velX;
-		lv1Y = this._b1._velY;
-		lv1Z = this._b1._velZ;
-		lv2X = this._b2._velX;
-		lv2Y = this._b2._velY;
-		lv2Z = this._b2._velZ;
-		av1X = this._b1._angVelX;
-		av1Y = this._b1._angVelY;
-		av1Z = this._b1._angVelZ;
-		av2X = this._b2._angVelX;
-		av2Y = this._b2._angVelY;
-		av2Z = this._b2._angVelZ;
-		var _g2 = 0;
-		var _g11 = this.info.numRows;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			var row1 = this.info.rows[i1];
-			var md = this.massData[i1];
-			var imp = row1.impulse;
-			var j = row1.jacobian;
-			imp.impulse *= factor;
-			imp.impulseM *= factor;
-			var impulse = imp.impulse + imp.impulseM;
-			lv1X += md.invMLin1X * impulse;
-			lv1Y += md.invMLin1Y * impulse;
-			lv1Z += md.invMLin1Z * impulse;
-			lv2X += md.invMLin2X * -impulse;
-			lv2Y += md.invMLin2Y * -impulse;
-			lv2Z += md.invMLin2Z * -impulse;
-			av1X += md.invMAng1X * impulse;
-			av1Y += md.invMAng1Y * impulse;
-			av1Z += md.invMAng1Z * impulse;
-			av2X += md.invMAng2X * -impulse;
-			av2Y += md.invMAng2Y * -impulse;
-			av2Z += md.invMAng2Z * -impulse;
-		}
-		this._b1._velX = lv1X;
-		this._b1._velY = lv1Y;
-		this._b1._velZ = lv1Z;
-		this._b2._velX = lv2X;
-		this._b2._velY = lv2Y;
-		this._b2._velZ = lv2Z;
-		this._b1._angVelX = av1X;
-		this._b1._angVelY = av1Y;
-		this._b1._angVelZ = av1Z;
-		this._b2._angVelX = av2X;
-		this._b2._angVelY = av2Y;
-		this._b2._angVelZ = av2Z;
-	}
-	solveVelocity() {
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = this._b1._velX;
-		lv1Y = this._b1._velY;
-		lv1Z = this._b1._velZ;
-		lv2X = this._b2._velX;
-		lv2Y = this._b2._velY;
-		lv2Z = this._b2._velZ;
-		av1X = this._b1._angVelX;
-		av1Y = this._b1._angVelY;
-		av1Z = this._b1._angVelZ;
-		av2X = this._b2._angVelX;
-		av2Y = this._b2._angVelY;
-		av2Z = this._b2._angVelZ;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var imp = row.impulse;
-			var j = row.jacobian;
-			if(row.motorMaxImpulse == 0) {
-				continue;
-			}
-			var rv = 0;
-			rv += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
-			rv -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
-			rv += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
-			rv -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
-			var impulseM = (-row.motorSpeed - rv) * md.massWithoutCfm;
-			var oldImpulseM = imp.impulseM;
-			imp.impulseM += impulseM;
-			if(imp.impulseM < -row.motorMaxImpulse) {
-				imp.impulseM = -row.motorMaxImpulse;
-			} else if(imp.impulseM > row.motorMaxImpulse) {
-				imp.impulseM = row.motorMaxImpulse;
-			}
-			impulseM = imp.impulseM - oldImpulseM;
-			if((j.flag & 1) != 0) {
-				lv1X += md.invMLin1X * impulseM;
-				lv1Y += md.invMLin1Y * impulseM;
-				lv1Z += md.invMLin1Z * impulseM;
-				lv2X += md.invMLin2X * -impulseM;
-				lv2Y += md.invMLin2Y * -impulseM;
-				lv2Z += md.invMLin2Z * -impulseM;
-			}
-			if((j.flag & 2) != 0) {
-				av1X += md.invMAng1X * impulseM;
-				av1Y += md.invMAng1Y * impulseM;
-				av1Z += md.invMAng1Z * impulseM;
-				av2X += md.invMAng2X * -impulseM;
-				av2Y += md.invMAng2Y * -impulseM;
-				av2Z += md.invMAng2Z * -impulseM;
-			}
-		}
-		var _g2 = 0;
-		var _g3 = this.info.numRows;
-		while(_g2 < _g3) {
-			var i1 = _g2++;
-			var row1 = this.info.rows[i1];
-			var md1 = this.massData[i1];
-			var imp1 = row1.impulse;
-			var j1 = row1.jacobian;
-			var rv1 = 0;
-			rv1 += lv1X * j1.lin1X + lv1Y * j1.lin1Y + lv1Z * j1.lin1Z;
-			rv1 -= lv2X * j1.lin2X + lv2Y * j1.lin2Y + lv2Z * j1.lin2Z;
-			rv1 += av1X * j1.ang1X + av1Y * j1.ang1Y + av1Z * j1.ang1Z;
-			rv1 -= av2X * j1.ang2X + av2Y * j1.ang2Y + av2Z * j1.ang2Z;
-			var impulse = (row1.rhs - rv1 - imp1.impulse * row1.cfm) * md1.mass;
-			var oldImpulse = imp1.impulse;
-			imp1.impulse += impulse;
-			if(imp1.impulse < row1.minImpulse) {
-				imp1.impulse = row1.minImpulse;
-			} else if(imp1.impulse > row1.maxImpulse) {
-				imp1.impulse = row1.maxImpulse;
-			}
-			impulse = imp1.impulse - oldImpulse;
-			if((j1.flag & 1) != 0) {
-				lv1X += md1.invMLin1X * impulse;
-				lv1Y += md1.invMLin1Y * impulse;
-				lv1Z += md1.invMLin1Z * impulse;
-				lv2X += md1.invMLin2X * -impulse;
-				lv2Y += md1.invMLin2Y * -impulse;
-				lv2Z += md1.invMLin2Z * -impulse;
-			}
-			if((j1.flag & 2) != 0) {
-				av1X += md1.invMAng1X * impulse;
-				av1Y += md1.invMAng1Y * impulse;
-				av1Z += md1.invMAng1Z * impulse;
-				av2X += md1.invMAng2X * -impulse;
-				av2Y += md1.invMAng2Y * -impulse;
-				av2Z += md1.invMAng2Z * -impulse;
-			}
-		}
-		this._b1._velX = lv1X;
-		this._b1._velY = lv1Y;
-		this._b1._velZ = lv1Z;
-		this._b2._velX = lv2X;
-		this._b2._velY = lv2Y;
-		this._b2._velZ = lv2Z;
-		this._b1._angVelX = av1X;
-		this._b1._angVelY = av1Y;
-		this._b1._angVelZ = av1Z;
-		this._b2._angVelX = av2X;
-		this._b2._angVelY = av2Y;
-		this._b2._angVelZ = av2Z;
-	}
-	postSolveVelocity(timeStep) {
-		var lin;
-		var linX;
-		var linY;
-		var linZ;
-		var ang;
-		var angX;
-		var angY;
-		var angZ;
-		linX = 0;
-		linY = 0;
-		linZ = 0;
-		angX = 0;
-		angY = 0;
-		angZ = 0;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var imp = row.impulse;
-			var j = row.jacobian;
-			if((j.flag & 1) != 0) {
-				linX += j.lin1X * imp.impulse;
-				linY += j.lin1Y * imp.impulse;
-				linZ += j.lin1Z * imp.impulse;
-			} else if((j.flag & 2) != 0) {
-				angX += j.ang1X * imp.impulse;
-				angY += j.ang1Y * imp.impulse;
-				angZ += j.ang1Z * imp.impulse;
-			}
-		}
-		this.joint._appliedForceX = linX * timeStep.invDt;
-		this.joint._appliedForceY = linY * timeStep.invDt;
-		this.joint._appliedForceZ = linZ * timeStep.invDt;
-		this.joint._appliedTorqueX = angX * timeStep.invDt;
-		this.joint._appliedTorqueY = angY * timeStep.invDt;
-		this.joint._appliedTorqueZ = angZ * timeStep.invDt;
-	}
-	preSolvePosition(timeStep) {
-		this.joint._syncAnchors();
-		this.joint._getPositionSolverInfo(this.info);
-		this._b1 = this.info.b1;
-		this._b2 = this.info.b2;
-		var invM1 = this._b1._invMass;
-		var invM2 = this._b2._invMass;
-		var invI1;
-		var invI100;
-		var invI101;
-		var invI102;
-		var invI110;
-		var invI111;
-		var invI112;
-		var invI120;
-		var invI121;
-		var invI122;
-		var invI2;
-		var invI200;
-		var invI201;
-		var invI202;
-		var invI210;
-		var invI211;
-		var invI212;
-		var invI220;
-		var invI221;
-		var invI222;
-		invI100 = this._b1._invInertia00;
-		invI101 = this._b1._invInertia01;
-		invI102 = this._b1._invInertia02;
-		invI110 = this._b1._invInertia10;
-		invI111 = this._b1._invInertia11;
-		invI112 = this._b1._invInertia12;
-		invI120 = this._b1._invInertia20;
-		invI121 = this._b1._invInertia21;
-		invI122 = this._b1._invInertia22;
-		invI200 = this._b2._invInertia00;
-		invI201 = this._b2._invInertia01;
-		invI202 = this._b2._invInertia02;
-		invI210 = this._b2._invInertia10;
-		invI211 = this._b2._invInertia11;
-		invI212 = this._b2._invInertia12;
-		invI220 = this._b2._invInertia20;
-		invI221 = this._b2._invInertia21;
-		invI222 = this._b2._invInertia22;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var imp = row.impulse;
-			var j = row.jacobian;
-			md.invMLin1X = j.lin1X * invM1;
-			md.invMLin1Y = j.lin1Y * invM1;
-			md.invMLin1Z = j.lin1Z * invM1;
-			md.invMLin2X = j.lin2X * invM2;
-			md.invMLin2Y = j.lin2Y * invM2;
-			md.invMLin2Z = j.lin2Z * invM2;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
-			__tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
-			__tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
-			md.invMAng1X = __tmp__X;
-			md.invMAng1Y = __tmp__Y;
-			md.invMAng1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
-			__tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
-			__tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
-			md.invMAng2X = __tmp__X1;
-			md.invMAng2Y = __tmp__Y1;
-			md.invMAng2Z = __tmp__Z1;
-			md.mass = md.invMLin1X * j.lin1X + md.invMLin1Y * j.lin1Y + md.invMLin1Z * j.lin1Z + (md.invMLin2X * j.lin2X + md.invMLin2Y * j.lin2Y + md.invMLin2Z * j.lin2Z) + (md.invMAng1X * j.ang1X + md.invMAng1Y * j.ang1Y + md.invMAng1Z * j.ang1Z) + (md.invMAng2X * j.ang2X + md.invMAng2Y * j.ang2Y + md.invMAng2Z * j.ang2Z);
-			if(md.mass != 0) {
-				md.mass = 1 / md.mass;
-			}
-		}
-		var _g2 = 0;
-		var _g11 = this.info.numRows;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			this.info.rows[i1].impulse.impulseP = 0;
-		}
-	}
-	solvePositionSplitImpulse() {
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = this._b1._pseudoVelX;
-		lv1Y = this._b1._pseudoVelY;
-		lv1Z = this._b1._pseudoVelZ;
-		lv2X = this._b2._pseudoVelX;
-		lv2Y = this._b2._pseudoVelY;
-		lv2Z = this._b2._pseudoVelZ;
-		av1X = this._b1._angPseudoVelX;
-		av1Y = this._b1._angPseudoVelY;
-		av1Z = this._b1._angPseudoVelZ;
-		av2X = this._b2._angPseudoVelX;
-		av2Y = this._b2._angPseudoVelY;
-		av2Z = this._b2._angPseudoVelZ;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var imp = row.impulse;
-			var j = row.jacobian;
-			var rv = 0;
-			rv += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
-			rv -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
-			rv += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
-			rv -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
-			var impulseP = (row.rhs * oimo.common.Setting.positionSplitImpulseBaumgarte - rv) * md.mass;
-			var oldImpulseP = imp.impulseP;
-			imp.impulseP += impulseP;
-			if(imp.impulseP < row.minImpulse) {
-				imp.impulseP = row.minImpulse;
-			} else if(imp.impulseP > row.maxImpulse) {
-				imp.impulseP = row.maxImpulse;
-			}
-			impulseP = imp.impulseP - oldImpulseP;
-			lv1X += md.invMLin1X * impulseP;
-			lv1Y += md.invMLin1Y * impulseP;
-			lv1Z += md.invMLin1Z * impulseP;
-			lv2X += md.invMLin2X * -impulseP;
-			lv2Y += md.invMLin2Y * -impulseP;
-			lv2Z += md.invMLin2Z * -impulseP;
-			av1X += md.invMAng1X * impulseP;
-			av1Y += md.invMAng1Y * impulseP;
-			av1Z += md.invMAng1Z * impulseP;
-			av2X += md.invMAng2X * -impulseP;
-			av2Y += md.invMAng2Y * -impulseP;
-			av2Z += md.invMAng2Z * -impulseP;
-		}
-		this._b1._pseudoVelX = lv1X;
-		this._b1._pseudoVelY = lv1Y;
-		this._b1._pseudoVelZ = lv1Z;
-		this._b2._pseudoVelX = lv2X;
-		this._b2._pseudoVelY = lv2Y;
-		this._b2._pseudoVelZ = lv2Z;
-		this._b1._angPseudoVelX = av1X;
-		this._b1._angPseudoVelY = av1Y;
-		this._b1._angPseudoVelZ = av1Z;
-		this._b2._angPseudoVelX = av2X;
-		this._b2._angPseudoVelY = av2Y;
-		this._b2._angPseudoVelZ = av2Z;
-	}
-	solvePositionNgs(timeStep) {
-		this.joint._syncAnchors();
-		this.joint._getPositionSolverInfo(this.info);
-		this._b1 = this.info.b1;
-		this._b2 = this.info.b2;
-		var invM1 = this._b1._invMass;
-		var invM2 = this._b2._invMass;
-		var invI1;
-		var invI100;
-		var invI101;
-		var invI102;
-		var invI110;
-		var invI111;
-		var invI112;
-		var invI120;
-		var invI121;
-		var invI122;
-		var invI2;
-		var invI200;
-		var invI201;
-		var invI202;
-		var invI210;
-		var invI211;
-		var invI212;
-		var invI220;
-		var invI221;
-		var invI222;
-		invI100 = this._b1._invInertia00;
-		invI101 = this._b1._invInertia01;
-		invI102 = this._b1._invInertia02;
-		invI110 = this._b1._invInertia10;
-		invI111 = this._b1._invInertia11;
-		invI112 = this._b1._invInertia12;
-		invI120 = this._b1._invInertia20;
-		invI121 = this._b1._invInertia21;
-		invI122 = this._b1._invInertia22;
-		invI200 = this._b2._invInertia00;
-		invI201 = this._b2._invInertia01;
-		invI202 = this._b2._invInertia02;
-		invI210 = this._b2._invInertia10;
-		invI211 = this._b2._invInertia11;
-		invI212 = this._b2._invInertia12;
-		invI220 = this._b2._invInertia20;
-		invI221 = this._b2._invInertia21;
-		invI222 = this._b2._invInertia22;
-		var _g = 0;
-		var _g1 = this.info.numRows;
-		while(_g < _g1) {
-			var i = _g++;
-			var row = this.info.rows[i];
-			var md = this.massData[i];
-			var imp = row.impulse;
-			var j = row.jacobian;
-			md.invMLin1X = j.lin1X * invM1;
-			md.invMLin1Y = j.lin1Y * invM1;
-			md.invMLin1Z = j.lin1Z * invM1;
-			md.invMLin2X = j.lin2X * invM2;
-			md.invMLin2Y = j.lin2Y * invM2;
-			md.invMLin2Z = j.lin2Z * invM2;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
-			__tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
-			__tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
-			md.invMAng1X = __tmp__X;
-			md.invMAng1Y = __tmp__Y;
-			md.invMAng1Z = __tmp__Z;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
-			__tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
-			__tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
-			md.invMAng2X = __tmp__X1;
-			md.invMAng2Y = __tmp__Y1;
-			md.invMAng2Z = __tmp__Z1;
-			md.mass = md.invMLin1X * j.lin1X + md.invMLin1Y * j.lin1Y + md.invMLin1Z * j.lin1Z + (md.invMLin2X * j.lin2X + md.invMLin2Y * j.lin2Y + md.invMLin2Z * j.lin2Z) + (md.invMAng1X * j.ang1X + md.invMAng1Y * j.ang1Y + md.invMAng1Z * j.ang1Z) + (md.invMAng2X * j.ang2X + md.invMAng2Y * j.ang2Y + md.invMAng2Z * j.ang2Z);
-			if(md.mass != 0) {
-				md.mass = 1 / md.mass;
-			}
-		}
-		var lv1;
-		var lv1X;
-		var lv1Y;
-		var lv1Z;
-		var lv2;
-		var lv2X;
-		var lv2Y;
-		var lv2Z;
-		var av1;
-		var av1X;
-		var av1Y;
-		var av1Z;
-		var av2;
-		var av2X;
-		var av2Y;
-		var av2Z;
-		lv1X = 0;
-		lv1Y = 0;
-		lv1Z = 0;
-		lv2X = 0;
-		lv2Y = 0;
-		lv2Z = 0;
-		av1X = 0;
-		av1Y = 0;
-		av1Z = 0;
-		av2X = 0;
-		av2Y = 0;
-		av2Z = 0;
-		var _g2 = 0;
-		var _g11 = this.info.numRows;
-		while(_g2 < _g11) {
-			var i1 = _g2++;
-			var row1 = this.info.rows[i1];
-			var md1 = this.massData[i1];
-			var imp1 = row1.impulse;
-			var j1 = row1.jacobian;
-			var rv = 0;
-			rv += lv1X * j1.lin1X + lv1Y * j1.lin1Y + lv1Z * j1.lin1Z;
-			rv -= lv2X * j1.lin2X + lv2Y * j1.lin2Y + lv2Z * j1.lin2Z;
-			rv += av1X * j1.ang1X + av1Y * j1.ang1Y + av1Z * j1.ang1Z;
-			rv -= av2X * j1.ang2X + av2Y * j1.ang2Y + av2Z * j1.ang2Z;
-			var impulseP = (row1.rhs * oimo.common.Setting.positionNgsBaumgarte - rv) * md1.mass;
-			var oldImpulseP = imp1.impulseP;
-			imp1.impulseP += impulseP;
-			if(imp1.impulseP < row1.minImpulse) {
-				imp1.impulseP = row1.minImpulse;
-			} else if(imp1.impulseP > row1.maxImpulse) {
-				imp1.impulseP = row1.maxImpulse;
-			}
-			impulseP = imp1.impulseP - oldImpulseP;
-			lv1X += md1.invMLin1X * impulseP;
-			lv1Y += md1.invMLin1Y * impulseP;
-			lv1Z += md1.invMLin1Z * impulseP;
-			lv2X += md1.invMLin2X * -impulseP;
-			lv2Y += md1.invMLin2Y * -impulseP;
-			lv2Z += md1.invMLin2Z * -impulseP;
-			av1X += md1.invMAng1X * impulseP;
-			av1Y += md1.invMAng1Y * impulseP;
-			av1Z += md1.invMAng1Z * impulseP;
-			av2X += md1.invMAng2X * -impulseP;
-			av2Y += md1.invMAng2Y * -impulseP;
-			av2Z += md1.invMAng2Z * -impulseP;
-		}
-		var _this = this._b1;
-		_this._transform._positionX += lv1X;
-		_this._transform._positionY += lv1Y;
-		_this._transform._positionZ += lv1Z;
-		var _this1 = this._b2;
-		_this1._transform._positionX += lv2X;
-		_this1._transform._positionY += lv2Y;
-		_this1._transform._positionZ += lv2Z;
-		var _this2 = this._b1;
-		var theta = Math.sqrt(av1X * av1X + av1Y * av1Y + av1Z * av1Z);
-		var halfTheta = theta * 0.5;
-		var rotationToSinAxisFactor;
-		var cosHalfTheta;
-		if(halfTheta < 0.5) {
-			var ht2 = halfTheta * halfTheta;
-			rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
-			cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
-		} else {
-			rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
-			cosHalfTheta = Math.cos(halfTheta);
-		}
-		var sinAxis;
-		var sinAxisX;
-		var sinAxisY;
-		var sinAxisZ;
-		sinAxisX = av1X * rotationToSinAxisFactor;
-		sinAxisY = av1Y * rotationToSinAxisFactor;
-		sinAxisZ = av1Z * rotationToSinAxisFactor;
-		var dq;
-		var dqX;
-		var dqY;
-		var dqZ;
-		var dqW;
-		dqX = sinAxisX;
-		dqY = sinAxisY;
-		dqZ = sinAxisZ;
-		dqW = cosHalfTheta;
-		var q;
-		var qX;
-		var qY;
-		var qZ;
-		var qW;
-		var e00 = _this2._transform._rotation00;
-		var e11 = _this2._transform._rotation11;
-		var e22 = _this2._transform._rotation22;
-		var t = e00 + e11 + e22;
-		var s;
-		if(t > 0) {
-			s = Math.sqrt(t + 1);
-			qW = 0.5 * s;
-			s = 0.5 / s;
-			qX = (_this2._transform._rotation21 - _this2._transform._rotation12) * s;
-			qY = (_this2._transform._rotation02 - _this2._transform._rotation20) * s;
-			qZ = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
-		} else if(e00 > e11) {
-			if(e00 > e22) {
-				s = Math.sqrt(e00 - e11 - e22 + 1);
-				qX = 0.5 * s;
-				s = 0.5 / s;
-				qY = (_this2._transform._rotation01 + _this2._transform._rotation10) * s;
-				qZ = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
-				qW = (_this2._transform._rotation21 - _this2._transform._rotation12) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				qZ = 0.5 * s;
-				s = 0.5 / s;
-				qX = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
-				qY = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
-				qW = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
-			}
-		} else if(e11 > e22) {
-			s = Math.sqrt(e11 - e22 - e00 + 1);
-			qY = 0.5 * s;
-			s = 0.5 / s;
-			qX = (_this2._transform._rotation01 + _this2._transform._rotation10) * s;
-			qZ = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
-			qW = (_this2._transform._rotation02 - _this2._transform._rotation20) * s;
-		} else {
-			s = Math.sqrt(e22 - e00 - e11 + 1);
-			qZ = 0.5 * s;
-			s = 0.5 / s;
-			qX = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
-			qY = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
-			qW = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
-		}
-		qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
-		qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
-		qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
-		qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
-		var l = qX * qX + qY * qY + qZ * qZ + qW * qW;
-		if(l > 1e-32) {
-			l = 1 / Math.sqrt(l);
-		}
-		qX *= l;
-		qY *= l;
-		qZ *= l;
-		qW *= l;
-		var x = qX;
-		var y = qY;
-		var z = qZ;
-		var w = qW;
-		var x2 = 2 * x;
-		var y2 = 2 * y;
-		var z2 = 2 * z;
-		var xx = x * x2;
-		var yy = y * y2;
-		var zz = z * z2;
-		var xy = x * y2;
-		var yz = y * z2;
-		var xz = x * z2;
-		var wx = w * x2;
-		var wy = w * y2;
-		var wz = w * z2;
-		_this2._transform._rotation00 = 1 - yy - zz;
-		_this2._transform._rotation01 = xy - wz;
-		_this2._transform._rotation02 = xz + wy;
-		_this2._transform._rotation10 = xy + wz;
-		_this2._transform._rotation11 = 1 - xx - zz;
-		_this2._transform._rotation12 = yz - wx;
-		_this2._transform._rotation20 = xz - wy;
-		_this2._transform._rotation21 = yz + wx;
-		_this2._transform._rotation22 = 1 - xx - yy;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = _this2._transform._rotation00 * _this2._invLocalInertia00 + _this2._transform._rotation01 * _this2._invLocalInertia10 + _this2._transform._rotation02 * _this2._invLocalInertia20;
-		__tmp__01 = _this2._transform._rotation00 * _this2._invLocalInertia01 + _this2._transform._rotation01 * _this2._invLocalInertia11 + _this2._transform._rotation02 * _this2._invLocalInertia21;
-		__tmp__02 = _this2._transform._rotation00 * _this2._invLocalInertia02 + _this2._transform._rotation01 * _this2._invLocalInertia12 + _this2._transform._rotation02 * _this2._invLocalInertia22;
-		__tmp__10 = _this2._transform._rotation10 * _this2._invLocalInertia00 + _this2._transform._rotation11 * _this2._invLocalInertia10 + _this2._transform._rotation12 * _this2._invLocalInertia20;
-		__tmp__11 = _this2._transform._rotation10 * _this2._invLocalInertia01 + _this2._transform._rotation11 * _this2._invLocalInertia11 + _this2._transform._rotation12 * _this2._invLocalInertia21;
-		__tmp__12 = _this2._transform._rotation10 * _this2._invLocalInertia02 + _this2._transform._rotation11 * _this2._invLocalInertia12 + _this2._transform._rotation12 * _this2._invLocalInertia22;
-		__tmp__20 = _this2._transform._rotation20 * _this2._invLocalInertia00 + _this2._transform._rotation21 * _this2._invLocalInertia10 + _this2._transform._rotation22 * _this2._invLocalInertia20;
-		__tmp__21 = _this2._transform._rotation20 * _this2._invLocalInertia01 + _this2._transform._rotation21 * _this2._invLocalInertia11 + _this2._transform._rotation22 * _this2._invLocalInertia21;
-		__tmp__22 = _this2._transform._rotation20 * _this2._invLocalInertia02 + _this2._transform._rotation21 * _this2._invLocalInertia12 + _this2._transform._rotation22 * _this2._invLocalInertia22;
-		_this2._invInertia00 = __tmp__00;
-		_this2._invInertia01 = __tmp__01;
-		_this2._invInertia02 = __tmp__02;
-		_this2._invInertia10 = __tmp__10;
-		_this2._invInertia11 = __tmp__11;
-		_this2._invInertia12 = __tmp__12;
-		_this2._invInertia20 = __tmp__20;
-		_this2._invInertia21 = __tmp__21;
-		_this2._invInertia22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = _this2._invInertia00 * _this2._transform._rotation00 + _this2._invInertia01 * _this2._transform._rotation01 + _this2._invInertia02 * _this2._transform._rotation02;
-		__tmp__011 = _this2._invInertia00 * _this2._transform._rotation10 + _this2._invInertia01 * _this2._transform._rotation11 + _this2._invInertia02 * _this2._transform._rotation12;
-		__tmp__021 = _this2._invInertia00 * _this2._transform._rotation20 + _this2._invInertia01 * _this2._transform._rotation21 + _this2._invInertia02 * _this2._transform._rotation22;
-		__tmp__101 = _this2._invInertia10 * _this2._transform._rotation00 + _this2._invInertia11 * _this2._transform._rotation01 + _this2._invInertia12 * _this2._transform._rotation02;
-		__tmp__111 = _this2._invInertia10 * _this2._transform._rotation10 + _this2._invInertia11 * _this2._transform._rotation11 + _this2._invInertia12 * _this2._transform._rotation12;
-		__tmp__121 = _this2._invInertia10 * _this2._transform._rotation20 + _this2._invInertia11 * _this2._transform._rotation21 + _this2._invInertia12 * _this2._transform._rotation22;
-		__tmp__201 = _this2._invInertia20 * _this2._transform._rotation00 + _this2._invInertia21 * _this2._transform._rotation01 + _this2._invInertia22 * _this2._transform._rotation02;
-		__tmp__211 = _this2._invInertia20 * _this2._transform._rotation10 + _this2._invInertia21 * _this2._transform._rotation11 + _this2._invInertia22 * _this2._transform._rotation12;
-		__tmp__221 = _this2._invInertia20 * _this2._transform._rotation20 + _this2._invInertia21 * _this2._transform._rotation21 + _this2._invInertia22 * _this2._transform._rotation22;
-		_this2._invInertia00 = __tmp__001;
-		_this2._invInertia01 = __tmp__011;
-		_this2._invInertia02 = __tmp__021;
-		_this2._invInertia10 = __tmp__101;
-		_this2._invInertia11 = __tmp__111;
-		_this2._invInertia12 = __tmp__121;
-		_this2._invInertia20 = __tmp__201;
-		_this2._invInertia21 = __tmp__211;
-		_this2._invInertia22 = __tmp__221;
-		_this2._invInertia00 *= _this2._rotFactor.x;
-		_this2._invInertia01 *= _this2._rotFactor.x;
-		_this2._invInertia02 *= _this2._rotFactor.x;
-		_this2._invInertia10 *= _this2._rotFactor.y;
-		_this2._invInertia11 *= _this2._rotFactor.y;
-		_this2._invInertia12 *= _this2._rotFactor.y;
-		_this2._invInertia20 *= _this2._rotFactor.z;
-		_this2._invInertia21 *= _this2._rotFactor.z;
-		_this2._invInertia22 *= _this2._rotFactor.z;
-		var _this3 = this._b2;
-		var theta1 = Math.sqrt(av2X * av2X + av2Y * av2Y + av2Z * av2Z);
-		var halfTheta1 = theta1 * 0.5;
-		var rotationToSinAxisFactor1;
-		var cosHalfTheta1;
-		if(halfTheta1 < 0.5) {
-			var ht21 = halfTheta1 * halfTheta1;
-			rotationToSinAxisFactor1 = 0.5 * (1 - ht21 * 0.166666666666666657 + ht21 * ht21 * 0.00833333333333333322);
-			cosHalfTheta1 = 1 - ht21 * 0.5 + ht21 * ht21 * 0.0416666666666666644;
-		} else {
-			rotationToSinAxisFactor1 = Math.sin(halfTheta1) / theta1;
-			cosHalfTheta1 = Math.cos(halfTheta1);
-		}
-		var sinAxis1;
-		var sinAxisX1;
-		var sinAxisY1;
-		var sinAxisZ1;
-		sinAxisX1 = av2X * rotationToSinAxisFactor1;
-		sinAxisY1 = av2Y * rotationToSinAxisFactor1;
-		sinAxisZ1 = av2Z * rotationToSinAxisFactor1;
-		var dq1;
-		var dqX1;
-		var dqY1;
-		var dqZ1;
-		var dqW1;
-		dqX1 = sinAxisX1;
-		dqY1 = sinAxisY1;
-		dqZ1 = sinAxisZ1;
-		dqW1 = cosHalfTheta1;
-		var q1;
-		var qX1;
-		var qY1;
-		var qZ1;
-		var qW1;
-		var e001 = _this3._transform._rotation00;
-		var e111 = _this3._transform._rotation11;
-		var e221 = _this3._transform._rotation22;
-		var t1 = e001 + e111 + e221;
-		var s1;
-		if(t1 > 0) {
-			s1 = Math.sqrt(t1 + 1);
-			qW1 = 0.5 * s1;
-			s1 = 0.5 / s1;
-			qX1 = (_this3._transform._rotation21 - _this3._transform._rotation12) * s1;
-			qY1 = (_this3._transform._rotation02 - _this3._transform._rotation20) * s1;
-			qZ1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
-		} else if(e001 > e111) {
-			if(e001 > e221) {
-				s1 = Math.sqrt(e001 - e111 - e221 + 1);
-				qX1 = 0.5 * s1;
-				s1 = 0.5 / s1;
-				qY1 = (_this3._transform._rotation01 + _this3._transform._rotation10) * s1;
-				qZ1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
-				qW1 = (_this3._transform._rotation21 - _this3._transform._rotation12) * s1;
-			} else {
-				s1 = Math.sqrt(e221 - e001 - e111 + 1);
-				qZ1 = 0.5 * s1;
-				s1 = 0.5 / s1;
-				qX1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
-				qY1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
-				qW1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
-			}
-		} else if(e111 > e221) {
-			s1 = Math.sqrt(e111 - e221 - e001 + 1);
-			qY1 = 0.5 * s1;
-			s1 = 0.5 / s1;
-			qX1 = (_this3._transform._rotation01 + _this3._transform._rotation10) * s1;
-			qZ1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
-			qW1 = (_this3._transform._rotation02 - _this3._transform._rotation20) * s1;
-		} else {
-			s1 = Math.sqrt(e221 - e001 - e111 + 1);
-			qZ1 = 0.5 * s1;
-			s1 = 0.5 / s1;
-			qX1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
-			qY1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
-			qW1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
-		}
-		qX1 = dqW1 * qX1 + dqX1 * qW1 + dqY1 * qZ1 - dqZ1 * qY1;
-		qY1 = dqW1 * qY1 - dqX1 * qZ1 + dqY1 * qW1 + dqZ1 * qX1;
-		qZ1 = dqW1 * qZ1 + dqX1 * qY1 - dqY1 * qX1 + dqZ1 * qW1;
-		qW1 = dqW1 * qW1 - dqX1 * qX1 - dqY1 * qY1 - dqZ1 * qZ1;
-		var l1 = qX1 * qX1 + qY1 * qY1 + qZ1 * qZ1 + qW1 * qW1;
-		if(l1 > 1e-32) {
-			l1 = 1 / Math.sqrt(l1);
-		}
-		qX1 *= l1;
-		qY1 *= l1;
-		qZ1 *= l1;
-		qW1 *= l1;
-		var x1 = qX1;
-		var y1 = qY1;
-		var z1 = qZ1;
-		var w1 = qW1;
-		var x21 = 2 * x1;
-		var y21 = 2 * y1;
-		var z21 = 2 * z1;
-		var xx1 = x1 * x21;
-		var yy1 = y1 * y21;
-		var zz1 = z1 * z21;
-		var xy1 = x1 * y21;
-		var yz1 = y1 * z21;
-		var xz1 = x1 * z21;
-		var wx1 = w1 * x21;
-		var wy1 = w1 * y21;
-		var wz1 = w1 * z21;
-		_this3._transform._rotation00 = 1 - yy1 - zz1;
-		_this3._transform._rotation01 = xy1 - wz1;
-		_this3._transform._rotation02 = xz1 + wy1;
-		_this3._transform._rotation10 = xy1 + wz1;
-		_this3._transform._rotation11 = 1 - xx1 - zz1;
-		_this3._transform._rotation12 = yz1 - wx1;
-		_this3._transform._rotation20 = xz1 - wy1;
-		_this3._transform._rotation21 = yz1 + wx1;
-		_this3._transform._rotation22 = 1 - xx1 - yy1;
-		var __tmp__002;
-		var __tmp__012;
-		var __tmp__022;
-		var __tmp__102;
-		var __tmp__112;
-		var __tmp__122;
-		var __tmp__202;
-		var __tmp__212;
-		var __tmp__222;
-		__tmp__002 = _this3._transform._rotation00 * _this3._invLocalInertia00 + _this3._transform._rotation01 * _this3._invLocalInertia10 + _this3._transform._rotation02 * _this3._invLocalInertia20;
-		__tmp__012 = _this3._transform._rotation00 * _this3._invLocalInertia01 + _this3._transform._rotation01 * _this3._invLocalInertia11 + _this3._transform._rotation02 * _this3._invLocalInertia21;
-		__tmp__022 = _this3._transform._rotation00 * _this3._invLocalInertia02 + _this3._transform._rotation01 * _this3._invLocalInertia12 + _this3._transform._rotation02 * _this3._invLocalInertia22;
-		__tmp__102 = _this3._transform._rotation10 * _this3._invLocalInertia00 + _this3._transform._rotation11 * _this3._invLocalInertia10 + _this3._transform._rotation12 * _this3._invLocalInertia20;
-		__tmp__112 = _this3._transform._rotation10 * _this3._invLocalInertia01 + _this3._transform._rotation11 * _this3._invLocalInertia11 + _this3._transform._rotation12 * _this3._invLocalInertia21;
-		__tmp__122 = _this3._transform._rotation10 * _this3._invLocalInertia02 + _this3._transform._rotation11 * _this3._invLocalInertia12 + _this3._transform._rotation12 * _this3._invLocalInertia22;
-		__tmp__202 = _this3._transform._rotation20 * _this3._invLocalInertia00 + _this3._transform._rotation21 * _this3._invLocalInertia10 + _this3._transform._rotation22 * _this3._invLocalInertia20;
-		__tmp__212 = _this3._transform._rotation20 * _this3._invLocalInertia01 + _this3._transform._rotation21 * _this3._invLocalInertia11 + _this3._transform._rotation22 * _this3._invLocalInertia21;
-		__tmp__222 = _this3._transform._rotation20 * _this3._invLocalInertia02 + _this3._transform._rotation21 * _this3._invLocalInertia12 + _this3._transform._rotation22 * _this3._invLocalInertia22;
-		_this3._invInertia00 = __tmp__002;
-		_this3._invInertia01 = __tmp__012;
-		_this3._invInertia02 = __tmp__022;
-		_this3._invInertia10 = __tmp__102;
-		_this3._invInertia11 = __tmp__112;
-		_this3._invInertia12 = __tmp__122;
-		_this3._invInertia20 = __tmp__202;
-		_this3._invInertia21 = __tmp__212;
-		_this3._invInertia22 = __tmp__222;
-		var __tmp__003;
-		var __tmp__013;
-		var __tmp__023;
-		var __tmp__103;
-		var __tmp__113;
-		var __tmp__123;
-		var __tmp__203;
-		var __tmp__213;
-		var __tmp__223;
-		__tmp__003 = _this3._invInertia00 * _this3._transform._rotation00 + _this3._invInertia01 * _this3._transform._rotation01 + _this3._invInertia02 * _this3._transform._rotation02;
-		__tmp__013 = _this3._invInertia00 * _this3._transform._rotation10 + _this3._invInertia01 * _this3._transform._rotation11 + _this3._invInertia02 * _this3._transform._rotation12;
-		__tmp__023 = _this3._invInertia00 * _this3._transform._rotation20 + _this3._invInertia01 * _this3._transform._rotation21 + _this3._invInertia02 * _this3._transform._rotation22;
-		__tmp__103 = _this3._invInertia10 * _this3._transform._rotation00 + _this3._invInertia11 * _this3._transform._rotation01 + _this3._invInertia12 * _this3._transform._rotation02;
-		__tmp__113 = _this3._invInertia10 * _this3._transform._rotation10 + _this3._invInertia11 * _this3._transform._rotation11 + _this3._invInertia12 * _this3._transform._rotation12;
-		__tmp__123 = _this3._invInertia10 * _this3._transform._rotation20 + _this3._invInertia11 * _this3._transform._rotation21 + _this3._invInertia12 * _this3._transform._rotation22;
-		__tmp__203 = _this3._invInertia20 * _this3._transform._rotation00 + _this3._invInertia21 * _this3._transform._rotation01 + _this3._invInertia22 * _this3._transform._rotation02;
-		__tmp__213 = _this3._invInertia20 * _this3._transform._rotation10 + _this3._invInertia21 * _this3._transform._rotation11 + _this3._invInertia22 * _this3._transform._rotation12;
-		__tmp__223 = _this3._invInertia20 * _this3._transform._rotation20 + _this3._invInertia21 * _this3._transform._rotation21 + _this3._invInertia22 * _this3._transform._rotation22;
-		_this3._invInertia00 = __tmp__003;
-		_this3._invInertia01 = __tmp__013;
-		_this3._invInertia02 = __tmp__023;
-		_this3._invInertia10 = __tmp__103;
-		_this3._invInertia11 = __tmp__113;
-		_this3._invInertia12 = __tmp__123;
-		_this3._invInertia20 = __tmp__203;
-		_this3._invInertia21 = __tmp__213;
-		_this3._invInertia22 = __tmp__223;
-		_this3._invInertia00 *= _this3._rotFactor.x;
-		_this3._invInertia01 *= _this3._rotFactor.x;
-		_this3._invInertia02 *= _this3._rotFactor.x;
-		_this3._invInertia10 *= _this3._rotFactor.y;
-		_this3._invInertia11 *= _this3._rotFactor.y;
-		_this3._invInertia12 *= _this3._rotFactor.y;
-		_this3._invInertia20 *= _this3._rotFactor.z;
-		_this3._invInertia21 *= _this3._rotFactor.z;
-		_this3._invInertia22 *= _this3._rotFactor.z;
-	}
-	postSolve() {
-		this.joint._syncAnchors();
-		this.joint._checkDestruction();
-	}
-}
-if(!oimo.dynamics.rigidbody) oimo.dynamics.rigidbody = {};
-oimo.dynamics.rigidbody.MassData = class oimo_dynamics_rigidbody_MassData {
-	constructor() {
-		this.mass = 0;
-		this.localInertia = new oimo.common.Mat3();
-	}
-}
-oimo.dynamics.rigidbody.RigidBody = class oimo_dynamics_rigidbody_RigidBody {
-	constructor(config) {
-		this._next = null;
-		this._prev = null;
-		this._shapeList = null;
-		this._shapeListLast = null;
-		this._numShapes = 0;
-		this._contactLinkList = null;
-		this._contactLinkListLast = null;
-		this._numContactLinks = 0;
-		this._jointLinkList = null;
-		this._jointLinkListLast = null;
-		this._numJointLinks = 0;
-		var v = config.linearVelocity;
-		this._velX = v.x;
-		this._velY = v.y;
-		this._velZ = v.z;
-		var v1 = config.angularVelocity;
-		this._angVelX = v1.x;
-		this._angVelY = v1.y;
-		this._angVelZ = v1.z;
-		this._pseudoVelX = 0;
-		this._pseudoVelY = 0;
-		this._pseudoVelZ = 0;
-		this._angPseudoVelX = 0;
-		this._angPseudoVelY = 0;
-		this._angPseudoVelZ = 0;
-		this._ptransform = new oimo.common.Transform();
-		this._transform = new oimo.common.Transform();
-		var v2 = config.position;
-		this._ptransform._positionX = v2.x;
-		this._ptransform._positionY = v2.y;
-		this._ptransform._positionZ = v2.z;
-		var m = config.rotation;
-		this._ptransform._rotation00 = m.e00;
-		this._ptransform._rotation01 = m.e01;
-		this._ptransform._rotation02 = m.e02;
-		this._ptransform._rotation10 = m.e10;
-		this._ptransform._rotation11 = m.e11;
-		this._ptransform._rotation12 = m.e12;
-		this._ptransform._rotation20 = m.e20;
-		this._ptransform._rotation21 = m.e21;
-		this._ptransform._rotation22 = m.e22;
-		var dst = this._transform;
-		var src = this._ptransform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		this._type = config.type;
-		this._sleepTime = 0;
-		this._sleeping = false;
-		this._autoSleep = config.autoSleep;
-		this._mass = 0;
-		this._invMass = 0;
-		this._localInertia00 = 0;
-		this._localInertia01 = 0;
-		this._localInertia02 = 0;
-		this._localInertia10 = 0;
-		this._localInertia11 = 0;
-		this._localInertia12 = 0;
-		this._localInertia20 = 0;
-		this._localInertia21 = 0;
-		this._localInertia22 = 0;
-		this._invLocalInertia00 = 0;
-		this._invLocalInertia01 = 0;
-		this._invLocalInertia02 = 0;
-		this._invLocalInertia10 = 0;
-		this._invLocalInertia11 = 0;
-		this._invLocalInertia12 = 0;
-		this._invLocalInertia20 = 0;
-		this._invLocalInertia21 = 0;
-		this._invLocalInertia22 = 0;
-		this._invLocalInertiaWithoutRotFactor00 = 0;
-		this._invLocalInertiaWithoutRotFactor01 = 0;
-		this._invLocalInertiaWithoutRotFactor02 = 0;
-		this._invLocalInertiaWithoutRotFactor10 = 0;
-		this._invLocalInertiaWithoutRotFactor11 = 0;
-		this._invLocalInertiaWithoutRotFactor12 = 0;
-		this._invLocalInertiaWithoutRotFactor20 = 0;
-		this._invLocalInertiaWithoutRotFactor21 = 0;
-		this._invLocalInertiaWithoutRotFactor22 = 0;
-		this._invInertia00 = 0;
-		this._invInertia01 = 0;
-		this._invInertia02 = 0;
-		this._invInertia10 = 0;
-		this._invInertia11 = 0;
-		this._invInertia12 = 0;
-		this._invInertia20 = 0;
-		this._invInertia21 = 0;
-		this._invInertia22 = 0;
-		this._linearDamping = config.linearDamping;
-		this._angularDamping = config.angularDamping;
-		this._forceX = 0;
-		this._forceY = 0;
-		this._forceZ = 0;
-		this._torqueX = 0;
-		this._torqueY = 0;
-		this._torqueZ = 0;
-		this._linearContactImpulseX = 0;
-		this._linearContactImpulseY = 0;
-		this._linearContactImpulseZ = 0;
-		this._angularContactImpulseX = 0;
-		this._angularContactImpulseY = 0;
-		this._angularContactImpulseZ = 0;
-		this._rotFactor = new oimo.common.Vec3(1,1,1);
-		this._addedToIsland = false;
-		this._gravityScale = 1;
-		this._world = null;
-	}
-	_integrate(dt) {
-		switch(this._type) {
-		case 1:
-			this._velX = 0;
-			this._velY = 0;
-			this._velZ = 0;
-			this._angVelX = 0;
-			this._angVelY = 0;
-			this._angVelZ = 0;
-			this._pseudoVelX = 0;
-			this._pseudoVelY = 0;
-			this._pseudoVelZ = 0;
-			this._angPseudoVelX = 0;
-			this._angPseudoVelY = 0;
-			this._angPseudoVelZ = 0;
-			break;
-		case 0:case 2:
-			var translation;
-			var translationX;
-			var translationY;
-			var translationZ;
-			var rotation;
-			var rotationX;
-			var rotationY;
-			var rotationZ;
-			translationX = this._velX * dt;
-			translationY = this._velY * dt;
-			translationZ = this._velZ * dt;
-			rotationX = this._angVelX * dt;
-			rotationY = this._angVelY * dt;
-			rotationZ = this._angVelZ * dt;
-			var translationLengthSq = translationX * translationX + translationY * translationY + translationZ * translationZ;
-			var rotationLengthSq = rotationX * rotationX + rotationY * rotationY + rotationZ * rotationZ;
-			if(translationLengthSq == 0 && rotationLengthSq == 0) {
-				return;
-			}
-			if(translationLengthSq > oimo.common.Setting.maxTranslationPerStep * oimo.common.Setting.maxTranslationPerStep) {
-				var l = oimo.common.Setting.maxTranslationPerStep / Math.sqrt(translationLengthSq);
-				this._velX *= l;
-				this._velY *= l;
-				this._velZ *= l;
-				translationX *= l;
-				translationY *= l;
-				translationZ *= l;
-			}
-			if(rotationLengthSq > oimo.common.Setting.maxRotationPerStep * oimo.common.Setting.maxRotationPerStep) {
-				var l1 = oimo.common.Setting.maxRotationPerStep / Math.sqrt(rotationLengthSq);
-				this._angVelX *= l1;
-				this._angVelY *= l1;
-				this._angVelZ *= l1;
-				rotationX *= l1;
-				rotationY *= l1;
-				rotationZ *= l1;
-			}
-			this._transform._positionX += translationX;
-			this._transform._positionY += translationY;
-			this._transform._positionZ += translationZ;
-			var theta = Math.sqrt(rotationX * rotationX + rotationY * rotationY + rotationZ * rotationZ);
-			var halfTheta = theta * 0.5;
-			var rotationToSinAxisFactor;
-			var cosHalfTheta;
-			if(halfTheta < 0.5) {
-				var ht2 = halfTheta * halfTheta;
-				rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
-				cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
-			} else {
-				rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
-				cosHalfTheta = Math.cos(halfTheta);
-			}
-			var sinAxis;
-			var sinAxisX;
-			var sinAxisY;
-			var sinAxisZ;
-			sinAxisX = rotationX * rotationToSinAxisFactor;
-			sinAxisY = rotationY * rotationToSinAxisFactor;
-			sinAxisZ = rotationZ * rotationToSinAxisFactor;
-			var dq;
-			var dqX;
-			var dqY;
-			var dqZ;
-			var dqW;
-			dqX = sinAxisX;
-			dqY = sinAxisY;
-			dqZ = sinAxisZ;
-			dqW = cosHalfTheta;
-			var q;
-			var qX;
-			var qY;
-			var qZ;
-			var qW;
-			var e00 = this._transform._rotation00;
-			var e11 = this._transform._rotation11;
-			var e22 = this._transform._rotation22;
-			var t = e00 + e11 + e22;
-			var s;
-			if(t > 0) {
-				s = Math.sqrt(t + 1);
-				qW = 0.5 * s;
-				s = 0.5 / s;
-				qX = (this._transform._rotation21 - this._transform._rotation12) * s;
-				qY = (this._transform._rotation02 - this._transform._rotation20) * s;
-				qZ = (this._transform._rotation10 - this._transform._rotation01) * s;
-			} else if(e00 > e11) {
-				if(e00 > e22) {
-					s = Math.sqrt(e00 - e11 - e22 + 1);
-					qX = 0.5 * s;
-					s = 0.5 / s;
-					qY = (this._transform._rotation01 + this._transform._rotation10) * s;
-					qZ = (this._transform._rotation02 + this._transform._rotation20) * s;
-					qW = (this._transform._rotation21 - this._transform._rotation12) * s;
-				} else {
-					s = Math.sqrt(e22 - e00 - e11 + 1);
-					qZ = 0.5 * s;
-					s = 0.5 / s;
-					qX = (this._transform._rotation02 + this._transform._rotation20) * s;
-					qY = (this._transform._rotation12 + this._transform._rotation21) * s;
-					qW = (this._transform._rotation10 - this._transform._rotation01) * s;
-				}
-			} else if(e11 > e22) {
-				s = Math.sqrt(e11 - e22 - e00 + 1);
-				qY = 0.5 * s;
-				s = 0.5 / s;
-				qX = (this._transform._rotation01 + this._transform._rotation10) * s;
-				qZ = (this._transform._rotation12 + this._transform._rotation21) * s;
-				qW = (this._transform._rotation02 - this._transform._rotation20) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				qZ = 0.5 * s;
-				s = 0.5 / s;
-				qX = (this._transform._rotation02 + this._transform._rotation20) * s;
-				qY = (this._transform._rotation12 + this._transform._rotation21) * s;
-				qW = (this._transform._rotation10 - this._transform._rotation01) * s;
-			}
-			qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
-			qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
-			qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
-			qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
-			var l2 = qX * qX + qY * qY + qZ * qZ + qW * qW;
-			if(l2 > 1e-32) {
-				l2 = 1 / Math.sqrt(l2);
-			}
-			qX *= l2;
-			qY *= l2;
-			qZ *= l2;
-			qW *= l2;
-			var x = qX;
-			var y = qY;
-			var z = qZ;
-			var w = qW;
-			var x2 = 2 * x;
-			var y2 = 2 * y;
-			var z2 = 2 * z;
-			var xx = x * x2;
-			var yy = y * y2;
-			var zz = z * z2;
-			var xy = x * y2;
-			var yz = y * z2;
-			var xz = x * z2;
-			var wx = w * x2;
-			var wy = w * y2;
-			var wz = w * z2;
-			this._transform._rotation00 = 1 - yy - zz;
-			this._transform._rotation01 = xy - wz;
-			this._transform._rotation02 = xz + wy;
-			this._transform._rotation10 = xy + wz;
-			this._transform._rotation11 = 1 - xx - zz;
-			this._transform._rotation12 = yz - wx;
-			this._transform._rotation20 = xz - wy;
-			this._transform._rotation21 = yz + wx;
-			this._transform._rotation22 = 1 - xx - yy;
-			var __tmp__00;
-			var __tmp__01;
-			var __tmp__02;
-			var __tmp__10;
-			var __tmp__11;
-			var __tmp__12;
-			var __tmp__20;
-			var __tmp__21;
-			var __tmp__22;
-			__tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-			__tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-			__tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-			__tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-			__tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-			__tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-			__tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-			__tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-			__tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-			this._invInertia00 = __tmp__00;
-			this._invInertia01 = __tmp__01;
-			this._invInertia02 = __tmp__02;
-			this._invInertia10 = __tmp__10;
-			this._invInertia11 = __tmp__11;
-			this._invInertia12 = __tmp__12;
-			this._invInertia20 = __tmp__20;
-			this._invInertia21 = __tmp__21;
-			this._invInertia22 = __tmp__22;
-			var __tmp__001;
-			var __tmp__011;
-			var __tmp__021;
-			var __tmp__101;
-			var __tmp__111;
-			var __tmp__121;
-			var __tmp__201;
-			var __tmp__211;
-			var __tmp__221;
-			__tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-			__tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-			__tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-			__tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-			__tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-			__tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-			__tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-			__tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-			__tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-			this._invInertia00 = __tmp__001;
-			this._invInertia01 = __tmp__011;
-			this._invInertia02 = __tmp__021;
-			this._invInertia10 = __tmp__101;
-			this._invInertia11 = __tmp__111;
-			this._invInertia12 = __tmp__121;
-			this._invInertia20 = __tmp__201;
-			this._invInertia21 = __tmp__211;
-			this._invInertia22 = __tmp__221;
-			this._invInertia00 *= this._rotFactor.x;
-			this._invInertia01 *= this._rotFactor.x;
-			this._invInertia02 *= this._rotFactor.x;
-			this._invInertia10 *= this._rotFactor.y;
-			this._invInertia11 *= this._rotFactor.y;
-			this._invInertia12 *= this._rotFactor.y;
-			this._invInertia20 *= this._rotFactor.z;
-			this._invInertia21 *= this._rotFactor.z;
-			this._invInertia22 *= this._rotFactor.z;
-			break;
-		}
-	}
-	_integratePseudoVelocity() {
-		var pseudoVelLengthSq = this._pseudoVelX * this._pseudoVelX + this._pseudoVelY * this._pseudoVelY + this._pseudoVelZ * this._pseudoVelZ;
-		var angPseudoVelLengthSq = this._angPseudoVelX * this._angPseudoVelX + this._angPseudoVelY * this._angPseudoVelY + this._angPseudoVelZ * this._angPseudoVelZ;
-		if(pseudoVelLengthSq == 0 && angPseudoVelLengthSq == 0) {
-			return;
-		}
-		switch(this._type) {
-		case 1:
-			this._pseudoVelX = 0;
-			this._pseudoVelY = 0;
-			this._pseudoVelZ = 0;
-			this._angPseudoVelX = 0;
-			this._angPseudoVelY = 0;
-			this._angPseudoVelZ = 0;
-			break;
-		case 0:case 2:
-			var translation;
-			var translationX;
-			var translationY;
-			var translationZ;
-			var rotation;
-			var rotationX;
-			var rotationY;
-			var rotationZ;
-			translationX = this._pseudoVelX;
-			translationY = this._pseudoVelY;
-			translationZ = this._pseudoVelZ;
-			rotationX = this._angPseudoVelX;
-			rotationY = this._angPseudoVelY;
-			rotationZ = this._angPseudoVelZ;
-			this._pseudoVelX = 0;
-			this._pseudoVelY = 0;
-			this._pseudoVelZ = 0;
-			this._angPseudoVelX = 0;
-			this._angPseudoVelY = 0;
-			this._angPseudoVelZ = 0;
-			this._transform._positionX += translationX;
-			this._transform._positionY += translationY;
-			this._transform._positionZ += translationZ;
-			var theta = Math.sqrt(rotationX * rotationX + rotationY * rotationY + rotationZ * rotationZ);
-			var halfTheta = theta * 0.5;
-			var rotationToSinAxisFactor;
-			var cosHalfTheta;
-			if(halfTheta < 0.5) {
-				var ht2 = halfTheta * halfTheta;
-				rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
-				cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
-			} else {
-				rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
-				cosHalfTheta = Math.cos(halfTheta);
-			}
-			var sinAxis;
-			var sinAxisX;
-			var sinAxisY;
-			var sinAxisZ;
-			sinAxisX = rotationX * rotationToSinAxisFactor;
-			sinAxisY = rotationY * rotationToSinAxisFactor;
-			sinAxisZ = rotationZ * rotationToSinAxisFactor;
-			var dq;
-			var dqX;
-			var dqY;
-			var dqZ;
-			var dqW;
-			dqX = sinAxisX;
-			dqY = sinAxisY;
-			dqZ = sinAxisZ;
-			dqW = cosHalfTheta;
-			var q;
-			var qX;
-			var qY;
-			var qZ;
-			var qW;
-			var e00 = this._transform._rotation00;
-			var e11 = this._transform._rotation11;
-			var e22 = this._transform._rotation22;
-			var t = e00 + e11 + e22;
-			var s;
-			if(t > 0) {
-				s = Math.sqrt(t + 1);
-				qW = 0.5 * s;
-				s = 0.5 / s;
-				qX = (this._transform._rotation21 - this._transform._rotation12) * s;
-				qY = (this._transform._rotation02 - this._transform._rotation20) * s;
-				qZ = (this._transform._rotation10 - this._transform._rotation01) * s;
-			} else if(e00 > e11) {
-				if(e00 > e22) {
-					s = Math.sqrt(e00 - e11 - e22 + 1);
-					qX = 0.5 * s;
-					s = 0.5 / s;
-					qY = (this._transform._rotation01 + this._transform._rotation10) * s;
-					qZ = (this._transform._rotation02 + this._transform._rotation20) * s;
-					qW = (this._transform._rotation21 - this._transform._rotation12) * s;
-				} else {
-					s = Math.sqrt(e22 - e00 - e11 + 1);
-					qZ = 0.5 * s;
-					s = 0.5 / s;
-					qX = (this._transform._rotation02 + this._transform._rotation20) * s;
-					qY = (this._transform._rotation12 + this._transform._rotation21) * s;
-					qW = (this._transform._rotation10 - this._transform._rotation01) * s;
-				}
-			} else if(e11 > e22) {
-				s = Math.sqrt(e11 - e22 - e00 + 1);
-				qY = 0.5 * s;
-				s = 0.5 / s;
-				qX = (this._transform._rotation01 + this._transform._rotation10) * s;
-				qZ = (this._transform._rotation12 + this._transform._rotation21) * s;
-				qW = (this._transform._rotation02 - this._transform._rotation20) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				qZ = 0.5 * s;
-				s = 0.5 / s;
-				qX = (this._transform._rotation02 + this._transform._rotation20) * s;
-				qY = (this._transform._rotation12 + this._transform._rotation21) * s;
-				qW = (this._transform._rotation10 - this._transform._rotation01) * s;
-			}
-			qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
-			qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
-			qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
-			qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
-			var l = qX * qX + qY * qY + qZ * qZ + qW * qW;
-			if(l > 1e-32) {
-				l = 1 / Math.sqrt(l);
-			}
-			qX *= l;
-			qY *= l;
-			qZ *= l;
-			qW *= l;
-			var x = qX;
-			var y = qY;
-			var z = qZ;
-			var w = qW;
-			var x2 = 2 * x;
-			var y2 = 2 * y;
-			var z2 = 2 * z;
-			var xx = x * x2;
-			var yy = y * y2;
-			var zz = z * z2;
-			var xy = x * y2;
-			var yz = y * z2;
-			var xz = x * z2;
-			var wx = w * x2;
-			var wy = w * y2;
-			var wz = w * z2;
-			this._transform._rotation00 = 1 - yy - zz;
-			this._transform._rotation01 = xy - wz;
-			this._transform._rotation02 = xz + wy;
-			this._transform._rotation10 = xy + wz;
-			this._transform._rotation11 = 1 - xx - zz;
-			this._transform._rotation12 = yz - wx;
-			this._transform._rotation20 = xz - wy;
-			this._transform._rotation21 = yz + wx;
-			this._transform._rotation22 = 1 - xx - yy;
-			var __tmp__00;
-			var __tmp__01;
-			var __tmp__02;
-			var __tmp__10;
-			var __tmp__11;
-			var __tmp__12;
-			var __tmp__20;
-			var __tmp__21;
-			var __tmp__22;
-			__tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-			__tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-			__tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-			__tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-			__tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-			__tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-			__tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-			__tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-			__tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-			this._invInertia00 = __tmp__00;
-			this._invInertia01 = __tmp__01;
-			this._invInertia02 = __tmp__02;
-			this._invInertia10 = __tmp__10;
-			this._invInertia11 = __tmp__11;
-			this._invInertia12 = __tmp__12;
-			this._invInertia20 = __tmp__20;
-			this._invInertia21 = __tmp__21;
-			this._invInertia22 = __tmp__22;
-			var __tmp__001;
-			var __tmp__011;
-			var __tmp__021;
-			var __tmp__101;
-			var __tmp__111;
-			var __tmp__121;
-			var __tmp__201;
-			var __tmp__211;
-			var __tmp__221;
-			__tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-			__tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-			__tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-			__tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-			__tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-			__tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-			__tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-			__tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-			__tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-			this._invInertia00 = __tmp__001;
-			this._invInertia01 = __tmp__011;
-			this._invInertia02 = __tmp__021;
-			this._invInertia10 = __tmp__101;
-			this._invInertia11 = __tmp__111;
-			this._invInertia12 = __tmp__121;
-			this._invInertia20 = __tmp__201;
-			this._invInertia21 = __tmp__211;
-			this._invInertia22 = __tmp__221;
-			this._invInertia00 *= this._rotFactor.x;
-			this._invInertia01 *= this._rotFactor.x;
-			this._invInertia02 *= this._rotFactor.x;
-			this._invInertia10 *= this._rotFactor.y;
-			this._invInertia11 *= this._rotFactor.y;
-			this._invInertia12 *= this._rotFactor.y;
-			this._invInertia20 *= this._rotFactor.z;
-			this._invInertia21 *= this._rotFactor.z;
-			this._invInertia22 *= this._rotFactor.z;
-			break;
-		}
-	}
-	updateMass() {
-		var totalInertia;
-		var totalInertia00;
-		var totalInertia01;
-		var totalInertia02;
-		var totalInertia10;
-		var totalInertia11;
-		var totalInertia12;
-		var totalInertia20;
-		var totalInertia21;
-		var totalInertia22;
-		totalInertia00 = 0;
-		totalInertia01 = 0;
-		totalInertia02 = 0;
-		totalInertia10 = 0;
-		totalInertia11 = 0;
-		totalInertia12 = 0;
-		totalInertia20 = 0;
-		totalInertia21 = 0;
-		totalInertia22 = 0;
-		var totalMass = 0;
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var g = s._geom;
-			g._updateMass();
-			var mass = s._density * g._volume;
-			var inertia;
-			var inertia00;
-			var inertia01;
-			var inertia02;
-			var inertia10;
-			var inertia11;
-			var inertia12;
-			var inertia20;
-			var inertia21;
-			var inertia22;
-			var __tmp__00;
-			var __tmp__01;
-			var __tmp__02;
-			var __tmp__10;
-			var __tmp__11;
-			var __tmp__12;
-			var __tmp__20;
-			var __tmp__21;
-			var __tmp__22;
-			__tmp__00 = s._localTransform._rotation00 * g._inertiaCoeff00 + s._localTransform._rotation01 * g._inertiaCoeff10 + s._localTransform._rotation02 * g._inertiaCoeff20;
-			__tmp__01 = s._localTransform._rotation00 * g._inertiaCoeff01 + s._localTransform._rotation01 * g._inertiaCoeff11 + s._localTransform._rotation02 * g._inertiaCoeff21;
-			__tmp__02 = s._localTransform._rotation00 * g._inertiaCoeff02 + s._localTransform._rotation01 * g._inertiaCoeff12 + s._localTransform._rotation02 * g._inertiaCoeff22;
-			__tmp__10 = s._localTransform._rotation10 * g._inertiaCoeff00 + s._localTransform._rotation11 * g._inertiaCoeff10 + s._localTransform._rotation12 * g._inertiaCoeff20;
-			__tmp__11 = s._localTransform._rotation10 * g._inertiaCoeff01 + s._localTransform._rotation11 * g._inertiaCoeff11 + s._localTransform._rotation12 * g._inertiaCoeff21;
-			__tmp__12 = s._localTransform._rotation10 * g._inertiaCoeff02 + s._localTransform._rotation11 * g._inertiaCoeff12 + s._localTransform._rotation12 * g._inertiaCoeff22;
-			__tmp__20 = s._localTransform._rotation20 * g._inertiaCoeff00 + s._localTransform._rotation21 * g._inertiaCoeff10 + s._localTransform._rotation22 * g._inertiaCoeff20;
-			__tmp__21 = s._localTransform._rotation20 * g._inertiaCoeff01 + s._localTransform._rotation21 * g._inertiaCoeff11 + s._localTransform._rotation22 * g._inertiaCoeff21;
-			__tmp__22 = s._localTransform._rotation20 * g._inertiaCoeff02 + s._localTransform._rotation21 * g._inertiaCoeff12 + s._localTransform._rotation22 * g._inertiaCoeff22;
-			inertia00 = __tmp__00;
-			inertia01 = __tmp__01;
-			inertia02 = __tmp__02;
-			inertia10 = __tmp__10;
-			inertia11 = __tmp__11;
-			inertia12 = __tmp__12;
-			inertia20 = __tmp__20;
-			inertia21 = __tmp__21;
-			inertia22 = __tmp__22;
-			var __tmp__001;
-			var __tmp__011;
-			var __tmp__021;
-			var __tmp__101;
-			var __tmp__111;
-			var __tmp__121;
-			var __tmp__201;
-			var __tmp__211;
-			var __tmp__221;
-			__tmp__001 = inertia00 * s._localTransform._rotation00 + inertia01 * s._localTransform._rotation01 + inertia02 * s._localTransform._rotation02;
-			__tmp__011 = inertia00 * s._localTransform._rotation10 + inertia01 * s._localTransform._rotation11 + inertia02 * s._localTransform._rotation12;
-			__tmp__021 = inertia00 * s._localTransform._rotation20 + inertia01 * s._localTransform._rotation21 + inertia02 * s._localTransform._rotation22;
-			__tmp__101 = inertia10 * s._localTransform._rotation00 + inertia11 * s._localTransform._rotation01 + inertia12 * s._localTransform._rotation02;
-			__tmp__111 = inertia10 * s._localTransform._rotation10 + inertia11 * s._localTransform._rotation11 + inertia12 * s._localTransform._rotation12;
-			__tmp__121 = inertia10 * s._localTransform._rotation20 + inertia11 * s._localTransform._rotation21 + inertia12 * s._localTransform._rotation22;
-			__tmp__201 = inertia20 * s._localTransform._rotation00 + inertia21 * s._localTransform._rotation01 + inertia22 * s._localTransform._rotation02;
-			__tmp__211 = inertia20 * s._localTransform._rotation10 + inertia21 * s._localTransform._rotation11 + inertia22 * s._localTransform._rotation12;
-			__tmp__221 = inertia20 * s._localTransform._rotation20 + inertia21 * s._localTransform._rotation21 + inertia22 * s._localTransform._rotation22;
-			inertia00 = __tmp__001;
-			inertia01 = __tmp__011;
-			inertia02 = __tmp__021;
-			inertia10 = __tmp__101;
-			inertia11 = __tmp__111;
-			inertia12 = __tmp__121;
-			inertia20 = __tmp__201;
-			inertia21 = __tmp__211;
-			inertia22 = __tmp__221;
-			inertia00 *= mass;
-			inertia01 *= mass;
-			inertia02 *= mass;
-			inertia10 *= mass;
-			inertia11 *= mass;
-			inertia12 *= mass;
-			inertia20 *= mass;
-			inertia21 *= mass;
-			inertia22 *= mass;
-			var cogInertia;
-			var cogInertia00;
-			var cogInertia01;
-			var cogInertia02;
-			var cogInertia10;
-			var cogInertia11;
-			var cogInertia12;
-			var cogInertia20;
-			var cogInertia21;
-			var cogInertia22;
-			var xx = s._localTransform._positionX * s._localTransform._positionX;
-			var yy = s._localTransform._positionY * s._localTransform._positionY;
-			var zz = s._localTransform._positionZ * s._localTransform._positionZ;
-			var xy = -s._localTransform._positionX * s._localTransform._positionY;
-			var yz = -s._localTransform._positionY * s._localTransform._positionZ;
-			var zx = -s._localTransform._positionZ * s._localTransform._positionX;
-			cogInertia00 = yy + zz;
-			cogInertia01 = xy;
-			cogInertia02 = zx;
-			cogInertia10 = xy;
-			cogInertia11 = xx + zz;
-			cogInertia12 = yz;
-			cogInertia20 = zx;
-			cogInertia21 = yz;
-			cogInertia22 = xx + yy;
-			inertia00 += cogInertia00 * mass;
-			inertia01 += cogInertia01 * mass;
-			inertia02 += cogInertia02 * mass;
-			inertia10 += cogInertia10 * mass;
-			inertia11 += cogInertia11 * mass;
-			inertia12 += cogInertia12 * mass;
-			inertia20 += cogInertia20 * mass;
-			inertia21 += cogInertia21 * mass;
-			inertia22 += cogInertia22 * mass;
-			totalMass += mass;
-			totalInertia00 += inertia00;
-			totalInertia01 += inertia01;
-			totalInertia02 += inertia02;
-			totalInertia10 += inertia10;
-			totalInertia11 += inertia11;
-			totalInertia12 += inertia12;
-			totalInertia20 += inertia20;
-			totalInertia21 += inertia21;
-			totalInertia22 += inertia22;
-			s = n;
-		}
-		this._mass = totalMass;
-		this._localInertia00 = totalInertia00;
-		this._localInertia01 = totalInertia01;
-		this._localInertia02 = totalInertia02;
-		this._localInertia10 = totalInertia10;
-		this._localInertia11 = totalInertia11;
-		this._localInertia12 = totalInertia12;
-		this._localInertia20 = totalInertia20;
-		this._localInertia21 = totalInertia21;
-		this._localInertia22 = totalInertia22;
-		var d00 = this._localInertia11 * this._localInertia22 - this._localInertia12 * this._localInertia21;
-		var d01 = this._localInertia10 * this._localInertia22 - this._localInertia12 * this._localInertia20;
-		var d02 = this._localInertia10 * this._localInertia21 - this._localInertia11 * this._localInertia20;
-		var det = this._localInertia00 * d00 - this._localInertia01 * d01 + this._localInertia02 * d02;
-		if(this._mass > 0 && det > 0 && this._type == 0) {
-			this._invMass = 1 / this._mass;
-			var d001 = this._localInertia11 * this._localInertia22 - this._localInertia12 * this._localInertia21;
-			var d011 = this._localInertia10 * this._localInertia22 - this._localInertia12 * this._localInertia20;
-			var d021 = this._localInertia10 * this._localInertia21 - this._localInertia11 * this._localInertia20;
-			var d10 = this._localInertia01 * this._localInertia22 - this._localInertia02 * this._localInertia21;
-			var d11 = this._localInertia00 * this._localInertia22 - this._localInertia02 * this._localInertia20;
-			var d12 = this._localInertia00 * this._localInertia21 - this._localInertia01 * this._localInertia20;
-			var d20 = this._localInertia01 * this._localInertia12 - this._localInertia02 * this._localInertia11;
-			var d21 = this._localInertia00 * this._localInertia12 - this._localInertia02 * this._localInertia10;
-			var d22 = this._localInertia00 * this._localInertia11 - this._localInertia01 * this._localInertia10;
-			var d = this._localInertia00 * d001 - this._localInertia01 * d011 + this._localInertia02 * d021;
-			if(d < -1e-32 || d > 1e-32) {
-				d = 1 / d;
-			}
-			this._invLocalInertia00 = d001 * d;
-			this._invLocalInertia01 = -d10 * d;
-			this._invLocalInertia02 = d20 * d;
-			this._invLocalInertia10 = -d011 * d;
-			this._invLocalInertia11 = d11 * d;
-			this._invLocalInertia12 = -d21 * d;
-			this._invLocalInertia20 = d021 * d;
-			this._invLocalInertia21 = -d12 * d;
-			this._invLocalInertia22 = d22 * d;
-			this._invLocalInertiaWithoutRotFactor00 = this._invLocalInertia00;
-			this._invLocalInertiaWithoutRotFactor01 = this._invLocalInertia01;
-			this._invLocalInertiaWithoutRotFactor02 = this._invLocalInertia02;
-			this._invLocalInertiaWithoutRotFactor10 = this._invLocalInertia10;
-			this._invLocalInertiaWithoutRotFactor11 = this._invLocalInertia11;
-			this._invLocalInertiaWithoutRotFactor12 = this._invLocalInertia12;
-			this._invLocalInertiaWithoutRotFactor20 = this._invLocalInertia20;
-			this._invLocalInertiaWithoutRotFactor21 = this._invLocalInertia21;
-			this._invLocalInertiaWithoutRotFactor22 = this._invLocalInertia22;
-			this._invLocalInertia00 = this._invLocalInertiaWithoutRotFactor00 * this._rotFactor.x;
-			this._invLocalInertia01 = this._invLocalInertiaWithoutRotFactor01 * this._rotFactor.x;
-			this._invLocalInertia02 = this._invLocalInertiaWithoutRotFactor02 * this._rotFactor.x;
-			this._invLocalInertia10 = this._invLocalInertiaWithoutRotFactor10 * this._rotFactor.y;
-			this._invLocalInertia11 = this._invLocalInertiaWithoutRotFactor11 * this._rotFactor.y;
-			this._invLocalInertia12 = this._invLocalInertiaWithoutRotFactor12 * this._rotFactor.y;
-			this._invLocalInertia20 = this._invLocalInertiaWithoutRotFactor20 * this._rotFactor.z;
-			this._invLocalInertia21 = this._invLocalInertiaWithoutRotFactor21 * this._rotFactor.z;
-			this._invLocalInertia22 = this._invLocalInertiaWithoutRotFactor22 * this._rotFactor.z;
-		} else {
-			this._invMass = 0;
-			this._invLocalInertia00 = 0;
-			this._invLocalInertia01 = 0;
-			this._invLocalInertia02 = 0;
-			this._invLocalInertia10 = 0;
-			this._invLocalInertia11 = 0;
-			this._invLocalInertia12 = 0;
-			this._invLocalInertia20 = 0;
-			this._invLocalInertia21 = 0;
-			this._invLocalInertia22 = 0;
-			this._invLocalInertiaWithoutRotFactor00 = 0;
-			this._invLocalInertiaWithoutRotFactor01 = 0;
-			this._invLocalInertiaWithoutRotFactor02 = 0;
-			this._invLocalInertiaWithoutRotFactor10 = 0;
-			this._invLocalInertiaWithoutRotFactor11 = 0;
-			this._invLocalInertiaWithoutRotFactor12 = 0;
-			this._invLocalInertiaWithoutRotFactor20 = 0;
-			this._invLocalInertiaWithoutRotFactor21 = 0;
-			this._invLocalInertiaWithoutRotFactor22 = 0;
-			if(this._type == 0) {
-				this._type = 1;
-			}
-		}
-		var __tmp__002;
-		var __tmp__012;
-		var __tmp__022;
-		var __tmp__102;
-		var __tmp__112;
-		var __tmp__122;
-		var __tmp__202;
-		var __tmp__212;
-		var __tmp__222;
-		__tmp__002 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-		__tmp__012 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-		__tmp__022 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-		__tmp__102 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-		__tmp__112 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-		__tmp__122 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-		__tmp__202 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-		__tmp__212 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-		__tmp__222 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-		this._invInertia00 = __tmp__002;
-		this._invInertia01 = __tmp__012;
-		this._invInertia02 = __tmp__022;
-		this._invInertia10 = __tmp__102;
-		this._invInertia11 = __tmp__112;
-		this._invInertia12 = __tmp__122;
-		this._invInertia20 = __tmp__202;
-		this._invInertia21 = __tmp__212;
-		this._invInertia22 = __tmp__222;
-		var __tmp__003;
-		var __tmp__013;
-		var __tmp__023;
-		var __tmp__103;
-		var __tmp__113;
-		var __tmp__123;
-		var __tmp__203;
-		var __tmp__213;
-		var __tmp__223;
-		__tmp__003 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-		__tmp__013 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-		__tmp__023 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-		__tmp__103 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-		__tmp__113 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-		__tmp__123 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-		__tmp__203 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-		__tmp__213 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-		__tmp__223 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-		this._invInertia00 = __tmp__003;
-		this._invInertia01 = __tmp__013;
-		this._invInertia02 = __tmp__023;
-		this._invInertia10 = __tmp__103;
-		this._invInertia11 = __tmp__113;
-		this._invInertia12 = __tmp__123;
-		this._invInertia20 = __tmp__203;
-		this._invInertia21 = __tmp__213;
-		this._invInertia22 = __tmp__223;
-		this._invInertia00 *= this._rotFactor.x;
-		this._invInertia01 *= this._rotFactor.x;
-		this._invInertia02 *= this._rotFactor.x;
-		this._invInertia10 *= this._rotFactor.y;
-		this._invInertia11 *= this._rotFactor.y;
-		this._invInertia12 *= this._rotFactor.y;
-		this._invInertia20 *= this._rotFactor.z;
-		this._invInertia21 *= this._rotFactor.z;
-		this._invInertia22 *= this._rotFactor.z;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getPosition() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._transform._positionX;
-		v1.y = this._transform._positionY;
-		v1.z = this._transform._positionZ;
-		return v;
-	}
-	getPositionTo(position) {
-		var v = position;
-		v.x = this._transform._positionX;
-		v.y = this._transform._positionY;
-		v.z = this._transform._positionZ;
-	}
-	setPosition(position) {
-		var v = position;
-		this._transform._positionX = v.x;
-		this._transform._positionY = v.y;
-		this._transform._positionZ = v.z;
-		var dst = this._ptransform;
-		var src = this._transform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var dst1 = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__00;
-			var __tmp__01;
-			var __tmp__02;
-			var __tmp__10;
-			var __tmp__11;
-			var __tmp__12;
-			var __tmp__20;
-			var __tmp__21;
-			var __tmp__22;
-			__tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst1._rotation00 = __tmp__00;
-			dst1._rotation01 = __tmp__01;
-			dst1._rotation02 = __tmp__02;
-			dst1._rotation10 = __tmp__10;
-			dst1._rotation11 = __tmp__11;
-			dst1._rotation12 = __tmp__12;
-			dst1._rotation20 = __tmp__20;
-			dst1._rotation21 = __tmp__21;
-			dst1._rotation22 = __tmp__22;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst1._positionX = __tmp__X;
-			dst1._positionY = __tmp__Y;
-			dst1._positionZ = __tmp__Z;
-			dst1._positionX += src2._positionX;
-			dst1._positionY += src2._positionY;
-			dst1._positionZ += src2._positionZ;
-			var dst2 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__001;
-			var __tmp__011;
-			var __tmp__021;
-			var __tmp__101;
-			var __tmp__111;
-			var __tmp__121;
-			var __tmp__201;
-			var __tmp__211;
-			var __tmp__221;
-			__tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst2._rotation00 = __tmp__001;
-			dst2._rotation01 = __tmp__011;
-			dst2._rotation02 = __tmp__021;
-			dst2._rotation10 = __tmp__101;
-			dst2._rotation11 = __tmp__111;
-			dst2._rotation12 = __tmp__121;
-			dst2._rotation20 = __tmp__201;
-			dst2._rotation21 = __tmp__211;
-			dst2._rotation22 = __tmp__221;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst2._positionX = __tmp__X1;
-			dst2._positionY = __tmp__Y1;
-			dst2._positionZ = __tmp__Z1;
-			dst2._positionX += src21._positionX;
-			dst2._positionY += src21._positionY;
-			dst2._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v1 = s.displacement;
-				v1.x = dX;
-				v1.y = dY;
-				v1.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	translate(translation) {
-		var diff;
-		var diffX;
-		var diffY;
-		var diffZ;
-		var v = translation;
-		diffX = v.x;
-		diffY = v.y;
-		diffZ = v.z;
-		this._transform._positionX += diffX;
-		this._transform._positionY += diffY;
-		this._transform._positionZ += diffZ;
-		var dst = this._ptransform;
-		var src = this._transform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var dst1 = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__00;
-			var __tmp__01;
-			var __tmp__02;
-			var __tmp__10;
-			var __tmp__11;
-			var __tmp__12;
-			var __tmp__20;
-			var __tmp__21;
-			var __tmp__22;
-			__tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst1._rotation00 = __tmp__00;
-			dst1._rotation01 = __tmp__01;
-			dst1._rotation02 = __tmp__02;
-			dst1._rotation10 = __tmp__10;
-			dst1._rotation11 = __tmp__11;
-			dst1._rotation12 = __tmp__12;
-			dst1._rotation20 = __tmp__20;
-			dst1._rotation21 = __tmp__21;
-			dst1._rotation22 = __tmp__22;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst1._positionX = __tmp__X;
-			dst1._positionY = __tmp__Y;
-			dst1._positionZ = __tmp__Z;
-			dst1._positionX += src2._positionX;
-			dst1._positionY += src2._positionY;
-			dst1._positionZ += src2._positionZ;
-			var dst2 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__001;
-			var __tmp__011;
-			var __tmp__021;
-			var __tmp__101;
-			var __tmp__111;
-			var __tmp__121;
-			var __tmp__201;
-			var __tmp__211;
-			var __tmp__221;
-			__tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst2._rotation00 = __tmp__001;
-			dst2._rotation01 = __tmp__011;
-			dst2._rotation02 = __tmp__021;
-			dst2._rotation10 = __tmp__101;
-			dst2._rotation11 = __tmp__111;
-			dst2._rotation12 = __tmp__121;
-			dst2._rotation20 = __tmp__201;
-			dst2._rotation21 = __tmp__211;
-			dst2._rotation22 = __tmp__221;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst2._positionX = __tmp__X1;
-			dst2._positionY = __tmp__Y1;
-			dst2._positionZ = __tmp__Z1;
-			dst2._positionX += src21._positionX;
-			dst2._positionY += src21._positionY;
-			dst2._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v1 = s.displacement;
-				v1.x = dX;
-				v1.y = dY;
-				v1.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getRotation() {
-		var m = new oimo.common.Mat3();
-		var m1 = m;
-		m1.e00 = this._transform._rotation00;
-		m1.e01 = this._transform._rotation01;
-		m1.e02 = this._transform._rotation02;
-		m1.e10 = this._transform._rotation10;
-		m1.e11 = this._transform._rotation11;
-		m1.e12 = this._transform._rotation12;
-		m1.e20 = this._transform._rotation20;
-		m1.e21 = this._transform._rotation21;
-		m1.e22 = this._transform._rotation22;
-		return m;
-	}
-	getRotationTo(rotation) {
-		var m = rotation;
-		m.e00 = this._transform._rotation00;
-		m.e01 = this._transform._rotation01;
-		m.e02 = this._transform._rotation02;
-		m.e10 = this._transform._rotation10;
-		m.e11 = this._transform._rotation11;
-		m.e12 = this._transform._rotation12;
-		m.e20 = this._transform._rotation20;
-		m.e21 = this._transform._rotation21;
-		m.e22 = this._transform._rotation22;
-	}
-	setRotation(rotation) {
-		var m = rotation;
-		this._transform._rotation00 = m.e00;
-		this._transform._rotation01 = m.e01;
-		this._transform._rotation02 = m.e02;
-		this._transform._rotation10 = m.e10;
-		this._transform._rotation11 = m.e11;
-		this._transform._rotation12 = m.e12;
-		this._transform._rotation20 = m.e20;
-		this._transform._rotation21 = m.e21;
-		this._transform._rotation22 = m.e22;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-		__tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-		__tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-		__tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-		__tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-		__tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-		__tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-		__tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-		__tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-		this._invInertia00 = __tmp__00;
-		this._invInertia01 = __tmp__01;
-		this._invInertia02 = __tmp__02;
-		this._invInertia10 = __tmp__10;
-		this._invInertia11 = __tmp__11;
-		this._invInertia12 = __tmp__12;
-		this._invInertia20 = __tmp__20;
-		this._invInertia21 = __tmp__21;
-		this._invInertia22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-		__tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-		__tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-		__tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-		__tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-		__tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-		__tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-		__tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-		__tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-		this._invInertia00 = __tmp__001;
-		this._invInertia01 = __tmp__011;
-		this._invInertia02 = __tmp__021;
-		this._invInertia10 = __tmp__101;
-		this._invInertia11 = __tmp__111;
-		this._invInertia12 = __tmp__121;
-		this._invInertia20 = __tmp__201;
-		this._invInertia21 = __tmp__211;
-		this._invInertia22 = __tmp__221;
-		this._invInertia00 *= this._rotFactor.x;
-		this._invInertia01 *= this._rotFactor.x;
-		this._invInertia02 *= this._rotFactor.x;
-		this._invInertia10 *= this._rotFactor.y;
-		this._invInertia11 *= this._rotFactor.y;
-		this._invInertia12 *= this._rotFactor.y;
-		this._invInertia20 *= this._rotFactor.z;
-		this._invInertia21 *= this._rotFactor.z;
-		this._invInertia22 *= this._rotFactor.z;
-		var dst = this._ptransform;
-		var src = this._transform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var dst1 = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__002;
-			var __tmp__012;
-			var __tmp__022;
-			var __tmp__102;
-			var __tmp__112;
-			var __tmp__122;
-			var __tmp__202;
-			var __tmp__212;
-			var __tmp__222;
-			__tmp__002 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__012 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__022 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__102 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__112 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__122 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__202 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__212 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__222 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst1._rotation00 = __tmp__002;
-			dst1._rotation01 = __tmp__012;
-			dst1._rotation02 = __tmp__022;
-			dst1._rotation10 = __tmp__102;
-			dst1._rotation11 = __tmp__112;
-			dst1._rotation12 = __tmp__122;
-			dst1._rotation20 = __tmp__202;
-			dst1._rotation21 = __tmp__212;
-			dst1._rotation22 = __tmp__222;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst1._positionX = __tmp__X;
-			dst1._positionY = __tmp__Y;
-			dst1._positionZ = __tmp__Z;
-			dst1._positionX += src2._positionX;
-			dst1._positionY += src2._positionY;
-			dst1._positionZ += src2._positionZ;
-			var dst2 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__003;
-			var __tmp__013;
-			var __tmp__023;
-			var __tmp__103;
-			var __tmp__113;
-			var __tmp__123;
-			var __tmp__203;
-			var __tmp__213;
-			var __tmp__223;
-			__tmp__003 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__013 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__023 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__103 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__113 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__123 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__203 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__213 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__223 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst2._rotation00 = __tmp__003;
-			dst2._rotation01 = __tmp__013;
-			dst2._rotation02 = __tmp__023;
-			dst2._rotation10 = __tmp__103;
-			dst2._rotation11 = __tmp__113;
-			dst2._rotation12 = __tmp__123;
-			dst2._rotation20 = __tmp__203;
-			dst2._rotation21 = __tmp__213;
-			dst2._rotation22 = __tmp__223;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst2._positionX = __tmp__X1;
-			dst2._positionY = __tmp__Y1;
-			dst2._positionZ = __tmp__Z1;
-			dst2._positionX += src21._positionX;
-			dst2._positionY += src21._positionY;
-			dst2._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v = s.displacement;
-				v.x = dX;
-				v.y = dY;
-				v.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	setRotationXyz(eulerAngles) {
-		var xyz;
-		var xyzX;
-		var xyzY;
-		var xyzZ;
-		var v = eulerAngles;
-		xyzX = v.x;
-		xyzY = v.y;
-		xyzZ = v.z;
-		var sx = Math.sin(xyzX);
-		var sy = Math.sin(xyzY);
-		var sz = Math.sin(xyzZ);
-		var cx = Math.cos(xyzX);
-		var cy = Math.cos(xyzY);
-		var cz = Math.cos(xyzZ);
-		this._transform._rotation00 = cy * cz;
-		this._transform._rotation01 = -cy * sz;
-		this._transform._rotation02 = sy;
-		this._transform._rotation10 = cx * sz + cz * sx * sy;
-		this._transform._rotation11 = cx * cz - sx * sy * sz;
-		this._transform._rotation12 = -cy * sx;
-		this._transform._rotation20 = sx * sz - cx * cz * sy;
-		this._transform._rotation21 = cz * sx + cx * sy * sz;
-		this._transform._rotation22 = cx * cy;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-		__tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-		__tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-		__tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-		__tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-		__tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-		__tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-		__tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-		__tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-		this._invInertia00 = __tmp__00;
-		this._invInertia01 = __tmp__01;
-		this._invInertia02 = __tmp__02;
-		this._invInertia10 = __tmp__10;
-		this._invInertia11 = __tmp__11;
-		this._invInertia12 = __tmp__12;
-		this._invInertia20 = __tmp__20;
-		this._invInertia21 = __tmp__21;
-		this._invInertia22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-		__tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-		__tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-		__tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-		__tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-		__tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-		__tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-		__tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-		__tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-		this._invInertia00 = __tmp__001;
-		this._invInertia01 = __tmp__011;
-		this._invInertia02 = __tmp__021;
-		this._invInertia10 = __tmp__101;
-		this._invInertia11 = __tmp__111;
-		this._invInertia12 = __tmp__121;
-		this._invInertia20 = __tmp__201;
-		this._invInertia21 = __tmp__211;
-		this._invInertia22 = __tmp__221;
-		this._invInertia00 *= this._rotFactor.x;
-		this._invInertia01 *= this._rotFactor.x;
-		this._invInertia02 *= this._rotFactor.x;
-		this._invInertia10 *= this._rotFactor.y;
-		this._invInertia11 *= this._rotFactor.y;
-		this._invInertia12 *= this._rotFactor.y;
-		this._invInertia20 *= this._rotFactor.z;
-		this._invInertia21 *= this._rotFactor.z;
-		this._invInertia22 *= this._rotFactor.z;
-		var dst = this._ptransform;
-		var src = this._transform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var dst1 = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__002;
-			var __tmp__012;
-			var __tmp__022;
-			var __tmp__102;
-			var __tmp__112;
-			var __tmp__122;
-			var __tmp__202;
-			var __tmp__212;
-			var __tmp__222;
-			__tmp__002 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__012 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__022 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__102 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__112 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__122 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__202 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__212 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__222 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst1._rotation00 = __tmp__002;
-			dst1._rotation01 = __tmp__012;
-			dst1._rotation02 = __tmp__022;
-			dst1._rotation10 = __tmp__102;
-			dst1._rotation11 = __tmp__112;
-			dst1._rotation12 = __tmp__122;
-			dst1._rotation20 = __tmp__202;
-			dst1._rotation21 = __tmp__212;
-			dst1._rotation22 = __tmp__222;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst1._positionX = __tmp__X;
-			dst1._positionY = __tmp__Y;
-			dst1._positionZ = __tmp__Z;
-			dst1._positionX += src2._positionX;
-			dst1._positionY += src2._positionY;
-			dst1._positionZ += src2._positionZ;
-			var dst2 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__003;
-			var __tmp__013;
-			var __tmp__023;
-			var __tmp__103;
-			var __tmp__113;
-			var __tmp__123;
-			var __tmp__203;
-			var __tmp__213;
-			var __tmp__223;
-			__tmp__003 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__013 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__023 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__103 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__113 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__123 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__203 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__213 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__223 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst2._rotation00 = __tmp__003;
-			dst2._rotation01 = __tmp__013;
-			dst2._rotation02 = __tmp__023;
-			dst2._rotation10 = __tmp__103;
-			dst2._rotation11 = __tmp__113;
-			dst2._rotation12 = __tmp__123;
-			dst2._rotation20 = __tmp__203;
-			dst2._rotation21 = __tmp__213;
-			dst2._rotation22 = __tmp__223;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst2._positionX = __tmp__X1;
-			dst2._positionY = __tmp__Y1;
-			dst2._positionZ = __tmp__Z1;
-			dst2._positionX += src21._positionX;
-			dst2._positionY += src21._positionY;
-			dst2._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v1 = s.displacement;
-				v1.x = dX;
-				v1.y = dY;
-				v1.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	rotate(rotation) {
-		var rot;
-		var rot00;
-		var rot01;
-		var rot02;
-		var rot10;
-		var rot11;
-		var rot12;
-		var rot20;
-		var rot21;
-		var rot22;
-		var m = rotation;
-		rot00 = m.e00;
-		rot01 = m.e01;
-		rot02 = m.e02;
-		rot10 = m.e10;
-		rot11 = m.e11;
-		rot12 = m.e12;
-		rot20 = m.e20;
-		rot21 = m.e21;
-		rot22 = m.e22;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = rot00 * this._transform._rotation00 + rot01 * this._transform._rotation10 + rot02 * this._transform._rotation20;
-		__tmp__01 = rot00 * this._transform._rotation01 + rot01 * this._transform._rotation11 + rot02 * this._transform._rotation21;
-		__tmp__02 = rot00 * this._transform._rotation02 + rot01 * this._transform._rotation12 + rot02 * this._transform._rotation22;
-		__tmp__10 = rot10 * this._transform._rotation00 + rot11 * this._transform._rotation10 + rot12 * this._transform._rotation20;
-		__tmp__11 = rot10 * this._transform._rotation01 + rot11 * this._transform._rotation11 + rot12 * this._transform._rotation21;
-		__tmp__12 = rot10 * this._transform._rotation02 + rot11 * this._transform._rotation12 + rot12 * this._transform._rotation22;
-		__tmp__20 = rot20 * this._transform._rotation00 + rot21 * this._transform._rotation10 + rot22 * this._transform._rotation20;
-		__tmp__21 = rot20 * this._transform._rotation01 + rot21 * this._transform._rotation11 + rot22 * this._transform._rotation21;
-		__tmp__22 = rot20 * this._transform._rotation02 + rot21 * this._transform._rotation12 + rot22 * this._transform._rotation22;
-		this._transform._rotation00 = __tmp__00;
-		this._transform._rotation01 = __tmp__01;
-		this._transform._rotation02 = __tmp__02;
-		this._transform._rotation10 = __tmp__10;
-		this._transform._rotation11 = __tmp__11;
-		this._transform._rotation12 = __tmp__12;
-		this._transform._rotation20 = __tmp__20;
-		this._transform._rotation21 = __tmp__21;
-		this._transform._rotation22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-		__tmp__011 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-		__tmp__021 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-		__tmp__101 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-		__tmp__111 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-		__tmp__121 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-		__tmp__201 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-		__tmp__211 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-		__tmp__221 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-		this._invInertia00 = __tmp__001;
-		this._invInertia01 = __tmp__011;
-		this._invInertia02 = __tmp__021;
-		this._invInertia10 = __tmp__101;
-		this._invInertia11 = __tmp__111;
-		this._invInertia12 = __tmp__121;
-		this._invInertia20 = __tmp__201;
-		this._invInertia21 = __tmp__211;
-		this._invInertia22 = __tmp__221;
-		var __tmp__002;
-		var __tmp__012;
-		var __tmp__022;
-		var __tmp__102;
-		var __tmp__112;
-		var __tmp__122;
-		var __tmp__202;
-		var __tmp__212;
-		var __tmp__222;
-		__tmp__002 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-		__tmp__012 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-		__tmp__022 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-		__tmp__102 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-		__tmp__112 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-		__tmp__122 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-		__tmp__202 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-		__tmp__212 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-		__tmp__222 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-		this._invInertia00 = __tmp__002;
-		this._invInertia01 = __tmp__012;
-		this._invInertia02 = __tmp__022;
-		this._invInertia10 = __tmp__102;
-		this._invInertia11 = __tmp__112;
-		this._invInertia12 = __tmp__122;
-		this._invInertia20 = __tmp__202;
-		this._invInertia21 = __tmp__212;
-		this._invInertia22 = __tmp__222;
-		this._invInertia00 *= this._rotFactor.x;
-		this._invInertia01 *= this._rotFactor.x;
-		this._invInertia02 *= this._rotFactor.x;
-		this._invInertia10 *= this._rotFactor.y;
-		this._invInertia11 *= this._rotFactor.y;
-		this._invInertia12 *= this._rotFactor.y;
-		this._invInertia20 *= this._rotFactor.z;
-		this._invInertia21 *= this._rotFactor.z;
-		this._invInertia22 *= this._rotFactor.z;
-		var dst = this._ptransform;
-		var src = this._transform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var dst1 = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__003;
-			var __tmp__013;
-			var __tmp__023;
-			var __tmp__103;
-			var __tmp__113;
-			var __tmp__123;
-			var __tmp__203;
-			var __tmp__213;
-			var __tmp__223;
-			__tmp__003 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__013 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__023 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__103 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__113 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__123 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__203 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__213 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__223 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst1._rotation00 = __tmp__003;
-			dst1._rotation01 = __tmp__013;
-			dst1._rotation02 = __tmp__023;
-			dst1._rotation10 = __tmp__103;
-			dst1._rotation11 = __tmp__113;
-			dst1._rotation12 = __tmp__123;
-			dst1._rotation20 = __tmp__203;
-			dst1._rotation21 = __tmp__213;
-			dst1._rotation22 = __tmp__223;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst1._positionX = __tmp__X;
-			dst1._positionY = __tmp__Y;
-			dst1._positionZ = __tmp__Z;
-			dst1._positionX += src2._positionX;
-			dst1._positionY += src2._positionY;
-			dst1._positionZ += src2._positionZ;
-			var dst2 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__004;
-			var __tmp__014;
-			var __tmp__024;
-			var __tmp__104;
-			var __tmp__114;
-			var __tmp__124;
-			var __tmp__204;
-			var __tmp__214;
-			var __tmp__224;
-			__tmp__004 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__014 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__024 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__104 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__114 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__124 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__204 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__214 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__224 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst2._rotation00 = __tmp__004;
-			dst2._rotation01 = __tmp__014;
-			dst2._rotation02 = __tmp__024;
-			dst2._rotation10 = __tmp__104;
-			dst2._rotation11 = __tmp__114;
-			dst2._rotation12 = __tmp__124;
-			dst2._rotation20 = __tmp__204;
-			dst2._rotation21 = __tmp__214;
-			dst2._rotation22 = __tmp__224;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst2._positionX = __tmp__X1;
-			dst2._positionY = __tmp__Y1;
-			dst2._positionZ = __tmp__Z1;
-			dst2._positionX += src21._positionX;
-			dst2._positionY += src21._positionY;
-			dst2._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v = s.displacement;
-				v.x = dX;
-				v.y = dY;
-				v.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	rotateXyz(eulerAngles) {
-		var xyz;
-		var xyzX;
-		var xyzY;
-		var xyzZ;
-		var rot;
-		var rot00;
-		var rot01;
-		var rot02;
-		var rot10;
-		var rot11;
-		var rot12;
-		var rot20;
-		var rot21;
-		var rot22;
-		var v = eulerAngles;
-		xyzX = v.x;
-		xyzY = v.y;
-		xyzZ = v.z;
-		var sx = Math.sin(xyzX);
-		var sy = Math.sin(xyzY);
-		var sz = Math.sin(xyzZ);
-		var cx = Math.cos(xyzX);
-		var cy = Math.cos(xyzY);
-		var cz = Math.cos(xyzZ);
-		rot00 = cy * cz;
-		rot01 = -cy * sz;
-		rot02 = sy;
-		rot10 = cx * sz + cz * sx * sy;
-		rot11 = cx * cz - sx * sy * sz;
-		rot12 = -cy * sx;
-		rot20 = sx * sz - cx * cz * sy;
-		rot21 = cz * sx + cx * sy * sz;
-		rot22 = cx * cy;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = rot00 * this._transform._rotation00 + rot01 * this._transform._rotation10 + rot02 * this._transform._rotation20;
-		__tmp__01 = rot00 * this._transform._rotation01 + rot01 * this._transform._rotation11 + rot02 * this._transform._rotation21;
-		__tmp__02 = rot00 * this._transform._rotation02 + rot01 * this._transform._rotation12 + rot02 * this._transform._rotation22;
-		__tmp__10 = rot10 * this._transform._rotation00 + rot11 * this._transform._rotation10 + rot12 * this._transform._rotation20;
-		__tmp__11 = rot10 * this._transform._rotation01 + rot11 * this._transform._rotation11 + rot12 * this._transform._rotation21;
-		__tmp__12 = rot10 * this._transform._rotation02 + rot11 * this._transform._rotation12 + rot12 * this._transform._rotation22;
-		__tmp__20 = rot20 * this._transform._rotation00 + rot21 * this._transform._rotation10 + rot22 * this._transform._rotation20;
-		__tmp__21 = rot20 * this._transform._rotation01 + rot21 * this._transform._rotation11 + rot22 * this._transform._rotation21;
-		__tmp__22 = rot20 * this._transform._rotation02 + rot21 * this._transform._rotation12 + rot22 * this._transform._rotation22;
-		this._transform._rotation00 = __tmp__00;
-		this._transform._rotation01 = __tmp__01;
-		this._transform._rotation02 = __tmp__02;
-		this._transform._rotation10 = __tmp__10;
-		this._transform._rotation11 = __tmp__11;
-		this._transform._rotation12 = __tmp__12;
-		this._transform._rotation20 = __tmp__20;
-		this._transform._rotation21 = __tmp__21;
-		this._transform._rotation22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-		__tmp__011 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-		__tmp__021 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-		__tmp__101 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-		__tmp__111 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-		__tmp__121 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-		__tmp__201 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-		__tmp__211 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-		__tmp__221 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-		this._invInertia00 = __tmp__001;
-		this._invInertia01 = __tmp__011;
-		this._invInertia02 = __tmp__021;
-		this._invInertia10 = __tmp__101;
-		this._invInertia11 = __tmp__111;
-		this._invInertia12 = __tmp__121;
-		this._invInertia20 = __tmp__201;
-		this._invInertia21 = __tmp__211;
-		this._invInertia22 = __tmp__221;
-		var __tmp__002;
-		var __tmp__012;
-		var __tmp__022;
-		var __tmp__102;
-		var __tmp__112;
-		var __tmp__122;
-		var __tmp__202;
-		var __tmp__212;
-		var __tmp__222;
-		__tmp__002 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-		__tmp__012 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-		__tmp__022 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-		__tmp__102 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-		__tmp__112 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-		__tmp__122 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-		__tmp__202 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-		__tmp__212 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-		__tmp__222 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-		this._invInertia00 = __tmp__002;
-		this._invInertia01 = __tmp__012;
-		this._invInertia02 = __tmp__022;
-		this._invInertia10 = __tmp__102;
-		this._invInertia11 = __tmp__112;
-		this._invInertia12 = __tmp__122;
-		this._invInertia20 = __tmp__202;
-		this._invInertia21 = __tmp__212;
-		this._invInertia22 = __tmp__222;
-		this._invInertia00 *= this._rotFactor.x;
-		this._invInertia01 *= this._rotFactor.x;
-		this._invInertia02 *= this._rotFactor.x;
-		this._invInertia10 *= this._rotFactor.y;
-		this._invInertia11 *= this._rotFactor.y;
-		this._invInertia12 *= this._rotFactor.y;
-		this._invInertia20 *= this._rotFactor.z;
-		this._invInertia21 *= this._rotFactor.z;
-		this._invInertia22 *= this._rotFactor.z;
-		var dst = this._ptransform;
-		var src = this._transform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var dst1 = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__003;
-			var __tmp__013;
-			var __tmp__023;
-			var __tmp__103;
-			var __tmp__113;
-			var __tmp__123;
-			var __tmp__203;
-			var __tmp__213;
-			var __tmp__223;
-			__tmp__003 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__013 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__023 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__103 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__113 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__123 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__203 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__213 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__223 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst1._rotation00 = __tmp__003;
-			dst1._rotation01 = __tmp__013;
-			dst1._rotation02 = __tmp__023;
-			dst1._rotation10 = __tmp__103;
-			dst1._rotation11 = __tmp__113;
-			dst1._rotation12 = __tmp__123;
-			dst1._rotation20 = __tmp__203;
-			dst1._rotation21 = __tmp__213;
-			dst1._rotation22 = __tmp__223;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst1._positionX = __tmp__X;
-			dst1._positionY = __tmp__Y;
-			dst1._positionZ = __tmp__Z;
-			dst1._positionX += src2._positionX;
-			dst1._positionY += src2._positionY;
-			dst1._positionZ += src2._positionZ;
-			var dst2 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__004;
-			var __tmp__014;
-			var __tmp__024;
-			var __tmp__104;
-			var __tmp__114;
-			var __tmp__124;
-			var __tmp__204;
-			var __tmp__214;
-			var __tmp__224;
-			__tmp__004 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__014 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__024 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__104 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__114 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__124 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__204 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__214 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__224 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst2._rotation00 = __tmp__004;
-			dst2._rotation01 = __tmp__014;
-			dst2._rotation02 = __tmp__024;
-			dst2._rotation10 = __tmp__104;
-			dst2._rotation11 = __tmp__114;
-			dst2._rotation12 = __tmp__124;
-			dst2._rotation20 = __tmp__204;
-			dst2._rotation21 = __tmp__214;
-			dst2._rotation22 = __tmp__224;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst2._positionX = __tmp__X1;
-			dst2._positionY = __tmp__Y1;
-			dst2._positionZ = __tmp__Z1;
-			dst2._positionX += src21._positionX;
-			dst2._positionY += src21._positionY;
-			dst2._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v1 = s.displacement;
-				v1.x = dX;
-				v1.y = dY;
-				v1.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getOrientation() {
-		var q = new oimo.common.Quat();
-		var iq;
-		var iqX;
-		var iqY;
-		var iqZ;
-		var iqW;
-		var e00 = this._transform._rotation00;
-		var e11 = this._transform._rotation11;
-		var e22 = this._transform._rotation22;
-		var t = e00 + e11 + e22;
-		var s;
-		if(t > 0) {
-			s = Math.sqrt(t + 1);
-			iqW = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._transform._rotation21 - this._transform._rotation12) * s;
-			iqY = (this._transform._rotation02 - this._transform._rotation20) * s;
-			iqZ = (this._transform._rotation10 - this._transform._rotation01) * s;
-		} else if(e00 > e11) {
-			if(e00 > e22) {
-				s = Math.sqrt(e00 - e11 - e22 + 1);
-				iqX = 0.5 * s;
-				s = 0.5 / s;
-				iqY = (this._transform._rotation01 + this._transform._rotation10) * s;
-				iqZ = (this._transform._rotation02 + this._transform._rotation20) * s;
-				iqW = (this._transform._rotation21 - this._transform._rotation12) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				iqZ = 0.5 * s;
-				s = 0.5 / s;
-				iqX = (this._transform._rotation02 + this._transform._rotation20) * s;
-				iqY = (this._transform._rotation12 + this._transform._rotation21) * s;
-				iqW = (this._transform._rotation10 - this._transform._rotation01) * s;
-			}
-		} else if(e11 > e22) {
-			s = Math.sqrt(e11 - e22 - e00 + 1);
-			iqY = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._transform._rotation01 + this._transform._rotation10) * s;
-			iqZ = (this._transform._rotation12 + this._transform._rotation21) * s;
-			iqW = (this._transform._rotation02 - this._transform._rotation20) * s;
-		} else {
-			s = Math.sqrt(e22 - e00 - e11 + 1);
-			iqZ = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._transform._rotation02 + this._transform._rotation20) * s;
-			iqY = (this._transform._rotation12 + this._transform._rotation21) * s;
-			iqW = (this._transform._rotation10 - this._transform._rotation01) * s;
-		}
-		var q1 = q;
-		q1.x = iqX;
-		q1.y = iqY;
-		q1.z = iqZ;
-		q1.w = iqW;
-		return q;
-	}
-	getOrientationTo(orientation) {
-		var iq;
-		var iqX;
-		var iqY;
-		var iqZ;
-		var iqW;
-		var e00 = this._transform._rotation00;
-		var e11 = this._transform._rotation11;
-		var e22 = this._transform._rotation22;
-		var t = e00 + e11 + e22;
-		var s;
-		if(t > 0) {
-			s = Math.sqrt(t + 1);
-			iqW = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._transform._rotation21 - this._transform._rotation12) * s;
-			iqY = (this._transform._rotation02 - this._transform._rotation20) * s;
-			iqZ = (this._transform._rotation10 - this._transform._rotation01) * s;
-		} else if(e00 > e11) {
-			if(e00 > e22) {
-				s = Math.sqrt(e00 - e11 - e22 + 1);
-				iqX = 0.5 * s;
-				s = 0.5 / s;
-				iqY = (this._transform._rotation01 + this._transform._rotation10) * s;
-				iqZ = (this._transform._rotation02 + this._transform._rotation20) * s;
-				iqW = (this._transform._rotation21 - this._transform._rotation12) * s;
-			} else {
-				s = Math.sqrt(e22 - e00 - e11 + 1);
-				iqZ = 0.5 * s;
-				s = 0.5 / s;
-				iqX = (this._transform._rotation02 + this._transform._rotation20) * s;
-				iqY = (this._transform._rotation12 + this._transform._rotation21) * s;
-				iqW = (this._transform._rotation10 - this._transform._rotation01) * s;
-			}
-		} else if(e11 > e22) {
-			s = Math.sqrt(e11 - e22 - e00 + 1);
-			iqY = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._transform._rotation01 + this._transform._rotation10) * s;
-			iqZ = (this._transform._rotation12 + this._transform._rotation21) * s;
-			iqW = (this._transform._rotation02 - this._transform._rotation20) * s;
-		} else {
-			s = Math.sqrt(e22 - e00 - e11 + 1);
-			iqZ = 0.5 * s;
-			s = 0.5 / s;
-			iqX = (this._transform._rotation02 + this._transform._rotation20) * s;
-			iqY = (this._transform._rotation12 + this._transform._rotation21) * s;
-			iqW = (this._transform._rotation10 - this._transform._rotation01) * s;
-		}
-		var q = orientation;
-		q.x = iqX;
-		q.y = iqY;
-		q.z = iqZ;
-		q.w = iqW;
-	}
-	setOrientation(quaternion) {
-		var q;
-		var qX;
-		var qY;
-		var qZ;
-		var qW;
-		var q1 = quaternion;
-		qX = q1.x;
-		qY = q1.y;
-		qZ = q1.z;
-		qW = q1.w;
-		var x = qX;
-		var y = qY;
-		var z = qZ;
-		var w = qW;
-		var x2 = 2 * x;
-		var y2 = 2 * y;
-		var z2 = 2 * z;
-		var xx = x * x2;
-		var yy = y * y2;
-		var zz = z * z2;
-		var xy = x * y2;
-		var yz = y * z2;
-		var xz = x * z2;
-		var wx = w * x2;
-		var wy = w * y2;
-		var wz = w * z2;
-		this._transform._rotation00 = 1 - yy - zz;
-		this._transform._rotation01 = xy - wz;
-		this._transform._rotation02 = xz + wy;
-		this._transform._rotation10 = xy + wz;
-		this._transform._rotation11 = 1 - xx - zz;
-		this._transform._rotation12 = yz - wx;
-		this._transform._rotation20 = xz - wy;
-		this._transform._rotation21 = yz + wx;
-		this._transform._rotation22 = 1 - xx - yy;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-		__tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-		__tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-		__tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-		__tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-		__tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-		__tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-		__tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-		__tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-		this._invInertia00 = __tmp__00;
-		this._invInertia01 = __tmp__01;
-		this._invInertia02 = __tmp__02;
-		this._invInertia10 = __tmp__10;
-		this._invInertia11 = __tmp__11;
-		this._invInertia12 = __tmp__12;
-		this._invInertia20 = __tmp__20;
-		this._invInertia21 = __tmp__21;
-		this._invInertia22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-		__tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-		__tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-		__tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-		__tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-		__tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-		__tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-		__tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-		__tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-		this._invInertia00 = __tmp__001;
-		this._invInertia01 = __tmp__011;
-		this._invInertia02 = __tmp__021;
-		this._invInertia10 = __tmp__101;
-		this._invInertia11 = __tmp__111;
-		this._invInertia12 = __tmp__121;
-		this._invInertia20 = __tmp__201;
-		this._invInertia21 = __tmp__211;
-		this._invInertia22 = __tmp__221;
-		this._invInertia00 *= this._rotFactor.x;
-		this._invInertia01 *= this._rotFactor.x;
-		this._invInertia02 *= this._rotFactor.x;
-		this._invInertia10 *= this._rotFactor.y;
-		this._invInertia11 *= this._rotFactor.y;
-		this._invInertia12 *= this._rotFactor.y;
-		this._invInertia20 *= this._rotFactor.z;
-		this._invInertia21 *= this._rotFactor.z;
-		this._invInertia22 *= this._rotFactor.z;
-		var dst = this._ptransform;
-		var src = this._transform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var dst1 = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__002;
-			var __tmp__012;
-			var __tmp__022;
-			var __tmp__102;
-			var __tmp__112;
-			var __tmp__122;
-			var __tmp__202;
-			var __tmp__212;
-			var __tmp__222;
-			__tmp__002 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__012 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__022 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__102 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__112 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__122 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__202 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__212 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__222 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst1._rotation00 = __tmp__002;
-			dst1._rotation01 = __tmp__012;
-			dst1._rotation02 = __tmp__022;
-			dst1._rotation10 = __tmp__102;
-			dst1._rotation11 = __tmp__112;
-			dst1._rotation12 = __tmp__122;
-			dst1._rotation20 = __tmp__202;
-			dst1._rotation21 = __tmp__212;
-			dst1._rotation22 = __tmp__222;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst1._positionX = __tmp__X;
-			dst1._positionY = __tmp__Y;
-			dst1._positionZ = __tmp__Z;
-			dst1._positionX += src2._positionX;
-			dst1._positionY += src2._positionY;
-			dst1._positionZ += src2._positionZ;
-			var dst2 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__003;
-			var __tmp__013;
-			var __tmp__023;
-			var __tmp__103;
-			var __tmp__113;
-			var __tmp__123;
-			var __tmp__203;
-			var __tmp__213;
-			var __tmp__223;
-			__tmp__003 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__013 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__023 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__103 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__113 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__123 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__203 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__213 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__223 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst2._rotation00 = __tmp__003;
-			dst2._rotation01 = __tmp__013;
-			dst2._rotation02 = __tmp__023;
-			dst2._rotation10 = __tmp__103;
-			dst2._rotation11 = __tmp__113;
-			dst2._rotation12 = __tmp__123;
-			dst2._rotation20 = __tmp__203;
-			dst2._rotation21 = __tmp__213;
-			dst2._rotation22 = __tmp__223;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst2._positionX = __tmp__X1;
-			dst2._positionY = __tmp__Y1;
-			dst2._positionZ = __tmp__Z1;
-			dst2._positionX += src21._positionX;
-			dst2._positionY += src21._positionY;
-			dst2._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v = s.displacement;
-				v.x = dX;
-				v.y = dY;
-				v.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getTransform() {
-		var _this = this._transform;
-		var tf = new oimo.common.Transform();
-		tf._positionX = _this._positionX;
-		tf._positionY = _this._positionY;
-		tf._positionZ = _this._positionZ;
-		tf._rotation00 = _this._rotation00;
-		tf._rotation01 = _this._rotation01;
-		tf._rotation02 = _this._rotation02;
-		tf._rotation10 = _this._rotation10;
-		tf._rotation11 = _this._rotation11;
-		tf._rotation12 = _this._rotation12;
-		tf._rotation20 = _this._rotation20;
-		tf._rotation21 = _this._rotation21;
-		tf._rotation22 = _this._rotation22;
-		return tf;
-	}
-	getTransformTo(transform) {
-		var transform1 = this._transform;
-		transform._positionX = transform1._positionX;
-		transform._positionY = transform1._positionY;
-		transform._positionZ = transform1._positionZ;
-		transform._rotation00 = transform1._rotation00;
-		transform._rotation01 = transform1._rotation01;
-		transform._rotation02 = transform1._rotation02;
-		transform._rotation10 = transform1._rotation10;
-		transform._rotation11 = transform1._rotation11;
-		transform._rotation12 = transform1._rotation12;
-		transform._rotation20 = transform1._rotation20;
-		transform._rotation21 = transform1._rotation21;
-		transform._rotation22 = transform1._rotation22;
-	}
-	setTransform(transform) {
-		this._transform._positionX = transform._positionX;
-		this._transform._positionY = transform._positionY;
-		this._transform._positionZ = transform._positionZ;
-		this._transform._rotation00 = transform._rotation00;
-		this._transform._rotation01 = transform._rotation01;
-		this._transform._rotation02 = transform._rotation02;
-		this._transform._rotation10 = transform._rotation10;
-		this._transform._rotation11 = transform._rotation11;
-		this._transform._rotation12 = transform._rotation12;
-		this._transform._rotation20 = transform._rotation20;
-		this._transform._rotation21 = transform._rotation21;
-		this._transform._rotation22 = transform._rotation22;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-		__tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-		__tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-		__tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-		__tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-		__tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-		__tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-		__tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-		__tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-		this._invInertia00 = __tmp__00;
-		this._invInertia01 = __tmp__01;
-		this._invInertia02 = __tmp__02;
-		this._invInertia10 = __tmp__10;
-		this._invInertia11 = __tmp__11;
-		this._invInertia12 = __tmp__12;
-		this._invInertia20 = __tmp__20;
-		this._invInertia21 = __tmp__21;
-		this._invInertia22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-		__tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-		__tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-		__tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-		__tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-		__tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-		__tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-		__tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-		__tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-		this._invInertia00 = __tmp__001;
-		this._invInertia01 = __tmp__011;
-		this._invInertia02 = __tmp__021;
-		this._invInertia10 = __tmp__101;
-		this._invInertia11 = __tmp__111;
-		this._invInertia12 = __tmp__121;
-		this._invInertia20 = __tmp__201;
-		this._invInertia21 = __tmp__211;
-		this._invInertia22 = __tmp__221;
-		this._invInertia00 *= this._rotFactor.x;
-		this._invInertia01 *= this._rotFactor.x;
-		this._invInertia02 *= this._rotFactor.x;
-		this._invInertia10 *= this._rotFactor.y;
-		this._invInertia11 *= this._rotFactor.y;
-		this._invInertia12 *= this._rotFactor.y;
-		this._invInertia20 *= this._rotFactor.z;
-		this._invInertia21 *= this._rotFactor.z;
-		this._invInertia22 *= this._rotFactor.z;
-		var dst = this._ptransform;
-		var src = this._transform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var dst1 = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__002;
-			var __tmp__012;
-			var __tmp__022;
-			var __tmp__102;
-			var __tmp__112;
-			var __tmp__122;
-			var __tmp__202;
-			var __tmp__212;
-			var __tmp__222;
-			__tmp__002 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__012 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__022 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__102 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__112 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__122 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__202 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__212 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__222 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst1._rotation00 = __tmp__002;
-			dst1._rotation01 = __tmp__012;
-			dst1._rotation02 = __tmp__022;
-			dst1._rotation10 = __tmp__102;
-			dst1._rotation11 = __tmp__112;
-			dst1._rotation12 = __tmp__122;
-			dst1._rotation20 = __tmp__202;
-			dst1._rotation21 = __tmp__212;
-			dst1._rotation22 = __tmp__222;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst1._positionX = __tmp__X;
-			dst1._positionY = __tmp__Y;
-			dst1._positionZ = __tmp__Z;
-			dst1._positionX += src2._positionX;
-			dst1._positionY += src2._positionY;
-			dst1._positionZ += src2._positionZ;
-			var dst2 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__003;
-			var __tmp__013;
-			var __tmp__023;
-			var __tmp__103;
-			var __tmp__113;
-			var __tmp__123;
-			var __tmp__203;
-			var __tmp__213;
-			var __tmp__223;
-			__tmp__003 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__013 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__023 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__103 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__113 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__123 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__203 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__213 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__223 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst2._rotation00 = __tmp__003;
-			dst2._rotation01 = __tmp__013;
-			dst2._rotation02 = __tmp__023;
-			dst2._rotation10 = __tmp__103;
-			dst2._rotation11 = __tmp__113;
-			dst2._rotation12 = __tmp__123;
-			dst2._rotation20 = __tmp__203;
-			dst2._rotation21 = __tmp__213;
-			dst2._rotation22 = __tmp__223;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst2._positionX = __tmp__X1;
-			dst2._positionY = __tmp__Y1;
-			dst2._positionZ = __tmp__Z1;
-			dst2._positionX += src21._positionX;
-			dst2._positionY += src21._positionY;
-			dst2._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v = s.displacement;
-				v.x = dX;
-				v.y = dY;
-				v.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getMass() {
-		return this._mass;
-	}
-	getLocalInertia() {
-		var m = new oimo.common.Mat3();
-		var m1 = m;
-		m1.e00 = this._localInertia00;
-		m1.e01 = this._localInertia01;
-		m1.e02 = this._localInertia02;
-		m1.e10 = this._localInertia10;
-		m1.e11 = this._localInertia11;
-		m1.e12 = this._localInertia12;
-		m1.e20 = this._localInertia20;
-		m1.e21 = this._localInertia21;
-		m1.e22 = this._localInertia22;
-		return m;
-	}
-	getLocalInertiaTo(inertia) {
-		var m = inertia;
-		m.e00 = this._localInertia00;
-		m.e01 = this._localInertia01;
-		m.e02 = this._localInertia02;
-		m.e10 = this._localInertia10;
-		m.e11 = this._localInertia11;
-		m.e12 = this._localInertia12;
-		m.e20 = this._localInertia20;
-		m.e21 = this._localInertia21;
-		m.e22 = this._localInertia22;
-	}
-	getMassData() {
-		var md = new oimo.dynamics.rigidbody.MassData();
-		md.mass = this._mass;
-		var m = md.localInertia;
-		m.e00 = this._localInertia00;
-		m.e01 = this._localInertia01;
-		m.e02 = this._localInertia02;
-		m.e10 = this._localInertia10;
-		m.e11 = this._localInertia11;
-		m.e12 = this._localInertia12;
-		m.e20 = this._localInertia20;
-		m.e21 = this._localInertia21;
-		m.e22 = this._localInertia22;
-		return md;
-	}
-	getMassDataTo(massData) {
-		massData.mass = this._mass;
-		var m = massData.localInertia;
-		m.e00 = this._localInertia00;
-		m.e01 = this._localInertia01;
-		m.e02 = this._localInertia02;
-		m.e10 = this._localInertia10;
-		m.e11 = this._localInertia11;
-		m.e12 = this._localInertia12;
-		m.e20 = this._localInertia20;
-		m.e21 = this._localInertia21;
-		m.e22 = this._localInertia22;
-	}
-	setMassData(massData) {
-		this._mass = massData.mass;
-		var m = massData.localInertia;
-		this._localInertia00 = m.e00;
-		this._localInertia01 = m.e01;
-		this._localInertia02 = m.e02;
-		this._localInertia10 = m.e10;
-		this._localInertia11 = m.e11;
-		this._localInertia12 = m.e12;
-		this._localInertia20 = m.e20;
-		this._localInertia21 = m.e21;
-		this._localInertia22 = m.e22;
-		var d00 = this._localInertia11 * this._localInertia22 - this._localInertia12 * this._localInertia21;
-		var d01 = this._localInertia10 * this._localInertia22 - this._localInertia12 * this._localInertia20;
-		var d02 = this._localInertia10 * this._localInertia21 - this._localInertia11 * this._localInertia20;
-		var det = this._localInertia00 * d00 - this._localInertia01 * d01 + this._localInertia02 * d02;
-		if(this._mass > 0 && det > 0 && this._type == 0) {
-			this._invMass = 1 / this._mass;
-			var d001 = this._localInertia11 * this._localInertia22 - this._localInertia12 * this._localInertia21;
-			var d011 = this._localInertia10 * this._localInertia22 - this._localInertia12 * this._localInertia20;
-			var d021 = this._localInertia10 * this._localInertia21 - this._localInertia11 * this._localInertia20;
-			var d10 = this._localInertia01 * this._localInertia22 - this._localInertia02 * this._localInertia21;
-			var d11 = this._localInertia00 * this._localInertia22 - this._localInertia02 * this._localInertia20;
-			var d12 = this._localInertia00 * this._localInertia21 - this._localInertia01 * this._localInertia20;
-			var d20 = this._localInertia01 * this._localInertia12 - this._localInertia02 * this._localInertia11;
-			var d21 = this._localInertia00 * this._localInertia12 - this._localInertia02 * this._localInertia10;
-			var d22 = this._localInertia00 * this._localInertia11 - this._localInertia01 * this._localInertia10;
-			var d = this._localInertia00 * d001 - this._localInertia01 * d011 + this._localInertia02 * d021;
-			if(d < -1e-32 || d > 1e-32) {
-				d = 1 / d;
-			}
-			this._invLocalInertia00 = d001 * d;
-			this._invLocalInertia01 = -d10 * d;
-			this._invLocalInertia02 = d20 * d;
-			this._invLocalInertia10 = -d011 * d;
-			this._invLocalInertia11 = d11 * d;
-			this._invLocalInertia12 = -d21 * d;
-			this._invLocalInertia20 = d021 * d;
-			this._invLocalInertia21 = -d12 * d;
-			this._invLocalInertia22 = d22 * d;
-			this._invLocalInertiaWithoutRotFactor00 = this._invLocalInertia00;
-			this._invLocalInertiaWithoutRotFactor01 = this._invLocalInertia01;
-			this._invLocalInertiaWithoutRotFactor02 = this._invLocalInertia02;
-			this._invLocalInertiaWithoutRotFactor10 = this._invLocalInertia10;
-			this._invLocalInertiaWithoutRotFactor11 = this._invLocalInertia11;
-			this._invLocalInertiaWithoutRotFactor12 = this._invLocalInertia12;
-			this._invLocalInertiaWithoutRotFactor20 = this._invLocalInertia20;
-			this._invLocalInertiaWithoutRotFactor21 = this._invLocalInertia21;
-			this._invLocalInertiaWithoutRotFactor22 = this._invLocalInertia22;
-			this._invLocalInertia00 = this._invLocalInertiaWithoutRotFactor00 * this._rotFactor.x;
-			this._invLocalInertia01 = this._invLocalInertiaWithoutRotFactor01 * this._rotFactor.x;
-			this._invLocalInertia02 = this._invLocalInertiaWithoutRotFactor02 * this._rotFactor.x;
-			this._invLocalInertia10 = this._invLocalInertiaWithoutRotFactor10 * this._rotFactor.y;
-			this._invLocalInertia11 = this._invLocalInertiaWithoutRotFactor11 * this._rotFactor.y;
-			this._invLocalInertia12 = this._invLocalInertiaWithoutRotFactor12 * this._rotFactor.y;
-			this._invLocalInertia20 = this._invLocalInertiaWithoutRotFactor20 * this._rotFactor.z;
-			this._invLocalInertia21 = this._invLocalInertiaWithoutRotFactor21 * this._rotFactor.z;
-			this._invLocalInertia22 = this._invLocalInertiaWithoutRotFactor22 * this._rotFactor.z;
-		} else {
-			this._invMass = 0;
-			this._invLocalInertia00 = 0;
-			this._invLocalInertia01 = 0;
-			this._invLocalInertia02 = 0;
-			this._invLocalInertia10 = 0;
-			this._invLocalInertia11 = 0;
-			this._invLocalInertia12 = 0;
-			this._invLocalInertia20 = 0;
-			this._invLocalInertia21 = 0;
-			this._invLocalInertia22 = 0;
-			this._invLocalInertiaWithoutRotFactor00 = 0;
-			this._invLocalInertiaWithoutRotFactor01 = 0;
-			this._invLocalInertiaWithoutRotFactor02 = 0;
-			this._invLocalInertiaWithoutRotFactor10 = 0;
-			this._invLocalInertiaWithoutRotFactor11 = 0;
-			this._invLocalInertiaWithoutRotFactor12 = 0;
-			this._invLocalInertiaWithoutRotFactor20 = 0;
-			this._invLocalInertiaWithoutRotFactor21 = 0;
-			this._invLocalInertiaWithoutRotFactor22 = 0;
-			if(this._type == 0) {
-				this._type = 1;
-			}
-		}
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-		__tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-		__tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-		__tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-		__tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-		__tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-		__tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-		__tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-		__tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-		this._invInertia00 = __tmp__00;
-		this._invInertia01 = __tmp__01;
-		this._invInertia02 = __tmp__02;
-		this._invInertia10 = __tmp__10;
-		this._invInertia11 = __tmp__11;
-		this._invInertia12 = __tmp__12;
-		this._invInertia20 = __tmp__20;
-		this._invInertia21 = __tmp__21;
-		this._invInertia22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-		__tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-		__tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-		__tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-		__tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-		__tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-		__tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-		__tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-		__tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-		this._invInertia00 = __tmp__001;
-		this._invInertia01 = __tmp__011;
-		this._invInertia02 = __tmp__021;
-		this._invInertia10 = __tmp__101;
-		this._invInertia11 = __tmp__111;
-		this._invInertia12 = __tmp__121;
-		this._invInertia20 = __tmp__201;
-		this._invInertia21 = __tmp__211;
-		this._invInertia22 = __tmp__221;
-		this._invInertia00 *= this._rotFactor.x;
-		this._invInertia01 *= this._rotFactor.x;
-		this._invInertia02 *= this._rotFactor.x;
-		this._invInertia10 *= this._rotFactor.y;
-		this._invInertia11 *= this._rotFactor.y;
-		this._invInertia12 *= this._rotFactor.y;
-		this._invInertia20 *= this._rotFactor.z;
-		this._invInertia21 *= this._rotFactor.z;
-		this._invInertia22 *= this._rotFactor.z;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getRotationFactor() {
-		var _this = this._rotFactor;
-		return new oimo.common.Vec3(_this.x,_this.y,_this.z);
-	}
-	setRotationFactor(rotationFactor) {
-		var _this = this._rotFactor;
-		_this.x = rotationFactor.x;
-		_this.y = rotationFactor.y;
-		_this.z = rotationFactor.z;
-		var __tmp__00;
-		var __tmp__01;
-		var __tmp__02;
-		var __tmp__10;
-		var __tmp__11;
-		var __tmp__12;
-		var __tmp__20;
-		var __tmp__21;
-		var __tmp__22;
-		__tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
-		__tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
-		__tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
-		__tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
-		__tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
-		__tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
-		__tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
-		__tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
-		__tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
-		this._invInertia00 = __tmp__00;
-		this._invInertia01 = __tmp__01;
-		this._invInertia02 = __tmp__02;
-		this._invInertia10 = __tmp__10;
-		this._invInertia11 = __tmp__11;
-		this._invInertia12 = __tmp__12;
-		this._invInertia20 = __tmp__20;
-		this._invInertia21 = __tmp__21;
-		this._invInertia22 = __tmp__22;
-		var __tmp__001;
-		var __tmp__011;
-		var __tmp__021;
-		var __tmp__101;
-		var __tmp__111;
-		var __tmp__121;
-		var __tmp__201;
-		var __tmp__211;
-		var __tmp__221;
-		__tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
-		__tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
-		__tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
-		__tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
-		__tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
-		__tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
-		__tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
-		__tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
-		__tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
-		this._invInertia00 = __tmp__001;
-		this._invInertia01 = __tmp__011;
-		this._invInertia02 = __tmp__021;
-		this._invInertia10 = __tmp__101;
-		this._invInertia11 = __tmp__111;
-		this._invInertia12 = __tmp__121;
-		this._invInertia20 = __tmp__201;
-		this._invInertia21 = __tmp__211;
-		this._invInertia22 = __tmp__221;
-		this._invInertia00 *= this._rotFactor.x;
-		this._invInertia01 *= this._rotFactor.x;
-		this._invInertia02 *= this._rotFactor.x;
-		this._invInertia10 *= this._rotFactor.y;
-		this._invInertia11 *= this._rotFactor.y;
-		this._invInertia12 *= this._rotFactor.y;
-		this._invInertia20 *= this._rotFactor.z;
-		this._invInertia21 *= this._rotFactor.z;
-		this._invInertia22 *= this._rotFactor.z;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getLinearVelocity() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._velX;
-		v1.y = this._velY;
-		v1.z = this._velZ;
-		return v;
-	}
-	getLinearVelocityTo(linearVelocity) {
-		var v = linearVelocity;
-		v.x = this._velX;
-		v.y = this._velY;
-		v.z = this._velZ;
-	}
-	setLinearVelocity(linearVelocity) {
-		if(this._type == 1) {
-			this._velX = 0;
-			this._velY = 0;
-			this._velZ = 0;
-		} else {
-			var v = linearVelocity;
-			this._velX = v.x;
-			this._velY = v.y;
-			this._velZ = v.z;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getAngularVelocity() {
-		var v = new oimo.common.Vec3();
-		var v1 = v;
-		v1.x = this._angVelX;
-		v1.y = this._angVelY;
-		v1.z = this._angVelZ;
-		return v;
-	}
-	getAngularVelocityTo(angularVelocity) {
-		var v = angularVelocity;
-		v.x = this._velX;
-		v.y = this._velY;
-		v.z = this._velZ;
-	}
-	setAngularVelocity(angularVelocity) {
-		if(this._type == 1) {
-			this._angVelX = 0;
-			this._angVelY = 0;
-			this._angVelZ = 0;
-		} else {
-			var v = angularVelocity;
-			this._angVelX = v.x;
-			this._angVelY = v.y;
-			this._angVelZ = v.z;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	addLinearVelocity(linearVelocityChange) {
-		if(this._type != 1) {
-			var d;
-			var dX;
-			var dY;
-			var dZ;
-			var v = linearVelocityChange;
-			dX = v.x;
-			dY = v.y;
-			dZ = v.z;
-			this._velX += dX;
-			this._velY += dY;
-			this._velZ += dZ;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	addAngularVelocity(angularVelocityChange) {
-		if(this._type != 1) {
-			var d;
-			var dX;
-			var dY;
-			var dZ;
-			var v = angularVelocityChange;
-			dX = v.x;
-			dY = v.y;
-			dZ = v.z;
-			this._angVelX += dX;
-			this._angVelY += dY;
-			this._angVelZ += dZ;
-		}
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	applyImpulse(impulse,positionInWorld) {
-		var imp;
-		var impX;
-		var impY;
-		var impZ;
-		var v = impulse;
-		impX = v.x;
-		impY = v.y;
-		impZ = v.z;
-		this._velX += impX * this._invMass;
-		this._velY += impY * this._invMass;
-		this._velZ += impZ * this._invMass;
-		var aimp;
-		var aimpX;
-		var aimpY;
-		var aimpZ;
-		var pos;
-		var posX;
-		var posY;
-		var posZ;
-		var v1 = positionInWorld;
-		posX = v1.x;
-		posY = v1.y;
-		posZ = v1.z;
-		posX -= this._transform._positionX;
-		posY -= this._transform._positionY;
-		posZ -= this._transform._positionZ;
-		aimpX = posY * impZ - posZ * impY;
-		aimpY = posZ * impX - posX * impZ;
-		aimpZ = posX * impY - posY * impX;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._invInertia00 * aimpX + this._invInertia01 * aimpY + this._invInertia02 * aimpZ;
-		__tmp__Y = this._invInertia10 * aimpX + this._invInertia11 * aimpY + this._invInertia12 * aimpZ;
-		__tmp__Z = this._invInertia20 * aimpX + this._invInertia21 * aimpY + this._invInertia22 * aimpZ;
-		aimpX = __tmp__X;
-		aimpY = __tmp__Y;
-		aimpZ = __tmp__Z;
-		this._angVelX += aimpX;
-		this._angVelY += aimpY;
-		this._angVelZ += aimpZ;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	applyLinearImpulse(impulse) {
-		var imp;
-		var impX;
-		var impY;
-		var impZ;
-		var v = impulse;
-		impX = v.x;
-		impY = v.y;
-		impZ = v.z;
-		this._velX += impX * this._invMass;
-		this._velY += impY * this._invMass;
-		this._velZ += impZ * this._invMass;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	applyAngularImpulse(impulse) {
-		var imp;
-		var impX;
-		var impY;
-		var impZ;
-		var v = impulse;
-		impX = v.x;
-		impY = v.y;
-		impZ = v.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._invInertia00 * impX + this._invInertia01 * impY + this._invInertia02 * impZ;
-		__tmp__Y = this._invInertia10 * impX + this._invInertia11 * impY + this._invInertia12 * impZ;
-		__tmp__Z = this._invInertia20 * impX + this._invInertia21 * impY + this._invInertia22 * impZ;
-		impX = __tmp__X;
-		impY = __tmp__Y;
-		impZ = __tmp__Z;
-		this._angVelX += impX;
-		this._angVelY += impY;
-		this._angVelZ += impZ;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	applyForce(force,positionInWorld) {
-		var iforce;
-		var iforceX;
-		var iforceY;
-		var iforceZ;
-		var v = force;
-		iforceX = v.x;
-		iforceY = v.y;
-		iforceZ = v.z;
-		this._forceX += iforceX;
-		this._forceY += iforceY;
-		this._forceZ += iforceZ;
-		var itorque;
-		var itorqueX;
-		var itorqueY;
-		var itorqueZ;
-		var pos;
-		var posX;
-		var posY;
-		var posZ;
-		var v1 = positionInWorld;
-		posX = v1.x;
-		posY = v1.y;
-		posZ = v1.z;
-		posX -= this._transform._positionX;
-		posY -= this._transform._positionY;
-		posZ -= this._transform._positionZ;
-		itorqueX = posY * iforceZ - posZ * iforceY;
-		itorqueY = posZ * iforceX - posX * iforceZ;
-		itorqueZ = posX * iforceY - posY * iforceX;
-		this._torqueX += itorqueX;
-		this._torqueY += itorqueY;
-		this._torqueZ += itorqueZ;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	applyForceToCenter(force) {
-		var iforce;
-		var iforceX;
-		var iforceY;
-		var iforceZ;
-		var v = force;
-		iforceX = v.x;
-		iforceY = v.y;
-		iforceZ = v.z;
-		this._forceX += iforceX;
-		this._forceY += iforceY;
-		this._forceZ += iforceZ;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	applyTorque(torque) {
-		var itorque;
-		var itorqueX;
-		var itorqueY;
-		var itorqueZ;
-		var v = torque;
-		itorqueX = v.x;
-		itorqueY = v.y;
-		itorqueZ = v.z;
-		this._torqueX += itorqueX;
-		this._torqueY += itorqueY;
-		this._torqueZ += itorqueZ;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getLinearContactImpulse() {
-		var res = new oimo.common.Vec3();
-		var v = res;
-		v.x = this._linearContactImpulseX;
-		v.y = this._linearContactImpulseY;
-		v.z = this._linearContactImpulseZ;
-		return res;
-	}
-	getLinearContactImpulseTo(linearContactImpulse) {
-		var v = linearContactImpulse;
-		v.x = this._linearContactImpulseX;
-		v.y = this._linearContactImpulseY;
-		v.z = this._linearContactImpulseZ;
-	}
-	getAngularContactImpulse() {
-		var res = new oimo.common.Vec3();
-		var v = res;
-		v.x = this._angularContactImpulseX;
-		v.y = this._angularContactImpulseY;
-		v.z = this._angularContactImpulseZ;
-		return res;
-	}
-	getAngularContactImpulseTo(angularContactImpulse) {
-		var v = angularContactImpulse;
-		v.x = this._angularContactImpulseX;
-		v.y = this._angularContactImpulseY;
-		v.z = this._angularContactImpulseZ;
-	}
-	getGravityScale() {
-		return this._gravityScale;
-	}
-	setGravityScale(gravityScale) {
-		this._gravityScale = gravityScale;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getLocalPoint(worldPoint) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldPoint;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		vX -= this._transform._positionX;
-		vY -= this._transform._positionY;
-		vZ -= this._transform._positionZ;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._transform._rotation00 * vX + this._transform._rotation10 * vY + this._transform._rotation20 * vZ;
-		__tmp__Y = this._transform._rotation01 * vX + this._transform._rotation11 * vY + this._transform._rotation21 * vZ;
-		__tmp__Z = this._transform._rotation02 * vX + this._transform._rotation12 * vY + this._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var res = new oimo.common.Vec3();
-		var v2 = res;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		return res;
-	}
-	getLocalPointTo(worldPoint,localPoint) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldPoint;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		vX -= this._transform._positionX;
-		vY -= this._transform._positionY;
-		vZ -= this._transform._positionZ;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._transform._rotation00 * vX + this._transform._rotation10 * vY + this._transform._rotation20 * vZ;
-		__tmp__Y = this._transform._rotation01 * vX + this._transform._rotation11 * vY + this._transform._rotation21 * vZ;
-		__tmp__Z = this._transform._rotation02 * vX + this._transform._rotation12 * vY + this._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var v2 = localPoint;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-	}
-	getLocalVector(worldVector) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldVector;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._transform._rotation00 * vX + this._transform._rotation10 * vY + this._transform._rotation20 * vZ;
-		__tmp__Y = this._transform._rotation01 * vX + this._transform._rotation11 * vY + this._transform._rotation21 * vZ;
-		__tmp__Z = this._transform._rotation02 * vX + this._transform._rotation12 * vY + this._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var res = new oimo.common.Vec3();
-		var v2 = res;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		return res;
-	}
-	getLocalVectorTo(worldVector,localVector) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = worldVector;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._transform._rotation00 * vX + this._transform._rotation10 * vY + this._transform._rotation20 * vZ;
-		__tmp__Y = this._transform._rotation01 * vX + this._transform._rotation11 * vY + this._transform._rotation21 * vZ;
-		__tmp__Z = this._transform._rotation02 * vX + this._transform._rotation12 * vY + this._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var v2 = localVector;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-	}
-	getWorldPoint(localPoint) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = localPoint;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._transform._rotation00 * vX + this._transform._rotation01 * vY + this._transform._rotation02 * vZ;
-		__tmp__Y = this._transform._rotation10 * vX + this._transform._rotation11 * vY + this._transform._rotation12 * vZ;
-		__tmp__Z = this._transform._rotation20 * vX + this._transform._rotation21 * vY + this._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		vX += this._transform._positionX;
-		vY += this._transform._positionY;
-		vZ += this._transform._positionZ;
-		var res = new oimo.common.Vec3();
-		var v2 = res;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		return res;
-	}
-	getWorldPointTo(localPoint,worldPoint) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = localPoint;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._transform._rotation00 * vX + this._transform._rotation01 * vY + this._transform._rotation02 * vZ;
-		__tmp__Y = this._transform._rotation10 * vX + this._transform._rotation11 * vY + this._transform._rotation12 * vZ;
-		__tmp__Z = this._transform._rotation20 * vX + this._transform._rotation21 * vY + this._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		vX += this._transform._positionX;
-		vY += this._transform._positionY;
-		vZ += this._transform._positionZ;
-		var v2 = worldPoint;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-	}
-	getWorldVector(localVector) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = localVector;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._transform._rotation00 * vX + this._transform._rotation01 * vY + this._transform._rotation02 * vZ;
-		__tmp__Y = this._transform._rotation10 * vX + this._transform._rotation11 * vY + this._transform._rotation12 * vZ;
-		__tmp__Z = this._transform._rotation20 * vX + this._transform._rotation21 * vY + this._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var res = new oimo.common.Vec3();
-		var v2 = res;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-		return res;
-	}
-	getWorldVectorTo(localVector,worldVector) {
-		var v;
-		var vX;
-		var vY;
-		var vZ;
-		var v1 = localVector;
-		vX = v1.x;
-		vY = v1.y;
-		vZ = v1.z;
-		var __tmp__X;
-		var __tmp__Y;
-		var __tmp__Z;
-		__tmp__X = this._transform._rotation00 * vX + this._transform._rotation01 * vY + this._transform._rotation02 * vZ;
-		__tmp__Y = this._transform._rotation10 * vX + this._transform._rotation11 * vY + this._transform._rotation12 * vZ;
-		__tmp__Z = this._transform._rotation20 * vX + this._transform._rotation21 * vY + this._transform._rotation22 * vZ;
-		vX = __tmp__X;
-		vY = __tmp__Y;
-		vZ = __tmp__Z;
-		var v2 = worldVector;
-		v2.x = vX;
-		v2.y = vY;
-		v2.z = vZ;
-	}
-	getNumShapes() {
-		return this._numShapes;
-	}
-	getShapeList() {
-		return this._shapeList;
-	}
-	getNumContectLinks() {
-		return this._numContactLinks;
-	}
-	getContactLinkList() {
-		return this._contactLinkList;
-	}
-	getNumJointLinks() {
-		return this._numJointLinks;
-	}
-	getJointLinkList() {
-		return this._jointLinkList;
-	}
-	addShape(shape) {
-		if(this._shapeList == null) {
-			this._shapeList = shape;
-			this._shapeListLast = shape;
-		} else {
-			this._shapeListLast._next = shape;
-			shape._prev = this._shapeListLast;
-			this._shapeListLast = shape;
-		}
-		this._numShapes++;
-		shape._rigidBody = this;
-		if(this._world != null) {
-			var _this = this._world;
-			shape._proxy = _this._broadPhase.createProxy(shape,shape._aabb);
-			shape._id = _this._shapeIdCount++;
-			_this._numShapes++;
-		}
-		this.updateMass();
-		var s = this._shapeList;
-		while(s != null) {
-			var n = s._next;
-			var dst = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__00;
-			var __tmp__01;
-			var __tmp__02;
-			var __tmp__10;
-			var __tmp__11;
-			var __tmp__12;
-			var __tmp__20;
-			var __tmp__21;
-			var __tmp__22;
-			__tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst._rotation00 = __tmp__00;
-			dst._rotation01 = __tmp__01;
-			dst._rotation02 = __tmp__02;
-			dst._rotation10 = __tmp__10;
-			dst._rotation11 = __tmp__11;
-			dst._rotation12 = __tmp__12;
-			dst._rotation20 = __tmp__20;
-			dst._rotation21 = __tmp__21;
-			dst._rotation22 = __tmp__22;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst._positionX = __tmp__X;
-			dst._positionY = __tmp__Y;
-			dst._positionZ = __tmp__Z;
-			dst._positionX += src2._positionX;
-			dst._positionY += src2._positionY;
-			dst._positionZ += src2._positionZ;
-			var dst1 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__001;
-			var __tmp__011;
-			var __tmp__021;
-			var __tmp__101;
-			var __tmp__111;
-			var __tmp__121;
-			var __tmp__201;
-			var __tmp__211;
-			var __tmp__221;
-			__tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst1._rotation00 = __tmp__001;
-			dst1._rotation01 = __tmp__011;
-			dst1._rotation02 = __tmp__021;
-			dst1._rotation10 = __tmp__101;
-			dst1._rotation11 = __tmp__111;
-			dst1._rotation12 = __tmp__121;
-			dst1._rotation20 = __tmp__201;
-			dst1._rotation21 = __tmp__211;
-			dst1._rotation22 = __tmp__221;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst1._positionX = __tmp__X1;
-			dst1._positionY = __tmp__Y1;
-			dst1._positionZ = __tmp__Z1;
-			dst1._positionX += src21._positionX;
-			dst1._positionY += src21._positionY;
-			dst1._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v = s.displacement;
-				v.x = dX;
-				v.y = dY;
-				v.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n;
-		}
-	}
-	removeShape(shape) {
-		var prev = shape._prev;
-		var next = shape._next;
-		if(prev != null) {
-			prev._next = next;
-		}
-		if(next != null) {
-			next._prev = prev;
-		}
-		if(shape == this._shapeList) {
-			this._shapeList = this._shapeList._next;
-		}
-		if(shape == this._shapeListLast) {
-			this._shapeListLast = this._shapeListLast._prev;
-		}
-		shape._next = null;
-		shape._prev = null;
-		this._numShapes--;
-		shape._rigidBody = null;
-		if(this._world != null) {
-			var _this = this._world;
-			_this._broadPhase.destroyProxy(shape._proxy);
-			shape._proxy = null;
-			shape._id = -1;
-			var cl = shape._rigidBody._contactLinkList;
-			while(cl != null) {
-				var n = cl._next;
-				var c = cl._contact;
-				if(c._s1 == shape || c._s2 == shape) {
-					var _this1 = cl._other;
-					_this1._sleeping = false;
-					_this1._sleepTime = 0;
-					var _this2 = _this._contactManager;
-					var prev1 = c._prev;
-					var next1 = c._next;
-					if(prev1 != null) {
-						prev1._next = next1;
-					}
-					if(next1 != null) {
-						next1._prev = prev1;
-					}
-					if(c == _this2._contactList) {
-						_this2._contactList = _this2._contactList._next;
-					}
-					if(c == _this2._contactListLast) {
-						_this2._contactListLast = _this2._contactListLast._prev;
-					}
-					c._next = null;
-					c._prev = null;
-					if(c._touching) {
-						var cc1 = c._s1._contactCallback;
-						var cc2 = c._s2._contactCallback;
-						if(cc1 == cc2) {
-							cc2 = null;
-						}
-						if(cc1 != null) {
-							cc1.endContact(c);
-						}
-						if(cc2 != null) {
-							cc2.endContact(c);
-						}
-					}
-					var prev2 = c._link1._prev;
-					var next2 = c._link1._next;
-					if(prev2 != null) {
-						prev2._next = next2;
-					}
-					if(next2 != null) {
-						next2._prev = prev2;
-					}
-					if(c._link1 == c._b1._contactLinkList) {
-						c._b1._contactLinkList = c._b1._contactLinkList._next;
-					}
-					if(c._link1 == c._b1._contactLinkListLast) {
-						c._b1._contactLinkListLast = c._b1._contactLinkListLast._prev;
-					}
-					c._link1._next = null;
-					c._link1._prev = null;
-					var prev3 = c._link2._prev;
-					var next3 = c._link2._next;
-					if(prev3 != null) {
-						prev3._next = next3;
-					}
-					if(next3 != null) {
-						next3._prev = prev3;
-					}
-					if(c._link2 == c._b2._contactLinkList) {
-						c._b2._contactLinkList = c._b2._contactLinkList._next;
-					}
-					if(c._link2 == c._b2._contactLinkListLast) {
-						c._b2._contactLinkListLast = c._b2._contactLinkListLast._prev;
-					}
-					c._link2._next = null;
-					c._link2._prev = null;
-					c._b1._numContactLinks--;
-					c._b2._numContactLinks--;
-					c._link1._other = null;
-					c._link2._other = null;
-					c._link1._contact = null;
-					c._link2._contact = null;
-					c._s1 = null;
-					c._s2 = null;
-					c._b1 = null;
-					c._b2 = null;
-					c._touching = false;
-					c._cachedDetectorData._clear();
-					c._manifold._clear();
-					c._detector = null;
-					var _this3 = c._contactConstraint;
-					_this3._s1 = null;
-					_this3._s2 = null;
-					_this3._b1 = null;
-					_this3._b2 = null;
-					_this3._tf1 = null;
-					_this3._tf2 = null;
-					c._next = _this2._contactPool;
-					_this2._contactPool = c;
-					_this2._numContacts--;
-				}
-				cl = n;
-			}
-			_this._numShapes--;
-		}
-		this.updateMass();
-		var s = this._shapeList;
-		while(s != null) {
-			var n1 = s._next;
-			var dst = s._ptransform;
-			var src1 = s._localTransform;
-			var src2 = this._ptransform;
-			var __tmp__00;
-			var __tmp__01;
-			var __tmp__02;
-			var __tmp__10;
-			var __tmp__11;
-			var __tmp__12;
-			var __tmp__20;
-			var __tmp__21;
-			var __tmp__22;
-			__tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-			__tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-			__tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-			__tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-			__tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-			__tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-			__tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-			__tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-			__tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-			dst._rotation00 = __tmp__00;
-			dst._rotation01 = __tmp__01;
-			dst._rotation02 = __tmp__02;
-			dst._rotation10 = __tmp__10;
-			dst._rotation11 = __tmp__11;
-			dst._rotation12 = __tmp__12;
-			dst._rotation20 = __tmp__20;
-			dst._rotation21 = __tmp__21;
-			dst._rotation22 = __tmp__22;
-			var __tmp__X;
-			var __tmp__Y;
-			var __tmp__Z;
-			__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-			__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-			__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-			dst._positionX = __tmp__X;
-			dst._positionY = __tmp__Y;
-			dst._positionZ = __tmp__Z;
-			dst._positionX += src2._positionX;
-			dst._positionY += src2._positionY;
-			dst._positionZ += src2._positionZ;
-			var dst1 = s._transform;
-			var src11 = s._localTransform;
-			var src21 = this._transform;
-			var __tmp__001;
-			var __tmp__011;
-			var __tmp__021;
-			var __tmp__101;
-			var __tmp__111;
-			var __tmp__121;
-			var __tmp__201;
-			var __tmp__211;
-			var __tmp__221;
-			__tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-			__tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-			__tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-			__tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-			__tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-			__tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-			__tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-			__tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-			__tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-			dst1._rotation00 = __tmp__001;
-			dst1._rotation01 = __tmp__011;
-			dst1._rotation02 = __tmp__021;
-			dst1._rotation10 = __tmp__101;
-			dst1._rotation11 = __tmp__111;
-			dst1._rotation12 = __tmp__121;
-			dst1._rotation20 = __tmp__201;
-			dst1._rotation21 = __tmp__211;
-			dst1._rotation22 = __tmp__221;
-			var __tmp__X1;
-			var __tmp__Y1;
-			var __tmp__Z1;
-			__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-			__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-			__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-			dst1._positionX = __tmp__X1;
-			dst1._positionY = __tmp__Y1;
-			dst1._positionZ = __tmp__Z1;
-			dst1._positionX += src21._positionX;
-			dst1._positionY += src21._positionY;
-			dst1._positionZ += src21._positionZ;
-			var min;
-			var minX;
-			var minY;
-			var minZ;
-			var max;
-			var maxX;
-			var maxY;
-			var maxZ;
-			s._geom._computeAabb(s._aabb,s._ptransform);
-			minX = s._aabb._minX;
-			minY = s._aabb._minY;
-			minZ = s._aabb._minZ;
-			maxX = s._aabb._maxX;
-			maxY = s._aabb._maxY;
-			maxZ = s._aabb._maxZ;
-			s._geom._computeAabb(s._aabb,s._transform);
-			s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-			s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-			s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-			s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-			s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-			s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-			if(s._proxy != null) {
-				var d;
-				var dX;
-				var dY;
-				var dZ;
-				dX = s._transform._positionX - s._ptransform._positionX;
-				dY = s._transform._positionY - s._ptransform._positionY;
-				dZ = s._transform._positionZ - s._ptransform._positionZ;
-				var v = s.displacement;
-				v.x = dX;
-				v.y = dY;
-				v.z = dZ;
-				s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-			}
-			s = n1;
-		}
-	}
-	getType() {
-		return this._type;
-	}
-	setType(type) {
-		this._type = type;
-		this.updateMass();
-	}
-	wakeUp() {
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	sleep() {
-		this._sleeping = true;
-		this._sleepTime = 0;
-	}
-	isSleeping() {
-		return this._sleeping;
-	}
-	getSleepTime() {
-		return this._sleepTime;
-	}
-	setAutoSleep(autoSleepEnabled) {
-		this._autoSleep = autoSleepEnabled;
-		this._sleeping = false;
-		this._sleepTime = 0;
-	}
-	getLinearDamping() {
-		return this._linearDamping;
-	}
-	setLinearDamping(damping) {
-		this._linearDamping = damping;
-	}
-	getAngularDamping() {
-		return this._angularDamping;
-	}
-	setAngularDamping(damping) {
-		this._angularDamping = damping;
-	}
-	getPrev() {
-		return this._prev;
-	}
-	getNext() {
-		return this._next;
-	}
-}
-oimo.dynamics.rigidbody.RigidBodyConfig = class oimo_dynamics_rigidbody_RigidBodyConfig {
-	constructor() {
-		this.position = new oimo.common.Vec3();
-		this.rotation = new oimo.common.Mat3();
-		this.linearVelocity = new oimo.common.Vec3();
-		this.angularVelocity = new oimo.common.Vec3();
-		this.type = 0;
-		this.autoSleep = true;
-		this.linearDamping = 0;
-		this.angularDamping = 0;
-	}
-}
-oimo.dynamics.rigidbody.RigidBodyType = class oimo_dynamics_rigidbody_RigidBodyType {
-}
-oimo.dynamics.rigidbody.Shape = class oimo_dynamics_rigidbody_Shape {
-	constructor(config) {
-		this._id = -1;
-		this._localTransform = new oimo.common.Transform();
-		this._ptransform = new oimo.common.Transform();
-		this._transform = new oimo.common.Transform();
-		var v = config.position;
-		this._localTransform._positionX = v.x;
-		this._localTransform._positionY = v.y;
-		this._localTransform._positionZ = v.z;
-		var m = config.rotation;
-		this._localTransform._rotation00 = m.e00;
-		this._localTransform._rotation01 = m.e01;
-		this._localTransform._rotation02 = m.e02;
-		this._localTransform._rotation10 = m.e10;
-		this._localTransform._rotation11 = m.e11;
-		this._localTransform._rotation12 = m.e12;
-		this._localTransform._rotation20 = m.e20;
-		this._localTransform._rotation21 = m.e21;
-		this._localTransform._rotation22 = m.e22;
-		var dst = this._ptransform;
-		var src = this._localTransform;
-		dst._positionX = src._positionX;
-		dst._positionY = src._positionY;
-		dst._positionZ = src._positionZ;
-		dst._rotation00 = src._rotation00;
-		dst._rotation01 = src._rotation01;
-		dst._rotation02 = src._rotation02;
-		dst._rotation10 = src._rotation10;
-		dst._rotation11 = src._rotation11;
-		dst._rotation12 = src._rotation12;
-		dst._rotation20 = src._rotation20;
-		dst._rotation21 = src._rotation21;
-		dst._rotation22 = src._rotation22;
-		var dst1 = this._transform;
-		var src1 = this._localTransform;
-		dst1._positionX = src1._positionX;
-		dst1._positionY = src1._positionY;
-		dst1._positionZ = src1._positionZ;
-		dst1._rotation00 = src1._rotation00;
-		dst1._rotation01 = src1._rotation01;
-		dst1._rotation02 = src1._rotation02;
-		dst1._rotation10 = src1._rotation10;
-		dst1._rotation11 = src1._rotation11;
-		dst1._rotation12 = src1._rotation12;
-		dst1._rotation20 = src1._rotation20;
-		dst1._rotation21 = src1._rotation21;
-		dst1._rotation22 = src1._rotation22;
-		this._restitution = config.restitution;
-		this._friction = config.friction;
-		this._density = config.density;
-		this._geom = config.geometry;
-		this._collisionGroup = config.collisionGroup;
-		this._collisionMask = config.collisionMask;
-		this._contactCallback = config.contactCallback;
-		this._aabb = new oimo.collision.geometry.Aabb();
-		this._proxy = null;
-		this.displacement = new oimo.common.Vec3();
-	}
-	getFriction() {
-		return this._friction;
-	}
-	setFriction(friction) {
-		this._friction = friction;
-	}
-	getRestitution() {
-		return this._restitution;
-	}
-	setRestitution(restitution) {
-		this._restitution = restitution;
-	}
-	getLocalTransform() {
-		var _this = this._localTransform;
-		var tf = new oimo.common.Transform();
-		tf._positionX = _this._positionX;
-		tf._positionY = _this._positionY;
-		tf._positionZ = _this._positionZ;
-		tf._rotation00 = _this._rotation00;
-		tf._rotation01 = _this._rotation01;
-		tf._rotation02 = _this._rotation02;
-		tf._rotation10 = _this._rotation10;
-		tf._rotation11 = _this._rotation11;
-		tf._rotation12 = _this._rotation12;
-		tf._rotation20 = _this._rotation20;
-		tf._rotation21 = _this._rotation21;
-		tf._rotation22 = _this._rotation22;
-		return tf;
-	}
-	getLocalTransformTo(transform) {
-		var transform1 = this._localTransform;
-		transform._positionX = transform1._positionX;
-		transform._positionY = transform1._positionY;
-		transform._positionZ = transform1._positionZ;
-		transform._rotation00 = transform1._rotation00;
-		transform._rotation01 = transform1._rotation01;
-		transform._rotation02 = transform1._rotation02;
-		transform._rotation10 = transform1._rotation10;
-		transform._rotation11 = transform1._rotation11;
-		transform._rotation12 = transform1._rotation12;
-		transform._rotation20 = transform1._rotation20;
-		transform._rotation21 = transform1._rotation21;
-		transform._rotation22 = transform1._rotation22;
-	}
-	getTransform() {
-		var _this = this._transform;
-		var tf = new oimo.common.Transform();
-		tf._positionX = _this._positionX;
-		tf._positionY = _this._positionY;
-		tf._positionZ = _this._positionZ;
-		tf._rotation00 = _this._rotation00;
-		tf._rotation01 = _this._rotation01;
-		tf._rotation02 = _this._rotation02;
-		tf._rotation10 = _this._rotation10;
-		tf._rotation11 = _this._rotation11;
-		tf._rotation12 = _this._rotation12;
-		tf._rotation20 = _this._rotation20;
-		tf._rotation21 = _this._rotation21;
-		tf._rotation22 = _this._rotation22;
-		return tf;
-	}
-	getTransformTo(transform) {
-		var transform1 = this._transform;
-		transform._positionX = transform1._positionX;
-		transform._positionY = transform1._positionY;
-		transform._positionZ = transform1._positionZ;
-		transform._rotation00 = transform1._rotation00;
-		transform._rotation01 = transform1._rotation01;
-		transform._rotation02 = transform1._rotation02;
-		transform._rotation10 = transform1._rotation10;
-		transform._rotation11 = transform1._rotation11;
-		transform._rotation12 = transform1._rotation12;
-		transform._rotation20 = transform1._rotation20;
-		transform._rotation21 = transform1._rotation21;
-		transform._rotation22 = transform1._rotation22;
-	}
-	setLocalTransform(transform) {
-		var _this = this._localTransform;
-		_this._positionX = transform._positionX;
-		_this._positionY = transform._positionY;
-		_this._positionZ = transform._positionZ;
-		_this._rotation00 = transform._rotation00;
-		_this._rotation01 = transform._rotation01;
-		_this._rotation02 = transform._rotation02;
-		_this._rotation10 = transform._rotation10;
-		_this._rotation11 = transform._rotation11;
-		_this._rotation12 = transform._rotation12;
-		_this._rotation20 = transform._rotation20;
-		_this._rotation21 = transform._rotation21;
-		_this._rotation22 = transform._rotation22;
-		if(this._rigidBody != null) {
-			var _this1 = this._rigidBody;
-			_this1.updateMass();
-			var s = _this1._shapeList;
-			while(s != null) {
-				var n = s._next;
-				var dst = s._ptransform;
-				var src1 = s._localTransform;
-				var src2 = _this1._ptransform;
-				var __tmp__00;
-				var __tmp__01;
-				var __tmp__02;
-				var __tmp__10;
-				var __tmp__11;
-				var __tmp__12;
-				var __tmp__20;
-				var __tmp__21;
-				var __tmp__22;
-				__tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-				__tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-				__tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-				__tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-				__tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-				__tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-				__tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-				__tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-				__tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-				dst._rotation00 = __tmp__00;
-				dst._rotation01 = __tmp__01;
-				dst._rotation02 = __tmp__02;
-				dst._rotation10 = __tmp__10;
-				dst._rotation11 = __tmp__11;
-				dst._rotation12 = __tmp__12;
-				dst._rotation20 = __tmp__20;
-				dst._rotation21 = __tmp__21;
-				dst._rotation22 = __tmp__22;
-				var __tmp__X;
-				var __tmp__Y;
-				var __tmp__Z;
-				__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-				__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-				__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-				dst._positionX = __tmp__X;
-				dst._positionY = __tmp__Y;
-				dst._positionZ = __tmp__Z;
-				dst._positionX += src2._positionX;
-				dst._positionY += src2._positionY;
-				dst._positionZ += src2._positionZ;
-				var dst1 = s._transform;
-				var src11 = s._localTransform;
-				var src21 = _this1._transform;
-				var __tmp__001;
-				var __tmp__011;
-				var __tmp__021;
-				var __tmp__101;
-				var __tmp__111;
-				var __tmp__121;
-				var __tmp__201;
-				var __tmp__211;
-				var __tmp__221;
-				__tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-				__tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-				__tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-				__tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-				__tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-				__tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-				__tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-				__tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-				__tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-				dst1._rotation00 = __tmp__001;
-				dst1._rotation01 = __tmp__011;
-				dst1._rotation02 = __tmp__021;
-				dst1._rotation10 = __tmp__101;
-				dst1._rotation11 = __tmp__111;
-				dst1._rotation12 = __tmp__121;
-				dst1._rotation20 = __tmp__201;
-				dst1._rotation21 = __tmp__211;
-				dst1._rotation22 = __tmp__221;
-				var __tmp__X1;
-				var __tmp__Y1;
-				var __tmp__Z1;
-				__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-				__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-				__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-				dst1._positionX = __tmp__X1;
-				dst1._positionY = __tmp__Y1;
-				dst1._positionZ = __tmp__Z1;
-				dst1._positionX += src21._positionX;
-				dst1._positionY += src21._positionY;
-				dst1._positionZ += src21._positionZ;
-				var min;
-				var minX;
-				var minY;
-				var minZ;
-				var max;
-				var maxX;
-				var maxY;
-				var maxZ;
-				s._geom._computeAabb(s._aabb,s._ptransform);
-				minX = s._aabb._minX;
-				minY = s._aabb._minY;
-				minZ = s._aabb._minZ;
-				maxX = s._aabb._maxX;
-				maxY = s._aabb._maxY;
-				maxZ = s._aabb._maxZ;
-				s._geom._computeAabb(s._aabb,s._transform);
-				s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-				s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-				s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-				s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-				s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-				s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-				if(s._proxy != null) {
-					var d;
-					var dX;
-					var dY;
-					var dZ;
-					dX = s._transform._positionX - s._ptransform._positionX;
-					dY = s._transform._positionY - s._ptransform._positionY;
-					dZ = s._transform._positionZ - s._ptransform._positionZ;
-					var v = s.displacement;
-					v.x = dX;
-					v.y = dY;
-					v.z = dZ;
-					s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-				}
-				s = n;
-			}
-		}
-	}
-	getDensity() {
-		return this._density;
-	}
-	setDensity(density) {
-		this._density = density;
-		if(this._rigidBody != null) {
-			var _this = this._rigidBody;
-			_this.updateMass();
-			var s = _this._shapeList;
-			while(s != null) {
-				var n = s._next;
-				var dst = s._ptransform;
-				var src1 = s._localTransform;
-				var src2 = _this._ptransform;
-				var __tmp__00;
-				var __tmp__01;
-				var __tmp__02;
-				var __tmp__10;
-				var __tmp__11;
-				var __tmp__12;
-				var __tmp__20;
-				var __tmp__21;
-				var __tmp__22;
-				__tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
-				__tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
-				__tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
-				__tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
-				__tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
-				__tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
-				__tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
-				__tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
-				__tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
-				dst._rotation00 = __tmp__00;
-				dst._rotation01 = __tmp__01;
-				dst._rotation02 = __tmp__02;
-				dst._rotation10 = __tmp__10;
-				dst._rotation11 = __tmp__11;
-				dst._rotation12 = __tmp__12;
-				dst._rotation20 = __tmp__20;
-				dst._rotation21 = __tmp__21;
-				dst._rotation22 = __tmp__22;
-				var __tmp__X;
-				var __tmp__Y;
-				var __tmp__Z;
-				__tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
-				__tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
-				__tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
-				dst._positionX = __tmp__X;
-				dst._positionY = __tmp__Y;
-				dst._positionZ = __tmp__Z;
-				dst._positionX += src2._positionX;
-				dst._positionY += src2._positionY;
-				dst._positionZ += src2._positionZ;
-				var dst1 = s._transform;
-				var src11 = s._localTransform;
-				var src21 = _this._transform;
-				var __tmp__001;
-				var __tmp__011;
-				var __tmp__021;
-				var __tmp__101;
-				var __tmp__111;
-				var __tmp__121;
-				var __tmp__201;
-				var __tmp__211;
-				var __tmp__221;
-				__tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
-				__tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
-				__tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
-				__tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
-				__tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
-				__tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
-				__tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
-				__tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
-				__tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
-				dst1._rotation00 = __tmp__001;
-				dst1._rotation01 = __tmp__011;
-				dst1._rotation02 = __tmp__021;
-				dst1._rotation10 = __tmp__101;
-				dst1._rotation11 = __tmp__111;
-				dst1._rotation12 = __tmp__121;
-				dst1._rotation20 = __tmp__201;
-				dst1._rotation21 = __tmp__211;
-				dst1._rotation22 = __tmp__221;
-				var __tmp__X1;
-				var __tmp__Y1;
-				var __tmp__Z1;
-				__tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
-				__tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
-				__tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
-				dst1._positionX = __tmp__X1;
-				dst1._positionY = __tmp__Y1;
-				dst1._positionZ = __tmp__Z1;
-				dst1._positionX += src21._positionX;
-				dst1._positionY += src21._positionY;
-				dst1._positionZ += src21._positionZ;
-				var min;
-				var minX;
-				var minY;
-				var minZ;
-				var max;
-				var maxX;
-				var maxY;
-				var maxZ;
-				s._geom._computeAabb(s._aabb,s._ptransform);
-				minX = s._aabb._minX;
-				minY = s._aabb._minY;
-				minZ = s._aabb._minZ;
-				maxX = s._aabb._maxX;
-				maxY = s._aabb._maxY;
-				maxZ = s._aabb._maxZ;
-				s._geom._computeAabb(s._aabb,s._transform);
-				s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
-				s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
-				s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
-				s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
-				s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
-				s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
-				if(s._proxy != null) {
-					var d;
-					var dX;
-					var dY;
-					var dZ;
-					dX = s._transform._positionX - s._ptransform._positionX;
-					dY = s._transform._positionY - s._ptransform._positionY;
-					dZ = s._transform._positionZ - s._ptransform._positionZ;
-					var v = s.displacement;
-					v.x = dX;
-					v.y = dY;
-					v.z = dZ;
-					s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
-				}
-				s = n;
-			}
-		}
-	}
-	getAabb() {
-		return this._aabb.clone();
-	}
-	getAabbTo(aabb) {
-		aabb.copyFrom(this._aabb);
-	}
-	getGeometry() {
-		return this._geom;
-	}
-	getRigidBody() {
-		return this._rigidBody;
-	}
-	getCollisionGroup() {
-		return this._collisionGroup;
-	}
-	setCollisionGroup(collisionGroup) {
-		this._collisionGroup = collisionGroup;
-	}
-	getCollisionMask() {
-		return this._collisionMask;
-	}
-	setCollisionMask(collisionMask) {
-		this._collisionMask = collisionMask;
-	}
-	getContactCallback() {
-		return this._contactCallback;
-	}
-	setContactCallback(callback) {
-		this._contactCallback = callback;
-	}
-	getPrev() {
-		return this._prev;
-	}
-	getNext() {
-		return this._next;
-	}
-}
-oimo.dynamics.rigidbody.ShapeConfig = class oimo_dynamics_rigidbody_ShapeConfig {
-	constructor() {
-		this.position = new oimo.common.Vec3();
-		this.rotation = new oimo.common.Mat3();
-		this.friction = oimo.common.Setting.defaultFriction;
-		this.restitution = oimo.common.Setting.defaultRestitution;
-		this.density = oimo.common.Setting.defaultDensity;
-		this.collisionGroup = oimo.common.Setting.defaultCollisionGroup;
-		this.collisionMask = oimo.common.Setting.defaultCollisionMask;
-		this.geometry = null;
-		this.contactCallback = null;
-	}
-}
-if(!oimo.m) oimo.m = {};
-oimo.m.M = class oimo_m_M {
-}
-oimo.collision.broadphase.BroadPhaseType._BRUTE_FORCE = 1;
-oimo.collision.broadphase.BroadPhaseType._BVH = 2;
-oimo.collision.broadphase.BroadPhaseType.BRUTE_FORCE = 1;
-oimo.collision.broadphase.BroadPhaseType.BVH = 2;
-oimo.collision.broadphase.bvh.BvhInsertionStrategy.SIMPLE = 0;
-oimo.collision.broadphase.bvh.BvhInsertionStrategy.MINIMIZE_SURFACE_AREA = 1;
-oimo.collision.geometry.GeometryType._SPHERE = 0;
-oimo.collision.geometry.GeometryType._BOX = 1;
-oimo.collision.geometry.GeometryType._CYLINDER = 2;
-oimo.collision.geometry.GeometryType._CONE = 3;
-oimo.collision.geometry.GeometryType._CAPSULE = 4;
-oimo.collision.geometry.GeometryType._CONVEX_HULL = 5;
-oimo.collision.geometry.GeometryType._CONVEX_MIN = 0;
-oimo.collision.geometry.GeometryType._CONVEX_MAX = 5;
-oimo.collision.geometry.GeometryType.SPHERE = 0;
-oimo.collision.geometry.GeometryType.BOX = 1;
-oimo.collision.geometry.GeometryType.CYLINDER = 2;
-oimo.collision.geometry.GeometryType.CONE = 3;
-oimo.collision.geometry.GeometryType.CAPSULE = 4;
-oimo.collision.geometry.GeometryType.CONVEX_HULL = 5;
-oimo.collision.narrowphase.detector.BoxBoxDetector.EDGE_BIAS_MULT = 1.0;
-oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.OK = 0;
-oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.INVALID_TRIANGLE = 1;
-oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.NO_ADJACENT_PAIR_INDEX = 2;
-oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.NO_ADJACENT_TRIANGLE = 3;
-oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.EDGE_LOOP_BROKEN = 4;
-oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.NO_OUTER_TRIANGLE = 5;
-oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.TRIANGLE_INVISIBLE = 6;
-oimo.collision.narrowphase.detector.gjkepa.EpaTriangle.count = 0;
-oimo.common.Vec3.numCreations = 0;
-oimo.common.Setting.defaultFriction = 0.2;
-oimo.common.Setting.defaultRestitution = 0.2;
-oimo.common.Setting.defaultDensity = 1;
-oimo.common.Setting.defaultCollisionGroup = 1;
-oimo.common.Setting.defaultCollisionMask = 1;
-oimo.common.Setting.maxTranslationPerStep = 20;
-oimo.common.Setting.maxRotationPerStep = 3.14159265358979;
-oimo.common.Setting.bvhProxyPadding = 0.1;
-oimo.common.Setting.bvhIncrementalCollisionThreshold = 0.45;
-oimo.common.Setting.defaultGJKMargin = 0.05;
-oimo.common.Setting.enableGJKCaching = true;
-oimo.common.Setting.maxEPAVertices = 128;
-oimo.common.Setting.maxEPAPolyhedronFaces = 128;
-oimo.common.Setting.contactEnableBounceThreshold = 0.5;
-oimo.common.Setting.velocityBaumgarte = 0.2;
-oimo.common.Setting.positionSplitImpulseBaumgarte = 0.4;
-oimo.common.Setting.positionNgsBaumgarte = 1.0;
-oimo.common.Setting.contactUseAlternativePositionCorrectionAlgorithmDepthThreshold = 0.05;
-oimo.common.Setting.defaultContactPositionCorrectionAlgorithm = 0;
-oimo.common.Setting.alternativeContactPositionCorrectionAlgorithm = 1;
-oimo.common.Setting.contactPersistenceThreshold = 0.05;
-oimo.common.Setting.maxManifoldPoints = 4;
-oimo.common.Setting.defaultJointConstraintSolverType = 0;
-oimo.common.Setting.defaultJointPositionCorrectionAlgorithm = 0;
-oimo.common.Setting.jointWarmStartingFactorForBaungarte = 0.8;
-oimo.common.Setting.jointWarmStartingFactor = 0.95;
-oimo.common.Setting.minSpringDamperDampingRatio = 1e-6;
-oimo.common.Setting.minRagdollMaxSwingAngle = 1e-6;
-oimo.common.Setting.maxJacobianRows = 6;
-oimo.common.Setting.directMlcpSolverEps = 1e-9;
-oimo.common.Setting.islandInitialRigidBodyArraySize = 128;
-oimo.common.Setting.islandInitialConstraintArraySize = 128;
-oimo.common.Setting.sleepingVelocityThreshold = 0.2;
-oimo.common.Setting.sleepingAngularVelocityThreshold = 0.5;
-oimo.common.Setting.sleepingTimeThreshold = 1.0;
-oimo.common.Setting.disableSleeping = false;
-oimo.common.Setting.linearSlop = 0.005;
-oimo.common.Setting.angularSlop = 0.0174532925199432781;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance = new oimo.collision.narrowphase.detector.gjkepa.GjkEpa();
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._SUCCEEDED = 0;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._GJK_FAILED_TO_MAKE_TETRAHEDRON = 1;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._GJK_DID_NOT_CONVERGE = 2;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._EPA_FAILED_TO_INIT = 257;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._EPA_FAILED_TO_ADD_VERTEX = 258;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._EPA_DID_NOT_CONVERGE = 259;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.SUCCEEDED = 0;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.GJK_FAILED_TO_MAKE_TETRAHEDRON = 1;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.GJK_DID_NOT_CONVERGE = 2;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_FAILED_TO_INIT = 257;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_FAILED_TO_ADD_VERTEX = 258;
-oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_DID_NOT_CONVERGE = 259;
-oimo.common.Mat3.numCreations = 0;
-oimo.common.Mat4.numCreations = 0;
-oimo.common.MathUtil.POSITIVE_INFINITY = 1e65536;
-oimo.common.MathUtil.NEGATIVE_INFINITY = -1e65536;
-oimo.common.MathUtil.PI = 3.14159265358979;
-oimo.common.MathUtil.TWO_PI = 6.28318530717958;
-oimo.common.MathUtil.HALF_PI = 1.570796326794895;
-oimo.common.MathUtil.TO_RADIANS = 0.0174532925199432781;
-oimo.common.MathUtil.TO_DEGREES = 57.2957795130823797;
-oimo.common.Quat.numCreations = 0;
-oimo.dynamics.common.DebugDraw.SPHERE_PHI_DIVISION = 8;
-oimo.dynamics.common.DebugDraw.SPHERE_THETA_DIVISION = 4;
-oimo.dynamics.common.DebugDraw.CIRCLE_THETA_DIVISION = 8;
-oimo.dynamics.common.Performance.broadPhaseCollisionTime = 0;
-oimo.dynamics.common.Performance.narrowPhaseCollisionTime = 0;
-oimo.dynamics.common.Performance.dynamicsTime = 0;
-oimo.dynamics.common.Performance.totalTime = 0;
-oimo.dynamics.constraint.PositionCorrectionAlgorithm._BAUMGARTE = 0;
-oimo.dynamics.constraint.PositionCorrectionAlgorithm._SPLIT_IMPULSE = 1;
-oimo.dynamics.constraint.PositionCorrectionAlgorithm._NGS = 2;
-oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE = 0;
-oimo.dynamics.constraint.PositionCorrectionAlgorithm.SPLIT_IMPULSE = 1;
-oimo.dynamics.constraint.PositionCorrectionAlgorithm.NGS = 2;
-oimo.dynamics.constraint.info.JacobianRow.BIT_LINEAR_SET = 1;
-oimo.dynamics.constraint.info.JacobianRow.BIT_ANGULAR_SET = 2;
-oimo.dynamics.constraint.joint.JointType._SPHERICAL = 0;
-oimo.dynamics.constraint.joint.JointType._REVOLUTE = 1;
-oimo.dynamics.constraint.joint.JointType._CYLINDRICAL = 2;
-oimo.dynamics.constraint.joint.JointType._PRISMATIC = 3;
-oimo.dynamics.constraint.joint.JointType._UNIVERSAL = 4;
-oimo.dynamics.constraint.joint.JointType._RAGDOLL = 5;
-oimo.dynamics.constraint.joint.JointType._GENERIC = 6;
-oimo.dynamics.constraint.joint.JointType.SPHERICAL = 0;
-oimo.dynamics.constraint.joint.JointType.REVOLUTE = 1;
-oimo.dynamics.constraint.joint.JointType.CYLINDRICAL = 2;
-oimo.dynamics.constraint.joint.JointType.PRISMATIC = 3;
-oimo.dynamics.constraint.joint.JointType.UNIVERSAL = 4;
-oimo.dynamics.constraint.joint.JointType.RAGDOLL = 5;
-oimo.dynamics.constraint.joint.JointType.GENERIC = 6;
-oimo.dynamics.constraint.solver.ConstraintSolverType._ITERATIVE = 0;
-oimo.dynamics.constraint.solver.ConstraintSolverType._DIRECT = 1;
-oimo.dynamics.constraint.solver.ConstraintSolverType.ITERATIVE = 0;
-oimo.dynamics.constraint.solver.ConstraintSolverType.DIRECT = 1;
-oimo.dynamics.rigidbody.RigidBodyType._DYNAMIC = 0;
-oimo.dynamics.rigidbody.RigidBodyType._STATIC = 1;
-oimo.dynamics.rigidbody.RigidBodyType._KINEMATIC = 2;
-oimo.dynamics.rigidbody.RigidBodyType.DYNAMIC = 0;
-oimo.dynamics.rigidbody.RigidBodyType.STATIC = 1;
-oimo.dynamics.rigidbody.RigidBodyType.KINEMATIC = 2;
-export {oimo};

+ 0 - 243
examples/jsm/physics/OimoPhysics.js

@@ -1,243 +0,0 @@
-import { oimo } from '../libs/OimoPhysics.js';
-
-async function OimoPhysics() {
-
-	const Vec3 = oimo.common.Vec3;
-	const World = oimo.dynamics.World;
-	const RigidBodyType = oimo.dynamics.rigidbody.RigidBodyType;
-	const RigidBodyConfig = oimo.dynamics.rigidbody.RigidBodyConfig;
-	const ShapeConfig = oimo.dynamics.rigidbody.ShapeConfig;
-	const RigidBody = oimo.dynamics.rigidbody.RigidBody;
-	const Shape = oimo.dynamics.rigidbody.Shape;
-	const OBoxGeometry = oimo.collision.geometry.BoxGeometry;
-	const OSphereGeometry = oimo.collision.geometry.SphereGeometry;
-
-	const frameRate = 60;
-
-	const world = new World( 2, new Vec3( 0, - 9.8, 0 ) );
-
-	//
-
-	function getShape( geometry ) {
-
-		const parameters = geometry.parameters;
-
-		// TODO change type to is*
-
-		if ( geometry.type === 'BoxGeometry' ) {
-
-			const sx = parameters.width !== undefined ? parameters.width / 2 : 0.5;
-			const sy = parameters.height !== undefined ? parameters.height / 2 : 0.5;
-			const sz = parameters.depth !== undefined ? parameters.depth / 2 : 0.5;
-
-			return new OBoxGeometry( new Vec3( sx, sy, sz ) );
-
-		} else if ( geometry.type === 'SphereGeometry' || geometry.type === 'IcosahedronGeometry' ) {
-
-			const radius = parameters.radius !== undefined ? parameters.radius : 1;
-
-			return new OSphereGeometry( radius );
-
-		}
-
-		return null;
-
-	}
-
-	const meshes = [];
-	const meshMap = new WeakMap();
-
-	function addMesh( mesh, mass = 0 ) {
-
-		const shape = getShape( mesh.geometry );
-
-		if ( shape !== null ) {
-
-			if ( mesh.isInstancedMesh ) {
-
-				handleInstancedMesh( mesh, mass, shape );
-
-			} else if ( mesh.isMesh ) {
-
-				handleMesh( mesh, mass, shape );
-
-			}
-
-		}
-
-	}
-
-	function handleMesh( mesh, mass, shape ) {
-
-		const shapeConfig = new ShapeConfig();
-		shapeConfig.geometry = shape;
-
-		const bodyConfig = new RigidBodyConfig();
-		bodyConfig.type = mass === 0 ? RigidBodyType.STATIC : RigidBodyType.DYNAMIC;
-		bodyConfig.position = new Vec3( mesh.position.x, mesh.position.y, mesh.position.z );
-
-		const body = new RigidBody( bodyConfig );
-		body.addShape( new Shape( shapeConfig ) );
-		world.addRigidBody( body );
-
-		if ( mass > 0 ) {
-
-			meshes.push( mesh );
-			meshMap.set( mesh, body );
-
-		}
-
-	}
-
-	function handleInstancedMesh( mesh, mass, shape ) {
-
-		const array = mesh.instanceMatrix.array;
-
-		const bodies = [];
-
-		for ( let i = 0; i < mesh.count; i ++ ) {
-
-			const index = i * 16;
-
-			const shapeConfig = new ShapeConfig();
-			shapeConfig.geometry = shape;
-
-			const bodyConfig = new RigidBodyConfig();
-			bodyConfig.type = mass === 0 ? RigidBodyType.STATIC : RigidBodyType.DYNAMIC;
-			bodyConfig.position = new Vec3( array[ index + 12 ], array[ index + 13 ], array[ index + 14 ] );
-
-			const body = new RigidBody( bodyConfig );
-			body.addShape( new Shape( shapeConfig ) );
-			world.addRigidBody( body );
-
-			bodies.push( body );
-
-		}
-
-		if ( mass > 0 ) {
-
-			meshes.push( mesh );
-			meshMap.set( mesh, bodies );
-
-		}
-
-	}
-
-	//
-
-	function setMeshPosition( mesh, position, index = 0 ) {
-
-		if ( mesh.isInstancedMesh ) {
-
-			const bodies = meshMap.get( mesh );
-			const body = bodies[ index ];
-
-			body.setPosition( new Vec3( position.x, position.y, position.z ) );
-
-		} else if ( mesh.isMesh ) {
-
-			const body = meshMap.get( mesh );
-
-			body.setPosition( new Vec3( position.x, position.y, position.z ) );
-
-		}
-
-	}
-
-	//
-
-	let lastTime = 0;
-
-	function step() {
-
-		const time = performance.now();
-
-		if ( lastTime > 0 ) {
-
-			const delta = ( time - lastTime ) / 1000;
-
-			// console.time( 'world.step' );
-			world.step( delta );
-			// console.timeEnd( 'world.step' );
-
-		}
-
-		lastTime = time;
-
-		//
-
-		for ( let i = 0, l = meshes.length; i < l; i ++ ) {
-
-			const mesh = meshes[ i ];
-
-			if ( mesh.isInstancedMesh ) {
-
-				const array = mesh.instanceMatrix.array;
-				const bodies = meshMap.get( mesh );
-
-				for ( let j = 0; j < bodies.length; j ++ ) {
-
-					const body = bodies[ j ];
-
-					compose( body.getPosition(), body.getOrientation(), array, j * 16 );
-
-				}
-
-				mesh.instanceMatrix.needsUpdate = true;
-
-			} else if ( mesh.isMesh ) {
-
-				const body = meshMap.get( mesh );
-
-				mesh.position.copy( body.getPosition() );
-				mesh.quaternion.copy( body.getOrientation() );
-
-			}
-
-		}
-
-	}
-
-	// animate
-
-	setInterval( step, 1000 / frameRate );
-
-	return {
-		addMesh: addMesh,
-		setMeshPosition: setMeshPosition
-		// addCompoundMesh
-	};
-
-}
-
-function compose( position, quaternion, array, index ) {
-
-	const x = quaternion.x, y = quaternion.y, z = quaternion.z, w = quaternion.w;
-	const x2 = x + x, y2 = y + y, z2 = z + z;
-	const xx = x * x2, xy = x * y2, xz = x * z2;
-	const yy = y * y2, yz = y * z2, zz = z * z2;
-	const wx = w * x2, wy = w * y2, wz = w * z2;
-
-	array[ index + 0 ] = ( 1 - ( yy + zz ) );
-	array[ index + 1 ] = ( xy + wz );
-	array[ index + 2 ] = ( xz - wy );
-	array[ index + 3 ] = 0;
-
-	array[ index + 4 ] = ( xy - wz );
-	array[ index + 5 ] = ( 1 - ( xx + zz ) );
-	array[ index + 6 ] = ( yz + wx );
-	array[ index + 7 ] = 0;
-
-	array[ index + 8 ] = ( xz + wy );
-	array[ index + 9 ] = ( yz - wx );
-	array[ index + 10 ] = ( 1 - ( xx + yy ) );
-	array[ index + 11 ] = 0;
-
-	array[ index + 12 ] = position.x;
-	array[ index + 13 ] = position.y;
-	array[ index + 14 ] = position.z;
-	array[ index + 15 ] = 1;
-
-}
-
-export { OimoPhysics };

+ 0 - 156
examples/physics_oimo_instancing.html

@@ -1,156 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js physics - OimoPhysics instancing</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
-		<link type="text/css" rel="stylesheet" href="main.css">
-	</head>
-	<body>
-
-		<div id="info">
-			<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> physics - OimoPhysics instancing
-		</div>
-
-
-		<script type="module">
-
-			import * as THREE from '../build/three.module.js';
-			import { OrbitControls } from './jsm/controls/OrbitControls.js';
-			import { OimoPhysics } from './jsm/physics/OimoPhysics.js';
-			import Stats from './jsm/libs/stats.module.js';
-
-			let camera, scene, renderer, stats;
-			let physics, position;
-
-			let boxes, spheres;
-
-			init();
-
-			async function init() {
-
-				physics = await OimoPhysics();
-				position = new THREE.Vector3();
-
-				//
-
-				camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.1, 100 );
-				camera.position.set( - 1, 1.5, 2 );
-				camera.lookAt( 0, 0.5, 0 );
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0x666666 );
-
-				const hemiLight = new THREE.HemisphereLight();
-				hemiLight.intensity = 0.35;
-				scene.add( hemiLight );
-
-				const dirLight = new THREE.DirectionalLight();
-				dirLight.position.set( 5, 5, 5 );
-				dirLight.castShadow = true;
-				dirLight.shadow.camera.zoom = 2;
-				scene.add( dirLight );
-
-				const floor = new THREE.Mesh(
-					new THREE.BoxGeometry( 10, 5, 10 ),
-					new THREE.ShadowMaterial( { color: 0x111111 } )
-				);
-				floor.position.y = - 2.5;
-				floor.receiveShadow = true;
-				scene.add( floor );
-				physics.addMesh( floor );
-
-				//
-
-				const material = new THREE.MeshLambertMaterial();
-
-				const matrix = new THREE.Matrix4();
-				const color = new THREE.Color();
-
-				// Boxes
-
-				const geometryBox = new THREE.BoxGeometry( 0.1, 0.1, 0.1 );
-				boxes = new THREE.InstancedMesh( geometryBox, material, 100 );
-				boxes.instanceMatrix.setUsage( THREE.DynamicDrawUsage ); // will be updated every frame
-				boxes.castShadow = true;
-				boxes.receiveShadow = true;
-				scene.add( boxes );
-
-				for ( let i = 0; i < boxes.count; i ++ ) {
-
-					matrix.setPosition( Math.random() - 0.5, Math.random() * 2, Math.random() - 0.5 );
-					boxes.setMatrixAt( i, matrix );
-					boxes.setColorAt( i, color.setHex( 0xffffff * Math.random() ) );
-
-				}
-
-				physics.addMesh( boxes, 1 );
-
-				// Spheres
-
-				const geometrySphere = new THREE.IcosahedronGeometry( 0.075, 3 );
-				spheres = new THREE.InstancedMesh( geometrySphere, material, 100 );
-				spheres.instanceMatrix.setUsage( THREE.DynamicDrawUsage ); // will be updated every frame
-				spheres.castShadow = true;
-				spheres.receiveShadow = true;
-				scene.add( spheres );
-
-				for ( let i = 0; i < spheres.count; i ++ ) {
-
-					matrix.setPosition( Math.random() - 0.5, Math.random() * 2, Math.random() - 0.5 );
-					spheres.setMatrixAt( i, matrix );
-					spheres.setColorAt( i, color.setHex( 0xffffff * Math.random() ) );
-
-				}
-
-				physics.addMesh( spheres, 1 );
-
-				//
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.shadowMap.enabled = true;
-				renderer.outputEncoding = THREE.sRGBEncoding;
-				document.body.appendChild( renderer.domElement );
-
-				stats = new Stats();
-				document.body.appendChild( stats.dom );
-
-				//
-
-				const controls = new OrbitControls( camera, renderer.domElement );
-				controls.target.y = 0.5;
-				controls.update();
-
-				animate();
-
-			}
-
-			function animate() {
-
-				requestAnimationFrame( animate );
-
-				//
-
-				let index = Math.floor( Math.random() * boxes.count );
-
-				position.set( 0, Math.random() + 1, 0 );
-				physics.setMeshPosition( boxes, position, index );
-
-				//
-
-				index = Math.floor( Math.random() * spheres.count );
-
-				position.set( 0, Math.random() + 1, 0 );
-				physics.setMeshPosition( spheres, position, index );
-
-				renderer.render( scene, camera );
-
-				stats.update();
-
-			}
-
-		</script>
-	</body>
-</html>

BIN
examples/screenshots/physics_oimo_instancing.jpg