#include <hxcpp.h>

#ifndef INCLUDED_Luxe
#include <Luxe.h>
#endif
#ifndef INCLUDED_Std
#include <Std.h>
#endif
#ifndef INCLUDED_haxe_Log
#include <haxe/Log.h>
#endif
#ifndef INCLUDED_luxe_ID
#include <luxe/ID.h>
#endif
#ifndef INCLUDED_luxe_resource_Resource
#include <luxe/resource/Resource.h>
#endif
#ifndef INCLUDED_luxe_utils_Utils
#include <luxe/utils/Utils.h>
#endif
#ifndef INCLUDED_phoenix_Batcher
#include <phoenix/Batcher.h>
#endif
#ifndef INCLUDED_phoenix_Color
#include <phoenix/Color.h>
#endif
#ifndef INCLUDED_phoenix_Matrix
#include <phoenix/Matrix.h>
#endif
#ifndef INCLUDED_phoenix_PrimitiveType
#include <phoenix/PrimitiveType.h>
#endif
#ifndef INCLUDED_phoenix_Quaternion
#include <phoenix/Quaternion.h>
#endif
#ifndef INCLUDED_phoenix_Rectangle
#include <phoenix/Rectangle.h>
#endif
#ifndef INCLUDED_phoenix_Renderer
#include <phoenix/Renderer.h>
#endif
#ifndef INCLUDED_phoenix_Shader
#include <phoenix/Shader.h>
#endif
#ifndef INCLUDED_phoenix_Spatial
#include <phoenix/Spatial.h>
#endif
#ifndef INCLUDED_phoenix_Texture
#include <phoenix/Texture.h>
#endif
#ifndef INCLUDED_phoenix_Transform
#include <phoenix/Transform.h>
#endif
#ifndef INCLUDED_phoenix_Vector
#include <phoenix/Vector.h>
#endif
#ifndef INCLUDED_phoenix_geometry_Geometry
#include <phoenix/geometry/Geometry.h>
#endif
#ifndef INCLUDED_phoenix_geometry_GeometryState
#include <phoenix/geometry/GeometryState.h>
#endif
#ifndef INCLUDED_phoenix_geometry_TextureCoord
#include <phoenix/geometry/TextureCoord.h>
#endif
#ifndef INCLUDED_phoenix_geometry_TextureCoordSet
#include <phoenix/geometry/TextureCoordSet.h>
#endif
#ifndef INCLUDED_phoenix_geometry_Vertex
#include <phoenix/geometry/Vertex.h>
#endif
#ifndef INCLUDED_snow_platform_native_render_opengl_GLBuffer
#include <snow/platform/native/render/opengl/GLBuffer.h>
#endif
#ifndef INCLUDED_snow_platform_native_render_opengl_GLObject
#include <snow/platform/native/render/opengl/GLObject.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{
namespace geometry{

Void Geometry_obj::__construct(Dynamic options)
{
HX_STACK_FRAME("phoenix.geometry.Geometry","new",0xf65473e1,"phoenix.geometry.Geometry.new","phoenix/geometry/Geometry.hx",35,0xdab136cf)

HX_STACK_ARG(options,"options")
{
	HX_STACK_LINE(86)
	this->dirty = false;
	HX_STACK_LINE(85)
	this->locked = false;
	HX_STACK_LINE(84)
	this->immediate = false;
	HX_STACK_LINE(83)
	this->visible = true;
	HX_STACK_LINE(80)
	this->dirty_clip = false;
	HX_STACK_LINE(79)
	this->dirty_depth = false;
	HX_STACK_LINE(78)
	this->dirty_group = false;
	HX_STACK_LINE(77)
	this->dirty_shader = false;
	HX_STACK_LINE(76)
	this->dirty_texture = false;
	HX_STACK_LINE(75)
	this->dirty_primitive_type = false;
	HX_STACK_LINE(73)
	this->shadow_clip = false;
	HX_STACK_LINE(72)
	this->shadow_depth = 0.0;
	HX_STACK_LINE(71)
	this->shadow_group = (int)0;
	HX_STACK_LINE(58)
	this->id = HX_CSTRING("");
	HX_STACK_LINE(57)
	this->uuid = HX_CSTRING("");
	HX_STACK_LINE(56)
	this->dropped = false;
	HX_STACK_LINE(51)
	this->added = false;
	HX_STACK_LINE(44)
	this->submitted = false;
	HX_STACK_LINE(103)
	this->uuid = ::Luxe_obj::utils->uniqueid();
	HX_STACK_LINE(104)
	this->id = this->uuid;
	HX_STACK_LINE(106)
	this->vertices = Array_obj< ::Dynamic >::__new();
	HX_STACK_LINE(107)
	this->state = ::phoenix::geometry::GeometryState_obj::__new();
	HX_STACK_LINE(108)
	this->batchers = Array_obj< ::Dynamic >::__new();
	HX_STACK_LINE(111)
	this->transform = ::phoenix::Transform_obj::__new();
	HX_STACK_LINE(114)
	this->_final_vert_position = ::phoenix::Vector_obj::__new(null(),null(),null(),null());
	HX_STACK_LINE(117)
	this->set_clip_rect(null());
	HX_STACK_LINE(118)
	this->set_clip(false);
	HX_STACK_LINE(121)
	bool _do_add = true;		HX_STACK_VAR(_do_add,"_do_add");
	HX_STACK_LINE(123)
	if (((options != null()))){
		HX_STACK_LINE(125)
		this->state->set_depth((  (((options->__Field(HX_CSTRING("depth"),true) == null()))) ? Float(this->state->depth) : Float(options->__Field(HX_CSTRING("depth"),true)) ));
		HX_STACK_LINE(126)
		this->state->set_group((  (((options->__Field(HX_CSTRING("group"),true) == null()))) ? int(this->state->group) : int(options->__Field(HX_CSTRING("group"),true)) ));
		HX_STACK_LINE(127)
		this->state->set_texture((  (((options->__Field(HX_CSTRING("texture"),true) == null()))) ? ::phoenix::Texture(this->state->texture) : ::phoenix::Texture(options->__Field(HX_CSTRING("texture"),true)) ));
		HX_STACK_LINE(128)
		this->state->set_clip_rect((  (((options->__Field(HX_CSTRING("clip_rect"),true) == null()))) ? ::phoenix::Rectangle(this->state->clip_rect) : ::phoenix::Rectangle(options->__Field(HX_CSTRING("clip_rect"),true)) ));
		HX_STACK_LINE(129)
		this->state->set_primitive_type((  (((options->__Field(HX_CSTRING("primitive_type"),true) == null()))) ? ::phoenix::PrimitiveType(this->state->primitive_type) : ::phoenix::PrimitiveType(options->__Field(HX_CSTRING("primitive_type"),true)) ));
		HX_STACK_LINE(130)
		this->state->set_shader((  (((options->__Field(HX_CSTRING("shader"),true) == null()))) ? ::phoenix::Shader(this->state->shader) : ::phoenix::Shader(options->__Field(HX_CSTRING("shader"),true)) ));
		HX_STACK_LINE(132)
		if (((options->__Field(HX_CSTRING("id"),true) == null()))){
			HX_STACK_LINE(132)
			this->id = this->uuid;
		}
		else{
			HX_STACK_LINE(132)
			this->id = options->__Field(HX_CSTRING("id"),true);
		}
		HX_STACK_LINE(134)
		this->transform->set_pos((  (((options->__Field(HX_CSTRING("pos"),true) == null()))) ? ::phoenix::Vector(this->transform->get_pos()) : ::phoenix::Vector(options->__Field(HX_CSTRING("pos"),true)) ));
		HX_STACK_LINE(135)
		this->transform->set_rotation((  (((options->__Field(HX_CSTRING("rotation"),true) == null()))) ? ::phoenix::Quaternion(this->transform->get_rotation()) : ::phoenix::Quaternion(options->__Field(HX_CSTRING("rotation"),true)) ));
		HX_STACK_LINE(136)
		this->transform->set_scale((  (((options->__Field(HX_CSTRING("scale"),true) == null()))) ? ::phoenix::Vector(this->transform->get_scale()) : ::phoenix::Vector(options->__Field(HX_CSTRING("scale"),true)) ));
		HX_STACK_LINE(137)
		this->transform->set_origin((  (((options->__Field(HX_CSTRING("origin"),true) == null()))) ? ::phoenix::Vector(this->transform->get_origin()) : ::phoenix::Vector(options->__Field(HX_CSTRING("origin"),true)) ));
		HX_STACK_LINE(139)
		if (((options->__Field(HX_CSTRING("immediate"),true) == null()))){
			HX_STACK_LINE(139)
			this->immediate = false;
		}
		else{
			HX_STACK_LINE(139)
			this->immediate = options->__Field(HX_CSTRING("immediate"),true);
		}
		HX_STACK_LINE(140)
		this->set_visible((  (((options->__Field(HX_CSTRING("visible"),true) == null()))) ? bool(true) : bool(options->__Field(HX_CSTRING("visible"),true)) ));
		HX_STACK_LINE(142)
		this->set_color((  (((options->__Field(HX_CSTRING("color"),true) == null()))) ? ::phoenix::Color(::phoenix::Color_obj::__new(null(),null(),null(),null())) : ::phoenix::Color(options->__Field(HX_CSTRING("color"),true)) ));
		HX_STACK_LINE(143)
		if (((options->__Field(HX_CSTRING("no_batcher_add"),true) == null()))){
			HX_STACK_LINE(143)
			_do_add = true;
		}
		else{
			HX_STACK_LINE(143)
			_do_add = options->__Field(HX_CSTRING("no_batcher_add"),true);
		}
	}
	else{
		HX_STACK_LINE(148)
		this->set_color(::phoenix::Color_obj::__new(null(),null(),null(),null()));
	}
	HX_STACK_LINE(152)
	(::phoenix::geometry::Geometry_obj::_sequence_key)++;
	struct _Function_1_1{
		inline static Dynamic Block( ::phoenix::geometry::Geometry_obj *__this){
			HX_STACK_FRAME("*","closure",0x5bdab937,"*.closure","phoenix/geometry/Geometry.hx",154,0xdab136cf)
			{
				hx::Anon __result = hx::Anon_obj::Create();
				__result->Add(HX_CSTRING("uuid") , __this->uuid,false);
				__result->Add(HX_CSTRING("timestamp") , ::Luxe_obj::get_time(),false);
				__result->Add(HX_CSTRING("sequence") , ::phoenix::geometry::Geometry_obj::_sequence_key,false);
				__result->Add(HX_CSTRING("primitive_type") , __this->state->primitive_type,false);
				__result->Add(HX_CSTRING("texture") , __this->state->texture,false);
				__result->Add(HX_CSTRING("shader") , __this->state->shader,false);
				__result->Add(HX_CSTRING("group") , __this->state->group,false);
				__result->Add(HX_CSTRING("depth") , __this->state->depth,false);
				__result->Add(HX_CSTRING("clip") , __this->state->clip,false);
				return __result;
			}
			return null();
		}
	};
	HX_STACK_LINE(154)
	this->key = _Function_1_1::Block(this);
	HX_STACK_LINE(166)
	this->transform->id = this->uuid;
	HX_STACK_LINE(167)
	this->transform->name = this->id;
	HX_STACK_LINE(171)
	if (((bool((bool((options != null())) && bool((options->__Field(HX_CSTRING("batcher"),true) != null())))) && bool(_do_add)))){
		HX_STACK_LINE(172)
		options->__Field(HX_CSTRING("batcher"),true)->__Field(HX_CSTRING("add"),true)(hx::ObjectPtr<OBJ_>(this),null());
	}
}
;
	return null();
}

//Geometry_obj::~Geometry_obj() { }

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

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

::String Geometry_obj::key_string( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","key_string",0xdbf2f150,"phoenix.geometry.Geometry.key_string","phoenix/geometry/Geometry.hx",177,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(180)
	::String _g = (((((((((HX_CSTRING("ts: ") + this->key->__Field(HX_CSTRING("timestamp"),true)) + HX_CSTRING("\n")) + HX_CSTRING("sequence: ")) + this->key->__Field(HX_CSTRING("sequence"),true)) + HX_CSTRING("\n")) + HX_CSTRING("primitive_type: ")) + ::Std_obj::string(this->key->__Field(HX_CSTRING("primitive_type"),true))) + HX_CSTRING("\n")) + HX_CSTRING("texture: "));		HX_STACK_VAR(_g,"_g");
	HX_STACK_LINE(180)
	::String _g1;		HX_STACK_VAR(_g1,"_g1");
	HX_STACK_LINE(180)
	_g1 = (((_g + ((  (((this->key->__Field(HX_CSTRING("texture"),true) == null()))) ? ::String(HX_CSTRING("null")) : ::String(this->key->__Field(HX_CSTRING("texture"),true)->__Field(HX_CSTRING("id"),true)) ))) + HX_CSTRING("\n")) + HX_CSTRING("shader: "));
	HX_STACK_LINE(180)
	::String _g2;		HX_STACK_VAR(_g2,"_g2");
	HX_STACK_LINE(180)
	_g2 = (((((((((_g1 + ((  (((this->key->__Field(HX_CSTRING("shader"),true) == null()))) ? ::String(HX_CSTRING("null")) : ::String(this->key->__Field(HX_CSTRING("shader"),true)->__Field(HX_CSTRING("id"),true)) ))) + HX_CSTRING("\n")) + HX_CSTRING("group: ")) + this->key->__Field(HX_CSTRING("group"),true)) + HX_CSTRING("\n")) + HX_CSTRING("depth: ")) + this->key->__Field(HX_CSTRING("depth"),true)) + HX_CSTRING("\n")) + HX_CSTRING("clip: "));
	HX_STACK_LINE(180)
	return (_g2 + ::Std_obj::string(this->key->__Field(HX_CSTRING("clip"),true)));
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,key_string,return )

Void Geometry_obj::refresh_key( ){
{
		HX_STACK_FRAME("phoenix.geometry.Geometry","refresh_key",0x4060be7c,"phoenix.geometry.Geometry.refresh_key","phoenix/geometry/Geometry.hx",191,0xdab136cf)
		HX_STACK_THIS(this)
		HX_STACK_LINE(195)
		this->key->__FieldRef(HX_CSTRING("uuid")) = this->uuid;
		HX_STACK_LINE(196)
		this->key->__FieldRef(HX_CSTRING("timestamp")) = ::Luxe_obj::get_time();
		HX_STACK_LINE(197)
		this->key->__FieldRef(HX_CSTRING("sequence")) = ::phoenix::geometry::Geometry_obj::_sequence_key;
		HX_STACK_LINE(198)
		this->key->__FieldRef(HX_CSTRING("primitive_type")) = this->state->primitive_type;
		HX_STACK_LINE(199)
		this->key->__FieldRef(HX_CSTRING("texture")) = this->state->texture;
		HX_STACK_LINE(200)
		this->key->__FieldRef(HX_CSTRING("shader")) = this->state->shader;
		HX_STACK_LINE(201)
		this->key->__FieldRef(HX_CSTRING("group")) = this->state->group;
		HX_STACK_LINE(202)
		this->key->__FieldRef(HX_CSTRING("depth")) = this->state->depth;
		HX_STACK_LINE(203)
		this->key->__FieldRef(HX_CSTRING("clip")) = this->state->clip;
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,refresh_key,(void))

::String Geometry_obj::short_id( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","short_id",0xf27bebdd,"phoenix.geometry.Geometry.short_id","phoenix/geometry/Geometry.hx",209,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(209)
	return this->uuid.substr((int)0,(int)6);
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,short_id,return )

Void Geometry_obj::str( ){
{
		HX_STACK_FRAME("phoenix.geometry.Geometry","str",0xf6584c32,"phoenix.geometry.Geometry.str","phoenix/geometry/Geometry.hx",213,0xdab136cf)
		HX_STACK_THIS(this)
		HX_STACK_LINE(214)
		if ((!(this->state->log))){
			HX_STACK_LINE(214)
			return null();
		}
		HX_STACK_LINE(215)
		::String _g = (HX_CSTRING("\t\tgeometry ; ") + this->short_id());		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(215)
		::haxe::Log_obj::trace(_g,hx::SourceInfo(HX_CSTRING("Geometry.hx"),215,HX_CSTRING("phoenix.geometry.Geometry"),HX_CSTRING("str")));
		HX_STACK_LINE(216)
		this->state->log = true;
		HX_STACK_LINE(217)
		this->state->str();
		HX_STACK_LINE(218)
		this->state->log = false;
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,str,(void))

Void Geometry_obj::drop( Dynamic __o_remove){
Dynamic remove = __o_remove.Default(true);
	HX_STACK_FRAME("phoenix.geometry.Geometry","drop",0x8cfea58e,"phoenix.geometry.Geometry.drop","phoenix/geometry/Geometry.hx",221,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(remove,"remove")
{
		HX_STACK_LINE(223)
		if (((bool(remove) && bool(this->added)))){
			HX_STACK_LINE(225)
			int _g = (int)0;		HX_STACK_VAR(_g,"_g");
			HX_STACK_LINE(225)
			Array< ::Dynamic > _g1 = this->batchers;		HX_STACK_VAR(_g1,"_g1");
			HX_STACK_LINE(225)
			while(((_g < _g1->length))){
				HX_STACK_LINE(225)
				::phoenix::Batcher b = _g1->__get(_g).StaticCast< ::phoenix::Batcher >();		HX_STACK_VAR(b,"b");
				HX_STACK_LINE(225)
				++(_g);
				HX_STACK_LINE(226)
				b->remove(hx::ObjectPtr<OBJ_>(this),true);
			}
		}
		HX_STACK_LINE(231)
		if (((this->transform != null()))){
			HX_STACK_LINE(232)
			this->transform->destroy();
			HX_STACK_LINE(233)
			this->transform = null();
		}
		HX_STACK_LINE(236)
		this->dropped = true;
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,drop,(void))

Void Geometry_obj::add( ::phoenix::geometry::Vertex v){
{
		HX_STACK_FRAME("phoenix.geometry.Geometry","add",0xf64a95a2,"phoenix.geometry.Geometry.add","phoenix/geometry/Geometry.hx",240,0xdab136cf)
		HX_STACK_THIS(this)
		HX_STACK_ARG(v,"v")
		HX_STACK_LINE(242)
		this->vertices->push(v);
		HX_STACK_LINE(244)
		if (((this->vertices->length > ::Luxe_obj::renderer->batcher->max_verts))){
			HX_STACK_LINE(245)
			::haxe::Log_obj::trace((HX_CSTRING("from ") + this->id),hx::SourceInfo(HX_CSTRING("Geometry.hx"),245,HX_CSTRING("phoenix.geometry.Geometry"),HX_CSTRING("add")));
			HX_STACK_LINE(246)
			HX_STACK_DO_THROW((HX_CSTRING("Currently a single geometry cannot exceed the maximum vert count of ") + ::Luxe_obj::renderer->batcher->max_verts));
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,add,(void))

Void Geometry_obj::remove( ::phoenix::geometry::Vertex v){
{
		HX_STACK_FRAME("phoenix.geometry.Geometry","remove",0xe1945f63,"phoenix.geometry.Geometry.remove","phoenix/geometry/Geometry.hx",253,0xdab136cf)
		HX_STACK_THIS(this)
		HX_STACK_ARG(v,"v")
		HX_STACK_LINE(253)
		this->vertices->remove(v);
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,remove,(void))

Void Geometry_obj::batch( int vert_index,int tcoord_index,int color_index,int normal_index,::snow::platform::native::utils::Float32Array vertlist,::snow::platform::native::utils::Float32Array tcoordlist,::snow::platform::native::utils::Float32Array colorlist,::snow::platform::native::utils::Float32Array normallist){
{
		HX_STACK_FRAME("phoenix.geometry.Geometry","batch",0x9fcc2d7b,"phoenix.geometry.Geometry.batch","phoenix/geometry/Geometry.hx",261,0xdab136cf)
		HX_STACK_THIS(this)
		HX_STACK_ARG(vert_index,"vert_index")
		HX_STACK_ARG(tcoord_index,"tcoord_index")
		HX_STACK_ARG(color_index,"color_index")
		HX_STACK_ARG(normal_index,"normal_index")
		HX_STACK_ARG(vertlist,"vertlist")
		HX_STACK_ARG(tcoordlist,"tcoordlist")
		HX_STACK_ARG(colorlist,"colorlist")
		HX_STACK_ARG(normallist,"normallist")
		HX_STACK_LINE(261)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(261)
		Array< ::Dynamic > _g1 = this->vertices;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(261)
		while(((_g < _g1->length))){
			HX_STACK_LINE(261)
			::phoenix::geometry::Vertex v = _g1->__get(_g).StaticCast< ::phoenix::geometry::Vertex >();		HX_STACK_VAR(v,"v");
			HX_STACK_LINE(261)
			++(_g);
			HX_STACK_LINE(264)
			this->_final_vert_position->set(v->pos->x,v->pos->y,v->pos->z,v->pos->w);
			HX_STACK_LINE(266)
			this->_final_vert_position->transform(this->transform->get_world()->get_matrix());
			HX_STACK_LINE(269)
			hx::__ArrayImplRef(vertlist,vert_index) = this->_final_vert_position->x;
			HX_STACK_LINE(270)
			hx::__ArrayImplRef(vertlist,(vert_index + (int)1)) = this->_final_vert_position->y;
			HX_STACK_LINE(271)
			hx::__ArrayImplRef(vertlist,(vert_index + (int)2)) = this->_final_vert_position->z;
			HX_STACK_LINE(272)
			hx::__ArrayImplRef(vertlist,(vert_index + (int)3)) = this->_final_vert_position->w;
			HX_STACK_LINE(274)
			hx::AddEq(vert_index,(int)4);
			HX_STACK_LINE(277)
			hx::__ArrayImplRef(tcoordlist,tcoord_index) = v->uv->uv0->u;
			HX_STACK_LINE(278)
			hx::__ArrayImplRef(tcoordlist,(tcoord_index + (int)1)) = v->uv->uv0->v;
			HX_STACK_LINE(279)
			hx::__ArrayImplRef(tcoordlist,(tcoord_index + (int)2)) = v->uv->uv0->w;
			HX_STACK_LINE(280)
			hx::__ArrayImplRef(tcoordlist,(tcoord_index + (int)3)) = v->uv->uv0->t;
			HX_STACK_LINE(282)
			hx::AddEq(tcoord_index,(int)4);
			HX_STACK_LINE(285)
			hx::__ArrayImplRef(colorlist,color_index) = v->color->r;
			HX_STACK_LINE(286)
			hx::__ArrayImplRef(colorlist,(color_index + (int)1)) = v->color->g;
			HX_STACK_LINE(287)
			hx::__ArrayImplRef(colorlist,(color_index + (int)2)) = v->color->b;
			HX_STACK_LINE(288)
			hx::__ArrayImplRef(colorlist,(color_index + (int)3)) = v->color->a;
			HX_STACK_LINE(290)
			hx::AddEq(color_index,(int)4);
			HX_STACK_LINE(293)
			hx::__ArrayImplRef(normallist,normal_index) = v->normal->x;
			HX_STACK_LINE(294)
			hx::__ArrayImplRef(normallist,(normal_index + (int)1)) = v->normal->y;
			HX_STACK_LINE(295)
			hx::__ArrayImplRef(normallist,(normal_index + (int)2)) = v->normal->z;
			HX_STACK_LINE(296)
			hx::__ArrayImplRef(normallist,(normal_index + (int)3)) = v->normal->w;
			HX_STACK_LINE(298)
			hx::AddEq(normal_index,(int)4);
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC8(Geometry_obj,batch,(void))

Void Geometry_obj::batch_into_arrays( Array< Float > vertlist,Array< Float > tcoordlist,Array< Float > colorlist,Array< Float > normallist){
{
		HX_STACK_FRAME("phoenix.geometry.Geometry","batch_into_arrays",0xe545c1b5,"phoenix.geometry.Geometry.batch_into_arrays","phoenix/geometry/Geometry.hx",307,0xdab136cf)
		HX_STACK_THIS(this)
		HX_STACK_ARG(vertlist,"vertlist")
		HX_STACK_ARG(tcoordlist,"tcoordlist")
		HX_STACK_ARG(colorlist,"colorlist")
		HX_STACK_ARG(normallist,"normallist")
		HX_STACK_LINE(307)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(307)
		Array< ::Dynamic > _g1 = this->vertices;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(307)
		while(((_g < _g1->length))){
			HX_STACK_LINE(307)
			::phoenix::geometry::Vertex v = _g1->__get(_g).StaticCast< ::phoenix::geometry::Vertex >();		HX_STACK_VAR(v,"v");
			HX_STACK_LINE(307)
			++(_g);
			HX_STACK_LINE(310)
			this->_final_vert_position->set(v->pos->x,v->pos->y,v->pos->z,v->pos->w);
			HX_STACK_LINE(312)
			this->_final_vert_position->transform(this->transform->get_world()->get_matrix());
			HX_STACK_LINE(315)
			vertlist->push(this->_final_vert_position->x);
			HX_STACK_LINE(316)
			vertlist->push(this->_final_vert_position->y);
			HX_STACK_LINE(317)
			vertlist->push(this->_final_vert_position->z);
			HX_STACK_LINE(318)
			vertlist->push(this->_final_vert_position->w);
			HX_STACK_LINE(321)
			tcoordlist->push(v->uv->uv0->u);
			HX_STACK_LINE(322)
			tcoordlist->push(v->uv->uv0->v);
			HX_STACK_LINE(323)
			tcoordlist->push(v->uv->uv0->w);
			HX_STACK_LINE(324)
			tcoordlist->push(v->uv->uv0->t);
			HX_STACK_LINE(327)
			colorlist->push(v->color->r);
			HX_STACK_LINE(328)
			colorlist->push(v->color->g);
			HX_STACK_LINE(329)
			colorlist->push(v->color->b);
			HX_STACK_LINE(330)
			colorlist->push(v->color->a);
			HX_STACK_LINE(333)
			normallist->push(v->normal->x);
			HX_STACK_LINE(334)
			normallist->push(v->normal->y);
			HX_STACK_LINE(335)
			normallist->push(v->normal->z);
			HX_STACK_LINE(336)
			normallist->push(v->normal->w);
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC4(Geometry_obj,batch_into_arrays,(void))

Void Geometry_obj::translate( ::phoenix::Vector _offset){
{
		HX_STACK_FRAME("phoenix.geometry.Geometry","translate",0xde6d918f,"phoenix.geometry.Geometry.translate","phoenix/geometry/Geometry.hx",344,0xdab136cf)
		HX_STACK_THIS(this)
		HX_STACK_ARG(_offset,"_offset")
		HX_STACK_LINE(346)
		::phoenix::Vector _g = this->transform->get_pos();		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(346)
		::phoenix::Vector _g1 = this->transform->get_pos();		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(346)
		this->transform->get_pos()->set_xyz((_g->x + _offset->x),(_g1->y + _offset->y),(this->transform->get_pos()->x + _offset->z));
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,translate,(void))

bool Geometry_obj::set_locked( bool _locked){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_locked",0x08e151e6,"phoenix.geometry.Geometry.set_locked","phoenix/geometry/Geometry.hx",352,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_locked,"_locked")
	HX_STACK_LINE(352)
	return this->locked = _locked;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_locked,return )

bool Geometry_obj::get_locked( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","get_locked",0x0563b372,"phoenix.geometry.Geometry.get_locked","phoenix/geometry/Geometry.hx",358,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(358)
	return this->locked;
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,get_locked,return )

bool Geometry_obj::set_dirty( bool _dirty){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_dirty",0x95b852b6,"phoenix.geometry.Geometry.set_dirty","phoenix/geometry/Geometry.hx",364,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(_dirty,"_dirty")
	HX_STACK_LINE(364)
	return this->dirty = _dirty;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_dirty,return )

bool Geometry_obj::get_dirty( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","get_dirty",0xb26766aa,"phoenix.geometry.Geometry.get_dirty","phoenix/geometry/Geometry.hx",370,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(370)
	return this->dirty;
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,get_dirty,return )

Void Geometry_obj::refresh( ){
{
		HX_STACK_FRAME("phoenix.geometry.Geometry","refresh",0x7a5fd1dc,"phoenix.geometry.Geometry.refresh","phoenix/geometry/Geometry.hx",376,0xdab136cf)
		HX_STACK_THIS(this)
		HX_STACK_LINE(379)
		{
			HX_STACK_LINE(379)
			int _g = (int)0;		HX_STACK_VAR(_g,"_g");
			HX_STACK_LINE(379)
			Array< ::Dynamic > _g1 = this->batchers;		HX_STACK_VAR(_g1,"_g1");
			HX_STACK_LINE(379)
			while(((_g < _g1->length))){
				HX_STACK_LINE(379)
				::phoenix::Batcher b = _g1->__get(_g).StaticCast< ::phoenix::Batcher >();		HX_STACK_VAR(b,"b");
				HX_STACK_LINE(379)
				++(_g);
				HX_STACK_LINE(380)
				b->remove(hx::ObjectPtr<OBJ_>(this),false);
			}
		}
		HX_STACK_LINE(384)
		if ((this->dirty_primitive_type)){
			HX_STACK_LINE(385)
			this->dirty_primitive_type = false;
			HX_STACK_LINE(386)
			this->state->set_primitive_type(this->shadow_primitive_type);
		}
		HX_STACK_LINE(389)
		if ((this->dirty_texture)){
			HX_STACK_LINE(390)
			this->dirty_texture = false;
			HX_STACK_LINE(391)
			this->state->set_texture(this->shadow_texture);
		}
		HX_STACK_LINE(394)
		if ((this->dirty_shader)){
			HX_STACK_LINE(395)
			this->dirty_shader = false;
			HX_STACK_LINE(396)
			this->state->set_shader(this->shadow_shader);
		}
		HX_STACK_LINE(399)
		if ((this->dirty_group)){
			HX_STACK_LINE(400)
			this->dirty_group = false;
			HX_STACK_LINE(401)
			this->state->set_group(this->shadow_group);
		}
		HX_STACK_LINE(404)
		if ((this->dirty_depth)){
			HX_STACK_LINE(405)
			this->dirty_depth = false;
			HX_STACK_LINE(406)
			this->state->set_depth(this->shadow_depth);
		}
		HX_STACK_LINE(409)
		if ((this->dirty_clip)){
			HX_STACK_LINE(410)
			this->dirty_clip = false;
			HX_STACK_LINE(411)
			this->state->set_clip(this->shadow_clip);
		}
		HX_STACK_LINE(415)
		this->refresh_key();
		HX_STACK_LINE(417)
		{
			HX_STACK_LINE(417)
			int _g = (int)0;		HX_STACK_VAR(_g,"_g");
			HX_STACK_LINE(417)
			Array< ::Dynamic > _g1 = this->batchers;		HX_STACK_VAR(_g1,"_g1");
			HX_STACK_LINE(417)
			while(((_g < _g1->length))){
				HX_STACK_LINE(417)
				::phoenix::Batcher b = _g1->__get(_g).StaticCast< ::phoenix::Batcher >();		HX_STACK_VAR(b,"b");
				HX_STACK_LINE(417)
				++(_g);
				HX_STACK_LINE(418)
				b->add(hx::ObjectPtr<OBJ_>(this),false);
			}
		}
	}
return null();
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,refresh,(void))

::phoenix::PrimitiveType Geometry_obj::get_primitive_type( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","get_primitive_type",0xf77b1efa,"phoenix.geometry.Geometry.get_primitive_type","phoenix/geometry/Geometry.hx",427,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(427)
	return this->state->primitive_type;
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,get_primitive_type,return )

::phoenix::PrimitiveType Geometry_obj::set_primitive_type( ::phoenix::PrimitiveType val){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_primitive_type",0xd42a516e,"phoenix.geometry.Geometry.set_primitive_type","phoenix/geometry/Geometry.hx",431,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(val,"val")
	HX_STACK_LINE(433)
	if (((this->state->primitive_type != val))){
		HX_STACK_LINE(434)
		this->shadow_primitive_type = val;
		HX_STACK_LINE(435)
		this->dirty_primitive_type = true;
		HX_STACK_LINE(436)
		this->refresh();
	}
	HX_STACK_LINE(439)
	return this->primitive_type = val;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_primitive_type,return )

::phoenix::Texture Geometry_obj::get_texture( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","get_texture",0x1c5cb573,"phoenix.geometry.Geometry.get_texture","phoenix/geometry/Geometry.hx",447,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(447)
	return this->state->texture;
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,get_texture,return )

::phoenix::Texture Geometry_obj::set_texture( ::phoenix::Texture val){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_texture",0x26c9bc7f,"phoenix.geometry.Geometry.set_texture","phoenix/geometry/Geometry.hx",451,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(val,"val")
	HX_STACK_LINE(453)
	if (((this->state->texture != val))){
		HX_STACK_LINE(454)
		this->shadow_texture = val;
		HX_STACK_LINE(455)
		this->dirty_texture = true;
		HX_STACK_LINE(456)
		this->refresh();
	}
	HX_STACK_LINE(459)
	return this->texture = val;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_texture,return )

bool Geometry_obj::set_visible( bool val){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_visible",0x2b0d6c16,"phoenix.geometry.Geometry.set_visible","phoenix/geometry/Geometry.hx",467,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(val,"val")
	HX_STACK_LINE(467)
	return this->visible = val;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_visible,return )

::phoenix::Color Geometry_obj::set_color( ::phoenix::Color val){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_color",0x06447407,"phoenix.geometry.Geometry.set_color","phoenix/geometry/Geometry.hx",473,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(val,"val")
	HX_STACK_LINE(475)
	{
		HX_STACK_LINE(475)
		int _g = (int)0;		HX_STACK_VAR(_g,"_g");
		HX_STACK_LINE(475)
		Array< ::Dynamic > _g1 = this->vertices;		HX_STACK_VAR(_g1,"_g1");
		HX_STACK_LINE(475)
		while(((_g < _g1->length))){
			HX_STACK_LINE(475)
			::phoenix::geometry::Vertex v = _g1->__get(_g).StaticCast< ::phoenix::geometry::Vertex >();		HX_STACK_VAR(v,"v");
			HX_STACK_LINE(475)
			++(_g);
			HX_STACK_LINE(476)
			v->color = val;
		}
	}
	HX_STACK_LINE(479)
	return this->color = val;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_color,return )

::phoenix::Shader Geometry_obj::get_shader( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","get_shader",0xc8bd6d8d,"phoenix.geometry.Geometry.get_shader","phoenix/geometry/Geometry.hx",487,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(487)
	return this->state->shader;
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,get_shader,return )

::phoenix::Shader Geometry_obj::set_shader( ::phoenix::Shader val){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_shader",0xcc3b0c01,"phoenix.geometry.Geometry.set_shader","phoenix/geometry/Geometry.hx",491,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(val,"val")
	HX_STACK_LINE(493)
	if (((this->state->shader != val))){
		HX_STACK_LINE(494)
		this->shadow_shader = val;
		HX_STACK_LINE(495)
		this->dirty_shader = true;
		HX_STACK_LINE(496)
		this->refresh();
	}
	HX_STACK_LINE(499)
	return this->shader = val;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_shader,return )

Float Geometry_obj::get_depth( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","get_depth",0xafc1079b,"phoenix.geometry.Geometry.get_depth","phoenix/geometry/Geometry.hx",507,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(507)
	return this->state->depth;
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,get_depth,return )

Float Geometry_obj::set_depth( Float val){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_depth",0x9311f3a7,"phoenix.geometry.Geometry.set_depth","phoenix/geometry/Geometry.hx",512,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(val,"val")
	HX_STACK_LINE(514)
	if (((this->state->depth != val))){
		HX_STACK_LINE(515)
		this->shadow_depth = val;
		HX_STACK_LINE(516)
		this->dirty_depth = true;
		HX_STACK_LINE(517)
		this->refresh();
	}
	HX_STACK_LINE(520)
	return this->depth = val;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_depth,return )

int Geometry_obj::get_group( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","get_group",0x728bc9d7,"phoenix.geometry.Geometry.get_group","phoenix/geometry/Geometry.hx",528,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(528)
	return this->state->group;
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,get_group,return )

int Geometry_obj::set_group( int val){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_group",0x55dcb5e3,"phoenix.geometry.Geometry.set_group","phoenix/geometry/Geometry.hx",532,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(val,"val")
	HX_STACK_LINE(534)
	if (((this->state->group != val))){
		HX_STACK_LINE(535)
		this->shadow_group = val;
		HX_STACK_LINE(536)
		this->dirty_group = true;
		HX_STACK_LINE(537)
		this->refresh();
	}
	HX_STACK_LINE(540)
	return this->group = val;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_group,return )

bool Geometry_obj::get_clip( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","get_clip",0xcb573338,"phoenix.geometry.Geometry.get_clip","phoenix/geometry/Geometry.hx",548,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(548)
	return this->state->clip;
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,get_clip,return )

bool Geometry_obj::set_clip( bool val){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_clip",0x79b48cac,"phoenix.geometry.Geometry.set_clip","phoenix/geometry/Geometry.hx",552,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(val,"val")
	HX_STACK_LINE(554)
	if (((this->state->clip != val))){
		HX_STACK_LINE(555)
		this->shadow_clip = val;
		HX_STACK_LINE(556)
		this->dirty_clip = true;
		HX_STACK_LINE(557)
		this->refresh();
	}
	HX_STACK_LINE(560)
	return this->clip = val;
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_clip,return )

::phoenix::Rectangle Geometry_obj::get_clip_rect( ){
	HX_STACK_FRAME("phoenix.geometry.Geometry","get_clip_rect",0x4f648acb,"phoenix.geometry.Geometry.get_clip_rect","phoenix/geometry/Geometry.hx",568,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_LINE(568)
	return this->state->clip_rect;
}


HX_DEFINE_DYNAMIC_FUNC0(Geometry_obj,get_clip_rect,return )

::phoenix::Rectangle Geometry_obj::set_clip_rect( ::phoenix::Rectangle val){
	HX_STACK_FRAME("phoenix.geometry.Geometry","set_clip_rect",0x946a6cd7,"phoenix.geometry.Geometry.set_clip_rect","phoenix/geometry/Geometry.hx",572,0xdab136cf)
	HX_STACK_THIS(this)
	HX_STACK_ARG(val,"val")
	HX_STACK_LINE(574)
	if (((val == null()))){
		HX_STACK_LINE(575)
		this->set_clip(false);
	}
	else{
		HX_STACK_LINE(577)
		this->set_clip(true);
	}
	HX_STACK_LINE(580)
	return this->state->set_clip_rect(val);
}


HX_DEFINE_DYNAMIC_FUNC1(Geometry_obj,set_clip_rect,return )

int Geometry_obj::_sequence_key;


Geometry_obj::Geometry_obj()
{
}

void Geometry_obj::__Mark(HX_MARK_PARAMS)
{
	HX_MARK_BEGIN_CLASS(Geometry);
	HX_MARK_MEMBER_NAME(transform,"transform");
	HX_MARK_MEMBER_NAME(vertices,"vertices");
	HX_MARK_MEMBER_NAME(submitted,"submitted");
	HX_MARK_MEMBER_NAME(static_vertex_buffer,"static_vertex_buffer");
	HX_MARK_MEMBER_NAME(static_tcoord_buffer,"static_tcoord_buffer");
	HX_MARK_MEMBER_NAME(static_vcolor_buffer,"static_vcolor_buffer");
	HX_MARK_MEMBER_NAME(static_normal_buffer,"static_normal_buffer");
	HX_MARK_MEMBER_NAME(added,"added");
	HX_MARK_MEMBER_NAME(batchers,"batchers");
	HX_MARK_MEMBER_NAME(state,"state");
	HX_MARK_MEMBER_NAME(dropped,"dropped");
	HX_MARK_MEMBER_NAME(uuid,"uuid");
	HX_MARK_MEMBER_NAME(id,"id");
	HX_MARK_MEMBER_NAME(primitive_type,"primitive_type");
	HX_MARK_MEMBER_NAME(texture,"texture");
	HX_MARK_MEMBER_NAME(shader,"shader");
	HX_MARK_MEMBER_NAME(depth,"depth");
	HX_MARK_MEMBER_NAME(group,"group");
	HX_MARK_MEMBER_NAME(clip_rect,"clip_rect");
	HX_MARK_MEMBER_NAME(shadow_primitive_type,"shadow_primitive_type");
	HX_MARK_MEMBER_NAME(shadow_texture,"shadow_texture");
	HX_MARK_MEMBER_NAME(shadow_shader,"shadow_shader");
	HX_MARK_MEMBER_NAME(shadow_group,"shadow_group");
	HX_MARK_MEMBER_NAME(shadow_depth,"shadow_depth");
	HX_MARK_MEMBER_NAME(shadow_clip,"shadow_clip");
	HX_MARK_MEMBER_NAME(dirty_primitive_type,"dirty_primitive_type");
	HX_MARK_MEMBER_NAME(dirty_texture,"dirty_texture");
	HX_MARK_MEMBER_NAME(dirty_shader,"dirty_shader");
	HX_MARK_MEMBER_NAME(dirty_group,"dirty_group");
	HX_MARK_MEMBER_NAME(dirty_depth,"dirty_depth");
	HX_MARK_MEMBER_NAME(dirty_clip,"dirty_clip");
	HX_MARK_MEMBER_NAME(visible,"visible");
	HX_MARK_MEMBER_NAME(immediate,"immediate");
	HX_MARK_MEMBER_NAME(locked,"locked");
	HX_MARK_MEMBER_NAME(dirty,"dirty");
	HX_MARK_MEMBER_NAME(color,"color");
	HX_MARK_MEMBER_NAME(clip,"clip");
	HX_MARK_MEMBER_NAME(_final_vert_position,"_final_vert_position");
	HX_MARK_MEMBER_NAME(key,"key");
	HX_MARK_END_CLASS();
}

void Geometry_obj::__Visit(HX_VISIT_PARAMS)
{
	HX_VISIT_MEMBER_NAME(transform,"transform");
	HX_VISIT_MEMBER_NAME(vertices,"vertices");
	HX_VISIT_MEMBER_NAME(submitted,"submitted");
	HX_VISIT_MEMBER_NAME(static_vertex_buffer,"static_vertex_buffer");
	HX_VISIT_MEMBER_NAME(static_tcoord_buffer,"static_tcoord_buffer");
	HX_VISIT_MEMBER_NAME(static_vcolor_buffer,"static_vcolor_buffer");
	HX_VISIT_MEMBER_NAME(static_normal_buffer,"static_normal_buffer");
	HX_VISIT_MEMBER_NAME(added,"added");
	HX_VISIT_MEMBER_NAME(batchers,"batchers");
	HX_VISIT_MEMBER_NAME(state,"state");
	HX_VISIT_MEMBER_NAME(dropped,"dropped");
	HX_VISIT_MEMBER_NAME(uuid,"uuid");
	HX_VISIT_MEMBER_NAME(id,"id");
	HX_VISIT_MEMBER_NAME(primitive_type,"primitive_type");
	HX_VISIT_MEMBER_NAME(texture,"texture");
	HX_VISIT_MEMBER_NAME(shader,"shader");
	HX_VISIT_MEMBER_NAME(depth,"depth");
	HX_VISIT_MEMBER_NAME(group,"group");
	HX_VISIT_MEMBER_NAME(clip_rect,"clip_rect");
	HX_VISIT_MEMBER_NAME(shadow_primitive_type,"shadow_primitive_type");
	HX_VISIT_MEMBER_NAME(shadow_texture,"shadow_texture");
	HX_VISIT_MEMBER_NAME(shadow_shader,"shadow_shader");
	HX_VISIT_MEMBER_NAME(shadow_group,"shadow_group");
	HX_VISIT_MEMBER_NAME(shadow_depth,"shadow_depth");
	HX_VISIT_MEMBER_NAME(shadow_clip,"shadow_clip");
	HX_VISIT_MEMBER_NAME(dirty_primitive_type,"dirty_primitive_type");
	HX_VISIT_MEMBER_NAME(dirty_texture,"dirty_texture");
	HX_VISIT_MEMBER_NAME(dirty_shader,"dirty_shader");
	HX_VISIT_MEMBER_NAME(dirty_group,"dirty_group");
	HX_VISIT_MEMBER_NAME(dirty_depth,"dirty_depth");
	HX_VISIT_MEMBER_NAME(dirty_clip,"dirty_clip");
	HX_VISIT_MEMBER_NAME(visible,"visible");
	HX_VISIT_MEMBER_NAME(immediate,"immediate");
	HX_VISIT_MEMBER_NAME(locked,"locked");
	HX_VISIT_MEMBER_NAME(dirty,"dirty");
	HX_VISIT_MEMBER_NAME(color,"color");
	HX_VISIT_MEMBER_NAME(clip,"clip");
	HX_VISIT_MEMBER_NAME(_final_vert_position,"_final_vert_position");
	HX_VISIT_MEMBER_NAME(key,"key");
}

Dynamic Geometry_obj::__Field(const ::String &inName,bool inCallProp)
{
	switch(inName.length) {
	case 2:
		if (HX_FIELD_EQ(inName,"id") ) { return id; }
		break;
	case 3:
		if (HX_FIELD_EQ(inName,"key") ) { return key; }
		if (HX_FIELD_EQ(inName,"str") ) { return str_dyn(); }
		if (HX_FIELD_EQ(inName,"add") ) { return add_dyn(); }
		break;
	case 4:
		if (HX_FIELD_EQ(inName,"uuid") ) { return uuid; }
		if (HX_FIELD_EQ(inName,"clip") ) { return inCallProp ? get_clip() : clip; }
		if (HX_FIELD_EQ(inName,"drop") ) { return drop_dyn(); }
		break;
	case 5:
		if (HX_FIELD_EQ(inName,"added") ) { return added; }
		if (HX_FIELD_EQ(inName,"state") ) { return state; }
		if (HX_FIELD_EQ(inName,"depth") ) { return inCallProp ? get_depth() : depth; }
		if (HX_FIELD_EQ(inName,"group") ) { return inCallProp ? get_group() : group; }
		if (HX_FIELD_EQ(inName,"dirty") ) { return inCallProp ? get_dirty() : dirty; }
		if (HX_FIELD_EQ(inName,"color") ) { return color; }
		if (HX_FIELD_EQ(inName,"batch") ) { return batch_dyn(); }
		break;
	case 6:
		if (HX_FIELD_EQ(inName,"shader") ) { return inCallProp ? get_shader() : shader; }
		if (HX_FIELD_EQ(inName,"locked") ) { return inCallProp ? get_locked() : locked; }
		if (HX_FIELD_EQ(inName,"remove") ) { return remove_dyn(); }
		break;
	case 7:
		if (HX_FIELD_EQ(inName,"dropped") ) { return dropped; }
		if (HX_FIELD_EQ(inName,"texture") ) { return inCallProp ? get_texture() : texture; }
		if (HX_FIELD_EQ(inName,"visible") ) { return visible; }
		if (HX_FIELD_EQ(inName,"refresh") ) { return refresh_dyn(); }
		break;
	case 8:
		if (HX_FIELD_EQ(inName,"vertices") ) { return vertices; }
		if (HX_FIELD_EQ(inName,"batchers") ) { return batchers; }
		if (HX_FIELD_EQ(inName,"short_id") ) { return short_id_dyn(); }
		if (HX_FIELD_EQ(inName,"get_clip") ) { return get_clip_dyn(); }
		if (HX_FIELD_EQ(inName,"set_clip") ) { return set_clip_dyn(); }
		break;
	case 9:
		if (HX_FIELD_EQ(inName,"transform") ) { return transform; }
		if (HX_FIELD_EQ(inName,"submitted") ) { return submitted; }
		if (HX_FIELD_EQ(inName,"clip_rect") ) { return inCallProp ? get_clip_rect() : clip_rect; }
		if (HX_FIELD_EQ(inName,"immediate") ) { return immediate; }
		if (HX_FIELD_EQ(inName,"translate") ) { return translate_dyn(); }
		if (HX_FIELD_EQ(inName,"set_dirty") ) { return set_dirty_dyn(); }
		if (HX_FIELD_EQ(inName,"get_dirty") ) { return get_dirty_dyn(); }
		if (HX_FIELD_EQ(inName,"set_color") ) { return set_color_dyn(); }
		if (HX_FIELD_EQ(inName,"get_depth") ) { return get_depth_dyn(); }
		if (HX_FIELD_EQ(inName,"set_depth") ) { return set_depth_dyn(); }
		if (HX_FIELD_EQ(inName,"get_group") ) { return get_group_dyn(); }
		if (HX_FIELD_EQ(inName,"set_group") ) { return set_group_dyn(); }
		break;
	case 10:
		if (HX_FIELD_EQ(inName,"dirty_clip") ) { return dirty_clip; }
		if (HX_FIELD_EQ(inName,"key_string") ) { return key_string_dyn(); }
		if (HX_FIELD_EQ(inName,"set_locked") ) { return set_locked_dyn(); }
		if (HX_FIELD_EQ(inName,"get_locked") ) { return get_locked_dyn(); }
		if (HX_FIELD_EQ(inName,"get_shader") ) { return get_shader_dyn(); }
		if (HX_FIELD_EQ(inName,"set_shader") ) { return set_shader_dyn(); }
		break;
	case 11:
		if (HX_FIELD_EQ(inName,"shadow_clip") ) { return shadow_clip; }
		if (HX_FIELD_EQ(inName,"dirty_group") ) { return dirty_group; }
		if (HX_FIELD_EQ(inName,"dirty_depth") ) { return dirty_depth; }
		if (HX_FIELD_EQ(inName,"refresh_key") ) { return refresh_key_dyn(); }
		if (HX_FIELD_EQ(inName,"get_texture") ) { return get_texture_dyn(); }
		if (HX_FIELD_EQ(inName,"set_texture") ) { return set_texture_dyn(); }
		if (HX_FIELD_EQ(inName,"set_visible") ) { return set_visible_dyn(); }
		break;
	case 12:
		if (HX_FIELD_EQ(inName,"shadow_group") ) { return shadow_group; }
		if (HX_FIELD_EQ(inName,"shadow_depth") ) { return shadow_depth; }
		if (HX_FIELD_EQ(inName,"dirty_shader") ) { return dirty_shader; }
		break;
	case 13:
		if (HX_FIELD_EQ(inName,"_sequence_key") ) { return _sequence_key; }
		if (HX_FIELD_EQ(inName,"shadow_shader") ) { return shadow_shader; }
		if (HX_FIELD_EQ(inName,"dirty_texture") ) { return dirty_texture; }
		if (HX_FIELD_EQ(inName,"get_clip_rect") ) { return get_clip_rect_dyn(); }
		if (HX_FIELD_EQ(inName,"set_clip_rect") ) { return set_clip_rect_dyn(); }
		break;
	case 14:
		if (HX_FIELD_EQ(inName,"primitive_type") ) { return inCallProp ? get_primitive_type() : primitive_type; }
		if (HX_FIELD_EQ(inName,"shadow_texture") ) { return shadow_texture; }
		break;
	case 17:
		if (HX_FIELD_EQ(inName,"batch_into_arrays") ) { return batch_into_arrays_dyn(); }
		break;
	case 18:
		if (HX_FIELD_EQ(inName,"get_primitive_type") ) { return get_primitive_type_dyn(); }
		if (HX_FIELD_EQ(inName,"set_primitive_type") ) { return set_primitive_type_dyn(); }
		break;
	case 20:
		if (HX_FIELD_EQ(inName,"static_vertex_buffer") ) { return static_vertex_buffer; }
		if (HX_FIELD_EQ(inName,"static_tcoord_buffer") ) { return static_tcoord_buffer; }
		if (HX_FIELD_EQ(inName,"static_vcolor_buffer") ) { return static_vcolor_buffer; }
		if (HX_FIELD_EQ(inName,"static_normal_buffer") ) { return static_normal_buffer; }
		if (HX_FIELD_EQ(inName,"dirty_primitive_type") ) { return dirty_primitive_type; }
		if (HX_FIELD_EQ(inName,"_final_vert_position") ) { return _final_vert_position; }
		break;
	case 21:
		if (HX_FIELD_EQ(inName,"shadow_primitive_type") ) { return shadow_primitive_type; }
	}
	return super::__Field(inName,inCallProp);
}

Dynamic Geometry_obj::__SetField(const ::String &inName,const Dynamic &inValue,bool inCallProp)
{
	switch(inName.length) {
	case 2:
		if (HX_FIELD_EQ(inName,"id") ) { id=inValue.Cast< ::String >(); return inValue; }
		break;
	case 3:
		if (HX_FIELD_EQ(inName,"key") ) { key=inValue.Cast< Dynamic >(); return inValue; }
		break;
	case 4:
		if (HX_FIELD_EQ(inName,"uuid") ) { uuid=inValue.Cast< ::String >(); return inValue; }
		if (HX_FIELD_EQ(inName,"clip") ) { if (inCallProp) return set_clip(inValue);clip=inValue.Cast< bool >(); return inValue; }
		break;
	case 5:
		if (HX_FIELD_EQ(inName,"added") ) { added=inValue.Cast< bool >(); return inValue; }
		if (HX_FIELD_EQ(inName,"state") ) { state=inValue.Cast< ::phoenix::geometry::GeometryState >(); return inValue; }
		if (HX_FIELD_EQ(inName,"depth") ) { if (inCallProp) return set_depth(inValue);depth=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"group") ) { if (inCallProp) return set_group(inValue);group=inValue.Cast< int >(); 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,"color") ) { if (inCallProp) return set_color(inValue);color=inValue.Cast< ::phoenix::Color >(); return inValue; }
		break;
	case 6:
		if (HX_FIELD_EQ(inName,"shader") ) { if (inCallProp) return set_shader(inValue);shader=inValue.Cast< ::phoenix::Shader >(); return inValue; }
		if (HX_FIELD_EQ(inName,"locked") ) { if (inCallProp) return set_locked(inValue);locked=inValue.Cast< bool >(); return inValue; }
		break;
	case 7:
		if (HX_FIELD_EQ(inName,"dropped") ) { dropped=inValue.Cast< bool >(); return inValue; }
		if (HX_FIELD_EQ(inName,"texture") ) { if (inCallProp) return set_texture(inValue);texture=inValue.Cast< ::phoenix::Texture >(); return inValue; }
		if (HX_FIELD_EQ(inName,"visible") ) { if (inCallProp) return set_visible(inValue);visible=inValue.Cast< bool >(); return inValue; }
		break;
	case 8:
		if (HX_FIELD_EQ(inName,"vertices") ) { vertices=inValue.Cast< Array< ::Dynamic > >(); return inValue; }
		if (HX_FIELD_EQ(inName,"batchers") ) { batchers=inValue.Cast< Array< ::Dynamic > >(); return inValue; }
		break;
	case 9:
		if (HX_FIELD_EQ(inName,"transform") ) { transform=inValue.Cast< ::phoenix::Transform >(); return inValue; }
		if (HX_FIELD_EQ(inName,"submitted") ) { submitted=inValue.Cast< bool >(); return inValue; }
		if (HX_FIELD_EQ(inName,"clip_rect") ) { if (inCallProp) return set_clip_rect(inValue);clip_rect=inValue.Cast< ::phoenix::Rectangle >(); return inValue; }
		if (HX_FIELD_EQ(inName,"immediate") ) { immediate=inValue.Cast< bool >(); return inValue; }
		break;
	case 10:
		if (HX_FIELD_EQ(inName,"dirty_clip") ) { dirty_clip=inValue.Cast< bool >(); return inValue; }
		break;
	case 11:
		if (HX_FIELD_EQ(inName,"shadow_clip") ) { shadow_clip=inValue.Cast< bool >(); return inValue; }
		if (HX_FIELD_EQ(inName,"dirty_group") ) { dirty_group=inValue.Cast< bool >(); return inValue; }
		if (HX_FIELD_EQ(inName,"dirty_depth") ) { dirty_depth=inValue.Cast< bool >(); return inValue; }
		break;
	case 12:
		if (HX_FIELD_EQ(inName,"shadow_group") ) { shadow_group=inValue.Cast< int >(); return inValue; }
		if (HX_FIELD_EQ(inName,"shadow_depth") ) { shadow_depth=inValue.Cast< Float >(); return inValue; }
		if (HX_FIELD_EQ(inName,"dirty_shader") ) { dirty_shader=inValue.Cast< bool >(); return inValue; }
		break;
	case 13:
		if (HX_FIELD_EQ(inName,"_sequence_key") ) { _sequence_key=inValue.Cast< int >(); return inValue; }
		if (HX_FIELD_EQ(inName,"shadow_shader") ) { shadow_shader=inValue.Cast< ::phoenix::Shader >(); return inValue; }
		if (HX_FIELD_EQ(inName,"dirty_texture") ) { dirty_texture=inValue.Cast< bool >(); return inValue; }
		break;
	case 14:
		if (HX_FIELD_EQ(inName,"primitive_type") ) { if (inCallProp) return set_primitive_type(inValue);primitive_type=inValue.Cast< ::phoenix::PrimitiveType >(); return inValue; }
		if (HX_FIELD_EQ(inName,"shadow_texture") ) { shadow_texture=inValue.Cast< ::phoenix::Texture >(); return inValue; }
		break;
	case 20:
		if (HX_FIELD_EQ(inName,"static_vertex_buffer") ) { static_vertex_buffer=inValue.Cast< ::snow::platform::native::render::opengl::GLBuffer >(); return inValue; }
		if (HX_FIELD_EQ(inName,"static_tcoord_buffer") ) { static_tcoord_buffer=inValue.Cast< ::snow::platform::native::render::opengl::GLBuffer >(); return inValue; }
		if (HX_FIELD_EQ(inName,"static_vcolor_buffer") ) { static_vcolor_buffer=inValue.Cast< ::snow::platform::native::render::opengl::GLBuffer >(); return inValue; }
		if (HX_FIELD_EQ(inName,"static_normal_buffer") ) { static_normal_buffer=inValue.Cast< ::snow::platform::native::render::opengl::GLBuffer >(); return inValue; }
		if (HX_FIELD_EQ(inName,"dirty_primitive_type") ) { dirty_primitive_type=inValue.Cast< bool >(); return inValue; }
		if (HX_FIELD_EQ(inName,"_final_vert_position") ) { _final_vert_position=inValue.Cast< ::phoenix::Vector >(); return inValue; }
		break;
	case 21:
		if (HX_FIELD_EQ(inName,"shadow_primitive_type") ) { shadow_primitive_type=inValue.Cast< ::phoenix::PrimitiveType >(); return inValue; }
	}
	return super::__SetField(inName,inValue,inCallProp);
}

void Geometry_obj::__GetFields(Array< ::String> &outFields)
{
	outFields->push(HX_CSTRING("transform"));
	outFields->push(HX_CSTRING("vertices"));
	outFields->push(HX_CSTRING("submitted"));
	outFields->push(HX_CSTRING("static_vertex_buffer"));
	outFields->push(HX_CSTRING("static_tcoord_buffer"));
	outFields->push(HX_CSTRING("static_vcolor_buffer"));
	outFields->push(HX_CSTRING("static_normal_buffer"));
	outFields->push(HX_CSTRING("added"));
	outFields->push(HX_CSTRING("batchers"));
	outFields->push(HX_CSTRING("state"));
	outFields->push(HX_CSTRING("dropped"));
	outFields->push(HX_CSTRING("uuid"));
	outFields->push(HX_CSTRING("id"));
	outFields->push(HX_CSTRING("primitive_type"));
	outFields->push(HX_CSTRING("texture"));
	outFields->push(HX_CSTRING("shader"));
	outFields->push(HX_CSTRING("depth"));
	outFields->push(HX_CSTRING("group"));
	outFields->push(HX_CSTRING("clip_rect"));
	outFields->push(HX_CSTRING("shadow_primitive_type"));
	outFields->push(HX_CSTRING("shadow_texture"));
	outFields->push(HX_CSTRING("shadow_shader"));
	outFields->push(HX_CSTRING("shadow_group"));
	outFields->push(HX_CSTRING("shadow_depth"));
	outFields->push(HX_CSTRING("shadow_clip"));
	outFields->push(HX_CSTRING("dirty_primitive_type"));
	outFields->push(HX_CSTRING("dirty_texture"));
	outFields->push(HX_CSTRING("dirty_shader"));
	outFields->push(HX_CSTRING("dirty_group"));
	outFields->push(HX_CSTRING("dirty_depth"));
	outFields->push(HX_CSTRING("dirty_clip"));
	outFields->push(HX_CSTRING("visible"));
	outFields->push(HX_CSTRING("immediate"));
	outFields->push(HX_CSTRING("locked"));
	outFields->push(HX_CSTRING("dirty"));
	outFields->push(HX_CSTRING("color"));
	outFields->push(HX_CSTRING("clip"));
	outFields->push(HX_CSTRING("_final_vert_position"));
	outFields->push(HX_CSTRING("key"));
	super::__GetFields(outFields);
};

static ::String sStaticFields[] = {
	HX_CSTRING("_sequence_key"),
	String(null()) };

#if HXCPP_SCRIPTABLE
static hx::StorageInfo sMemberStorageInfo[] = {
	{hx::fsObject /*::phoenix::Transform*/ ,(int)offsetof(Geometry_obj,transform),HX_CSTRING("transform")},
	{hx::fsObject /*Array< ::Dynamic >*/ ,(int)offsetof(Geometry_obj,vertices),HX_CSTRING("vertices")},
	{hx::fsBool,(int)offsetof(Geometry_obj,submitted),HX_CSTRING("submitted")},
	{hx::fsObject /*::snow::platform::native::render::opengl::GLBuffer*/ ,(int)offsetof(Geometry_obj,static_vertex_buffer),HX_CSTRING("static_vertex_buffer")},
	{hx::fsObject /*::snow::platform::native::render::opengl::GLBuffer*/ ,(int)offsetof(Geometry_obj,static_tcoord_buffer),HX_CSTRING("static_tcoord_buffer")},
	{hx::fsObject /*::snow::platform::native::render::opengl::GLBuffer*/ ,(int)offsetof(Geometry_obj,static_vcolor_buffer),HX_CSTRING("static_vcolor_buffer")},
	{hx::fsObject /*::snow::platform::native::render::opengl::GLBuffer*/ ,(int)offsetof(Geometry_obj,static_normal_buffer),HX_CSTRING("static_normal_buffer")},
	{hx::fsBool,(int)offsetof(Geometry_obj,added),HX_CSTRING("added")},
	{hx::fsObject /*Array< ::Dynamic >*/ ,(int)offsetof(Geometry_obj,batchers),HX_CSTRING("batchers")},
	{hx::fsObject /*::phoenix::geometry::GeometryState*/ ,(int)offsetof(Geometry_obj,state),HX_CSTRING("state")},
	{hx::fsBool,(int)offsetof(Geometry_obj,dropped),HX_CSTRING("dropped")},
	{hx::fsString,(int)offsetof(Geometry_obj,uuid),HX_CSTRING("uuid")},
	{hx::fsString,(int)offsetof(Geometry_obj,id),HX_CSTRING("id")},
	{hx::fsObject /*::phoenix::PrimitiveType*/ ,(int)offsetof(Geometry_obj,primitive_type),HX_CSTRING("primitive_type")},
	{hx::fsObject /*::phoenix::Texture*/ ,(int)offsetof(Geometry_obj,texture),HX_CSTRING("texture")},
	{hx::fsObject /*::phoenix::Shader*/ ,(int)offsetof(Geometry_obj,shader),HX_CSTRING("shader")},
	{hx::fsFloat,(int)offsetof(Geometry_obj,depth),HX_CSTRING("depth")},
	{hx::fsInt,(int)offsetof(Geometry_obj,group),HX_CSTRING("group")},
	{hx::fsObject /*::phoenix::Rectangle*/ ,(int)offsetof(Geometry_obj,clip_rect),HX_CSTRING("clip_rect")},
	{hx::fsObject /*::phoenix::PrimitiveType*/ ,(int)offsetof(Geometry_obj,shadow_primitive_type),HX_CSTRING("shadow_primitive_type")},
	{hx::fsObject /*::phoenix::Texture*/ ,(int)offsetof(Geometry_obj,shadow_texture),HX_CSTRING("shadow_texture")},
	{hx::fsObject /*::phoenix::Shader*/ ,(int)offsetof(Geometry_obj,shadow_shader),HX_CSTRING("shadow_shader")},
	{hx::fsInt,(int)offsetof(Geometry_obj,shadow_group),HX_CSTRING("shadow_group")},
	{hx::fsFloat,(int)offsetof(Geometry_obj,shadow_depth),HX_CSTRING("shadow_depth")},
	{hx::fsBool,(int)offsetof(Geometry_obj,shadow_clip),HX_CSTRING("shadow_clip")},
	{hx::fsBool,(int)offsetof(Geometry_obj,dirty_primitive_type),HX_CSTRING("dirty_primitive_type")},
	{hx::fsBool,(int)offsetof(Geometry_obj,dirty_texture),HX_CSTRING("dirty_texture")},
	{hx::fsBool,(int)offsetof(Geometry_obj,dirty_shader),HX_CSTRING("dirty_shader")},
	{hx::fsBool,(int)offsetof(Geometry_obj,dirty_group),HX_CSTRING("dirty_group")},
	{hx::fsBool,(int)offsetof(Geometry_obj,dirty_depth),HX_CSTRING("dirty_depth")},
	{hx::fsBool,(int)offsetof(Geometry_obj,dirty_clip),HX_CSTRING("dirty_clip")},
	{hx::fsBool,(int)offsetof(Geometry_obj,visible),HX_CSTRING("visible")},
	{hx::fsBool,(int)offsetof(Geometry_obj,immediate),HX_CSTRING("immediate")},
	{hx::fsBool,(int)offsetof(Geometry_obj,locked),HX_CSTRING("locked")},
	{hx::fsBool,(int)offsetof(Geometry_obj,dirty),HX_CSTRING("dirty")},
	{hx::fsObject /*::phoenix::Color*/ ,(int)offsetof(Geometry_obj,color),HX_CSTRING("color")},
	{hx::fsBool,(int)offsetof(Geometry_obj,clip),HX_CSTRING("clip")},
	{hx::fsObject /*::phoenix::Vector*/ ,(int)offsetof(Geometry_obj,_final_vert_position),HX_CSTRING("_final_vert_position")},
	{hx::fsObject /*Dynamic*/ ,(int)offsetof(Geometry_obj,key),HX_CSTRING("key")},
	{ hx::fsUnknown, 0, null()}
};
#endif

static ::String sMemberFields[] = {
	HX_CSTRING("transform"),
	HX_CSTRING("vertices"),
	HX_CSTRING("submitted"),
	HX_CSTRING("static_vertex_buffer"),
	HX_CSTRING("static_tcoord_buffer"),
	HX_CSTRING("static_vcolor_buffer"),
	HX_CSTRING("static_normal_buffer"),
	HX_CSTRING("added"),
	HX_CSTRING("batchers"),
	HX_CSTRING("state"),
	HX_CSTRING("dropped"),
	HX_CSTRING("uuid"),
	HX_CSTRING("id"),
	HX_CSTRING("primitive_type"),
	HX_CSTRING("texture"),
	HX_CSTRING("shader"),
	HX_CSTRING("depth"),
	HX_CSTRING("group"),
	HX_CSTRING("clip_rect"),
	HX_CSTRING("shadow_primitive_type"),
	HX_CSTRING("shadow_texture"),
	HX_CSTRING("shadow_shader"),
	HX_CSTRING("shadow_group"),
	HX_CSTRING("shadow_depth"),
	HX_CSTRING("shadow_clip"),
	HX_CSTRING("dirty_primitive_type"),
	HX_CSTRING("dirty_texture"),
	HX_CSTRING("dirty_shader"),
	HX_CSTRING("dirty_group"),
	HX_CSTRING("dirty_depth"),
	HX_CSTRING("dirty_clip"),
	HX_CSTRING("visible"),
	HX_CSTRING("immediate"),
	HX_CSTRING("locked"),
	HX_CSTRING("dirty"),
	HX_CSTRING("color"),
	HX_CSTRING("clip"),
	HX_CSTRING("_final_vert_position"),
	HX_CSTRING("key"),
	HX_CSTRING("key_string"),
	HX_CSTRING("refresh_key"),
	HX_CSTRING("short_id"),
	HX_CSTRING("str"),
	HX_CSTRING("drop"),
	HX_CSTRING("add"),
	HX_CSTRING("remove"),
	HX_CSTRING("batch"),
	HX_CSTRING("batch_into_arrays"),
	HX_CSTRING("translate"),
	HX_CSTRING("set_locked"),
	HX_CSTRING("get_locked"),
	HX_CSTRING("set_dirty"),
	HX_CSTRING("get_dirty"),
	HX_CSTRING("refresh"),
	HX_CSTRING("get_primitive_type"),
	HX_CSTRING("set_primitive_type"),
	HX_CSTRING("get_texture"),
	HX_CSTRING("set_texture"),
	HX_CSTRING("set_visible"),
	HX_CSTRING("set_color"),
	HX_CSTRING("get_shader"),
	HX_CSTRING("set_shader"),
	HX_CSTRING("get_depth"),
	HX_CSTRING("set_depth"),
	HX_CSTRING("get_group"),
	HX_CSTRING("set_group"),
	HX_CSTRING("get_clip"),
	HX_CSTRING("set_clip"),
	HX_CSTRING("get_clip_rect"),
	HX_CSTRING("set_clip_rect"),
	String(null()) };

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

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

#endif

Class Geometry_obj::__mClass;

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

void Geometry_obj::__boot()
{
	_sequence_key= (int)-1;
}

} // end namespace phoenix
} // end namespace geometry
