#include <hxcpp.h>

#ifndef INCLUDED_Std
#include <Std.h>
#endif
#ifndef INCLUDED_haxe_Log
#include <haxe/Log.h>
#endif
#ifndef INCLUDED_hxMath
#include <hxMath.h>
#endif
#ifndef INCLUDED_phoenix_Matrix
#include <phoenix/Matrix.h>
#endif
#ifndef INCLUDED_phoenix_MatrixTransform
#include <phoenix/MatrixTransform.h>
#endif
#ifndef INCLUDED_phoenix_Quaternion
#include <phoenix/Quaternion.h>
#endif
#ifndef INCLUDED_phoenix_Vector
#include <phoenix/Vector.h>
#endif
#ifndef INCLUDED_snow_platform_native_utils_ArrayBufferView
#include <snow/platform/native/utils/ArrayBufferView.h>
#endif
#ifndef INCLUDED_snow_platform_native_utils_Float32Array
#include <snow/platform/native/utils/Float32Array.h>
#endif
#ifndef INCLUDED_snow_utils_IMemoryRange
#include <snow/utils/IMemoryRange.h>
#endif
namespace phoenix{

Void Matrix_obj::__construct(hx::Null< Float >  __o_n11,hx::Null< Float >  __o_n12,hx::Null< Float >  __o_n13,hx::Null< Float >  __o_n14,hx::Null< Float >  __o_n21,hx::Null< Float >  __o_n22,hx::Null< Float >  __o_n23,hx::Null< Float >  __o_n24,hx::Null< Float >  __o_n31,hx::Null< Float >  __o_n32,hx::Null< Float >  __o_n33,hx::Null< Float >  __o_n34,hx::Null< Float >  __o_n41,hx::Null< Float >  __o_n42,hx::Null< Float >  __o_n43,hx::Null< Float >  __o_n44)
{
HX_STACK_FRAME("phoenix.Matrix","new",0x05a13252,"phoenix.Matrix.new","phoenix/Matrix.hx",27,0x938b753d)

HX_STACK_ARG(__o_n11,"n11")

HX_STACK_ARG(__o_n12,"n12")

HX_STACK_ARG(__o_n13,"n13")

HX_STACK_ARG(__o_n14,"n14")

HX_STACK_ARG(__o_n21,"n21")

HX_STACK_ARG(__o_n22,"n22")

HX_STACK_ARG(__o_n23,"n23")

HX_STACK_ARG(__o_n24,"n24")

HX_STACK_ARG(__o_n31,"n31")

HX_STACK_ARG(__o_n32,"n32")

HX_STACK_ARG(__o_n33,"n33")

HX_STACK_ARG(__o_n34,"n34")

HX_STACK_ARG(__o_n41,"n41")

HX_STACK_ARG(__o_n42,"n42")

HX_STACK_ARG(__o_n43,"n43")

HX_STACK_ARG(__o_n44,"n44")
Float n11 = __o_n11.Default(1);
Float n12 = __o_n12.Default(0);
Float n13 = __o_n13.Default(0);
Float n14 = __o_n14.Default(0);
Float n21 = __o_n21.Default(0);
Float n22 = __o_n22.Default(1);
Float n23 = __o_n23.Default(0);
Float n24 = __o_n24.Default(0);
Float n31 = __o_n31.Default(0);
Float n32 = __o_n32.Default(0);
Float n33 = __o_n33.Default(1);
Float n34 = __o_n34.Default(0);
Float n41 = __o_n41.Default(0);
Float n42 = __o_n42.Default(0);
Float n43 = __o_n43.Default(0);
Float n44 = __o_n44.Default(1);
{
	HX_STACK_LINE(49)
	this->M44 = (int)1;
	HX_STACK_LINE(48)
	this->M34 = (int)0;
	HX_STACK_LINE(47)
	this->M24 = (int)0;
	HX_STACK_LINE(46)
	this->M14 = (int)0;
	HX_STACK_LINE(44)
	this->M43 = (int)0;
	HX_STACK_LINE(43)
	this->M33 = (int)1;
	HX_STACK_LINE(42)
	this->M23 = (int)0;
	HX_STACK_LINE(41)
	this->M13 = (int)0;
	HX_STACK_LINE(39)
	this->M42 = (int)0;
	HX_STACK_LINE(38)
	this->M32 = (int)0;
	HX_STACK_LINE(37)
	this->M22 = (int)1;
	HX_STACK_LINE(36)
	this->M12 = (int)0;
	HX_STACK_LINE(34)
	this->M41 = (int)0;
	HX_STACK_LINE(33)
	this->M31 = (int)0;
	HX_STACK_LINE(32)
	this->M21 = (int)0;
	HX_STACK_LINE(31)
	this->M11 = (int)1;
	HX_STACK_LINE(57)
	this->elements = Array_obj< Float >::__new();
	HX_STACK_LINE(59)
	int i = (int)0;		HX_STACK_VAR(i,"i");
	HX_STACK_LINE(60)
	while((((i)++ < (int)16))){
		HX_STACK_LINE(60)
		this->elements->push(0.0);
	}
	HX_STACK_LINE(62)
	this->set(n11,n12,n13,n14,n21,n22,n23,n24,n31,n32,n33,n34,n41,n42,n43,n44);
}
;
	return null();
}

//Matrix_obj::~Matrix_obj() { }

Dynamic Matrix_obj::__CreateEmpty() { return  new Matrix_obj; }
hx::ObjectPtr< Matrix_obj > Matrix_obj::__new(hx::Null< Float >  __o_n11,hx::Null< Float >  __o_n12,hx::Null< Float >  __o_n13,hx::Null< Float >  __o_n14,hx::Null< Float >  __o_n21,hx::Null< Float >  __o_n22,hx::Null< Float >  __o_n23,hx::Null< Float >  __o_n24,hx::Null< Float >  __o_n31,hx::Null< Float >  __o_n32,hx::Null< Float >  __o_n33,hx::Null< Float >  __o_n34,hx::Null< Float >  __o_n41,hx::Null< Float >  __o_n42,hx::Null< Float >  __o_n43,hx::Null< Float >  __o_n44)
{  hx::ObjectPtr< Matrix_obj > result = new Matrix_obj();
	result->__construct(__o_n11,__o_n12,__o_n13,__o_n14,__o_n21,__o_n22,__o_n23,__o_n24,__o_n31,__o_n32,__o_n33,__o_n34,__o_n41,__o_n42,__o_n43,__o_n44);
	return result;}

Dynamic Matrix_obj::__Create(hx::DynamicArray inArgs)
{  hx::ObjectPtr< Matrix_obj > result = new Matrix_obj();
	result->__construct(inArgs[0],inArgs[1],inArgs[2],inArgs[3],inArgs[4],inArgs[5],inArgs[6],inArgs[7],inArgs[8],inArgs[9],inArgs[10],inArgs[11],inArgs[12],inArgs[13],inArgs[14],inArgs[15]);
	return result;}

::phoenix::Matrix Matrix_obj::set( Float n11,Float n12,Float n13,Float n14,Float n21,Float n22,Float n23,Float n24,Float n31,Float n32,Float n33,Float n34,Float n41,Float n42,Float n43,Float n44){
	HX_STACK_FRAME("phoenix.Matrix","set",0x05a4fd94,"phoenix.Matrix.set","phoenix/Matrix.hx",76,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(n11,"n11")
	HX_STACK_ARG(n12,"n12")
	HX_STACK_ARG(n13,"n13")
	HX_STACK_ARG(n14,"n14")
	HX_STACK_ARG(n21,"n21")
	HX_STACK_ARG(n22,"n22")
	HX_STACK_ARG(n23,"n23")
	HX_STACK_ARG(n24,"n24")
	HX_STACK_ARG(n31,"n31")
	HX_STACK_ARG(n32,"n32")
	HX_STACK_ARG(n33,"n33")
	HX_STACK_ARG(n34,"n34")
	HX_STACK_ARG(n41,"n41")
	HX_STACK_ARG(n42,"n42")
	HX_STACK_ARG(n43,"n43")
	HX_STACK_ARG(n44,"n44")
	HX_STACK_LINE(78)
	Array< Float > e = this->elements;		HX_STACK_VAR(e,"e");
	HX_STACK_LINE(80)
	e[(int)0] = n11;
	HX_STACK_LINE(80)
	e[(int)4] = n12;
	HX_STACK_LINE(80)
	e[(int)8] = n13;
	HX_STACK_LINE(80)
	e[(int)12] = n14;
	HX_STACK_LINE(81)
	e[(int)1] = n21;
	HX_STACK_LINE(81)
	e[(int)5] = n22;
	HX_STACK_LINE(81)
	e[(int)9] = n23;
	HX_STACK_LINE(81)
	e[(int)13] = n24;
	HX_STACK_LINE(82)
	e[(int)2] = n31;
	HX_STACK_LINE(82)
	e[(int)6] = n32;
	HX_STACK_LINE(82)
	e[(int)10] = n33;
	HX_STACK_LINE(82)
	e[(int)14] = n34;
	HX_STACK_LINE(83)
	e[(int)3] = n41;
	HX_STACK_LINE(83)
	e[(int)7] = n42;
	HX_STACK_LINE(83)
	e[(int)11] = n43;
	HX_STACK_LINE(83)
	e[(int)15] = n44;
	HX_STACK_LINE(85)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC16(Matrix_obj,set,return )

::String Matrix_obj::toString( ){
	HX_STACK_FRAME("phoenix.Matrix","toString",0x3c5f217a,"phoenix.Matrix.toString","phoenix/Matrix.hx",88,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(89)
	Array< Float > e = this->elements;		HX_STACK_VAR(e,"e");
	HX_STACK_LINE(90)
	::String _g;		HX_STACK_VAR(_g,"_g");
	struct _Function_1_1{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",90,0x938b753d)
			{
				HX_STACK_LINE(90)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(90)
				return (Float(::Std_obj::_int((e->__get((int)0) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g = ((HX_CSTRING("{ 11:") + _Function_1_1::Block(e)) + HX_CSTRING(", 12:"));
	HX_STACK_LINE(90)
	::String _g1;		HX_STACK_VAR(_g1,"_g1");
	struct _Function_1_2{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",90,0x938b753d)
			{
				HX_STACK_LINE(90)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(90)
				return (Float(::Std_obj::_int((e->__get((int)4) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g1 = ((_g + _Function_1_2::Block(e)) + HX_CSTRING(", 13:"));
	HX_STACK_LINE(90)
	::String _g2;		HX_STACK_VAR(_g2,"_g2");
	struct _Function_1_3{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",90,0x938b753d)
			{
				HX_STACK_LINE(90)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(90)
				return (Float(::Std_obj::_int((e->__get((int)8) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g2 = ((_g1 + _Function_1_3::Block(e)) + HX_CSTRING(", 14:"));
	HX_STACK_LINE(90)
	::String _g3;		HX_STACK_VAR(_g3,"_g3");
	struct _Function_1_4{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",90,0x938b753d)
			{
				HX_STACK_LINE(90)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(90)
				return (Float(::Std_obj::_int((e->__get((int)12) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g3 = (((_g2 + _Function_1_4::Block(e)) + HX_CSTRING(" }, ")) + HX_CSTRING("{ 21:"));
	HX_STACK_LINE(90)
	::String _g4;		HX_STACK_VAR(_g4,"_g4");
	struct _Function_1_5{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",91,0x938b753d)
			{
				HX_STACK_LINE(91)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(91)
				return (Float(::Std_obj::_int((e->__get((int)1) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g4 = ((_g3 + _Function_1_5::Block(e)) + HX_CSTRING(", 22:"));
	HX_STACK_LINE(90)
	::String _g5;		HX_STACK_VAR(_g5,"_g5");
	struct _Function_1_6{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",91,0x938b753d)
			{
				HX_STACK_LINE(91)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(91)
				return (Float(::Std_obj::_int((e->__get((int)5) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g5 = ((_g4 + _Function_1_6::Block(e)) + HX_CSTRING(", 23:"));
	HX_STACK_LINE(90)
	::String _g6;		HX_STACK_VAR(_g6,"_g6");
	struct _Function_1_7{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",91,0x938b753d)
			{
				HX_STACK_LINE(91)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(91)
				return (Float(::Std_obj::_int((e->__get((int)9) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g6 = ((_g5 + _Function_1_7::Block(e)) + HX_CSTRING(", 24:"));
	HX_STACK_LINE(90)
	::String _g7;		HX_STACK_VAR(_g7,"_g7");
	struct _Function_1_8{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",91,0x938b753d)
			{
				HX_STACK_LINE(91)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(91)
				return (Float(::Std_obj::_int((e->__get((int)13) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g7 = (((_g6 + _Function_1_8::Block(e)) + HX_CSTRING(" }, ")) + HX_CSTRING("{ 31:"));
	HX_STACK_LINE(90)
	::String _g8;		HX_STACK_VAR(_g8,"_g8");
	struct _Function_1_9{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",92,0x938b753d)
			{
				HX_STACK_LINE(92)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(92)
				return (Float(::Std_obj::_int((e->__get((int)2) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g8 = ((_g7 + _Function_1_9::Block(e)) + HX_CSTRING(", 32:"));
	HX_STACK_LINE(90)
	::String _g9;		HX_STACK_VAR(_g9,"_g9");
	struct _Function_1_10{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",92,0x938b753d)
			{
				HX_STACK_LINE(92)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(92)
				return (Float(::Std_obj::_int((e->__get((int)6) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g9 = ((_g8 + _Function_1_10::Block(e)) + HX_CSTRING(", 33:"));
	HX_STACK_LINE(90)
	::String _g10;		HX_STACK_VAR(_g10,"_g10");
	struct _Function_1_11{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",92,0x938b753d)
			{
				HX_STACK_LINE(92)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(92)
				return (Float(::Std_obj::_int((e->__get((int)10) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g10 = ((_g9 + _Function_1_11::Block(e)) + HX_CSTRING(", 34:"));
	HX_STACK_LINE(90)
	::String _g11;		HX_STACK_VAR(_g11,"_g11");
	struct _Function_1_12{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",92,0x938b753d)
			{
				HX_STACK_LINE(92)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(92)
				return (Float(::Std_obj::_int((e->__get((int)14) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g11 = (((_g10 + _Function_1_12::Block(e)) + HX_CSTRING(" }, ")) + HX_CSTRING("{ 41:"));
	HX_STACK_LINE(90)
	::String _g12;		HX_STACK_VAR(_g12,"_g12");
	struct _Function_1_13{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",93,0x938b753d)
			{
				HX_STACK_LINE(93)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(93)
				return (Float(::Std_obj::_int((e->__get((int)3) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g12 = ((_g11 + _Function_1_13::Block(e)) + HX_CSTRING(", 42:"));
	HX_STACK_LINE(90)
	::String _g13;		HX_STACK_VAR(_g13,"_g13");
	struct _Function_1_14{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",93,0x938b753d)
			{
				HX_STACK_LINE(93)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(93)
				return (Float(::Std_obj::_int((e->__get((int)7) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g13 = ((_g12 + _Function_1_14::Block(e)) + HX_CSTRING(", 43:"));
	HX_STACK_LINE(90)
	::String _g14;		HX_STACK_VAR(_g14,"_g14");
	struct _Function_1_15{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",93,0x938b753d)
			{
				HX_STACK_LINE(93)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(93)
				return (Float(::Std_obj::_int((e->__get((int)11) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	_g14 = ((_g13 + _Function_1_15::Block(e)) + HX_CSTRING(", 44:"));
	HX_STACK_LINE(90)
	::String str;		HX_STACK_VAR(str,"str");
	struct _Function_1_16{
		inline static Float Block( Array< Float > &e){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/Matrix.hx",93,0x938b753d)
			{
				HX_STACK_LINE(93)
				Float n = ::Math_obj::pow((int)10,(int)3);		HX_STACK_VAR(n,"n");
				HX_STACK_LINE(93)
				return (Float(::Std_obj::_int((e->__get((int)15) * n))) / Float(n));
			}
			return null();
		}
	};
	HX_STACK_LINE(90)
	str = ((_g14 + _Function_1_16::Block(e)) + HX_CSTRING(" }"));
	HX_STACK_LINE(94)
	return str;
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,toString,return )

Float Matrix_obj::get_M11( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M11",0x8bb9a3f6,"phoenix.Matrix.get_M11","phoenix/Matrix.hx",97,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(97)
	return this->elements->__get((int)0);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M11,return )

Float Matrix_obj::get_M12( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M12",0x8bb9a3f7,"phoenix.Matrix.get_M12","phoenix/Matrix.hx",98,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(98)
	return this->elements->__get((int)1);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M12,return )

Float Matrix_obj::get_M13( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M13",0x8bb9a3f8,"phoenix.Matrix.get_M13","phoenix/Matrix.hx",99,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(99)
	return this->elements->__get((int)2);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M13,return )

Float Matrix_obj::get_M14( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M14",0x8bb9a3f9,"phoenix.Matrix.get_M14","phoenix/Matrix.hx",100,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(100)
	return this->elements->__get((int)3);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M14,return )

Float Matrix_obj::get_M21( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M21",0x8bb9a4d5,"phoenix.Matrix.get_M21","phoenix/Matrix.hx",102,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(102)
	return this->elements->__get((int)4);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M21,return )

Float Matrix_obj::get_M22( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M22",0x8bb9a4d6,"phoenix.Matrix.get_M22","phoenix/Matrix.hx",103,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(103)
	return this->elements->__get((int)5);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M22,return )

Float Matrix_obj::get_M23( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M23",0x8bb9a4d7,"phoenix.Matrix.get_M23","phoenix/Matrix.hx",104,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(104)
	return this->elements->__get((int)6);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M23,return )

Float Matrix_obj::get_M24( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M24",0x8bb9a4d8,"phoenix.Matrix.get_M24","phoenix/Matrix.hx",105,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(105)
	return this->elements->__get((int)7);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M24,return )

Float Matrix_obj::get_M31( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M31",0x8bb9a5b4,"phoenix.Matrix.get_M31","phoenix/Matrix.hx",107,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(107)
	return this->elements->__get((int)8);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M31,return )

Float Matrix_obj::get_M32( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M32",0x8bb9a5b5,"phoenix.Matrix.get_M32","phoenix/Matrix.hx",108,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(108)
	return this->elements->__get((int)9);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M32,return )

Float Matrix_obj::get_M33( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M33",0x8bb9a5b6,"phoenix.Matrix.get_M33","phoenix/Matrix.hx",109,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(109)
	return this->elements->__get((int)10);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M33,return )

Float Matrix_obj::get_M34( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M34",0x8bb9a5b7,"phoenix.Matrix.get_M34","phoenix/Matrix.hx",110,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(110)
	return this->elements->__get((int)11);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M34,return )

Float Matrix_obj::get_M41( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M41",0x8bb9a693,"phoenix.Matrix.get_M41","phoenix/Matrix.hx",112,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(112)
	return this->elements->__get((int)12);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M41,return )

Float Matrix_obj::get_M42( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M42",0x8bb9a694,"phoenix.Matrix.get_M42","phoenix/Matrix.hx",113,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(113)
	return this->elements->__get((int)13);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M42,return )

Float Matrix_obj::get_M43( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M43",0x8bb9a695,"phoenix.Matrix.get_M43","phoenix/Matrix.hx",114,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(114)
	return this->elements->__get((int)14);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M43,return )

Float Matrix_obj::get_M44( ){
	HX_STACK_FRAME("phoenix.Matrix","get_M44",0x8bb9a696,"phoenix.Matrix.get_M44","phoenix/Matrix.hx",115,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(115)
	return this->elements->__get((int)15);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,get_M44,return )

Float Matrix_obj::set_M11( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M11",0x7ebb3502,"phoenix.Matrix.set_M11","phoenix/Matrix.hx",117,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(117)
	this->elements[(int)0] = _value;
	HX_STACK_LINE(117)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M11,return )

Float Matrix_obj::set_M12( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M12",0x7ebb3503,"phoenix.Matrix.set_M12","phoenix/Matrix.hx",118,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(118)
	this->elements[(int)1] = _value;
	HX_STACK_LINE(118)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M12,return )

Float Matrix_obj::set_M13( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M13",0x7ebb3504,"phoenix.Matrix.set_M13","phoenix/Matrix.hx",119,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(119)
	this->elements[(int)2] = _value;
	HX_STACK_LINE(119)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M13,return )

Float Matrix_obj::set_M14( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M14",0x7ebb3505,"phoenix.Matrix.set_M14","phoenix/Matrix.hx",120,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(120)
	this->elements[(int)3] = _value;
	HX_STACK_LINE(120)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M14,return )

Float Matrix_obj::set_M21( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M21",0x7ebb35e1,"phoenix.Matrix.set_M21","phoenix/Matrix.hx",122,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(122)
	this->elements[(int)4] = _value;
	HX_STACK_LINE(122)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M21,return )

Float Matrix_obj::set_M22( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M22",0x7ebb35e2,"phoenix.Matrix.set_M22","phoenix/Matrix.hx",123,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(123)
	this->elements[(int)5] = _value;
	HX_STACK_LINE(123)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M22,return )

Float Matrix_obj::set_M23( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M23",0x7ebb35e3,"phoenix.Matrix.set_M23","phoenix/Matrix.hx",124,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(124)
	this->elements[(int)6] = _value;
	HX_STACK_LINE(124)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M23,return )

Float Matrix_obj::set_M24( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M24",0x7ebb35e4,"phoenix.Matrix.set_M24","phoenix/Matrix.hx",125,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(125)
	this->elements[(int)7] = _value;
	HX_STACK_LINE(125)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M24,return )

Float Matrix_obj::set_M31( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M31",0x7ebb36c0,"phoenix.Matrix.set_M31","phoenix/Matrix.hx",127,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(127)
	this->elements[(int)8] = _value;
	HX_STACK_LINE(127)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M31,return )

Float Matrix_obj::set_M32( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M32",0x7ebb36c1,"phoenix.Matrix.set_M32","phoenix/Matrix.hx",128,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(128)
	this->elements[(int)9] = _value;
	HX_STACK_LINE(128)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M32,return )

Float Matrix_obj::set_M33( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M33",0x7ebb36c2,"phoenix.Matrix.set_M33","phoenix/Matrix.hx",129,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(129)
	this->elements[(int)10] = _value;
	HX_STACK_LINE(129)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M33,return )

Float Matrix_obj::set_M34( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M34",0x7ebb36c3,"phoenix.Matrix.set_M34","phoenix/Matrix.hx",130,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(130)
	this->elements[(int)11] = _value;
	HX_STACK_LINE(130)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M34,return )

Float Matrix_obj::set_M41( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M41",0x7ebb379f,"phoenix.Matrix.set_M41","phoenix/Matrix.hx",132,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(132)
	this->elements[(int)12] = _value;
	HX_STACK_LINE(132)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M41,return )

Float Matrix_obj::set_M42( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M42",0x7ebb37a0,"phoenix.Matrix.set_M42","phoenix/Matrix.hx",133,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(133)
	this->elements[(int)13] = _value;
	HX_STACK_LINE(133)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M42,return )

Float Matrix_obj::set_M43( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M43",0x7ebb37a1,"phoenix.Matrix.set_M43","phoenix/Matrix.hx",134,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(134)
	this->elements[(int)14] = _value;
	HX_STACK_LINE(134)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M43,return )

Float Matrix_obj::set_M44( Float _value){
	HX_STACK_FRAME("phoenix.Matrix","set_M44",0x7ebb37a2,"phoenix.Matrix.set_M44","phoenix/Matrix.hx",135,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_value,"_value")
	HX_STACK_LINE(135)
	this->elements[(int)15] = _value;
	HX_STACK_LINE(135)
	return _value;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,set_M44,return )

::snow::platform::native::utils::Float32Array Matrix_obj::float32array( ){
	HX_STACK_FRAME("phoenix.Matrix","float32array",0x9bcb564c,"phoenix.Matrix.float32array","phoenix/Matrix.hx",138,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(138)
	return ::snow::platform::native::utils::Float32Array_obj::__new(this->elements,null(),null());
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,float32array,return )

::phoenix::Matrix Matrix_obj::identity( ){
	HX_STACK_FRAME("phoenix.Matrix","identity",0xbd1f960c,"phoenix.Matrix.identity","phoenix/Matrix.hx",141,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(143)
	this->set((int)1,(int)0,(int)0,(int)0,(int)0,(int)1,(int)0,(int)0,(int)0,(int)0,(int)1,(int)0,(int)0,(int)0,(int)0,(int)1);
	HX_STACK_LINE(150)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,identity,return )

::phoenix::Matrix Matrix_obj::copy( ::phoenix::Matrix m){
	HX_STACK_FRAME("phoenix.Matrix","copy",0xe02d0d83,"phoenix.Matrix.copy","phoenix/Matrix.hx",154,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(m,"m")
	HX_STACK_LINE(156)
	Array< Float > me = m->elements;		HX_STACK_VAR(me,"me");
	HX_STACK_LINE(158)
	this->set(me->__get((int)0),me->__get((int)4),me->__get((int)8),me->__get((int)12),me->__get((int)1),me->__get((int)5),me->__get((int)9),me->__get((int)13),me->__get((int)2),me->__get((int)6),me->__get((int)10),me->__get((int)14),me->__get((int)3),me->__get((int)7),me->__get((int)11),me->__get((int)15));
	HX_STACK_LINE(165)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,copy,return )

::phoenix::Matrix Matrix_obj::make2D( Float _x,Float _y,hx::Null< Float >  __o__scale,hx::Null< Float >  __o__rotation){
Float _scale = __o__scale.Default(1);
Float _rotation = __o__rotation.Default(0);
	HX_STACK_FRAME("phoenix.Matrix","make2D",0xfc461e8e,"phoenix.Matrix.make2D","phoenix/Matrix.hx",168,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_x,"_x")
	HX_STACK_ARG(_y,"_y")
	HX_STACK_ARG(_scale,"_scale")
	HX_STACK_ARG(_rotation,"_rotation")
{
		HX_STACK_LINE(170)
		Float theta = (_rotation * 0.017453292519943278);		HX_STACK_VAR(theta,"theta");
		HX_STACK_LINE(171)
		Float c = ::Math_obj::cos(theta);		HX_STACK_VAR(c,"c");
		HX_STACK_LINE(172)
		Float s = ::Math_obj::sin(theta);		HX_STACK_VAR(s,"s");
		HX_STACK_LINE(174)
		this->set((c * _scale),(s * _scale),(int)0,_x,(-(s) * _scale),(c * _scale),(int)0,_y,(int)0,(int)0,(int)1,(int)0,(int)0,(int)0,(int)0,(int)1);
		HX_STACK_LINE(181)
		return hx::ObjectPtr<OBJ_>(this);
	}
}


HX_DEFINE_DYNAMIC_FUNC4(Matrix_obj,make2D,return )

::phoenix::Matrix Matrix_obj::copyPosition( ::phoenix::Matrix m){
	HX_STACK_FRAME("phoenix.Matrix","copyPosition",0x2db7254c,"phoenix.Matrix.copyPosition","phoenix/Matrix.hx",185,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(m,"m")
	HX_STACK_LINE(187)
	this->elements[(int)12] = m->elements->__get((int)12);
	HX_STACK_LINE(188)
	this->elements[(int)13] = m->elements->__get((int)13);
	HX_STACK_LINE(189)
	this->elements[(int)14] = m->elements->__get((int)14);
	HX_STACK_LINE(191)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,copyPosition,return )

::phoenix::Vector Matrix_obj::getPosition( ){
	HX_STACK_FRAME("phoenix.Matrix","getPosition",0x6c3a0751,"phoenix.Matrix.getPosition","phoenix/Matrix.hx",196,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(196)
	return ::phoenix::Vector_obj::__new(this->elements->__get((int)12),this->elements->__get((int)13),this->elements->__get((int)14),(int)1);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,getPosition,return )

::phoenix::Matrix Matrix_obj::extractRotation( ::phoenix::Matrix m){
	HX_STACK_FRAME("phoenix.Matrix","extractRotation",0xb7fcdc91,"phoenix.Matrix.extractRotation","phoenix/Matrix.hx",199,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(m,"m")
	HX_STACK_LINE(201)
	::phoenix::Vector _temp = ::phoenix::Vector_obj::__new(null(),null(),null(),null());		HX_STACK_VAR(_temp,"_temp");
	HX_STACK_LINE(202)
	Array< Float > me = m->elements;		HX_STACK_VAR(me,"me");
	HX_STACK_LINE(204)
	Float _scale_x = (Float((int)1) / Float(_temp->set_xyz(me->__get((int)0),me->__get((int)1),me->__get((int)2))->get_length()));		HX_STACK_VAR(_scale_x,"_scale_x");
	HX_STACK_LINE(205)
	Float _scale_y = (Float((int)1) / Float(_temp->set_xyz(me->__get((int)4),me->__get((int)5),me->__get((int)6))->get_length()));		HX_STACK_VAR(_scale_y,"_scale_y");
	HX_STACK_LINE(206)
	Float _scale_z = (Float((int)1) / Float(_temp->set_xyz(me->__get((int)8),me->__get((int)9),me->__get((int)10))->get_length()));		HX_STACK_VAR(_scale_z,"_scale_z");
	HX_STACK_LINE(208)
	this->elements[(int)0] = (me->__get((int)0) * _scale_x);
	HX_STACK_LINE(209)
	this->elements[(int)1] = (me->__get((int)1) * _scale_x);
	HX_STACK_LINE(210)
	this->elements[(int)2] = (me->__get((int)2) * _scale_x);
	HX_STACK_LINE(212)
	this->elements[(int)4] = (me->__get((int)4) * _scale_y);
	HX_STACK_LINE(213)
	this->elements[(int)5] = (me->__get((int)5) * _scale_y);
	HX_STACK_LINE(214)
	this->elements[(int)6] = (me->__get((int)6) * _scale_y);
	HX_STACK_LINE(216)
	this->elements[(int)8] = (me->__get((int)8) * _scale_z);
	HX_STACK_LINE(217)
	this->elements[(int)9] = (me->__get((int)9) * _scale_z);
	HX_STACK_LINE(218)
	this->elements[(int)10] = (me->__get((int)10) * _scale_z);
	HX_STACK_LINE(220)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,extractRotation,return )

::phoenix::Matrix Matrix_obj::makeRotationFromEuler( ::phoenix::Vector _v,::String __o__order){
::String _order = __o__order.Default(HX_CSTRING("XYZ"));
	HX_STACK_FRAME("phoenix.Matrix","makeRotationFromEuler",0xdbee0f25,"phoenix.Matrix.makeRotationFromEuler","phoenix/Matrix.hx",223,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_v,"_v")
	HX_STACK_ARG(_order,"_order")
{
		HX_STACK_LINE(225)
		Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
		HX_STACK_LINE(227)
		Float x = _v->x;		HX_STACK_VAR(x,"x");
		HX_STACK_LINE(228)
		Float y = _v->y;		HX_STACK_VAR(y,"y");
		HX_STACK_LINE(229)
		Float z = _v->z;		HX_STACK_VAR(z,"z");
		HX_STACK_LINE(231)
		Float a = ::Math_obj::cos(x);		HX_STACK_VAR(a,"a");
		HX_STACK_LINE(231)
		Float b = ::Math_obj::sin(x);		HX_STACK_VAR(b,"b");
		HX_STACK_LINE(232)
		Float c = ::Math_obj::cos(y);		HX_STACK_VAR(c,"c");
		HX_STACK_LINE(232)
		Float d = ::Math_obj::sin(y);		HX_STACK_VAR(d,"d");
		HX_STACK_LINE(233)
		Float e = ::Math_obj::cos(z);		HX_STACK_VAR(e,"e");
		HX_STACK_LINE(233)
		Float f = ::Math_obj::sin(z);		HX_STACK_VAR(f,"f");
		HX_STACK_LINE(235)
		if (((_order == HX_CSTRING("XYZ")))){
			HX_STACK_LINE(237)
			Float ae = (a * e);		HX_STACK_VAR(ae,"ae");
			HX_STACK_LINE(237)
			Float af = (a * f);		HX_STACK_VAR(af,"af");
			HX_STACK_LINE(237)
			Float be = (b * e);		HX_STACK_VAR(be,"be");
			HX_STACK_LINE(237)
			Float bf = (b * f);		HX_STACK_VAR(bf,"bf");
			HX_STACK_LINE(239)
			te[(int)0] = (c * e);
			HX_STACK_LINE(240)
			te[(int)4] = (-(c) * f);
			HX_STACK_LINE(241)
			te[(int)8] = d;
			HX_STACK_LINE(243)
			te[(int)1] = (af + (be * d));
			HX_STACK_LINE(244)
			te[(int)5] = (ae - (bf * d));
			HX_STACK_LINE(245)
			te[(int)9] = (-(b) * c);
			HX_STACK_LINE(247)
			te[(int)2] = (bf - (ae * d));
			HX_STACK_LINE(248)
			te[(int)6] = (be + (af * d));
			HX_STACK_LINE(249)
			te[(int)10] = (a * c);
		}
		else{
			HX_STACK_LINE(251)
			if (((_order == HX_CSTRING("YXZ")))){
				HX_STACK_LINE(253)
				Float ce = (c * e);		HX_STACK_VAR(ce,"ce");
				HX_STACK_LINE(253)
				Float cf = (c * f);		HX_STACK_VAR(cf,"cf");
				HX_STACK_LINE(253)
				Float de = (d * e);		HX_STACK_VAR(de,"de");
				HX_STACK_LINE(253)
				Float df = (d * f);		HX_STACK_VAR(df,"df");
				HX_STACK_LINE(255)
				te[(int)0] = (ce + (df * b));
				HX_STACK_LINE(256)
				te[(int)4] = ((de * b) - cf);
				HX_STACK_LINE(257)
				te[(int)8] = (a * d);
				HX_STACK_LINE(259)
				te[(int)1] = (a * f);
				HX_STACK_LINE(260)
				te[(int)5] = (a * e);
				HX_STACK_LINE(261)
				te[(int)9] = -(b);
				HX_STACK_LINE(263)
				te[(int)2] = ((cf * b) - de);
				HX_STACK_LINE(264)
				te[(int)6] = (df + (ce * b));
				HX_STACK_LINE(265)
				te[(int)10] = (a * c);
			}
			else{
				HX_STACK_LINE(267)
				if (((_order == HX_CSTRING("ZXY")))){
					HX_STACK_LINE(269)
					Float ce = (c * e);		HX_STACK_VAR(ce,"ce");
					HX_STACK_LINE(269)
					Float cf = (c * f);		HX_STACK_VAR(cf,"cf");
					HX_STACK_LINE(269)
					Float de = (d * e);		HX_STACK_VAR(de,"de");
					HX_STACK_LINE(269)
					Float df = (d * f);		HX_STACK_VAR(df,"df");
					HX_STACK_LINE(271)
					te[(int)0] = (ce - (df * b));
					HX_STACK_LINE(272)
					te[(int)4] = (-(a) * f);
					HX_STACK_LINE(273)
					te[(int)8] = (de + (cf * b));
					HX_STACK_LINE(275)
					te[(int)1] = (cf + (de * b));
					HX_STACK_LINE(276)
					te[(int)5] = (a * e);
					HX_STACK_LINE(277)
					te[(int)9] = (df - (ce * b));
					HX_STACK_LINE(279)
					te[(int)2] = (-(a) * d);
					HX_STACK_LINE(280)
					te[(int)6] = b;
					HX_STACK_LINE(281)
					te[(int)10] = (a * c);
				}
				else{
					HX_STACK_LINE(283)
					if (((_order == HX_CSTRING("ZYX")))){
						HX_STACK_LINE(285)
						Float ae = (a * e);		HX_STACK_VAR(ae,"ae");
						HX_STACK_LINE(285)
						Float af = (a * f);		HX_STACK_VAR(af,"af");
						HX_STACK_LINE(285)
						Float be = (b * e);		HX_STACK_VAR(be,"be");
						HX_STACK_LINE(285)
						Float bf = (b * f);		HX_STACK_VAR(bf,"bf");
						HX_STACK_LINE(287)
						te[(int)0] = (c * e);
						HX_STACK_LINE(288)
						te[(int)4] = ((be * d) - af);
						HX_STACK_LINE(289)
						te[(int)8] = ((ae * d) + bf);
						HX_STACK_LINE(291)
						te[(int)1] = (c * f);
						HX_STACK_LINE(292)
						te[(int)5] = ((bf * d) + ae);
						HX_STACK_LINE(293)
						te[(int)9] = ((af * d) - be);
						HX_STACK_LINE(295)
						te[(int)2] = -(d);
						HX_STACK_LINE(296)
						te[(int)6] = (b * c);
						HX_STACK_LINE(297)
						te[(int)10] = (a * c);
					}
					else{
						HX_STACK_LINE(299)
						if (((_order == HX_CSTRING("YZX")))){
							HX_STACK_LINE(301)
							Float ac = (a * c);		HX_STACK_VAR(ac,"ac");
							HX_STACK_LINE(301)
							Float ad = (a * d);		HX_STACK_VAR(ad,"ad");
							HX_STACK_LINE(301)
							Float bc = (b * c);		HX_STACK_VAR(bc,"bc");
							HX_STACK_LINE(301)
							Float bd = (b * d);		HX_STACK_VAR(bd,"bd");
							HX_STACK_LINE(303)
							te[(int)0] = (c * e);
							HX_STACK_LINE(304)
							te[(int)4] = (bd - (ac * f));
							HX_STACK_LINE(305)
							te[(int)8] = ((bc * f) + ad);
							HX_STACK_LINE(307)
							te[(int)1] = f;
							HX_STACK_LINE(308)
							te[(int)5] = (a * e);
							HX_STACK_LINE(309)
							te[(int)9] = (-(b) * e);
							HX_STACK_LINE(311)
							te[(int)2] = (-(d) * e);
							HX_STACK_LINE(312)
							te[(int)6] = ((ad * f) + bc);
							HX_STACK_LINE(313)
							te[(int)10] = (ac - (bd * f));
						}
						else{
							HX_STACK_LINE(315)
							if (((_order == HX_CSTRING("XZY")))){
								HX_STACK_LINE(317)
								Float ac = (a * c);		HX_STACK_VAR(ac,"ac");
								HX_STACK_LINE(317)
								Float ad = (a * d);		HX_STACK_VAR(ad,"ad");
								HX_STACK_LINE(317)
								Float bc = (b * c);		HX_STACK_VAR(bc,"bc");
								HX_STACK_LINE(317)
								Float bd = (b * d);		HX_STACK_VAR(bd,"bd");
								HX_STACK_LINE(319)
								te[(int)0] = (c * e);
								HX_STACK_LINE(320)
								te[(int)4] = -(f);
								HX_STACK_LINE(321)
								te[(int)8] = (d * e);
								HX_STACK_LINE(323)
								te[(int)1] = ((ac * f) + bd);
								HX_STACK_LINE(324)
								te[(int)5] = (a * e);
								HX_STACK_LINE(325)
								te[(int)9] = ((ad * f) - bc);
								HX_STACK_LINE(327)
								te[(int)2] = ((bc * f) - ad);
								HX_STACK_LINE(328)
								te[(int)6] = (b * e);
								HX_STACK_LINE(329)
								te[(int)10] = ((bd * f) + ac);
							}
						}
					}
				}
			}
		}
		HX_STACK_LINE(334)
		te[(int)3] = (int)0;
		HX_STACK_LINE(335)
		te[(int)7] = (int)0;
		HX_STACK_LINE(336)
		te[(int)11] = (int)0;
		HX_STACK_LINE(339)
		te[(int)12] = (int)0;
		HX_STACK_LINE(340)
		te[(int)13] = (int)0;
		HX_STACK_LINE(341)
		te[(int)14] = (int)0;
		HX_STACK_LINE(342)
		te[(int)15] = (int)1;
		HX_STACK_LINE(344)
		return hx::ObjectPtr<OBJ_>(this);
	}
}


HX_DEFINE_DYNAMIC_FUNC2(Matrix_obj,makeRotationFromEuler,return )

::phoenix::Matrix Matrix_obj::makeRotationFromQuaternion( ::phoenix::Quaternion q){
	HX_STACK_FRAME("phoenix.Matrix","makeRotationFromQuaternion",0x03148de2,"phoenix.Matrix.makeRotationFromQuaternion","phoenix/Matrix.hx",348,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(q,"q")
	HX_STACK_LINE(350)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(352)
	Float x2 = (q->x + q->x);		HX_STACK_VAR(x2,"x2");
	HX_STACK_LINE(352)
	Float y2 = (q->y + q->y);		HX_STACK_VAR(y2,"y2");
	HX_STACK_LINE(352)
	Float z2 = (q->z + q->z);		HX_STACK_VAR(z2,"z2");
	HX_STACK_LINE(353)
	Float xx = (q->x * x2);		HX_STACK_VAR(xx,"xx");
	HX_STACK_LINE(353)
	Float xy = (q->x * y2);		HX_STACK_VAR(xy,"xy");
	HX_STACK_LINE(353)
	Float xz = (q->x * z2);		HX_STACK_VAR(xz,"xz");
	HX_STACK_LINE(354)
	Float yy = (q->y * y2);		HX_STACK_VAR(yy,"yy");
	HX_STACK_LINE(354)
	Float yz = (q->y * z2);		HX_STACK_VAR(yz,"yz");
	HX_STACK_LINE(354)
	Float zz = (q->z * z2);		HX_STACK_VAR(zz,"zz");
	HX_STACK_LINE(355)
	Float wx = (q->w * x2);		HX_STACK_VAR(wx,"wx");
	HX_STACK_LINE(355)
	Float wy = (q->w * y2);		HX_STACK_VAR(wy,"wy");
	HX_STACK_LINE(355)
	Float wz = (q->w * z2);		HX_STACK_VAR(wz,"wz");
	HX_STACK_LINE(357)
	te[(int)0] = ((int)1 - ((yy + zz)));
	HX_STACK_LINE(358)
	te[(int)4] = (xy - wz);
	HX_STACK_LINE(359)
	te[(int)8] = (xz + wy);
	HX_STACK_LINE(361)
	te[(int)1] = (xy + wz);
	HX_STACK_LINE(362)
	te[(int)5] = ((int)1 - ((xx + zz)));
	HX_STACK_LINE(363)
	te[(int)9] = (yz - wx);
	HX_STACK_LINE(365)
	te[(int)2] = (xz - wy);
	HX_STACK_LINE(366)
	te[(int)6] = (yz + wx);
	HX_STACK_LINE(367)
	te[(int)10] = ((int)1 - ((xx + yy)));
	HX_STACK_LINE(370)
	te[(int)3] = (int)0;
	HX_STACK_LINE(371)
	te[(int)7] = (int)0;
	HX_STACK_LINE(372)
	te[(int)11] = (int)0;
	HX_STACK_LINE(375)
	te[(int)12] = (int)0;
	HX_STACK_LINE(376)
	te[(int)13] = (int)0;
	HX_STACK_LINE(377)
	te[(int)14] = (int)0;
	HX_STACK_LINE(378)
	te[(int)15] = (int)1;
	HX_STACK_LINE(380)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,makeRotationFromQuaternion,return )

::phoenix::Matrix Matrix_obj::lookAt( ::phoenix::Vector _eye,::phoenix::Vector _target,::phoenix::Vector _up){
	HX_STACK_FRAME("phoenix.Matrix","lookAt",0xa8305680,"phoenix.Matrix.lookAt","phoenix/Matrix.hx",385,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_eye,"_eye")
	HX_STACK_ARG(_target,"_target")
	HX_STACK_ARG(_up,"_up")
	HX_STACK_LINE(387)
	::phoenix::Vector _x = ::phoenix::Vector_obj::__new(null(),null(),null(),null());		HX_STACK_VAR(_x,"_x");
	HX_STACK_LINE(388)
	::phoenix::Vector _y = ::phoenix::Vector_obj::__new(null(),null(),null(),null());		HX_STACK_VAR(_y,"_y");
	HX_STACK_LINE(389)
	::phoenix::Vector _z = ::phoenix::Vector_obj::__new(null(),null(),null(),null());		HX_STACK_VAR(_z,"_z");
	HX_STACK_LINE(391)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(393)
	_z = ::phoenix::Vector_obj::Subtract(_target,_eye)->get_normalized();
	HX_STACK_LINE(395)
	if (((_z->get_length() == (int)0))){
		HX_STACK_LINE(396)
		_z->set_z((int)1);
	}
	HX_STACK_LINE(399)
	_x = ::phoenix::Vector_obj::Cross(_up,_z)->get_normalized();
	HX_STACK_LINE(401)
	if (((_x->get_length() == (int)0))){
		HX_STACK_LINE(402)
		{
			HX_STACK_LINE(402)
			::phoenix::Vector _g = _z;		HX_STACK_VAR(_g,"_g");
			HX_STACK_LINE(402)
			_g->set_x((_g->x + 0.0001));
		}
		HX_STACK_LINE(403)
		_x = ::phoenix::Vector_obj::Cross(_up,_z)->get_normalized();
	}
	HX_STACK_LINE(406)
	_y = ::phoenix::Vector_obj::Cross(_z,_x);
	HX_STACK_LINE(408)
	te[(int)0] = _x->x;
	HX_STACK_LINE(408)
	te[(int)4] = _y->x;
	HX_STACK_LINE(408)
	te[(int)8] = _z->x;
	HX_STACK_LINE(409)
	te[(int)1] = _x->y;
	HX_STACK_LINE(409)
	te[(int)5] = _y->y;
	HX_STACK_LINE(409)
	te[(int)9] = _z->y;
	HX_STACK_LINE(410)
	te[(int)2] = _x->z;
	HX_STACK_LINE(410)
	te[(int)6] = _y->z;
	HX_STACK_LINE(410)
	te[(int)10] = _z->z;
	HX_STACK_LINE(412)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC3(Matrix_obj,lookAt,return )

::phoenix::Matrix Matrix_obj::multiply( ::phoenix::Matrix _m){
	HX_STACK_FRAME("phoenix.Matrix","multiply",0x9e7d32f2,"phoenix.Matrix.multiply","phoenix/Matrix.hx",419,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_m,"_m")
	HX_STACK_LINE(419)
	return this->multiplyMatrices(hx::ObjectPtr<OBJ_>(this),_m);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,multiply,return )

::phoenix::Matrix Matrix_obj::multiplyMatrices( ::phoenix::Matrix _a,::phoenix::Matrix _b){
	HX_STACK_FRAME("phoenix.Matrix","multiplyMatrices",0xb2c9a2ac,"phoenix.Matrix.multiplyMatrices","phoenix/Matrix.hx",424,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_a,"_a")
	HX_STACK_ARG(_b,"_b")
	HX_STACK_LINE(426)
	Array< Float > ae = _a->elements;		HX_STACK_VAR(ae,"ae");
	HX_STACK_LINE(427)
	Array< Float > be = _b->elements;		HX_STACK_VAR(be,"be");
	HX_STACK_LINE(428)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(430)
	Float a11 = ae->__get((int)0);		HX_STACK_VAR(a11,"a11");
	HX_STACK_LINE(430)
	Float a12 = ae->__get((int)4);		HX_STACK_VAR(a12,"a12");
	HX_STACK_LINE(430)
	Float a13 = ae->__get((int)8);		HX_STACK_VAR(a13,"a13");
	HX_STACK_LINE(430)
	Float a14 = ae->__get((int)12);		HX_STACK_VAR(a14,"a14");
	HX_STACK_LINE(431)
	Float a21 = ae->__get((int)1);		HX_STACK_VAR(a21,"a21");
	HX_STACK_LINE(431)
	Float a22 = ae->__get((int)5);		HX_STACK_VAR(a22,"a22");
	HX_STACK_LINE(431)
	Float a23 = ae->__get((int)9);		HX_STACK_VAR(a23,"a23");
	HX_STACK_LINE(431)
	Float a24 = ae->__get((int)13);		HX_STACK_VAR(a24,"a24");
	HX_STACK_LINE(432)
	Float a31 = ae->__get((int)2);		HX_STACK_VAR(a31,"a31");
	HX_STACK_LINE(432)
	Float a32 = ae->__get((int)6);		HX_STACK_VAR(a32,"a32");
	HX_STACK_LINE(432)
	Float a33 = ae->__get((int)10);		HX_STACK_VAR(a33,"a33");
	HX_STACK_LINE(432)
	Float a34 = ae->__get((int)14);		HX_STACK_VAR(a34,"a34");
	HX_STACK_LINE(433)
	Float a41 = ae->__get((int)3);		HX_STACK_VAR(a41,"a41");
	HX_STACK_LINE(433)
	Float a42 = ae->__get((int)7);		HX_STACK_VAR(a42,"a42");
	HX_STACK_LINE(433)
	Float a43 = ae->__get((int)11);		HX_STACK_VAR(a43,"a43");
	HX_STACK_LINE(433)
	Float a44 = ae->__get((int)15);		HX_STACK_VAR(a44,"a44");
	HX_STACK_LINE(435)
	Float b11 = be->__get((int)0);		HX_STACK_VAR(b11,"b11");
	HX_STACK_LINE(435)
	Float b12 = be->__get((int)4);		HX_STACK_VAR(b12,"b12");
	HX_STACK_LINE(435)
	Float b13 = be->__get((int)8);		HX_STACK_VAR(b13,"b13");
	HX_STACK_LINE(435)
	Float b14 = be->__get((int)12);		HX_STACK_VAR(b14,"b14");
	HX_STACK_LINE(436)
	Float b21 = be->__get((int)1);		HX_STACK_VAR(b21,"b21");
	HX_STACK_LINE(436)
	Float b22 = be->__get((int)5);		HX_STACK_VAR(b22,"b22");
	HX_STACK_LINE(436)
	Float b23 = be->__get((int)9);		HX_STACK_VAR(b23,"b23");
	HX_STACK_LINE(436)
	Float b24 = be->__get((int)13);		HX_STACK_VAR(b24,"b24");
	HX_STACK_LINE(437)
	Float b31 = be->__get((int)2);		HX_STACK_VAR(b31,"b31");
	HX_STACK_LINE(437)
	Float b32 = be->__get((int)6);		HX_STACK_VAR(b32,"b32");
	HX_STACK_LINE(437)
	Float b33 = be->__get((int)10);		HX_STACK_VAR(b33,"b33");
	HX_STACK_LINE(437)
	Float b34 = be->__get((int)14);		HX_STACK_VAR(b34,"b34");
	HX_STACK_LINE(438)
	Float b41 = be->__get((int)3);		HX_STACK_VAR(b41,"b41");
	HX_STACK_LINE(438)
	Float b42 = be->__get((int)7);		HX_STACK_VAR(b42,"b42");
	HX_STACK_LINE(438)
	Float b43 = be->__get((int)11);		HX_STACK_VAR(b43,"b43");
	HX_STACK_LINE(438)
	Float b44 = be->__get((int)15);		HX_STACK_VAR(b44,"b44");
	HX_STACK_LINE(440)
	te[(int)0] = ((((a11 * b11) + (a12 * b21)) + (a13 * b31)) + (a14 * b41));
	HX_STACK_LINE(441)
	te[(int)4] = ((((a11 * b12) + (a12 * b22)) + (a13 * b32)) + (a14 * b42));
	HX_STACK_LINE(442)
	te[(int)8] = ((((a11 * b13) + (a12 * b23)) + (a13 * b33)) + (a14 * b43));
	HX_STACK_LINE(443)
	te[(int)12] = ((((a11 * b14) + (a12 * b24)) + (a13 * b34)) + (a14 * b44));
	HX_STACK_LINE(445)
	te[(int)1] = ((((a21 * b11) + (a22 * b21)) + (a23 * b31)) + (a24 * b41));
	HX_STACK_LINE(446)
	te[(int)5] = ((((a21 * b12) + (a22 * b22)) + (a23 * b32)) + (a24 * b42));
	HX_STACK_LINE(447)
	te[(int)9] = ((((a21 * b13) + (a22 * b23)) + (a23 * b33)) + (a24 * b43));
	HX_STACK_LINE(448)
	te[(int)13] = ((((a21 * b14) + (a22 * b24)) + (a23 * b34)) + (a24 * b44));
	HX_STACK_LINE(450)
	te[(int)2] = ((((a31 * b11) + (a32 * b21)) + (a33 * b31)) + (a34 * b41));
	HX_STACK_LINE(451)
	te[(int)6] = ((((a31 * b12) + (a32 * b22)) + (a33 * b32)) + (a34 * b42));
	HX_STACK_LINE(452)
	te[(int)10] = ((((a31 * b13) + (a32 * b23)) + (a33 * b33)) + (a34 * b43));
	HX_STACK_LINE(453)
	te[(int)14] = ((((a31 * b14) + (a32 * b24)) + (a33 * b34)) + (a34 * b44));
	HX_STACK_LINE(455)
	te[(int)3] = ((((a41 * b11) + (a42 * b21)) + (a43 * b31)) + (a44 * b41));
	HX_STACK_LINE(456)
	te[(int)7] = ((((a41 * b12) + (a42 * b22)) + (a43 * b32)) + (a44 * b42));
	HX_STACK_LINE(457)
	te[(int)11] = ((((a41 * b13) + (a42 * b23)) + (a43 * b33)) + (a44 * b43));
	HX_STACK_LINE(458)
	te[(int)15] = ((((a41 * b14) + (a42 * b24)) + (a43 * b34)) + (a44 * b44));
	HX_STACK_LINE(460)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC2(Matrix_obj,multiplyMatrices,return )

::phoenix::Matrix Matrix_obj::multiplyToArray( ::phoenix::Matrix _a,::phoenix::Matrix _b,Array< Float > _r){
	HX_STACK_FRAME("phoenix.Matrix","multiplyToArray",0x8681d14c,"phoenix.Matrix.multiplyToArray","phoenix/Matrix.hx",465,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_a,"_a")
	HX_STACK_ARG(_b,"_b")
	HX_STACK_ARG(_r,"_r")
	HX_STACK_LINE(467)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(469)
	this->multiplyMatrices(_a,_b);
	HX_STACK_LINE(471)
	_r[(int)0] = te->__get((int)0);
	HX_STACK_LINE(471)
	_r[(int)1] = te->__get((int)1);
	HX_STACK_LINE(471)
	_r[(int)2] = te->__get((int)2);
	HX_STACK_LINE(471)
	_r[(int)3] = te->__get((int)3);
	HX_STACK_LINE(472)
	_r[(int)4] = te->__get((int)4);
	HX_STACK_LINE(472)
	_r[(int)5] = te->__get((int)5);
	HX_STACK_LINE(472)
	_r[(int)6] = te->__get((int)6);
	HX_STACK_LINE(472)
	_r[(int)7] = te->__get((int)7);
	HX_STACK_LINE(473)
	_r[(int)8] = te->__get((int)8);
	HX_STACK_LINE(473)
	_r[(int)9] = te->__get((int)9);
	HX_STACK_LINE(473)
	_r[(int)10] = te->__get((int)10);
	HX_STACK_LINE(473)
	_r[(int)11] = te->__get((int)11);
	HX_STACK_LINE(474)
	_r[(int)12] = te->__get((int)12);
	HX_STACK_LINE(474)
	_r[(int)13] = te->__get((int)13);
	HX_STACK_LINE(474)
	_r[(int)14] = te->__get((int)14);
	HX_STACK_LINE(474)
	_r[(int)15] = te->__get((int)15);
	HX_STACK_LINE(476)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC3(Matrix_obj,multiplyToArray,return )

::phoenix::Matrix Matrix_obj::multiplyScalar( Float _s){
	HX_STACK_FRAME("phoenix.Matrix","multiplyScalar",0x0b734fbe,"phoenix.Matrix.multiplyScalar","phoenix/Matrix.hx",481,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_s,"_s")
	HX_STACK_LINE(483)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(485)
	hx::MultEq(te[(int)0],_s);
	HX_STACK_LINE(485)
	hx::MultEq(te[(int)4],_s);
	HX_STACK_LINE(485)
	hx::MultEq(te[(int)8],_s);
	HX_STACK_LINE(485)
	hx::MultEq(te[(int)12],_s);
	HX_STACK_LINE(486)
	hx::MultEq(te[(int)1],_s);
	HX_STACK_LINE(486)
	hx::MultEq(te[(int)5],_s);
	HX_STACK_LINE(486)
	hx::MultEq(te[(int)9],_s);
	HX_STACK_LINE(486)
	hx::MultEq(te[(int)13],_s);
	HX_STACK_LINE(487)
	hx::MultEq(te[(int)2],_s);
	HX_STACK_LINE(487)
	hx::MultEq(te[(int)6],_s);
	HX_STACK_LINE(487)
	hx::MultEq(te[(int)10],_s);
	HX_STACK_LINE(487)
	hx::MultEq(te[(int)14],_s);
	HX_STACK_LINE(488)
	hx::MultEq(te[(int)3],_s);
	HX_STACK_LINE(488)
	hx::MultEq(te[(int)7],_s);
	HX_STACK_LINE(488)
	hx::MultEq(te[(int)11],_s);
	HX_STACK_LINE(488)
	hx::MultEq(te[(int)15],_s);
	HX_STACK_LINE(490)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,multiplyScalar,return )

Array< Float > Matrix_obj::multiplyVector3Array( Array< Float > _a){
	HX_STACK_FRAME("phoenix.Matrix","multiplyVector3Array",0xbd148b7b,"phoenix.Matrix.multiplyVector3Array","phoenix/Matrix.hx",495,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_a,"_a")
	HX_STACK_LINE(497)
	::phoenix::Vector v1 = ::phoenix::Vector_obj::__new(null(),null(),null(),null());		HX_STACK_VAR(v1,"v1");
	HX_STACK_LINE(498)
	int i = (int)0;		HX_STACK_VAR(i,"i");
	HX_STACK_LINE(499)
	int il = _a->length;		HX_STACK_VAR(il,"il");
	HX_STACK_LINE(501)
	while(((i < il))){
		HX_STACK_LINE(503)
		v1->set_x(_a->__get(i));
		HX_STACK_LINE(504)
		v1->set_y(_a->__get((i + (int)1)));
		HX_STACK_LINE(505)
		v1->set_z(_a->__get((i + (int)2)));
		HX_STACK_LINE(507)
		v1->applyProjection(hx::ObjectPtr<OBJ_>(this));
		HX_STACK_LINE(509)
		_a[i] = v1->x;
		HX_STACK_LINE(510)
		_a[(i + (int)1)] = v1->y;
		HX_STACK_LINE(511)
		_a[(i + (int)2)] = v1->z;
		HX_STACK_LINE(513)
		hx::AddEq(i,(int)3);
	}
	HX_STACK_LINE(517)
	return _a;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,multiplyVector3Array,return )

Float Matrix_obj::determinant( ){
	HX_STACK_FRAME("phoenix.Matrix","determinant",0xad610187,"phoenix.Matrix.determinant","phoenix/Matrix.hx",521,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(523)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(525)
	Float n11 = te->__get((int)0);		HX_STACK_VAR(n11,"n11");
	HX_STACK_LINE(525)
	Float n12 = te->__get((int)4);		HX_STACK_VAR(n12,"n12");
	HX_STACK_LINE(525)
	Float n13 = te->__get((int)8);		HX_STACK_VAR(n13,"n13");
	HX_STACK_LINE(525)
	Float n14 = te->__get((int)12);		HX_STACK_VAR(n14,"n14");
	HX_STACK_LINE(526)
	Float n21 = te->__get((int)1);		HX_STACK_VAR(n21,"n21");
	HX_STACK_LINE(526)
	Float n22 = te->__get((int)5);		HX_STACK_VAR(n22,"n22");
	HX_STACK_LINE(526)
	Float n23 = te->__get((int)9);		HX_STACK_VAR(n23,"n23");
	HX_STACK_LINE(526)
	Float n24 = te->__get((int)13);		HX_STACK_VAR(n24,"n24");
	HX_STACK_LINE(527)
	Float n31 = te->__get((int)2);		HX_STACK_VAR(n31,"n31");
	HX_STACK_LINE(527)
	Float n32 = te->__get((int)6);		HX_STACK_VAR(n32,"n32");
	HX_STACK_LINE(527)
	Float n33 = te->__get((int)10);		HX_STACK_VAR(n33,"n33");
	HX_STACK_LINE(527)
	Float n34 = te->__get((int)14);		HX_STACK_VAR(n34,"n34");
	HX_STACK_LINE(528)
	Float n41 = te->__get((int)3);		HX_STACK_VAR(n41,"n41");
	HX_STACK_LINE(528)
	Float n42 = te->__get((int)7);		HX_STACK_VAR(n42,"n42");
	HX_STACK_LINE(528)
	Float n43 = te->__get((int)11);		HX_STACK_VAR(n43,"n43");
	HX_STACK_LINE(528)
	Float n44 = te->__get((int)15);		HX_STACK_VAR(n44,"n44");
	HX_STACK_LINE(530)
	return ((((n41 * ((((((((n14 * n23) * n32) - ((n13 * n24) * n32)) - ((n14 * n22) * n33)) + ((n12 * n24) * n33)) + ((n13 * n22) * n34)) - ((n12 * n23) * n34)))) + (n42 * ((((((((n11 * n23) * n34) - ((n11 * n24) * n33)) + ((n14 * n21) * n33)) - ((n13 * n21) * n34)) + ((n13 * n24) * n31)) - ((n14 * n23) * n31))))) + (n43 * ((((((((n11 * n24) * n32) - ((n11 * n22) * n34)) - ((n14 * n21) * n32)) + ((n12 * n21) * n34)) + ((n14 * n22) * n31)) - ((n12 * n24) * n31))))) + (n44 * ((((((((-(n13) * n22) * n31) - ((n11 * n23) * n32)) + ((n11 * n22) * n33)) + ((n13 * n21) * n32)) - ((n12 * n21) * n33)) + ((n12 * n23) * n31)))));
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,determinant,return )

::phoenix::Matrix Matrix_obj::transpose( ){
	HX_STACK_FRAME("phoenix.Matrix","transpose",0xba85b3eb,"phoenix.Matrix.transpose","phoenix/Matrix.hx",566,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(568)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(569)
	Float tmp;		HX_STACK_VAR(tmp,"tmp");
	HX_STACK_LINE(571)
	tmp = te->__get((int)1);
	HX_STACK_LINE(571)
	te[(int)1] = te->__get((int)4);
	HX_STACK_LINE(571)
	te[(int)4] = tmp;
	HX_STACK_LINE(572)
	tmp = te->__get((int)2);
	HX_STACK_LINE(572)
	te[(int)2] = te->__get((int)8);
	HX_STACK_LINE(572)
	te[(int)8] = tmp;
	HX_STACK_LINE(573)
	tmp = te->__get((int)6);
	HX_STACK_LINE(573)
	te[(int)6] = te->__get((int)9);
	HX_STACK_LINE(573)
	te[(int)9] = tmp;
	HX_STACK_LINE(575)
	tmp = te->__get((int)3);
	HX_STACK_LINE(575)
	te[(int)3] = te->__get((int)12);
	HX_STACK_LINE(575)
	te[(int)12] = tmp;
	HX_STACK_LINE(576)
	tmp = te->__get((int)7);
	HX_STACK_LINE(576)
	te[(int)7] = te->__get((int)13);
	HX_STACK_LINE(576)
	te[(int)13] = tmp;
	HX_STACK_LINE(577)
	tmp = te->__get((int)11);
	HX_STACK_LINE(577)
	te[(int)11] = te->__get((int)14);
	HX_STACK_LINE(577)
	te[(int)14] = tmp;
	HX_STACK_LINE(579)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,transpose,return )

Array< Float > Matrix_obj::flattenToArray( Array< Float > _flat){
	HX_STACK_FRAME("phoenix.Matrix","flattenToArray",0xbdf5d608,"phoenix.Matrix.flattenToArray","phoenix/Matrix.hx",583,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_flat,"_flat")
	HX_STACK_LINE(585)
	if (((_flat == null()))){
		HX_STACK_LINE(586)
		_flat = Array_obj< Float >::__new();
		HX_STACK_LINE(587)
		{
			HX_STACK_LINE(587)
			int _g = (int)0;		HX_STACK_VAR(_g,"_g");
			HX_STACK_LINE(587)
			while(((_g < (int)16))){
				HX_STACK_LINE(587)
				int i = (_g)++;		HX_STACK_VAR(i,"i");
				HX_STACK_LINE(587)
				_flat->push(0.0);
			}
		}
	}
	HX_STACK_LINE(590)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(592)
	_flat[(int)0] = te->__get((int)0);
	HX_STACK_LINE(592)
	_flat[(int)1] = te->__get((int)1);
	HX_STACK_LINE(592)
	_flat[(int)2] = te->__get((int)2);
	HX_STACK_LINE(592)
	_flat[(int)3] = te->__get((int)3);
	HX_STACK_LINE(593)
	_flat[(int)4] = te->__get((int)4);
	HX_STACK_LINE(593)
	_flat[(int)5] = te->__get((int)5);
	HX_STACK_LINE(593)
	_flat[(int)6] = te->__get((int)6);
	HX_STACK_LINE(593)
	_flat[(int)7] = te->__get((int)7);
	HX_STACK_LINE(594)
	_flat[(int)8] = te->__get((int)8);
	HX_STACK_LINE(594)
	_flat[(int)9] = te->__get((int)9);
	HX_STACK_LINE(594)
	_flat[(int)10] = te->__get((int)10);
	HX_STACK_LINE(594)
	_flat[(int)11] = te->__get((int)11);
	HX_STACK_LINE(595)
	_flat[(int)12] = te->__get((int)12);
	HX_STACK_LINE(595)
	_flat[(int)13] = te->__get((int)13);
	HX_STACK_LINE(595)
	_flat[(int)14] = te->__get((int)14);
	HX_STACK_LINE(595)
	_flat[(int)15] = te->__get((int)15);
	HX_STACK_LINE(597)
	return _flat;
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,flattenToArray,return )

Array< Float > Matrix_obj::flattenToArrayOffset( Array< Float > _flat,int _offset){
	HX_STACK_FRAME("phoenix.Matrix","flattenToArrayOffset",0xf67a17bb,"phoenix.Matrix.flattenToArrayOffset","phoenix/Matrix.hx",602,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_flat,"_flat")
	HX_STACK_ARG(_offset,"_offset")
	HX_STACK_LINE(604)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(606)
	_flat[_offset] = te->__get((int)0);
	HX_STACK_LINE(607)
	_flat[(_offset + (int)1)] = te->__get((int)1);
	HX_STACK_LINE(608)
	_flat[(_offset + (int)2)] = te->__get((int)2);
	HX_STACK_LINE(609)
	_flat[(_offset + (int)3)] = te->__get((int)3);
	HX_STACK_LINE(611)
	_flat[(_offset + (int)4)] = te->__get((int)4);
	HX_STACK_LINE(612)
	_flat[(_offset + (int)5)] = te->__get((int)5);
	HX_STACK_LINE(613)
	_flat[(_offset + (int)6)] = te->__get((int)6);
	HX_STACK_LINE(614)
	_flat[(_offset + (int)7)] = te->__get((int)7);
	HX_STACK_LINE(616)
	_flat[(_offset + (int)8)] = te->__get((int)8);
	HX_STACK_LINE(617)
	_flat[(_offset + (int)9)] = te->__get((int)9);
	HX_STACK_LINE(618)
	_flat[(_offset + (int)10)] = te->__get((int)10);
	HX_STACK_LINE(619)
	_flat[(_offset + (int)11)] = te->__get((int)11);
	HX_STACK_LINE(621)
	_flat[(_offset + (int)12)] = te->__get((int)12);
	HX_STACK_LINE(622)
	_flat[(_offset + (int)13)] = te->__get((int)13);
	HX_STACK_LINE(623)
	_flat[(_offset + (int)14)] = te->__get((int)14);
	HX_STACK_LINE(624)
	_flat[(_offset + (int)15)] = te->__get((int)15);
	HX_STACK_LINE(626)
	return _flat;
}


HX_DEFINE_DYNAMIC_FUNC2(Matrix_obj,flattenToArrayOffset,return )

::phoenix::Matrix Matrix_obj::setPosition( ::phoenix::Vector _v){
	HX_STACK_FRAME("phoenix.Matrix","setPosition",0x76a70e5d,"phoenix.Matrix.setPosition","phoenix/Matrix.hx",631,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_v,"_v")
	HX_STACK_LINE(633)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(635)
	te[(int)12] = _v->x;
	HX_STACK_LINE(636)
	te[(int)13] = _v->y;
	HX_STACK_LINE(637)
	te[(int)14] = _v->z;
	HX_STACK_LINE(639)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,setPosition,return )

::phoenix::Matrix Matrix_obj::inverse( ){
	HX_STACK_FRAME("phoenix.Matrix","inverse",0xa2fb8ea2,"phoenix.Matrix.inverse","phoenix/Matrix.hx",644,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(644)
	return this->clone()->getInverse(hx::ObjectPtr<OBJ_>(this));
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,inverse,return )

::phoenix::Matrix Matrix_obj::getInverse( ::phoenix::Matrix _m){
	HX_STACK_FRAME("phoenix.Matrix","getInverse",0xaa937208,"phoenix.Matrix.getInverse","phoenix/Matrix.hx",647,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_m,"_m")
	HX_STACK_LINE(651)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(652)
	Array< Float > me = _m->elements;		HX_STACK_VAR(me,"me");
	HX_STACK_LINE(654)
	Float n11 = me->__get((int)0);		HX_STACK_VAR(n11,"n11");
	HX_STACK_LINE(654)
	Float n12 = me->__get((int)4);		HX_STACK_VAR(n12,"n12");
	HX_STACK_LINE(654)
	Float n13 = me->__get((int)8);		HX_STACK_VAR(n13,"n13");
	HX_STACK_LINE(654)
	Float n14 = me->__get((int)12);		HX_STACK_VAR(n14,"n14");
	HX_STACK_LINE(655)
	Float n21 = me->__get((int)1);		HX_STACK_VAR(n21,"n21");
	HX_STACK_LINE(655)
	Float n22 = me->__get((int)5);		HX_STACK_VAR(n22,"n22");
	HX_STACK_LINE(655)
	Float n23 = me->__get((int)9);		HX_STACK_VAR(n23,"n23");
	HX_STACK_LINE(655)
	Float n24 = me->__get((int)13);		HX_STACK_VAR(n24,"n24");
	HX_STACK_LINE(656)
	Float n31 = me->__get((int)2);		HX_STACK_VAR(n31,"n31");
	HX_STACK_LINE(656)
	Float n32 = me->__get((int)6);		HX_STACK_VAR(n32,"n32");
	HX_STACK_LINE(656)
	Float n33 = me->__get((int)10);		HX_STACK_VAR(n33,"n33");
	HX_STACK_LINE(656)
	Float n34 = me->__get((int)14);		HX_STACK_VAR(n34,"n34");
	HX_STACK_LINE(657)
	Float n41 = me->__get((int)3);		HX_STACK_VAR(n41,"n41");
	HX_STACK_LINE(657)
	Float n42 = me->__get((int)7);		HX_STACK_VAR(n42,"n42");
	HX_STACK_LINE(657)
	Float n43 = me->__get((int)11);		HX_STACK_VAR(n43,"n43");
	HX_STACK_LINE(657)
	Float n44 = me->__get((int)15);		HX_STACK_VAR(n44,"n44");
	HX_STACK_LINE(659)
	te[(int)0] = (((((((n23 * n34) * n42) - ((n24 * n33) * n42)) + ((n24 * n32) * n43)) - ((n22 * n34) * n43)) - ((n23 * n32) * n44)) + ((n22 * n33) * n44));
	HX_STACK_LINE(660)
	te[(int)4] = (((((((n14 * n33) * n42) - ((n13 * n34) * n42)) - ((n14 * n32) * n43)) + ((n12 * n34) * n43)) + ((n13 * n32) * n44)) - ((n12 * n33) * n44));
	HX_STACK_LINE(661)
	te[(int)8] = (((((((n13 * n24) * n42) - ((n14 * n23) * n42)) + ((n14 * n22) * n43)) - ((n12 * n24) * n43)) - ((n13 * n22) * n44)) + ((n12 * n23) * n44));
	HX_STACK_LINE(662)
	te[(int)12] = (((((((n14 * n23) * n32) - ((n13 * n24) * n32)) - ((n14 * n22) * n33)) + ((n12 * n24) * n33)) + ((n13 * n22) * n34)) - ((n12 * n23) * n34));
	HX_STACK_LINE(663)
	te[(int)1] = (((((((n24 * n33) * n41) - ((n23 * n34) * n41)) - ((n24 * n31) * n43)) + ((n21 * n34) * n43)) + ((n23 * n31) * n44)) - ((n21 * n33) * n44));
	HX_STACK_LINE(664)
	te[(int)5] = (((((((n13 * n34) * n41) - ((n14 * n33) * n41)) + ((n14 * n31) * n43)) - ((n11 * n34) * n43)) - ((n13 * n31) * n44)) + ((n11 * n33) * n44));
	HX_STACK_LINE(665)
	te[(int)9] = (((((((n14 * n23) * n41) - ((n13 * n24) * n41)) - ((n14 * n21) * n43)) + ((n11 * n24) * n43)) + ((n13 * n21) * n44)) - ((n11 * n23) * n44));
	HX_STACK_LINE(666)
	te[(int)13] = (((((((n13 * n24) * n31) - ((n14 * n23) * n31)) + ((n14 * n21) * n33)) - ((n11 * n24) * n33)) - ((n13 * n21) * n34)) + ((n11 * n23) * n34));
	HX_STACK_LINE(667)
	te[(int)2] = (((((((n22 * n34) * n41) - ((n24 * n32) * n41)) + ((n24 * n31) * n42)) - ((n21 * n34) * n42)) - ((n22 * n31) * n44)) + ((n21 * n32) * n44));
	HX_STACK_LINE(668)
	te[(int)6] = (((((((n14 * n32) * n41) - ((n12 * n34) * n41)) - ((n14 * n31) * n42)) + ((n11 * n34) * n42)) + ((n12 * n31) * n44)) - ((n11 * n32) * n44));
	HX_STACK_LINE(669)
	te[(int)10] = (((((((n12 * n24) * n41) - ((n14 * n22) * n41)) + ((n14 * n21) * n42)) - ((n11 * n24) * n42)) - ((n12 * n21) * n44)) + ((n11 * n22) * n44));
	HX_STACK_LINE(670)
	te[(int)14] = (((((((n14 * n22) * n31) - ((n12 * n24) * n31)) - ((n14 * n21) * n32)) + ((n11 * n24) * n32)) + ((n12 * n21) * n34)) - ((n11 * n22) * n34));
	HX_STACK_LINE(671)
	te[(int)3] = (((((((n23 * n32) * n41) - ((n22 * n33) * n41)) - ((n23 * n31) * n42)) + ((n21 * n33) * n42)) + ((n22 * n31) * n43)) - ((n21 * n32) * n43));
	HX_STACK_LINE(672)
	te[(int)7] = (((((((n12 * n33) * n41) - ((n13 * n32) * n41)) + ((n13 * n31) * n42)) - ((n11 * n33) * n42)) - ((n12 * n31) * n43)) + ((n11 * n32) * n43));
	HX_STACK_LINE(673)
	te[(int)11] = (((((((n13 * n22) * n41) - ((n12 * n23) * n41)) - ((n13 * n21) * n42)) + ((n11 * n23) * n42)) + ((n12 * n21) * n43)) - ((n11 * n22) * n43));
	HX_STACK_LINE(674)
	te[(int)15] = (((((((n12 * n23) * n31) - ((n13 * n22) * n31)) + ((n13 * n21) * n32)) - ((n11 * n23) * n32)) - ((n12 * n21) * n33)) + ((n11 * n22) * n33));
	HX_STACK_LINE(676)
	Float det = ((((me->__get((int)0) * te->__get((int)0)) + (me->__get((int)1) * te->__get((int)4))) + (me->__get((int)2) * te->__get((int)8))) + (me->__get((int)3) * te->__get((int)12)));		HX_STACK_VAR(det,"det");
	HX_STACK_LINE(678)
	if (((det == (int)0))){
		HX_STACK_LINE(680)
		::haxe::Log_obj::trace(HX_CSTRING("Matrix.getInverse: cant invert matrix, determinant is 0"),hx::SourceInfo(HX_CSTRING("Matrix.hx"),680,HX_CSTRING("phoenix.Matrix"),HX_CSTRING("getInverse")));
		HX_STACK_LINE(682)
		this->identity();
		HX_STACK_LINE(684)
		return hx::ObjectPtr<OBJ_>(this);
	}
	HX_STACK_LINE(688)
	this->multiplyScalar((Float((int)1) / Float(det)));
	HX_STACK_LINE(690)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,getInverse,return )

::phoenix::Matrix Matrix_obj::scale( ::phoenix::Vector _v){
	HX_STACK_FRAME("phoenix.Matrix","scale",0x75ae10fc,"phoenix.Matrix.scale","phoenix/Matrix.hx",695,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_v,"_v")
	HX_STACK_LINE(697)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(699)
	Float _x = _v->x;		HX_STACK_VAR(_x,"_x");
	HX_STACK_LINE(700)
	Float _y = _v->y;		HX_STACK_VAR(_y,"_y");
	HX_STACK_LINE(701)
	Float _z = _v->z;		HX_STACK_VAR(_z,"_z");
	HX_STACK_LINE(703)
	hx::MultEq(te[(int)0],_x);
	HX_STACK_LINE(703)
	hx::MultEq(te[(int)4],_y);
	HX_STACK_LINE(703)
	hx::MultEq(te[(int)8],_z);
	HX_STACK_LINE(704)
	hx::MultEq(te[(int)1],_x);
	HX_STACK_LINE(704)
	hx::MultEq(te[(int)5],_y);
	HX_STACK_LINE(704)
	hx::MultEq(te[(int)9],_z);
	HX_STACK_LINE(705)
	hx::MultEq(te[(int)2],_x);
	HX_STACK_LINE(705)
	hx::MultEq(te[(int)6],_y);
	HX_STACK_LINE(705)
	hx::MultEq(te[(int)10],_z);
	HX_STACK_LINE(706)
	hx::MultEq(te[(int)3],_x);
	HX_STACK_LINE(706)
	hx::MultEq(te[(int)7],_y);
	HX_STACK_LINE(706)
	hx::MultEq(te[(int)11],_z);
	HX_STACK_LINE(708)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,scale,return )

Float Matrix_obj::getMaxScaleOnAxis( ){
	HX_STACK_FRAME("phoenix.Matrix","getMaxScaleOnAxis",0x4896c7ee,"phoenix.Matrix.getMaxScaleOnAxis","phoenix/Matrix.hx",713,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(715)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(717)
	Float _scaleXSq = (((te->__get((int)0) * te->__get((int)0)) + (te->__get((int)1) * te->__get((int)1))) + (te->__get((int)2) * te->__get((int)2)));		HX_STACK_VAR(_scaleXSq,"_scaleXSq");
	HX_STACK_LINE(718)
	Float _scaleYSq = (((te->__get((int)4) * te->__get((int)4)) + (te->__get((int)5) * te->__get((int)5))) + (te->__get((int)6) * te->__get((int)6)));		HX_STACK_VAR(_scaleYSq,"_scaleYSq");
	HX_STACK_LINE(719)
	Float _scaleZSq = (((te->__get((int)8) * te->__get((int)8)) + (te->__get((int)9) * te->__get((int)9))) + (te->__get((int)10) * te->__get((int)10)));		HX_STACK_VAR(_scaleZSq,"_scaleZSq");
	HX_STACK_LINE(721)
	return ::Math_obj::sqrt(::Math_obj::max(_scaleXSq,::Math_obj::max(_scaleYSq,_scaleZSq)));
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,getMaxScaleOnAxis,return )

::phoenix::Matrix Matrix_obj::makeTranslation( Float _x,Float _y,Float _z){
	HX_STACK_FRAME("phoenix.Matrix","makeTranslation",0xddf09e95,"phoenix.Matrix.makeTranslation","phoenix/Matrix.hx",726,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_x,"_x")
	HX_STACK_ARG(_y,"_y")
	HX_STACK_ARG(_z,"_z")
	HX_STACK_LINE(728)
	this->set((int)1,(int)0,(int)0,_x,(int)0,(int)1,(int)0,_y,(int)0,(int)0,(int)1,_z,(int)0,(int)0,(int)0,(int)1);
	HX_STACK_LINE(735)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC3(Matrix_obj,makeTranslation,return )

::phoenix::Matrix Matrix_obj::makeRotationX( Float _theta){
	HX_STACK_FRAME("phoenix.Matrix","makeRotationX",0x060a55fe,"phoenix.Matrix.makeRotationX","phoenix/Matrix.hx",740,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_theta,"_theta")
	HX_STACK_LINE(742)
	Float _c = ::Math_obj::cos(_theta);		HX_STACK_VAR(_c,"_c");
	HX_STACK_LINE(743)
	Float _s = ::Math_obj::sin(_theta);		HX_STACK_VAR(_s,"_s");
	HX_STACK_LINE(745)
	this->set((int)1,(int)0,(int)0,(int)0,(int)0,_c,-(_s),(int)0,(int)0,_s,_c,(int)0,(int)0,(int)0,(int)0,(int)1);
	HX_STACK_LINE(752)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,makeRotationX,return )

::phoenix::Matrix Matrix_obj::makeRotationY( Float _theta){
	HX_STACK_FRAME("phoenix.Matrix","makeRotationY",0x060a55ff,"phoenix.Matrix.makeRotationY","phoenix/Matrix.hx",757,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_theta,"_theta")
	HX_STACK_LINE(759)
	Float _c = ::Math_obj::cos(_theta);		HX_STACK_VAR(_c,"_c");
	HX_STACK_LINE(760)
	Float _s = ::Math_obj::sin(_theta);		HX_STACK_VAR(_s,"_s");
	HX_STACK_LINE(762)
	this->set(_c,(int)0,_s,(int)0,(int)0,(int)1,(int)0,(int)0,-(_s),(int)0,_c,(int)0,(int)0,(int)0,(int)0,(int)1);
	HX_STACK_LINE(769)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,makeRotationY,return )

::phoenix::Matrix Matrix_obj::makeRotationZ( Float _theta){
	HX_STACK_FRAME("phoenix.Matrix","makeRotationZ",0x060a5600,"phoenix.Matrix.makeRotationZ","phoenix/Matrix.hx",774,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_theta,"_theta")
	HX_STACK_LINE(776)
	Float _c = ::Math_obj::cos(_theta);		HX_STACK_VAR(_c,"_c");
	HX_STACK_LINE(777)
	Float _s = ::Math_obj::sin(_theta);		HX_STACK_VAR(_s,"_s");
	HX_STACK_LINE(779)
	this->set(_c,-(_s),(int)0,(int)0,_s,_c,(int)0,(int)0,(int)0,(int)0,(int)1,(int)0,(int)0,(int)0,(int)0,(int)1);
	HX_STACK_LINE(786)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,makeRotationZ,return )

::phoenix::Matrix Matrix_obj::makeRotationAxis( ::phoenix::Vector _axis,Float _angle){
	HX_STACK_FRAME("phoenix.Matrix","makeRotationAxis",0xa4647edb,"phoenix.Matrix.makeRotationAxis","phoenix/Matrix.hx",791,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_axis,"_axis")
	HX_STACK_ARG(_angle,"_angle")
	HX_STACK_LINE(793)
	Float _c = ::Math_obj::cos(_angle);		HX_STACK_VAR(_c,"_c");
	HX_STACK_LINE(794)
	Float _s = ::Math_obj::sin(_angle);		HX_STACK_VAR(_s,"_s");
	HX_STACK_LINE(795)
	Float _t = ((int)1 - _c);		HX_STACK_VAR(_t,"_t");
	HX_STACK_LINE(797)
	Float _ax = _axis->x;		HX_STACK_VAR(_ax,"_ax");
	HX_STACK_LINE(798)
	Float _ay = _axis->y;		HX_STACK_VAR(_ay,"_ay");
	HX_STACK_LINE(799)
	Float _az = _axis->z;		HX_STACK_VAR(_az,"_az");
	HX_STACK_LINE(801)
	Float _tx = (_t * _ax);		HX_STACK_VAR(_tx,"_tx");
	HX_STACK_LINE(802)
	Float _ty = (_t * _ay);		HX_STACK_VAR(_ty,"_ty");
	HX_STACK_LINE(804)
	this->set(((_tx * _ax) + _c),((_tx * _ay) - (_s * _az)),((_tx * _az) + (_s * _ay)),(int)0,((_tx * _ay) + (_s * _az)),((_ty * _ay) + _c),((_ty * _az) - (_s * _ax)),(int)0,((_tx * _az) - (_s * _ay)),((_ty * _az) + (_s * _ax)),(((_t * _az) * _az) + _c),(int)0,(int)0,(int)0,(int)0,(int)1);
	HX_STACK_LINE(811)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC2(Matrix_obj,makeRotationAxis,return )

::phoenix::Matrix Matrix_obj::makeScale( Float _x,Float _y,Float _z){
	HX_STACK_FRAME("phoenix.Matrix","makeScale",0xbabda92e,"phoenix.Matrix.makeScale","phoenix/Matrix.hx",816,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_x,"_x")
	HX_STACK_ARG(_y,"_y")
	HX_STACK_ARG(_z,"_z")
	HX_STACK_LINE(818)
	this->set(_x,(int)0,(int)0,(int)0,(int)0,_y,(int)0,(int)0,(int)0,(int)0,_z,(int)0,(int)0,(int)0,(int)0,(int)1);
	HX_STACK_LINE(825)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC3(Matrix_obj,makeScale,return )

::phoenix::Matrix Matrix_obj::compose_with_origin( ::phoenix::Vector _position,::phoenix::Vector _origin,::phoenix::Quaternion _quaternion,::phoenix::Vector _scale){
	HX_STACK_FRAME("phoenix.Matrix","compose_with_origin",0x79dcc244,"phoenix.Matrix.compose_with_origin","phoenix/Matrix.hx",830,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_position,"_position")
	HX_STACK_ARG(_origin,"_origin")
	HX_STACK_ARG(_quaternion,"_quaternion")
	HX_STACK_ARG(_scale,"_scale")
	HX_STACK_LINE(835)
	this->makeTranslation(_origin->x,_origin->y,_origin->z);
	HX_STACK_LINE(837)
	this->scale(_scale);
	HX_STACK_LINE(839)
	this->multiply(::phoenix::Matrix_obj::__new(null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null())->makeRotationFromQuaternion(_quaternion));
	HX_STACK_LINE(841)
	this->multiply(::phoenix::Matrix_obj::__new(null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null())->makeTranslation(-(_origin->x),-(_origin->y),-(_origin->z)));
	HX_STACK_LINE(843)
	this->multiply(::phoenix::Matrix_obj::__new(null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null())->makeTranslation(_position->x,_position->y,_position->z));
	HX_STACK_LINE(845)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC4(Matrix_obj,compose_with_origin,return )

::phoenix::Matrix Matrix_obj::compose( ::phoenix::Vector _position,::phoenix::Quaternion _quaternion,::phoenix::Vector _scale){
	HX_STACK_FRAME("phoenix.Matrix","compose",0xe87dfc04,"phoenix.Matrix.compose","phoenix/Matrix.hx",849,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_position,"_position")
	HX_STACK_ARG(_quaternion,"_quaternion")
	HX_STACK_ARG(_scale,"_scale")
	HX_STACK_LINE(851)
	this->makeRotationFromQuaternion(_quaternion);
	HX_STACK_LINE(852)
	this->scale(_scale);
	HX_STACK_LINE(853)
	this->setPosition(_position);
	HX_STACK_LINE(855)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC3(Matrix_obj,compose,return )

::phoenix::MatrixTransform Matrix_obj::decompose( ::phoenix::Vector _position,::phoenix::Quaternion _quaternion,::phoenix::Vector _scale){
	HX_STACK_FRAME("phoenix.Matrix","decompose",0xe8fe2723,"phoenix.Matrix.decompose","phoenix/Matrix.hx",861,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_position,"_position")
	HX_STACK_ARG(_quaternion,"_quaternion")
	HX_STACK_ARG(_scale,"_scale")
	HX_STACK_LINE(863)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(864)
	::phoenix::Matrix matrix = ::phoenix::Matrix_obj::__new(null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null());		HX_STACK_VAR(matrix,"matrix");
	HX_STACK_LINE(866)
	Float _ax_x = te->__get((int)0);		HX_STACK_VAR(_ax_x,"_ax_x");
	HX_STACK_LINE(866)
	Float _ax_y = te->__get((int)1);		HX_STACK_VAR(_ax_y,"_ax_y");
	HX_STACK_LINE(866)
	Float _ax_z = te->__get((int)2);		HX_STACK_VAR(_ax_z,"_ax_z");
	HX_STACK_LINE(867)
	Float _ay_x = te->__get((int)4);		HX_STACK_VAR(_ay_x,"_ay_x");
	HX_STACK_LINE(867)
	Float _ay_y = te->__get((int)5);		HX_STACK_VAR(_ay_y,"_ay_y");
	HX_STACK_LINE(867)
	Float _ay_z = te->__get((int)6);		HX_STACK_VAR(_ay_z,"_ay_z");
	HX_STACK_LINE(868)
	Float _az_x = te->__get((int)8);		HX_STACK_VAR(_az_x,"_az_x");
	HX_STACK_LINE(868)
	Float _az_y = te->__get((int)9);		HX_STACK_VAR(_az_y,"_az_y");
	HX_STACK_LINE(868)
	Float _az_z = te->__get((int)10);		HX_STACK_VAR(_az_z,"_az_z");
	HX_STACK_LINE(870)
	Float _ax_length = ::Math_obj::sqrt((((_ax_x * _ax_x) + (_ax_y * _ax_y)) + (_ax_z * _ax_z)));		HX_STACK_VAR(_ax_length,"_ax_length");
	HX_STACK_LINE(871)
	Float _ay_length = ::Math_obj::sqrt((((_ay_x * _ay_x) + (_ay_y * _ay_y)) + (_ay_z * _ay_z)));		HX_STACK_VAR(_ay_length,"_ay_length");
	HX_STACK_LINE(872)
	Float _az_length = ::Math_obj::sqrt((((_az_x * _az_x) + (_az_y * _az_y)) + (_az_z * _az_z)));		HX_STACK_VAR(_az_length,"_az_length");
	HX_STACK_LINE(875)
	if (((_quaternion == null()))){
		HX_STACK_LINE(876)
		_quaternion = ::phoenix::Quaternion_obj::__new(null(),null(),null(),null());
	}
	HX_STACK_LINE(879)
	if (((_position == null()))){
		HX_STACK_LINE(880)
		_position = ::phoenix::Vector_obj::__new(te->__get((int)12),te->__get((int)13),te->__get((int)14),null());
	}
	else{
		HX_STACK_LINE(882)
		_position->set_x(te->__get((int)12));
		HX_STACK_LINE(883)
		_position->set_y(te->__get((int)13));
		HX_STACK_LINE(884)
		_position->set_z(te->__get((int)14));
	}
	HX_STACK_LINE(887)
	if (((_scale == null()))){
		HX_STACK_LINE(888)
		_scale = ::phoenix::Vector_obj::__new(_ax_length,_ay_length,_az_length,null());
	}
	else{
		HX_STACK_LINE(890)
		_scale->set_x(_ax_length);
		HX_STACK_LINE(891)
		_scale->set_y(_ay_length);
		HX_STACK_LINE(892)
		_scale->set_z(_az_length);
	}
	HX_STACK_LINE(896)
	matrix->elements = this->elements->concat(Array_obj< Float >::__new());
	HX_STACK_LINE(898)
	Array< Float > me = matrix->elements;		HX_STACK_VAR(me,"me");
	HX_STACK_LINE(900)
	hx::DivEq(me[(int)0],_ax_length);
	HX_STACK_LINE(901)
	hx::DivEq(me[(int)1],_ax_length);
	HX_STACK_LINE(902)
	hx::DivEq(me[(int)2],_ax_length);
	HX_STACK_LINE(904)
	hx::DivEq(me[(int)4],_ay_length);
	HX_STACK_LINE(905)
	hx::DivEq(me[(int)5],_ay_length);
	HX_STACK_LINE(906)
	hx::DivEq(me[(int)6],_ay_length);
	HX_STACK_LINE(908)
	hx::DivEq(me[(int)8],_az_length);
	HX_STACK_LINE(909)
	hx::DivEq(me[(int)9],_az_length);
	HX_STACK_LINE(910)
	hx::DivEq(me[(int)10],_az_length);
	HX_STACK_LINE(912)
	_quaternion->setFromRotationMatrix(matrix);
	HX_STACK_LINE(915)
	if (((this->_transform == null()))){
		HX_STACK_LINE(916)
		this->_transform = ::phoenix::MatrixTransform_obj::__new(_position,_quaternion,_scale);
	}
	else{
		HX_STACK_LINE(918)
		this->_transform->pos = _position;
		HX_STACK_LINE(919)
		this->_transform->rotation = _quaternion;
		HX_STACK_LINE(920)
		this->_transform->scale = _scale;
	}
	HX_STACK_LINE(923)
	return this->_transform;
}


HX_DEFINE_DYNAMIC_FUNC3(Matrix_obj,decompose,return )

::phoenix::Matrix Matrix_obj::makeFrustum( Float _left,Float _right,Float _bottom,Float _top,Float _near,Float _far){
	HX_STACK_FRAME("phoenix.Matrix","makeFrustum",0x8fd01306,"phoenix.Matrix.makeFrustum","phoenix/Matrix.hx",928,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_left,"_left")
	HX_STACK_ARG(_right,"_right")
	HX_STACK_ARG(_bottom,"_bottom")
	HX_STACK_ARG(_top,"_top")
	HX_STACK_ARG(_near,"_near")
	HX_STACK_ARG(_far,"_far")
	HX_STACK_LINE(930)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(932)
	Float tx = (Float(((int)2 * _near)) / Float(((_right - _left))));		HX_STACK_VAR(tx,"tx");
	HX_STACK_LINE(933)
	Float ty = (Float(((int)2 * _near)) / Float(((_top - _bottom))));		HX_STACK_VAR(ty,"ty");
	HX_STACK_LINE(935)
	Float a = (Float(((_right + _left))) / Float(((_right - _left))));		HX_STACK_VAR(a,"a");
	HX_STACK_LINE(936)
	Float b = (Float(((_top + _bottom))) / Float(((_top - _bottom))));		HX_STACK_VAR(b,"b");
	HX_STACK_LINE(937)
	Float c = (Float(-(((_far + _near)))) / Float(((_far - _near))));		HX_STACK_VAR(c,"c");
	HX_STACK_LINE(938)
	Float d = (Float((((int)-2 * _far) * _near)) / Float(((_far - _near))));		HX_STACK_VAR(d,"d");
	HX_STACK_LINE(940)
	te[(int)0] = tx;
	HX_STACK_LINE(940)
	te[(int)4] = (int)0;
	HX_STACK_LINE(940)
	te[(int)8] = a;
	HX_STACK_LINE(940)
	te[(int)12] = (int)0;
	HX_STACK_LINE(941)
	te[(int)1] = (int)0;
	HX_STACK_LINE(941)
	te[(int)5] = ty;
	HX_STACK_LINE(941)
	te[(int)9] = b;
	HX_STACK_LINE(941)
	te[(int)13] = (int)0;
	HX_STACK_LINE(942)
	te[(int)2] = (int)0;
	HX_STACK_LINE(942)
	te[(int)6] = (int)0;
	HX_STACK_LINE(942)
	te[(int)10] = c;
	HX_STACK_LINE(942)
	te[(int)14] = d;
	HX_STACK_LINE(943)
	te[(int)3] = (int)0;
	HX_STACK_LINE(943)
	te[(int)7] = (int)0;
	HX_STACK_LINE(943)
	te[(int)11] = (int)-1;
	HX_STACK_LINE(943)
	te[(int)15] = (int)0;
	HX_STACK_LINE(945)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC6(Matrix_obj,makeFrustum,return )

::phoenix::Matrix Matrix_obj::makePerspective( Float _fov,Float _aspect,Float _near,Float _far){
	HX_STACK_FRAME("phoenix.Matrix","makePerspective",0x14405320,"phoenix.Matrix.makePerspective","phoenix/Matrix.hx",950,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_fov,"_fov")
	HX_STACK_ARG(_aspect,"_aspect")
	HX_STACK_ARG(_near,"_near")
	HX_STACK_ARG(_far,"_far")
	HX_STACK_LINE(952)
	Float ymax = (_near * ::Math_obj::tan(((_fov * 0.5) * 0.017453292519943278)));		HX_STACK_VAR(ymax,"ymax");
	HX_STACK_LINE(953)
	Float ymin = -(ymax);		HX_STACK_VAR(ymin,"ymin");
	HX_STACK_LINE(954)
	Float xmin = (ymin * _aspect);		HX_STACK_VAR(xmin,"xmin");
	HX_STACK_LINE(955)
	Float xmax = (ymax * _aspect);		HX_STACK_VAR(xmax,"xmax");
	HX_STACK_LINE(957)
	return this->makeFrustum(xmin,xmax,ymin,ymax,_near,_far);
}


HX_DEFINE_DYNAMIC_FUNC4(Matrix_obj,makePerspective,return )

::phoenix::Matrix Matrix_obj::makeOrthographic( Float _left,Float _right,Float _top,Float _bottom,Float _near,Float _far){
	HX_STACK_FRAME("phoenix.Matrix","makeOrthographic",0x8b159c4c,"phoenix.Matrix.makeOrthographic","phoenix/Matrix.hx",962,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_left,"_left")
	HX_STACK_ARG(_right,"_right")
	HX_STACK_ARG(_top,"_top")
	HX_STACK_ARG(_bottom,"_bottom")
	HX_STACK_ARG(_near,"_near")
	HX_STACK_ARG(_far,"_far")
	HX_STACK_LINE(964)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(966)
	Float w = (_right - _left);		HX_STACK_VAR(w,"w");
	HX_STACK_LINE(967)
	Float h = (_top - _bottom);		HX_STACK_VAR(h,"h");
	HX_STACK_LINE(968)
	Float p = (_far - _near);		HX_STACK_VAR(p,"p");
	HX_STACK_LINE(970)
	Float tx = (Float(((_right + _left))) / Float(w));		HX_STACK_VAR(tx,"tx");
	HX_STACK_LINE(971)
	Float ty = (Float(((_top + _bottom))) / Float(h));		HX_STACK_VAR(ty,"ty");
	HX_STACK_LINE(972)
	Float tz = (Float(((_far + _near))) / Float(p));		HX_STACK_VAR(tz,"tz");
	HX_STACK_LINE(974)
	te[(int)0] = (Float((int)2) / Float(w));
	HX_STACK_LINE(974)
	te[(int)4] = (int)0;
	HX_STACK_LINE(974)
	te[(int)8] = (int)0;
	HX_STACK_LINE(974)
	te[(int)12] = -(tx);
	HX_STACK_LINE(975)
	te[(int)1] = (int)0;
	HX_STACK_LINE(975)
	te[(int)5] = (Float((int)2) / Float(h));
	HX_STACK_LINE(975)
	te[(int)9] = (int)0;
	HX_STACK_LINE(975)
	te[(int)13] = -(ty);
	HX_STACK_LINE(976)
	te[(int)2] = (int)0;
	HX_STACK_LINE(976)
	te[(int)6] = (int)0;
	HX_STACK_LINE(976)
	te[(int)10] = (Float((int)-2) / Float(p));
	HX_STACK_LINE(976)
	te[(int)14] = -(tz);
	HX_STACK_LINE(977)
	te[(int)3] = (int)0;
	HX_STACK_LINE(977)
	te[(int)7] = (int)0;
	HX_STACK_LINE(977)
	te[(int)11] = (int)0;
	HX_STACK_LINE(977)
	te[(int)15] = (int)1;
	HX_STACK_LINE(979)
	return hx::ObjectPtr<OBJ_>(this);
}


HX_DEFINE_DYNAMIC_FUNC6(Matrix_obj,makeOrthographic,return )

Void Matrix_obj::fromArray( Array< Float > _from){
{
		HX_STACK_FRAME("phoenix.Matrix","fromArray",0x486ebb41,"phoenix.Matrix.fromArray","phoenix/Matrix.hx",985,0x938b753d)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_from,"_from")
		HX_STACK_LINE(985)
		this->elements = _from->concat(Array_obj< Float >::__new());
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Matrix_obj,fromArray,(void))

Array< Float > Matrix_obj::toArray( ){
	HX_STACK_FRAME("phoenix.Matrix","toArray",0x571dfd10,"phoenix.Matrix.toArray","phoenix/Matrix.hx",989,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(991)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(993)
	return Array_obj< Float >::__new().Add(te->__get((int)0)).Add(te->__get((int)1)).Add(te->__get((int)2)).Add(te->__get((int)3)).Add(te->__get((int)4)).Add(te->__get((int)5)).Add(te->__get((int)6)).Add(te->__get((int)7)).Add(te->__get((int)8)).Add(te->__get((int)9)).Add(te->__get((int)10)).Add(te->__get((int)11)).Add(te->__get((int)12)).Add(te->__get((int)13)).Add(te->__get((int)14)).Add(te->__get((int)15));
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,toArray,return )

::phoenix::Matrix Matrix_obj::clone( ){
	HX_STACK_FRAME("phoenix.Matrix","clone",0x454255cf,"phoenix.Matrix.clone","phoenix/Matrix.hx",1002,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(1004)
	Array< Float > te = this->elements;		HX_STACK_VAR(te,"te");
	HX_STACK_LINE(1006)
	return ::phoenix::Matrix_obj::__new(te->__get((int)0),te->__get((int)4),te->__get((int)8),te->__get((int)12),te->__get((int)1),te->__get((int)5),te->__get((int)9),te->__get((int)13),te->__get((int)2),te->__get((int)6),te->__get((int)10),te->__get((int)14),te->__get((int)3),te->__get((int)7),te->__get((int)11),te->__get((int)15));
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,clone,return )

::phoenix::Vector Matrix_obj::up( ){
	HX_STACK_FRAME("phoenix.Matrix","up",0xd34108a9,"phoenix.Matrix.up","phoenix/Matrix.hx",1016,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(1016)
	return ::phoenix::Vector_obj::__new(this->elements->__get((int)4),this->elements->__get((int)5),this->elements->__get((int)10),null());
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,up,return )

::phoenix::Vector Matrix_obj::down( ){
	HX_STACK_FRAME("phoenix.Matrix","down",0xe0d64a30,"phoenix.Matrix.down","phoenix/Matrix.hx",1020,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(1020)
	return this->up()->get_inverted();
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,down,return )

::phoenix::Vector Matrix_obj::left( ){
	HX_STACK_FRAME("phoenix.Matrix","left",0xe61859d5,"phoenix.Matrix.left","phoenix/Matrix.hx",1024,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(1024)
	return this->right()->get_inverted();
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,left,return )

::phoenix::Vector Matrix_obj::right( ){
	HX_STACK_FRAME("phoenix.Matrix","right",0xe6434e4e,"phoenix.Matrix.right","phoenix/Matrix.hx",1028,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(1028)
	return ::phoenix::Vector_obj::__new(this->elements->__get((int)0),this->elements->__get((int)1),this->elements->__get((int)2),null());
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,right,return )

::phoenix::Vector Matrix_obj::backward( ){
	HX_STACK_FRAME("phoenix.Matrix","backward",0x2b092cb1,"phoenix.Matrix.backward","phoenix/Matrix.hx",1032,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(1032)
	return ::phoenix::Vector_obj::__new(this->elements->__get((int)8),this->elements->__get((int)9),this->elements->__get((int)10),null());
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,backward,return )

::phoenix::Vector Matrix_obj::forward( ){
	HX_STACK_FRAME("phoenix.Matrix","forward",0x4ad524b7,"phoenix.Matrix.forward","phoenix/Matrix.hx",1036,0x938b753d)
	HX_STACK_THIS(this)
	HX_STACK_LINE(1036)
	return this->backward()->get_inverted();
}


HX_DEFINE_DYNAMIC_FUNC0(Matrix_obj,forward,return )


Matrix_obj::Matrix_obj()
{
}

void Matrix_obj::__Mark(HX_MARK_PARAMS)
{
	HX_MARK_BEGIN_CLASS(Matrix);
	HX_MARK_MEMBER_NAME(elements,"elements");
	HX_MARK_MEMBER_NAME(M11,"M11");
	HX_MARK_MEMBER_NAME(M21,"M21");
	HX_MARK_MEMBER_NAME(M31,"M31");
	HX_MARK_MEMBER_NAME(M41,"M41");
	HX_MARK_MEMBER_NAME(M12,"M12");
	HX_MARK_MEMBER_NAME(M22,"M22");
	HX_MARK_MEMBER_NAME(M32,"M32");
	HX_MARK_MEMBER_NAME(M42,"M42");
	HX_MARK_MEMBER_NAME(M13,"M13");
	HX_MARK_MEMBER_NAME(M23,"M23");
	HX_MARK_MEMBER_NAME(M33,"M33");
	HX_MARK_MEMBER_NAME(M43,"M43");
	HX_MARK_MEMBER_NAME(M14,"M14");
	HX_MARK_MEMBER_NAME(M24,"M24");
	HX_MARK_MEMBER_NAME(M34,"M34");
	HX_MARK_MEMBER_NAME(M44,"M44");
	HX_MARK_MEMBER_NAME(_transform,"_transform");
	HX_MARK_END_CLASS();
}

void Matrix_obj::__Visit(HX_VISIT_PARAMS)
{
	HX_VISIT_MEMBER_NAME(elements,"elements");
	HX_VISIT_MEMBER_NAME(M11,"M11");
	HX_VISIT_MEMBER_NAME(M21,"M21");
	HX_VISIT_MEMBER_NAME(M31,"M31");
	HX_VISIT_MEMBER_NAME(M41,"M41");
	HX_VISIT_MEMBER_NAME(M12,"M12");
	HX_VISIT_MEMBER_NAME(M22,"M22");
	HX_VISIT_MEMBER_NAME(M32,"M32");
	HX_VISIT_MEMBER_NAME(M42,"M42");
	HX_VISIT_MEMBER_NAME(M13,"M13");
	HX_VISIT_MEMBER_NAME(M23,"M23");
	HX_VISIT_MEMBER_NAME(M33,"M33");
	HX_VISIT_MEMBER_NAME(M43,"M43");
	HX_VISIT_MEMBER_NAME(M14,"M14");
	HX_VISIT_MEMBER_NAME(M24,"M24");
	HX_VISIT_MEMBER_NAME(M34,"M34");
	HX_VISIT_MEMBER_NAME(M44,"M44");
	HX_VISIT_MEMBER_NAME(_transform,"_transform");
}

Dynamic Matrix_obj::__Field(const ::String &inName,bool inCallProp)
{
	switch(inName.length) {
	case 2:
		if (HX_FIELD_EQ(inName,"up") ) { return up_dyn(); }
		break;
	case 3:
		if (HX_FIELD_EQ(inName,"M11") ) { return inCallProp ? get_M11() : M11; }
		if (HX_FIELD_EQ(inName,"M21") ) { return inCallProp ? get_M21() : M21; }
		if (HX_FIELD_EQ(inName,"M31") ) { return inCallProp ? get_M31() : M31; }
		if (HX_FIELD_EQ(inName,"M41") ) { return inCallProp ? get_M41() : M41; }
		if (HX_FIELD_EQ(inName,"M12") ) { return inCallProp ? get_M12() : M12; }
		if (HX_FIELD_EQ(inName,"M22") ) { return inCallProp ? get_M22() : M22; }
		if (HX_FIELD_EQ(inName,"M32") ) { return inCallProp ? get_M32() : M32; }
		if (HX_FIELD_EQ(inName,"M42") ) { return inCallProp ? get_M42() : M42; }
		if (HX_FIELD_EQ(inName,"M13") ) { return inCallProp ? get_M13() : M13; }
		if (HX_FIELD_EQ(inName,"M23") ) { return inCallProp ? get_M23() : M23; }
		if (HX_FIELD_EQ(inName,"M33") ) { return inCallProp ? get_M33() : M33; }
		if (HX_FIELD_EQ(inName,"M43") ) { return inCallProp ? get_M43() : M43; }
		if (HX_FIELD_EQ(inName,"M14") ) { return inCallProp ? get_M14() : M14; }
		if (HX_FIELD_EQ(inName,"M24") ) { return inCallProp ? get_M24() : M24; }
		if (HX_FIELD_EQ(inName,"M34") ) { return inCallProp ? get_M34() : M34; }
		if (HX_FIELD_EQ(inName,"M44") ) { return inCallProp ? get_M44() : M44; }
		if (HX_FIELD_EQ(inName,"set") ) { return set_dyn(); }
		break;
	case 4:
		if (HX_FIELD_EQ(inName,"copy") ) { return copy_dyn(); }
		if (HX_FIELD_EQ(inName,"down") ) { return down_dyn(); }
		if (HX_FIELD_EQ(inName,"left") ) { return left_dyn(); }
		break;
	case 5:
		if (HX_FIELD_EQ(inName,"scale") ) { return scale_dyn(); }
		if (HX_FIELD_EQ(inName,"clone") ) { return clone_dyn(); }
		if (HX_FIELD_EQ(inName,"right") ) { return right_dyn(); }
		break;
	case 6:
		if (HX_FIELD_EQ(inName,"make2D") ) { return make2D_dyn(); }
		if (HX_FIELD_EQ(inName,"lookAt") ) { return lookAt_dyn(); }
		break;
	case 7:
		if (HX_FIELD_EQ(inName,"get_M11") ) { return get_M11_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M12") ) { return get_M12_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M13") ) { return get_M13_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M14") ) { return get_M14_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M21") ) { return get_M21_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M22") ) { return get_M22_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M23") ) { return get_M23_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M24") ) { return get_M24_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M31") ) { return get_M31_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M32") ) { return get_M32_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M33") ) { return get_M33_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M34") ) { return get_M34_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M41") ) { return get_M41_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M42") ) { return get_M42_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M43") ) { return get_M43_dyn(); }
		if (HX_FIELD_EQ(inName,"get_M44") ) { return get_M44_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M11") ) { return set_M11_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M12") ) { return set_M12_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M13") ) { return set_M13_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M14") ) { return set_M14_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M21") ) { return set_M21_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M22") ) { return set_M22_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M23") ) { return set_M23_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M24") ) { return set_M24_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M31") ) { return set_M31_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M32") ) { return set_M32_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M33") ) { return set_M33_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M34") ) { return set_M34_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M41") ) { return set_M41_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M42") ) { return set_M42_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M43") ) { return set_M43_dyn(); }
		if (HX_FIELD_EQ(inName,"set_M44") ) { return set_M44_dyn(); }
		if (HX_FIELD_EQ(inName,"inverse") ) { return inverse_dyn(); }
		if (HX_FIELD_EQ(inName,"compose") ) { return compose_dyn(); }
		if (HX_FIELD_EQ(inName,"toArray") ) { return toArray_dyn(); }
		if (HX_FIELD_EQ(inName,"forward") ) { return forward_dyn(); }
		break;
	case 8:
		if (HX_FIELD_EQ(inName,"elements") ) { return elements; }
		if (HX_FIELD_EQ(inName,"toString") ) { return toString_dyn(); }
		if (HX_FIELD_EQ(inName,"identity") ) { return identity_dyn(); }
		if (HX_FIELD_EQ(inName,"multiply") ) { return multiply_dyn(); }
		if (HX_FIELD_EQ(inName,"backward") ) { return backward_dyn(); }
		break;
	case 9:
		if (HX_FIELD_EQ(inName,"transpose") ) { return transpose_dyn(); }
		if (HX_FIELD_EQ(inName,"makeScale") ) { return makeScale_dyn(); }
		if (HX_FIELD_EQ(inName,"decompose") ) { return decompose_dyn(); }
		if (HX_FIELD_EQ(inName,"fromArray") ) { return fromArray_dyn(); }
		break;
	case 10:
		if (HX_FIELD_EQ(inName,"getInverse") ) { return getInverse_dyn(); }
		if (HX_FIELD_EQ(inName,"_transform") ) { return _transform; }
		break;
	case 11:
		if (HX_FIELD_EQ(inName,"getPosition") ) { return getPosition_dyn(); }
		if (HX_FIELD_EQ(inName,"determinant") ) { return determinant_dyn(); }
		if (HX_FIELD_EQ(inName,"setPosition") ) { return setPosition_dyn(); }
		if (HX_FIELD_EQ(inName,"makeFrustum") ) { return makeFrustum_dyn(); }
		break;
	case 12:
		if (HX_FIELD_EQ(inName,"float32array") ) { return float32array_dyn(); }
		if (HX_FIELD_EQ(inName,"copyPosition") ) { return copyPosition_dyn(); }
		break;
	case 13:
		if (HX_FIELD_EQ(inName,"makeRotationX") ) { return makeRotationX_dyn(); }
		if (HX_FIELD_EQ(inName,"makeRotationY") ) { return makeRotationY_dyn(); }
		if (HX_FIELD_EQ(inName,"makeRotationZ") ) { return makeRotationZ_dyn(); }
		break;
	case 14:
		if (HX_FIELD_EQ(inName,"multiplyScalar") ) { return multiplyScalar_dyn(); }
		if (HX_FIELD_EQ(inName,"flattenToArray") ) { return flattenToArray_dyn(); }
		break;
	case 15:
		if (HX_FIELD_EQ(inName,"extractRotation") ) { return extractRotation_dyn(); }
		if (HX_FIELD_EQ(inName,"multiplyToArray") ) { return multiplyToArray_dyn(); }
		if (HX_FIELD_EQ(inName,"makeTranslation") ) { return makeTranslation_dyn(); }
		if (HX_FIELD_EQ(inName,"makePerspective") ) { return makePerspective_dyn(); }
		break;
	case 16:
		if (HX_FIELD_EQ(inName,"multiplyMatrices") ) { return multiplyMatrices_dyn(); }
		if (HX_FIELD_EQ(inName,"makeRotationAxis") ) { return makeRotationAxis_dyn(); }
		if (HX_FIELD_EQ(inName,"makeOrthographic") ) { return makeOrthographic_dyn(); }
		break;
	case 17:
		if (HX_FIELD_EQ(inName,"getMaxScaleOnAxis") ) { return getMaxScaleOnAxis_dyn(); }
		break;
	case 19:
		if (HX_FIELD_EQ(inName,"compose_with_origin") ) { return compose_with_origin_dyn(); }
		break;
	case 20:
		if (HX_FIELD_EQ(inName,"multiplyVector3Array") ) { return multiplyVector3Array_dyn(); }
		if (HX_FIELD_EQ(inName,"flattenToArrayOffset") ) { return flattenToArrayOffset_dyn(); }
		break;
	case 21:
		if (HX_FIELD_EQ(inName,"makeRotationFromEuler") ) { return makeRotationFromEuler_dyn(); }
		break;
	case 26:
		if (HX_FIELD_EQ(inName,"makeRotationFromQuaternion") ) { return makeRotationFromQuaternion_dyn(); }
	}
	return super::__Field(inName,inCallProp);
}

Dynamic Matrix_obj::__SetField(const ::String &inName,const Dynamic &inValue,bool inCallProp)
{
	switch(inName.length) {
	case 3:
		if (HX_FIELD_EQ(inName,"M11") ) { if (inCallProp) return set_M11(inValue);M11=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M21") ) { if (inCallProp) return set_M21(inValue);M21=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M31") ) { if (inCallProp) return set_M31(inValue);M31=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M41") ) { if (inCallProp) return set_M41(inValue);M41=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M12") ) { if (inCallProp) return set_M12(inValue);M12=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M22") ) { if (inCallProp) return set_M22(inValue);M22=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M32") ) { if (inCallProp) return set_M32(inValue);M32=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M42") ) { if (inCallProp) return set_M42(inValue);M42=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M13") ) { if (inCallProp) return set_M13(inValue);M13=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M23") ) { if (inCallProp) return set_M23(inValue);M23=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M33") ) { if (inCallProp) return set_M33(inValue);M33=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M43") ) { if (inCallProp) return set_M43(inValue);M43=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M14") ) { if (inCallProp) return set_M14(inValue);M14=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M24") ) { if (inCallProp) return set_M24(inValue);M24=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M34") ) { if (inCallProp) return set_M34(inValue);M34=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"M44") ) { if (inCallProp) return set_M44(inValue);M44=inValue.Cast< Float >(); return inValue; }
		break;
	case 8:
		if (HX_FIELD_EQ(inName,"elements") ) { elements=inValue.Cast< Array< Float > >(); return inValue; }
		break;
	case 10:
		if (HX_FIELD_EQ(inName,"_transform") ) { _transform=inValue.Cast< ::phoenix::MatrixTransform >(); return inValue; }
	}
	return super::__SetField(inName,inValue,inCallProp);
}

void Matrix_obj::__GetFields(Array< ::String> &outFields)
{
	outFields->push(HX_CSTRING("elements"));
	outFields->push(HX_CSTRING("M11"));
	outFields->push(HX_CSTRING("M21"));
	outFields->push(HX_CSTRING("M31"));
	outFields->push(HX_CSTRING("M41"));
	outFields->push(HX_CSTRING("M12"));
	outFields->push(HX_CSTRING("M22"));
	outFields->push(HX_CSTRING("M32"));
	outFields->push(HX_CSTRING("M42"));
	outFields->push(HX_CSTRING("M13"));
	outFields->push(HX_CSTRING("M23"));
	outFields->push(HX_CSTRING("M33"));
	outFields->push(HX_CSTRING("M43"));
	outFields->push(HX_CSTRING("M14"));
	outFields->push(HX_CSTRING("M24"));
	outFields->push(HX_CSTRING("M34"));
	outFields->push(HX_CSTRING("M44"));
	outFields->push(HX_CSTRING("_transform"));
	super::__GetFields(outFields);
};

static ::String sStaticFields[] = {
	String(null()) };

#if HXCPP_SCRIPTABLE
static hx::StorageInfo sMemberStorageInfo[] = {
	{hx::fsObject /*Array< Float >*/ ,(int)offsetof(Matrix_obj,elements),HX_CSTRING("elements")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M11),HX_CSTRING("M11")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M21),HX_CSTRING("M21")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M31),HX_CSTRING("M31")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M41),HX_CSTRING("M41")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M12),HX_CSTRING("M12")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M22),HX_CSTRING("M22")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M32),HX_CSTRING("M32")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M42),HX_CSTRING("M42")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M13),HX_CSTRING("M13")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M23),HX_CSTRING("M23")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M33),HX_CSTRING("M33")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M43),HX_CSTRING("M43")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M14),HX_CSTRING("M14")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M24),HX_CSTRING("M24")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M34),HX_CSTRING("M34")},
	{hx::fsFloat,(int)offsetof(Matrix_obj,M44),HX_CSTRING("M44")},
	{hx::fsObject /*::phoenix::MatrixTransform*/ ,(int)offsetof(Matrix_obj,_transform),HX_CSTRING("_transform")},
	{ hx::fsUnknown, 0, null()}
};
#endif

static ::String sMemberFields[] = {
	HX_CSTRING("elements"),
	HX_CSTRING("M11"),
	HX_CSTRING("M21"),
	HX_CSTRING("M31"),
	HX_CSTRING("M41"),
	HX_CSTRING("M12"),
	HX_CSTRING("M22"),
	HX_CSTRING("M32"),
	HX_CSTRING("M42"),
	HX_CSTRING("M13"),
	HX_CSTRING("M23"),
	HX_CSTRING("M33"),
	HX_CSTRING("M43"),
	HX_CSTRING("M14"),
	HX_CSTRING("M24"),
	HX_CSTRING("M34"),
	HX_CSTRING("M44"),
	HX_CSTRING("set"),
	HX_CSTRING("toString"),
	HX_CSTRING("get_M11"),
	HX_CSTRING("get_M12"),
	HX_CSTRING("get_M13"),
	HX_CSTRING("get_M14"),
	HX_CSTRING("get_M21"),
	HX_CSTRING("get_M22"),
	HX_CSTRING("get_M23"),
	HX_CSTRING("get_M24"),
	HX_CSTRING("get_M31"),
	HX_CSTRING("get_M32"),
	HX_CSTRING("get_M33"),
	HX_CSTRING("get_M34"),
	HX_CSTRING("get_M41"),
	HX_CSTRING("get_M42"),
	HX_CSTRING("get_M43"),
	HX_CSTRING("get_M44"),
	HX_CSTRING("set_M11"),
	HX_CSTRING("set_M12"),
	HX_CSTRING("set_M13"),
	HX_CSTRING("set_M14"),
	HX_CSTRING("set_M21"),
	HX_CSTRING("set_M22"),
	HX_CSTRING("set_M23"),
	HX_CSTRING("set_M24"),
	HX_CSTRING("set_M31"),
	HX_CSTRING("set_M32"),
	HX_CSTRING("set_M33"),
	HX_CSTRING("set_M34"),
	HX_CSTRING("set_M41"),
	HX_CSTRING("set_M42"),
	HX_CSTRING("set_M43"),
	HX_CSTRING("set_M44"),
	HX_CSTRING("float32array"),
	HX_CSTRING("identity"),
	HX_CSTRING("copy"),
	HX_CSTRING("make2D"),
	HX_CSTRING("copyPosition"),
	HX_CSTRING("getPosition"),
	HX_CSTRING("extractRotation"),
	HX_CSTRING("makeRotationFromEuler"),
	HX_CSTRING("makeRotationFromQuaternion"),
	HX_CSTRING("lookAt"),
	HX_CSTRING("multiply"),
	HX_CSTRING("multiplyMatrices"),
	HX_CSTRING("multiplyToArray"),
	HX_CSTRING("multiplyScalar"),
	HX_CSTRING("multiplyVector3Array"),
	HX_CSTRING("determinant"),
	HX_CSTRING("transpose"),
	HX_CSTRING("flattenToArray"),
	HX_CSTRING("flattenToArrayOffset"),
	HX_CSTRING("setPosition"),
	HX_CSTRING("inverse"),
	HX_CSTRING("getInverse"),
	HX_CSTRING("scale"),
	HX_CSTRING("getMaxScaleOnAxis"),
	HX_CSTRING("makeTranslation"),
	HX_CSTRING("makeRotationX"),
	HX_CSTRING("makeRotationY"),
	HX_CSTRING("makeRotationZ"),
	HX_CSTRING("makeRotationAxis"),
	HX_CSTRING("makeScale"),
	HX_CSTRING("compose_with_origin"),
	HX_CSTRING("compose"),
	HX_CSTRING("_transform"),
	HX_CSTRING("decompose"),
	HX_CSTRING("makeFrustum"),
	HX_CSTRING("makePerspective"),
	HX_CSTRING("makeOrthographic"),
	HX_CSTRING("fromArray"),
	HX_CSTRING("toArray"),
	HX_CSTRING("clone"),
	HX_CSTRING("up"),
	HX_CSTRING("down"),
	HX_CSTRING("left"),
	HX_CSTRING("right"),
	HX_CSTRING("backward"),
	HX_CSTRING("forward"),
	String(null()) };

static void sMarkStatics(HX_MARK_PARAMS) {
	HX_MARK_MEMBER_NAME(Matrix_obj::__mClass,"__mClass");
};

#ifdef HXCPP_VISIT_ALLOCS
static void sVisitStatics(HX_VISIT_PARAMS) {
	HX_VISIT_MEMBER_NAME(Matrix_obj::__mClass,"__mClass");
};

#endif

Class Matrix_obj::__mClass;

void Matrix_obj::__register()
{
	hx::Static(__mClass) = hx::RegisterClass(HX_CSTRING("phoenix.Matrix"), hx::TCanCast< Matrix_obj> ,sStaticFields,sMemberFields,
	&__CreateEmpty, &__Create,
	&super::__SGetClass(), 0, sMarkStatics
#ifdef HXCPP_VISIT_ALLOCS
    , sVisitStatics
#endif
#ifdef HXCPP_SCRIPTABLE
    , sMemberStorageInfo
#endif
);
}

void Matrix_obj::__boot()
{
}

} // end namespace phoenix
