#include <hxcpp.h>

#ifndef INCLUDED_luxe_ID
#include <luxe/ID.h>
#endif
#ifndef INCLUDED_phoenix_Matrix
#include <phoenix/Matrix.h>
#endif
#ifndef INCLUDED_phoenix_Quaternion
#include <phoenix/Quaternion.h>
#endif
#ifndef INCLUDED_phoenix_Spatial
#include <phoenix/Spatial.h>
#endif
#ifndef INCLUDED_phoenix_Transform
#include <phoenix/Transform.h>
#endif
#ifndef INCLUDED_phoenix_Vector
#include <phoenix/Vector.h>
#endif
namespace phoenix{

Void Transform_obj::__construct()
{
HX_STACK_FRAME("phoenix.Transform","new",0x37b5fb1f,"phoenix.Transform.new","phoenix/Transform.hx",11,0x44da8ab2)
{
	HX_STACK_LINE(31)
	this->_cleaning = false;
	HX_STACK_LINE(30)
	this->_setup = true;
	HX_STACK_LINE(20)
	this->dirty = true;
	HX_STACK_LINE(44)
	super::__construct(HX_CSTRING("transform"),null());
	HX_STACK_LINE(46)
	this->set_local(::phoenix::Spatial_obj::__new());
	HX_STACK_LINE(47)
	this->set_world(::phoenix::Spatial_obj::__new());
	HX_STACK_LINE(49)
	this->_origin_undo_matrix = ::phoenix::Matrix_obj::__new(null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null());
	HX_STACK_LINE(50)
	this->_pos_matrix = ::phoenix::Matrix_obj::__new(null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null());
	HX_STACK_LINE(51)
	this->_rotation_matrix = ::phoenix::Matrix_obj::__new(null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null(),null());
	HX_STACK_LINE(53)
	this->set_origin(::phoenix::Vector_obj::__new(null(),null(),null(),null()));
	HX_STACK_LINE(56)
	this->get_local()->pos_changed = this->on_local_pos_change_dyn();
	HX_STACK_LINE(57)
	this->get_local()->rotation_changed = this->on_local_rotation_change_dyn();
	HX_STACK_LINE(58)
	this->get_local()->scale_changed = this->on_local_scale_change_dyn();
	HX_STACK_LINE(60)
	this->_setup = false;
}
;
	return null();
}

//Transform_obj::~Transform_obj() { }

Dynamic Transform_obj::__CreateEmpty() { return  new Transform_obj; }
hx::ObjectPtr< Transform_obj > Transform_obj::__new()
{  hx::ObjectPtr< Transform_obj > result = new Transform_obj();
	result->__construct();
	return result;}

Dynamic Transform_obj::__Create(hx::DynamicArray inArgs)
{  hx::ObjectPtr< Transform_obj > result = new Transform_obj();
	result->__construct();
	return result;}

Void Transform_obj::destroy( ){
{
		HX_STACK_FRAME("phoenix.Transform","destroy",0x82ce2339,"phoenix.Transform.destroy","phoenix/Transform.hx",64,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_LINE(67)
		if (((this->get_parent() != null()))){
			HX_STACK_LINE(68)
			this->get_parent()->unlisten(this->on_parent_cleaned_dyn());
		}
		HX_STACK_LINE(72)
		this->_clean_handlers = null();
		HX_STACK_LINE(73)
		this->_dirty_handlers = null();
		HX_STACK_LINE(74)
		this->_pos_handlers = null();
		HX_STACK_LINE(75)
		this->_rotation_handlers = null();
		HX_STACK_LINE(76)
		this->_scale_handlers = null();
		HX_STACK_LINE(77)
		this->_origin_handlers = null();
		HX_STACK_LINE(78)
		this->_parent_handlers = null();
		HX_STACK_LINE(81)
		this->set_local(null());
		HX_STACK_LINE(82)
		this->set_world(null());
		HX_STACK_LINE(83)
		this->_origin_undo_matrix = null();
		HX_STACK_LINE(84)
		this->_pos_matrix = null();
		HX_STACK_LINE(85)
		this->_rotation_matrix = null();
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,destroy,(void))

bool Transform_obj::set_dirty( bool _dirty){
	HX_STACK_FRAME("phoenix.Transform","set_dirty",0x79abdc74,"phoenix.Transform.set_dirty","phoenix/Transform.hx",89,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_dirty,"_dirty")
	HX_STACK_LINE(91)
	this->dirty = _dirty;
	HX_STACK_LINE(93)
	if (((bool((bool((bool(this->dirty) && bool(!(this->_setup)))) && bool((this->_dirty_handlers != null())))) && bool((this->_dirty_handlers->__Field(HX_CSTRING("length"),true) > (int)0))))){
		HX_STACK_LINE(98)
		this->propagate_dirty();
	}
	HX_STACK_LINE(101)
	return this->dirty;
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,set_dirty,return )

Void Transform_obj::on_local_pos_change( ::phoenix::Vector v){
{
		HX_STACK_FRAME("phoenix.Transform","on_local_pos_change",0x565988ae,"phoenix.Transform.on_local_pos_change","phoenix/Transform.hx",106,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(v,"v")
		HX_STACK_LINE(108)
		this->set_dirty(true);
		HX_STACK_LINE(110)
		if (((bool((this->_pos_handlers != null())) && bool((this->_pos_handlers->__Field(HX_CSTRING("length"),true) > (int)0))))){
			HX_STACK_LINE(112)
			this->propagate_pos(v);
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,on_local_pos_change,(void))

Void Transform_obj::on_local_rotation_change( ::phoenix::Quaternion r){
{
		HX_STACK_FRAME("phoenix.Transform","on_local_rotation_change",0xf66797fe,"phoenix.Transform.on_local_rotation_change","phoenix/Transform.hx",117,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(r,"r")
		HX_STACK_LINE(119)
		this->set_dirty(true);
		HX_STACK_LINE(121)
		if (((bool((this->_rotation_handlers != null())) && bool((this->_rotation_handlers->__Field(HX_CSTRING("length"),true) > (int)0))))){
			HX_STACK_LINE(123)
			this->propagate_rotation(r);
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,on_local_rotation_change,(void))

Void Transform_obj::on_local_scale_change( ::phoenix::Vector s){
{
		HX_STACK_FRAME("phoenix.Transform","on_local_scale_change",0x02a99538,"phoenix.Transform.on_local_scale_change","phoenix/Transform.hx",128,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(s,"s")
		HX_STACK_LINE(130)
		this->set_dirty(true);
		HX_STACK_LINE(132)
		if (((bool((this->_scale_handlers != null())) && bool((this->_scale_handlers->__Field(HX_CSTRING("length"),true) > (int)0))))){
			HX_STACK_LINE(134)
			this->propagate_scale(s);
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,on_local_scale_change,(void))

Void Transform_obj::on_parent_cleaned( ::phoenix::Transform p){
{
		HX_STACK_FRAME("phoenix.Transform","on_parent_cleaned",0x89be7432,"phoenix.Transform.on_parent_cleaned","phoenix/Transform.hx",141,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(p,"p")
		HX_STACK_LINE(141)
		this->set_dirty(true);
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,on_parent_cleaned,(void))

::phoenix::Spatial Transform_obj::get_local( ){
	HX_STACK_FRAME("phoenix.Transform","get_local",0x357b69c1,"phoenix.Transform.get_local","phoenix/Transform.hx",147,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_LINE(147)
	return this->local;
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,get_local,return )

::phoenix::Spatial Transform_obj::set_local( ::phoenix::Spatial l){
	HX_STACK_FRAME("phoenix.Transform","set_local",0x18cc55cd,"phoenix.Transform.set_local","phoenix/Transform.hx",151,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(l,"l")
	HX_STACK_LINE(153)
	if (((l == null()))){
		HX_STACK_LINE(154)
		return this->local = l;
	}
	HX_STACK_LINE(157)
	this->set_dirty(true);
	HX_STACK_LINE(159)
	l->pos_changed = this->on_local_pos_change_dyn();
	HX_STACK_LINE(160)
	l->rotation_changed = this->on_local_rotation_change_dyn();
	HX_STACK_LINE(161)
	l->scale_changed = this->on_local_scale_change_dyn();
	HX_STACK_LINE(163)
	return this->local = l;
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,set_local,return )

::phoenix::Spatial Transform_obj::get_world( ){
	HX_STACK_FRAME("phoenix.Transform","get_world",0x8aef36a8,"phoenix.Transform.get_world","phoenix/Transform.hx",168,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_LINE(170)
	this->clean_check();
	HX_STACK_LINE(172)
	return this->world;
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,get_world,return )

Void Transform_obj::clean_check( ){
{
		HX_STACK_FRAME("phoenix.Transform","clean_check",0x615a2011,"phoenix.Transform.clean_check","phoenix/Transform.hx",176,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_LINE(179)
		if (((this->get_parent() != null()))){
			HX_STACK_LINE(181)
			if ((this->get_parent()->dirty)){
				HX_STACK_LINE(182)
				this->get_parent()->clean();
			}
		}
		HX_STACK_LINE(187)
		if (((bool(this->dirty) && bool(!(this->_cleaning))))){
			HX_STACK_LINE(188)
			this->clean();
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,clean_check,(void))

Void Transform_obj::clean( ){
{
		HX_STACK_FRAME("phoenix.Transform","clean",0xbcad0a08,"phoenix.Transform.clean","phoenix/Transform.hx",193,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_LINE(195)
		if ((!(this->dirty))){
			HX_STACK_LINE(196)
			return null();
		}
		HX_STACK_LINE(200)
		this->_cleaning = true;
		HX_STACK_LINE(203)
		::phoenix::Spatial _g = this->get_local();		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(203)
		::phoenix::Spatial _g1 = this->get_local();		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(203)
		this->_pos_matrix->makeTranslation(_g->pos->x,_g1->pos->y,this->get_local()->pos->z);
		HX_STACK_LINE(204)
		this->_rotation_matrix->makeRotationFromQuaternion(this->get_local()->rotation);
		HX_STACK_LINE(205)
		::phoenix::Vector _g2 = this->get_origin();		HX_STACK_VAR(_g2,"_g2");
		HX_STACK_LINE(205)
		::phoenix::Vector _g3 = this->get_origin();		HX_STACK_VAR(_g3,"_g3");
		HX_STACK_LINE(205)
		this->_origin_undo_matrix->makeTranslation(-(_g2->x),-(_g3->y),-(this->get_origin()->z));
		HX_STACK_LINE(208)
		::phoenix::Vector _g4 = this->get_origin();		HX_STACK_VAR(_g4,"_g4");
		HX_STACK_LINE(208)
		::phoenix::Vector _g5 = this->get_origin();		HX_STACK_VAR(_g5,"_g5");
		HX_STACK_LINE(208)
		this->get_local()->get_matrix()->makeTranslation(_g4->x,_g5->y,this->get_origin()->z);
		HX_STACK_LINE(211)
		this->get_local()->get_matrix()->scale(this->get_local()->scale);
		HX_STACK_LINE(213)
		this->get_local()->get_matrix()->multiply(this->_rotation_matrix);
		HX_STACK_LINE(215)
		this->get_local()->get_matrix()->setPosition(this->get_local()->pos);
		HX_STACK_LINE(218)
		this->get_local()->get_matrix()->multiply(this->_origin_undo_matrix);
		HX_STACK_LINE(221)
		if (((this->get_parent() != null()))){
			HX_STACK_LINE(222)
			::phoenix::Matrix _g6 = this->get_parent()->get_world()->get_matrix();		HX_STACK_VAR(_g6,"_g6");
			HX_STACK_LINE(222)
			this->get_world()->set_matrix(this->get_world()->get_matrix()->multiplyMatrices(_g6,this->get_local()->get_matrix()));
		}
		else{
			HX_STACK_LINE(224)
			this->get_world()->set_matrix(this->get_local()->get_matrix()->clone());
		}
		HX_STACK_LINE(228)
		this->get_world()->decompose();
		HX_STACK_LINE(231)
		this->set_dirty(false);
		HX_STACK_LINE(232)
		this->_cleaning = false;
		HX_STACK_LINE(234)
		if (((bool((this->_clean_handlers != null())) && bool((this->_clean_handlers->__Field(HX_CSTRING("length"),true) > (int)0))))){
			HX_STACK_LINE(236)
			this->propagate_clean();
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,clean,(void))

::String Transform_obj::toString( ){
	HX_STACK_FRAME("phoenix.Transform","toString",0x591e518d,"phoenix.Transform.toString","phoenix/Transform.hx",242,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_LINE(242)
	return ((HX_CSTRING("Transform (") + this->id) + HX_CSTRING(")"));
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,toString,return )

::phoenix::Vector Transform_obj::get_origin( ){
	HX_STACK_FRAME("phoenix.Transform","get_origin",0x87c2c4d0,"phoenix.Transform.get_origin","phoenix/Transform.hx",247,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_LINE(247)
	return this->origin;
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,get_origin,return )

::phoenix::Vector Transform_obj::set_origin( ::phoenix::Vector o){
	HX_STACK_FRAME("phoenix.Transform","set_origin",0x8b406344,"phoenix.Transform.set_origin","phoenix/Transform.hx",251,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(o,"o")
	HX_STACK_LINE(253)
	this->set_dirty(true);
	HX_STACK_LINE(255)
	this->origin = o;
	HX_STACK_LINE(257)
	if (((bool((this->_origin_handlers != null())) && bool((this->_origin_handlers->__Field(HX_CSTRING("length"),true) > (int)0))))){
		HX_STACK_LINE(259)
		this->propagate_origin(this->get_origin());
	}
	HX_STACK_LINE(262)
	return this->get_origin();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,set_origin,return )

::phoenix::Spatial Transform_obj::set_world( ::phoenix::Spatial w){
	HX_STACK_FRAME("phoenix.Transform","set_world",0x6e4022b4,"phoenix.Transform.set_world","phoenix/Transform.hx",266,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(w,"w")
	HX_STACK_LINE(268)
	if (((w == null()))){
		HX_STACK_LINE(269)
		return this->world = w;
	}
	HX_STACK_LINE(272)
	this->set_dirty(true);
	HX_STACK_LINE(274)
	return this->world = w;
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,set_world,return )

::phoenix::Transform Transform_obj::get_parent( ){
	HX_STACK_FRAME("phoenix.Transform","get_parent",0x2a3fb014,"phoenix.Transform.get_parent","phoenix/Transform.hx",280,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_LINE(280)
	return this->parent;
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,get_parent,return )

::phoenix::Transform Transform_obj::set_parent( ::phoenix::Transform _p){
	HX_STACK_FRAME("phoenix.Transform","set_parent",0x2dbd4e88,"phoenix.Transform.set_parent","phoenix/Transform.hx",284,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_p,"_p")
	HX_STACK_LINE(286)
	this->set_dirty(true);
	HX_STACK_LINE(289)
	if (((this->get_parent() != null()))){
		HX_STACK_LINE(290)
		this->get_parent()->unlisten(this->on_parent_cleaned_dyn());
	}
	HX_STACK_LINE(293)
	this->parent = _p;
	HX_STACK_LINE(295)
	if (((bool((this->_parent_handlers != null())) && bool((this->_parent_handlers->__Field(HX_CSTRING("length"),true) > (int)0))))){
		HX_STACK_LINE(297)
		this->propagate_parent(this->get_parent());
	}
	HX_STACK_LINE(300)
	if (((this->get_parent() != null()))){
		HX_STACK_LINE(303)
		this->get_parent()->listen(this->on_parent_cleaned_dyn());
	}
	HX_STACK_LINE(306)
	return this->get_parent();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,set_parent,return )

::phoenix::Vector Transform_obj::get_pos( ){
	HX_STACK_FRAME("phoenix.Transform","get_pos",0x85121c6a,"phoenix.Transform.get_pos","phoenix/Transform.hx",311,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_LINE(311)
	return this->get_local()->pos;
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,get_pos,return )

::phoenix::Quaternion Transform_obj::get_rotation( ){
	HX_STACK_FRAME("phoenix.Transform","get_rotation",0x3937f6a8,"phoenix.Transform.get_rotation","phoenix/Transform.hx",315,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_LINE(315)
	return this->get_local()->rotation;
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,get_rotation,return )

::phoenix::Vector Transform_obj::get_scale( ){
	HX_STACK_FRAME("phoenix.Transform","get_scale",0x35596ee0,"phoenix.Transform.get_scale","phoenix/Transform.hx",319,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_LINE(319)
	return this->get_local()->scale;
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,get_scale,return )

::phoenix::Vector Transform_obj::set_pos( ::phoenix::Vector value){
	HX_STACK_FRAME("phoenix.Transform","set_pos",0x7813ad76,"phoenix.Transform.set_pos","phoenix/Transform.hx",324,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(value,"value")
	HX_STACK_LINE(324)
	return this->get_local()->set_pos(value);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,set_pos,return )

::phoenix::Quaternion Transform_obj::set_rotation( ::phoenix::Quaternion value){
	HX_STACK_FRAME("phoenix.Transform","set_rotation",0x4e311a1c,"phoenix.Transform.set_rotation","phoenix/Transform.hx",328,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(value,"value")
	HX_STACK_LINE(328)
	return this->get_local()->set_rotation(value);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,set_rotation,return )

::phoenix::Vector Transform_obj::set_scale( ::phoenix::Vector value){
	HX_STACK_FRAME("phoenix.Transform","set_scale",0x18aa5aec,"phoenix.Transform.set_scale","phoenix/Transform.hx",332,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(value,"value")
	HX_STACK_LINE(332)
	return this->get_local()->set_scale(value);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,set_scale,return )

Void Transform_obj::propagate_clean( ){
{
		HX_STACK_FRAME("phoenix.Transform","propagate_clean",0xf9de2332,"phoenix.Transform.propagate_clean","phoenix/Transform.hx",337,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_LINE(337)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(337)
		Dynamic _g1 = this->_clean_handlers;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(337)
		while(((_g < _g1->__Field(HX_CSTRING("length"),true)))){
			HX_STACK_LINE(337)
			Dynamic _handler = _g1->__GetItem(_g);		HX_STACK_VAR(_handler,"_handler");
			HX_STACK_LINE(337)
			++(_g);
			HX_STACK_LINE(338)
			if (((_handler != null()))){
				HX_STACK_LINE(339)
				_handler(hx::ObjectPtr<OBJ_>(this)).Cast< Void >();
			}
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,propagate_clean,(void))

Void Transform_obj::propagate_dirty( ){
{
		HX_STACK_FRAME("phoenix.Transform","propagate_dirty",0x8b5301bb,"phoenix.Transform.propagate_dirty","phoenix/Transform.hx",345,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_LINE(345)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(345)
		Dynamic _g1 = this->_dirty_handlers;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(345)
		while(((_g < _g1->__Field(HX_CSTRING("length"),true)))){
			HX_STACK_LINE(345)
			Dynamic _handler = _g1->__GetItem(_g);		HX_STACK_VAR(_handler,"_handler");
			HX_STACK_LINE(345)
			++(_g);
			HX_STACK_LINE(346)
			if (((_handler != null()))){
				HX_STACK_LINE(347)
				_handler(hx::ObjectPtr<OBJ_>(this)).Cast< Void >();
			}
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC0(Transform_obj,propagate_dirty,(void))

Void Transform_obj::propagate_pos( ::phoenix::Vector _pos){
{
		HX_STACK_FRAME("phoenix.Transform","propagate_pos",0xf04d22fd,"phoenix.Transform.propagate_pos","phoenix/Transform.hx",353,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_pos,"_pos")
		HX_STACK_LINE(353)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(353)
		Dynamic _g1 = this->_pos_handlers;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(353)
		while(((_g < _g1->__Field(HX_CSTRING("length"),true)))){
			HX_STACK_LINE(353)
			Dynamic _handler = _g1->__GetItem(_g);		HX_STACK_VAR(_handler,"_handler");
			HX_STACK_LINE(353)
			++(_g);
			HX_STACK_LINE(354)
			if (((_handler != null()))){
				HX_STACK_LINE(355)
				_handler(_pos).Cast< Void >();
			}
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,propagate_pos,(void))

Void Transform_obj::propagate_rotation( ::phoenix::Quaternion _rotation){
{
		HX_STACK_FRAME("phoenix.Transform","propagate_rotation",0x22bd3b35,"phoenix.Transform.propagate_rotation","phoenix/Transform.hx",361,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_rotation,"_rotation")
		HX_STACK_LINE(361)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(361)
		Dynamic _g1 = this->_rotation_handlers;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(361)
		while(((_g < _g1->__Field(HX_CSTRING("length"),true)))){
			HX_STACK_LINE(361)
			Dynamic _handler = _g1->__GetItem(_g);		HX_STACK_VAR(_handler,"_handler");
			HX_STACK_LINE(361)
			++(_g);
			HX_STACK_LINE(362)
			if (((_handler != null()))){
				HX_STACK_LINE(363)
				_handler(_rotation).Cast< Void >();
			}
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,propagate_rotation,(void))

Void Transform_obj::propagate_scale( ::phoenix::Vector _scale){
{
		HX_STACK_FRAME("phoenix.Transform","propagate_scale",0x2a518033,"phoenix.Transform.propagate_scale","phoenix/Transform.hx",369,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_scale,"_scale")
		HX_STACK_LINE(369)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(369)
		Dynamic _g1 = this->_scale_handlers;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(369)
		while(((_g < _g1->__Field(HX_CSTRING("length"),true)))){
			HX_STACK_LINE(369)
			Dynamic _handler = _g1->__GetItem(_g);		HX_STACK_VAR(_handler,"_handler");
			HX_STACK_LINE(369)
			++(_g);
			HX_STACK_LINE(370)
			if (((_handler != null()))){
				HX_STACK_LINE(371)
				_handler(_scale).Cast< Void >();
			}
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,propagate_scale,(void))

Void Transform_obj::propagate_origin( ::phoenix::Vector _origin){
{
		HX_STACK_FRAME("phoenix.Transform","propagate_origin",0xebd9dc1d,"phoenix.Transform.propagate_origin","phoenix/Transform.hx",377,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_origin,"_origin")
		HX_STACK_LINE(377)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(377)
		Dynamic _g1 = this->_origin_handlers;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(377)
		while(((_g < _g1->__Field(HX_CSTRING("length"),true)))){
			HX_STACK_LINE(377)
			Dynamic _handler = _g1->__GetItem(_g);		HX_STACK_VAR(_handler,"_handler");
			HX_STACK_LINE(377)
			++(_g);
			HX_STACK_LINE(378)
			if (((_handler != null()))){
				HX_STACK_LINE(379)
				_handler(_origin).Cast< Void >();
			}
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,propagate_origin,(void))

Void Transform_obj::propagate_parent( ::phoenix::Transform _parent){
{
		HX_STACK_FRAME("phoenix.Transform","propagate_parent",0x8e56c761,"phoenix.Transform.propagate_parent","phoenix/Transform.hx",385,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_parent,"_parent")
		HX_STACK_LINE(385)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(385)
		Dynamic _g1 = this->_parent_handlers;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(385)
		while(((_g < _g1->__Field(HX_CSTRING("length"),true)))){
			HX_STACK_LINE(385)
			Dynamic _handler = _g1->__GetItem(_g);		HX_STACK_VAR(_handler,"_handler");
			HX_STACK_LINE(385)
			++(_g);
			HX_STACK_LINE(386)
			if (((_handler != null()))){
				HX_STACK_LINE(387)
				_handler(_parent).Cast< Void >();
			}
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,propagate_parent,(void))

Void Transform_obj::listen( Dynamic _handler){
{
		HX_STACK_FRAME("phoenix.Transform","listen",0x430d9ee8,"phoenix.Transform.listen","phoenix/Transform.hx",392,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_handler,"_handler")
		HX_STACK_LINE(394)
		if (((this->_clean_handlers == null()))){
			HX_STACK_LINE(395)
			this->_clean_handlers = Dynamic( Array_obj<Dynamic>::__new());
		}
		HX_STACK_LINE(398)
		this->_clean_handlers->__Field(HX_CSTRING("push"),true)(_handler);
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,listen,(void))

bool Transform_obj::unlisten( Dynamic _handler){
	HX_STACK_FRAME("phoenix.Transform","unlisten",0x12f07841,"phoenix.Transform.unlisten","phoenix/Transform.hx",402,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_handler,"_handler")
	HX_STACK_LINE(404)
	if (((this->_clean_handlers == null()))){
		HX_STACK_LINE(405)
		return false;
	}
	HX_STACK_LINE(408)
	return this->_clean_handlers->__Field(HX_CSTRING("remove"),true)(_handler);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,unlisten,return )

Void Transform_obj::listen_dirty( Dynamic _handler){
{
		HX_STACK_FRAME("phoenix.Transform","listen_dirty",0x4f43543b,"phoenix.Transform.listen_dirty","phoenix/Transform.hx",412,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_handler,"_handler")
		HX_STACK_LINE(414)
		if (((this->_dirty_handlers == null()))){
			HX_STACK_LINE(415)
			this->_dirty_handlers = Dynamic( Array_obj<Dynamic>::__new());
		}
		HX_STACK_LINE(418)
		this->_dirty_handlers->__Field(HX_CSTRING("push"),true)(_handler);
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,listen_dirty,(void))

bool Transform_obj::unlisten_dirty( Dynamic _handler){
	HX_STACK_FRAME("phoenix.Transform","unlisten_dirty",0x5b453654,"phoenix.Transform.unlisten_dirty","phoenix/Transform.hx",422,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_handler,"_handler")
	HX_STACK_LINE(424)
	if (((this->_dirty_handlers == null()))){
		HX_STACK_LINE(425)
		return false;
	}
	HX_STACK_LINE(428)
	return this->_dirty_handlers->__Field(HX_CSTRING("remove"),true)(_handler);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,unlisten_dirty,return )

Void Transform_obj::listen_pos( Dynamic _handler){
{
		HX_STACK_FRAME("phoenix.Transform","listen_pos",0x714bd57d,"phoenix.Transform.listen_pos","phoenix/Transform.hx",432,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_handler,"_handler")
		HX_STACK_LINE(434)
		if (((this->_pos_handlers == null()))){
			HX_STACK_LINE(435)
			this->_pos_handlers = Dynamic( Array_obj<Dynamic>::__new());
		}
		HX_STACK_LINE(438)
		this->_pos_handlers->__Field(HX_CSTRING("push"),true)(_handler);
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,listen_pos,(void))

bool Transform_obj::unlisten_pos( Dynamic _handler){
	HX_STACK_FRAME("phoenix.Transform","unlisten_pos",0x0cb8cf56,"phoenix.Transform.unlisten_pos","phoenix/Transform.hx",442,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_handler,"_handler")
	HX_STACK_LINE(444)
	if (((this->_pos_handlers == null()))){
		HX_STACK_LINE(445)
		return false;
	}
	HX_STACK_LINE(448)
	return this->_pos_handlers->__Field(HX_CSTRING("remove"),true)(_handler);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,unlisten_pos,return )

Void Transform_obj::listen_scale( Dynamic _handler){
{
		HX_STACK_FRAME("phoenix.Transform","listen_scale",0xee41d2b3,"phoenix.Transform.listen_scale","phoenix/Transform.hx",452,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_handler,"_handler")
		HX_STACK_LINE(454)
		if (((this->_scale_handlers == null()))){
			HX_STACK_LINE(455)
			this->_scale_handlers = Dynamic( Array_obj<Dynamic>::__new());
		}
		HX_STACK_LINE(458)
		this->_scale_handlers->__Field(HX_CSTRING("push"),true)(_handler);
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,listen_scale,(void))

bool Transform_obj::unlisten_scale( Dynamic _handler){
	HX_STACK_FRAME("phoenix.Transform","unlisten_scale",0xfa43b4cc,"phoenix.Transform.unlisten_scale","phoenix/Transform.hx",462,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_handler,"_handler")
	HX_STACK_LINE(464)
	if (((this->_scale_handlers == null()))){
		HX_STACK_LINE(465)
		return false;
	}
	HX_STACK_LINE(468)
	return this->_scale_handlers->__Field(HX_CSTRING("remove"),true)(_handler);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,unlisten_scale,return )

Void Transform_obj::listen_rotation( Dynamic _handler){
{
		HX_STACK_FRAME("phoenix.Transform","listen_rotation",0xfce778b5,"phoenix.Transform.listen_rotation","phoenix/Transform.hx",472,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_handler,"_handler")
		HX_STACK_LINE(474)
		if (((this->_rotation_handlers == null()))){
			HX_STACK_LINE(475)
			this->_rotation_handlers = Dynamic( Array_obj<Dynamic>::__new());
		}
		HX_STACK_LINE(478)
		this->_rotation_handlers->__Field(HX_CSTRING("push"),true)(_handler);
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,listen_rotation,(void))

bool Transform_obj::unlisten_rotation( Dynamic _handler){
	HX_STACK_FRAME("phoenix.Transform","unlisten_rotation",0x1a452c3c,"phoenix.Transform.unlisten_rotation","phoenix/Transform.hx",482,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_handler,"_handler")
	HX_STACK_LINE(484)
	if (((this->_rotation_handlers == null()))){
		HX_STACK_LINE(485)
		return false;
	}
	HX_STACK_LINE(488)
	return this->_rotation_handlers->__Field(HX_CSTRING("remove"),true)(_handler);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,unlisten_rotation,return )

Void Transform_obj::listen_origin( Dynamic _handler){
{
		HX_STACK_FRAME("phoenix.Transform","listen_origin",0x9a31b99d,"phoenix.Transform.listen_origin","phoenix/Transform.hx",492,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_handler,"_handler")
		HX_STACK_LINE(494)
		if (((this->_origin_handlers == null()))){
			HX_STACK_LINE(495)
			this->_origin_handlers = Dynamic( Array_obj<Dynamic>::__new());
		}
		HX_STACK_LINE(498)
		this->_origin_handlers->__Field(HX_CSTRING("push"),true)(_handler);
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,listen_origin,(void))

bool Transform_obj::unlisten_origin( Dynamic _handler){
	HX_STACK_FRAME("phoenix.Transform","unlisten_origin",0x0fd5ad64,"phoenix.Transform.unlisten_origin","phoenix/Transform.hx",502,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_handler,"_handler")
	HX_STACK_LINE(504)
	if (((this->_origin_handlers == null()))){
		HX_STACK_LINE(505)
		return false;
	}
	HX_STACK_LINE(508)
	return this->_origin_handlers->__Field(HX_CSTRING("remove"),true)(_handler);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,unlisten_origin,return )

Void Transform_obj::listen_parent( Dynamic _handler){
{
		HX_STACK_FRAME("phoenix.Transform","listen_parent",0x3caea4e1,"phoenix.Transform.listen_parent","phoenix/Transform.hx",512,0x44da8ab2)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_handler,"_handler")
		HX_STACK_LINE(514)
		if (((this->_parent_handlers == null()))){
			HX_STACK_LINE(515)
			this->_parent_handlers = Dynamic( Array_obj<Dynamic>::__new());
		}
		HX_STACK_LINE(518)
		this->_parent_handlers->__Field(HX_CSTRING("push"),true)(_handler);
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,listen_parent,(void))

bool Transform_obj::unlisten_parent( Dynamic _handler){
	HX_STACK_FRAME("phoenix.Transform","unlisten_parent",0xb25298a8,"phoenix.Transform.unlisten_parent","phoenix/Transform.hx",522,0x44da8ab2)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_handler,"_handler")
	HX_STACK_LINE(524)
	if (((this->_parent_handlers == null()))){
		HX_STACK_LINE(525)
		return false;
	}
	HX_STACK_LINE(528)
	return this->_parent_handlers->__Field(HX_CSTRING("remove"),true)(_handler);
}


HX_DEFINE_DYNAMIC_FUNC1(Transform_obj,unlisten_parent,return )


Transform_obj::Transform_obj()
{
}

void Transform_obj::__Mark(HX_MARK_PARAMS)
{
	HX_MARK_BEGIN_CLASS(Transform);
	HX_MARK_MEMBER_NAME(parent,"parent");
	HX_MARK_MEMBER_NAME(local,"local");
	HX_MARK_MEMBER_NAME(world,"world");
	HX_MARK_MEMBER_NAME(origin,"origin");
	HX_MARK_MEMBER_NAME(dirty,"dirty");
	HX_MARK_MEMBER_NAME(_origin_undo_matrix,"_origin_undo_matrix");
	HX_MARK_MEMBER_NAME(_pos_matrix,"_pos_matrix");
	HX_MARK_MEMBER_NAME(_rotation_matrix,"_rotation_matrix");
	HX_MARK_MEMBER_NAME(_setup,"_setup");
	HX_MARK_MEMBER_NAME(_cleaning,"_cleaning");
	HX_MARK_MEMBER_NAME(_clean_handlers,"_clean_handlers");
	HX_MARK_MEMBER_NAME(_dirty_handlers,"_dirty_handlers");
	HX_MARK_MEMBER_NAME(_pos_handlers,"_pos_handlers");
	HX_MARK_MEMBER_NAME(_rotation_handlers,"_rotation_handlers");
	HX_MARK_MEMBER_NAME(_scale_handlers,"_scale_handlers");
	HX_MARK_MEMBER_NAME(_origin_handlers,"_origin_handlers");
	HX_MARK_MEMBER_NAME(_parent_handlers,"_parent_handlers");
	::luxe::ID_obj::__Mark(HX_MARK_ARG);
	HX_MARK_END_CLASS();
}

void Transform_obj::__Visit(HX_VISIT_PARAMS)
{
	HX_VISIT_MEMBER_NAME(parent,"parent");
	HX_VISIT_MEMBER_NAME(local,"local");
	HX_VISIT_MEMBER_NAME(world,"world");
	HX_VISIT_MEMBER_NAME(origin,"origin");
	HX_VISIT_MEMBER_NAME(dirty,"dirty");
	HX_VISIT_MEMBER_NAME(_origin_undo_matrix,"_origin_undo_matrix");
	HX_VISIT_MEMBER_NAME(_pos_matrix,"_pos_matrix");
	HX_VISIT_MEMBER_NAME(_rotation_matrix,"_rotation_matrix");
	HX_VISIT_MEMBER_NAME(_setup,"_setup");
	HX_VISIT_MEMBER_NAME(_cleaning,"_cleaning");
	HX_VISIT_MEMBER_NAME(_clean_handlers,"_clean_handlers");
	HX_VISIT_MEMBER_NAME(_dirty_handlers,"_dirty_handlers");
	HX_VISIT_MEMBER_NAME(_pos_handlers,"_pos_handlers");
	HX_VISIT_MEMBER_NAME(_rotation_handlers,"_rotation_handlers");
	HX_VISIT_MEMBER_NAME(_scale_handlers,"_scale_handlers");
	HX_VISIT_MEMBER_NAME(_origin_handlers,"_origin_handlers");
	HX_VISIT_MEMBER_NAME(_parent_handlers,"_parent_handlers");
	::luxe::ID_obj::__Visit(HX_VISIT_ARG);
}

Dynamic Transform_obj::__Field(const ::String &inName,bool inCallProp)
{
	switch(inName.length) {
	case 3:
		if (HX_FIELD_EQ(inName,"pos") ) { return get_pos(); }
		break;
	case 5:
		if (HX_FIELD_EQ(inName,"local") ) { return inCallProp ? get_local() : local; }
		if (HX_FIELD_EQ(inName,"world") ) { return inCallProp ? get_world() : world; }
		if (HX_FIELD_EQ(inName,"dirty") ) { return dirty; }
		if (HX_FIELD_EQ(inName,"scale") ) { return get_scale(); }
		if (HX_FIELD_EQ(inName,"clean") ) { return clean_dyn(); }
		break;
	case 6:
		if (HX_FIELD_EQ(inName,"parent") ) { return inCallProp ? get_parent() : parent; }
		if (HX_FIELD_EQ(inName,"origin") ) { return inCallProp ? get_origin() : origin; }
		if (HX_FIELD_EQ(inName,"_setup") ) { return _setup; }
		if (HX_FIELD_EQ(inName,"listen") ) { return listen_dyn(); }
		break;
	case 7:
		if (HX_FIELD_EQ(inName,"destroy") ) { return destroy_dyn(); }
		if (HX_FIELD_EQ(inName,"get_pos") ) { return get_pos_dyn(); }
		if (HX_FIELD_EQ(inName,"set_pos") ) { return set_pos_dyn(); }
		break;
	case 8:
		if (HX_FIELD_EQ(inName,"rotation") ) { return get_rotation(); }
		if (HX_FIELD_EQ(inName,"toString") ) { return toString_dyn(); }
		if (HX_FIELD_EQ(inName,"unlisten") ) { return unlisten_dyn(); }
		break;
	case 9:
		if (HX_FIELD_EQ(inName,"_cleaning") ) { return _cleaning; }
		if (HX_FIELD_EQ(inName,"set_dirty") ) { return set_dirty_dyn(); }
		if (HX_FIELD_EQ(inName,"get_local") ) { return get_local_dyn(); }
		if (HX_FIELD_EQ(inName,"set_local") ) { return set_local_dyn(); }
		if (HX_FIELD_EQ(inName,"get_world") ) { return get_world_dyn(); }
		if (HX_FIELD_EQ(inName,"set_world") ) { return set_world_dyn(); }
		if (HX_FIELD_EQ(inName,"get_scale") ) { return get_scale_dyn(); }
		if (HX_FIELD_EQ(inName,"set_scale") ) { return set_scale_dyn(); }
		break;
	case 10:
		if (HX_FIELD_EQ(inName,"get_origin") ) { return get_origin_dyn(); }
		if (HX_FIELD_EQ(inName,"set_origin") ) { return set_origin_dyn(); }
		if (HX_FIELD_EQ(inName,"get_parent") ) { return get_parent_dyn(); }
		if (HX_FIELD_EQ(inName,"set_parent") ) { return set_parent_dyn(); }
		if (HX_FIELD_EQ(inName,"listen_pos") ) { return listen_pos_dyn(); }
		break;
	case 11:
		if (HX_FIELD_EQ(inName,"_pos_matrix") ) { return _pos_matrix; }
		if (HX_FIELD_EQ(inName,"clean_check") ) { return clean_check_dyn(); }
		break;
	case 12:
		if (HX_FIELD_EQ(inName,"get_rotation") ) { return get_rotation_dyn(); }
		if (HX_FIELD_EQ(inName,"set_rotation") ) { return set_rotation_dyn(); }
		if (HX_FIELD_EQ(inName,"listen_dirty") ) { return listen_dirty_dyn(); }
		if (HX_FIELD_EQ(inName,"unlisten_pos") ) { return unlisten_pos_dyn(); }
		if (HX_FIELD_EQ(inName,"listen_scale") ) { return listen_scale_dyn(); }
		break;
	case 13:
		if (HX_FIELD_EQ(inName,"_pos_handlers") ) { return _pos_handlers; }
		if (HX_FIELD_EQ(inName,"propagate_pos") ) { return propagate_pos_dyn(); }
		if (HX_FIELD_EQ(inName,"listen_origin") ) { return listen_origin_dyn(); }
		if (HX_FIELD_EQ(inName,"listen_parent") ) { return listen_parent_dyn(); }
		break;
	case 14:
		if (HX_FIELD_EQ(inName,"unlisten_dirty") ) { return unlisten_dirty_dyn(); }
		if (HX_FIELD_EQ(inName,"unlisten_scale") ) { return unlisten_scale_dyn(); }
		break;
	case 15:
		if (HX_FIELD_EQ(inName,"_clean_handlers") ) { return _clean_handlers; }
		if (HX_FIELD_EQ(inName,"_dirty_handlers") ) { return _dirty_handlers; }
		if (HX_FIELD_EQ(inName,"_scale_handlers") ) { return _scale_handlers; }
		if (HX_FIELD_EQ(inName,"propagate_clean") ) { return propagate_clean_dyn(); }
		if (HX_FIELD_EQ(inName,"propagate_dirty") ) { return propagate_dirty_dyn(); }
		if (HX_FIELD_EQ(inName,"propagate_scale") ) { return propagate_scale_dyn(); }
		if (HX_FIELD_EQ(inName,"listen_rotation") ) { return listen_rotation_dyn(); }
		if (HX_FIELD_EQ(inName,"unlisten_origin") ) { return unlisten_origin_dyn(); }
		if (HX_FIELD_EQ(inName,"unlisten_parent") ) { return unlisten_parent_dyn(); }
		break;
	case 16:
		if (HX_FIELD_EQ(inName,"_rotation_matrix") ) { return _rotation_matrix; }
		if (HX_FIELD_EQ(inName,"_origin_handlers") ) { return _origin_handlers; }
		if (HX_FIELD_EQ(inName,"_parent_handlers") ) { return _parent_handlers; }
		if (HX_FIELD_EQ(inName,"propagate_origin") ) { return propagate_origin_dyn(); }
		if (HX_FIELD_EQ(inName,"propagate_parent") ) { return propagate_parent_dyn(); }
		break;
	case 17:
		if (HX_FIELD_EQ(inName,"on_parent_cleaned") ) { return on_parent_cleaned_dyn(); }
		if (HX_FIELD_EQ(inName,"unlisten_rotation") ) { return unlisten_rotation_dyn(); }
		break;
	case 18:
		if (HX_FIELD_EQ(inName,"_rotation_handlers") ) { return _rotation_handlers; }
		if (HX_FIELD_EQ(inName,"propagate_rotation") ) { return propagate_rotation_dyn(); }
		break;
	case 19:
		if (HX_FIELD_EQ(inName,"_origin_undo_matrix") ) { return _origin_undo_matrix; }
		if (HX_FIELD_EQ(inName,"on_local_pos_change") ) { return on_local_pos_change_dyn(); }
		break;
	case 21:
		if (HX_FIELD_EQ(inName,"on_local_scale_change") ) { return on_local_scale_change_dyn(); }
		break;
	case 24:
		if (HX_FIELD_EQ(inName,"on_local_rotation_change") ) { return on_local_rotation_change_dyn(); }
	}
	return super::__Field(inName,inCallProp);
}

Dynamic Transform_obj::__SetField(const ::String &inName,const Dynamic &inValue,bool inCallProp)
{
	switch(inName.length) {
	case 3:
		if (HX_FIELD_EQ(inName,"pos") ) { return set_pos(inValue); }
		break;
	case 5:
		if (HX_FIELD_EQ(inName,"local") ) { if (inCallProp) return set_local(inValue);local=inValue.Cast< ::phoenix::Spatial >(); return inValue; }
		if (HX_FIELD_EQ(inName,"world") ) { if (inCallProp) return set_world(inValue);world=inValue.Cast< ::phoenix::Spatial >(); return inValue; }
		if (HX_FIELD_EQ(inName,"dirty") ) { if (inCallProp) return set_dirty(inValue);dirty=inValue.Cast< bool >(); return inValue; }
		if (HX_FIELD_EQ(inName,"scale") ) { return set_scale(inValue); }
		break;
	case 6:
		if (HX_FIELD_EQ(inName,"parent") ) { if (inCallProp) return set_parent(inValue);parent=inValue.Cast< ::phoenix::Transform >(); return inValue; }
		if (HX_FIELD_EQ(inName,"origin") ) { if (inCallProp) return set_origin(inValue);origin=inValue.Cast< ::phoenix::Vector >(); return inValue; }
		if (HX_FIELD_EQ(inName,"_setup") ) { _setup=inValue.Cast< bool >(); return inValue; }
		break;
	case 8:
		if (HX_FIELD_EQ(inName,"rotation") ) { return set_rotation(inValue); }
		break;
	case 9:
		if (HX_FIELD_EQ(inName,"_cleaning") ) { _cleaning=inValue.Cast< bool >(); return inValue; }
		break;
	case 11:
		if (HX_FIELD_EQ(inName,"_pos_matrix") ) { _pos_matrix=inValue.Cast< ::phoenix::Matrix >(); return inValue; }
		break;
	case 13:
		if (HX_FIELD_EQ(inName,"_pos_handlers") ) { _pos_handlers=inValue.Cast< Dynamic >(); return inValue; }
		break;
	case 15:
		if (HX_FIELD_EQ(inName,"_clean_handlers") ) { _clean_handlers=inValue.Cast< Dynamic >(); return inValue; }
		if (HX_FIELD_EQ(inName,"_dirty_handlers") ) { _dirty_handlers=inValue.Cast< Dynamic >(); return inValue; }
		if (HX_FIELD_EQ(inName,"_scale_handlers") ) { _scale_handlers=inValue.Cast< Dynamic >(); return inValue; }
		break;
	case 16:
		if (HX_FIELD_EQ(inName,"_rotation_matrix") ) { _rotation_matrix=inValue.Cast< ::phoenix::Matrix >(); return inValue; }
		if (HX_FIELD_EQ(inName,"_origin_handlers") ) { _origin_handlers=inValue.Cast< Dynamic >(); return inValue; }
		if (HX_FIELD_EQ(inName,"_parent_handlers") ) { _parent_handlers=inValue.Cast< Dynamic >(); return inValue; }
		break;
	case 18:
		if (HX_FIELD_EQ(inName,"_rotation_handlers") ) { _rotation_handlers=inValue.Cast< Dynamic >(); return inValue; }
		break;
	case 19:
		if (HX_FIELD_EQ(inName,"_origin_undo_matrix") ) { _origin_undo_matrix=inValue.Cast< ::phoenix::Matrix >(); return inValue; }
	}
	return super::__SetField(inName,inValue,inCallProp);
}

void Transform_obj::__GetFields(Array< ::String> &outFields)
{
	outFields->push(HX_CSTRING("parent"));
	outFields->push(HX_CSTRING("local"));
	outFields->push(HX_CSTRING("world"));
	outFields->push(HX_CSTRING("origin"));
	outFields->push(HX_CSTRING("dirty"));
	outFields->push(HX_CSTRING("pos"));
	outFields->push(HX_CSTRING("rotation"));
	outFields->push(HX_CSTRING("scale"));
	outFields->push(HX_CSTRING("_origin_undo_matrix"));
	outFields->push(HX_CSTRING("_pos_matrix"));
	outFields->push(HX_CSTRING("_rotation_matrix"));
	outFields->push(HX_CSTRING("_setup"));
	outFields->push(HX_CSTRING("_cleaning"));
	outFields->push(HX_CSTRING("_clean_handlers"));
	outFields->push(HX_CSTRING("_dirty_handlers"));
	outFields->push(HX_CSTRING("_pos_handlers"));
	outFields->push(HX_CSTRING("_rotation_handlers"));
	outFields->push(HX_CSTRING("_scale_handlers"));
	outFields->push(HX_CSTRING("_origin_handlers"));
	outFields->push(HX_CSTRING("_parent_handlers"));
	super::__GetFields(outFields);
};

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

#if HXCPP_SCRIPTABLE
static hx::StorageInfo sMemberStorageInfo[] = {
	{hx::fsObject /*::phoenix::Transform*/ ,(int)offsetof(Transform_obj,parent),HX_CSTRING("parent")},
	{hx::fsObject /*::phoenix::Spatial*/ ,(int)offsetof(Transform_obj,local),HX_CSTRING("local")},
	{hx::fsObject /*::phoenix::Spatial*/ ,(int)offsetof(Transform_obj,world),HX_CSTRING("world")},
	{hx::fsObject /*::phoenix::Vector*/ ,(int)offsetof(Transform_obj,origin),HX_CSTRING("origin")},
	{hx::fsBool,(int)offsetof(Transform_obj,dirty),HX_CSTRING("dirty")},
	{hx::fsObject /*::phoenix::Matrix*/ ,(int)offsetof(Transform_obj,_origin_undo_matrix),HX_CSTRING("_origin_undo_matrix")},
	{hx::fsObject /*::phoenix::Matrix*/ ,(int)offsetof(Transform_obj,_pos_matrix),HX_CSTRING("_pos_matrix")},
	{hx::fsObject /*::phoenix::Matrix*/ ,(int)offsetof(Transform_obj,_rotation_matrix),HX_CSTRING("_rotation_matrix")},
	{hx::fsBool,(int)offsetof(Transform_obj,_setup),HX_CSTRING("_setup")},
	{hx::fsBool,(int)offsetof(Transform_obj,_cleaning),HX_CSTRING("_cleaning")},
	{hx::fsObject /*Dynamic*/ ,(int)offsetof(Transform_obj,_clean_handlers),HX_CSTRING("_clean_handlers")},
	{hx::fsObject /*Dynamic*/ ,(int)offsetof(Transform_obj,_dirty_handlers),HX_CSTRING("_dirty_handlers")},
	{hx::fsObject /*Dynamic*/ ,(int)offsetof(Transform_obj,_pos_handlers),HX_CSTRING("_pos_handlers")},
	{hx::fsObject /*Dynamic*/ ,(int)offsetof(Transform_obj,_rotation_handlers),HX_CSTRING("_rotation_handlers")},
	{hx::fsObject /*Dynamic*/ ,(int)offsetof(Transform_obj,_scale_handlers),HX_CSTRING("_scale_handlers")},
	{hx::fsObject /*Dynamic*/ ,(int)offsetof(Transform_obj,_origin_handlers),HX_CSTRING("_origin_handlers")},
	{hx::fsObject /*Dynamic*/ ,(int)offsetof(Transform_obj,_parent_handlers),HX_CSTRING("_parent_handlers")},
	{ hx::fsUnknown, 0, null()}
};
#endif

static ::String sMemberFields[] = {
	HX_CSTRING("parent"),
	HX_CSTRING("local"),
	HX_CSTRING("world"),
	HX_CSTRING("origin"),
	HX_CSTRING("dirty"),
	HX_CSTRING("_origin_undo_matrix"),
	HX_CSTRING("_pos_matrix"),
	HX_CSTRING("_rotation_matrix"),
	HX_CSTRING("_setup"),
	HX_CSTRING("_cleaning"),
	HX_CSTRING("_clean_handlers"),
	HX_CSTRING("_dirty_handlers"),
	HX_CSTRING("_pos_handlers"),
	HX_CSTRING("_rotation_handlers"),
	HX_CSTRING("_scale_handlers"),
	HX_CSTRING("_origin_handlers"),
	HX_CSTRING("_parent_handlers"),
	HX_CSTRING("destroy"),
	HX_CSTRING("set_dirty"),
	HX_CSTRING("on_local_pos_change"),
	HX_CSTRING("on_local_rotation_change"),
	HX_CSTRING("on_local_scale_change"),
	HX_CSTRING("on_parent_cleaned"),
	HX_CSTRING("get_local"),
	HX_CSTRING("set_local"),
	HX_CSTRING("get_world"),
	HX_CSTRING("clean_check"),
	HX_CSTRING("clean"),
	HX_CSTRING("toString"),
	HX_CSTRING("get_origin"),
	HX_CSTRING("set_origin"),
	HX_CSTRING("set_world"),
	HX_CSTRING("get_parent"),
	HX_CSTRING("set_parent"),
	HX_CSTRING("get_pos"),
	HX_CSTRING("get_rotation"),
	HX_CSTRING("get_scale"),
	HX_CSTRING("set_pos"),
	HX_CSTRING("set_rotation"),
	HX_CSTRING("set_scale"),
	HX_CSTRING("propagate_clean"),
	HX_CSTRING("propagate_dirty"),
	HX_CSTRING("propagate_pos"),
	HX_CSTRING("propagate_rotation"),
	HX_CSTRING("propagate_scale"),
	HX_CSTRING("propagate_origin"),
	HX_CSTRING("propagate_parent"),
	HX_CSTRING("listen"),
	HX_CSTRING("unlisten"),
	HX_CSTRING("listen_dirty"),
	HX_CSTRING("unlisten_dirty"),
	HX_CSTRING("listen_pos"),
	HX_CSTRING("unlisten_pos"),
	HX_CSTRING("listen_scale"),
	HX_CSTRING("unlisten_scale"),
	HX_CSTRING("listen_rotation"),
	HX_CSTRING("unlisten_rotation"),
	HX_CSTRING("listen_origin"),
	HX_CSTRING("unlisten_origin"),
	HX_CSTRING("listen_parent"),
	HX_CSTRING("unlisten_parent"),
	String(null()) };

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

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

#endif

Class Transform_obj::__mClass;

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

void Transform_obj::__boot()
{
}

} // end namespace phoenix
