#ifndef __LUXINIA_REFCLASSES_H__
#define __LUXINIA_REFCLASSES_H__

#ifdef __cplusplus
extern "C" {
#endif

	#include "reference.h"

	// Math
	typedef luxiReference	luxiRmatrix4x4;
	typedef luxiReference	luxiRintarray;
	typedef luxiReference	luxiRfloatarray;
	typedef luxiReference	luxiRscalararray;

	// Generic
	typedef luxiReference	luxiRfontset;

	// Sound
	typedef luxiReference	luxiRsoundnode;

	// Spatial
	typedef luxiReference	luxiRactornode;
	typedef luxiReference	luxiRscenenode;
	
	// List2D
	typedef luxiReference	luxiRl2dnode;
	typedef luxiRl2dnode	luxiRl2dimage;
	typedef luxiRl2dnode	luxiRl2dtext;
	typedef luxiRl2dnode	luxiRl2dnode3d;
	typedef luxiRl2dnode	luxiRl2dflag;
	typedef luxiRl2dnode	luxiRl2dview3d;

	// List3D
	typedef luxiReference	luxiRl3dnode;
	typedef luxiRl3dnode	luxiRl3dmodel;
	typedef luxiRl3dnode	luxiRl3dprimitive;
	typedef luxiRl3dnode	luxiRl3dshadowmodel;
	typedef luxiRl3dnode	luxiRl3dlevelmodel;
	typedef luxiRl3dnode	luxiRl3dtrail;
	typedef luxiRl3dnode	luxiRl3dtext;
	typedef luxiRl3dnode	luxiRl3dprojector;
	typedef luxiRl3dnode	luxiRl3dlight;
	typedef luxiRl3dnode	luxiRl3dcamera;
	typedef luxiRl3dnode	luxiRl3dtbterrain;
	typedef luxiRl3dnode	luxiRl3dpgroup;
	typedef luxiRl3dnode	luxiRl3dpemitter;
	
	// List2D/3D Rendering
	typedef luxiReference	luxiRl3dview;
	typedef luxiReference	luxiRl3dbatchbuffer;

	typedef luxiReference	luxiRskybox;
	typedef luxiReference	luxiRfrustumobject;
	typedef luxiReference	luxiRmorphcontrol;
	typedef luxiReference	luxiRbonecontrol;
	typedef luxiReference	luxiRmatautocontrol;

	typedef luxiReference	luxiRrcmd;
	typedef luxiRrcmd		luxiRrcmdclear;
	typedef luxiRrcmd		luxiRrcmdstencil;
	typedef luxiRrcmd		luxiRrcmddepth;
	typedef luxiRrcmd		luxiRrcmdlogicop;
	typedef luxiRrcmd		luxiRrcmdforceflag;
	typedef luxiRrcmd		luxiRrcmdignoreflag;
	typedef luxiRrcmd		luxiRrcmdshaders;
	typedef luxiRrcmd		luxiRrcmdshadersoff;
	typedef luxiRrcmd		luxiRrcmdignore;
	typedef luxiRrcmd		luxiRrcmdcopytex;
	typedef luxiRrcmd		luxiRrcmddrawmesh;
	typedef luxiRrcmd		luxiRrcmddrawbg;
	typedef luxiRrcmd		luxiRrcmddrawdbg;
	typedef luxiRrcmd		luxiRrcmddrawlayer;
	typedef luxiRrcmd		luxiRrcmddrawprt;
	typedef luxiRrcmd		luxiRrcmddrawl2d;
	typedef luxiRrcmd		luxiRrcmddrawl3d;
	typedef luxiRrcmd		luxiRrcmdmipmaps;
	typedef luxiRrcmd		luxiRrcmdreadpixels;
	typedef	luxiRrcmd		luxiRrcmdr2vb;

	typedef luxiRrcmd		luxiRrcmdfbobind;
	typedef luxiRrcmd		luxiRrcmdfbooff;
	typedef luxiRrcmd		luxiRrcmdfbotex;
	typedef luxiRrcmd		luxiRrcmdfborb;
	typedef luxiRrcmd		luxiRrcmdfbodrawto;
	typedef luxiRrcmd		luxiRrcmdfboreadfrom;
	typedef luxiRrcmd		luxiRrcmdfboblit;
	
	typedef luxiReference	luxiRrenderbuffer;
	typedef luxiReference	luxiRrenderfbo;
	typedef luxiReference	luxiRvidbuffer;
	typedef luxiReference	luxiRrendermesh;

	// Resource
	typedef luxiReference	luxiRterraindecal;

	//////////////////////////////////////////////////////////////////////////
	// ResourceIDs

	typedef luxiResourceID	luxiRIDtexture;
	typedef luxiResourceID	luxiRIDmodel;
	typedef luxiResourceID	luxiRIDanimation;
	typedef luxiResourceID	luxiRIDshader;
	typedef luxiResourceID	luxiRIDmaterial;
	typedef luxiResourceID	luxiRIDgpuprog;
	typedef luxiResourceID	luxiRIDsound;
	typedef luxiResourceID	luxiRIDtbterrain;
	typedef luxiResourceID	luxiRIDprtsys;
	typedef luxiResourceID	luxiRIDprtcloud;

	typedef luxiResourceSubID	luxiRIDmeshSUB;
	typedef luxiResourceSubID	luxiRIDskinSUB;
	typedef luxiResourceSubID	luxiRIDboneSUB;

	typedef luxiResourceSubID	luxiRIDmattexctrlSUB;
	typedef luxiResourceSubID	luxiRIDmatshdctrlSUB;
	typedef luxiResourceSubID	luxiRIDmatcontrolSUB;

	typedef luxiResourceSubID	luxiRIDshaderparamSUB;

	typedef luxiResourceSubID	luxiRIDprtforceSUB;
	
	typedef luxiResourceSubID	luxiRIDtrackSUB;
	

#ifdef __cplusplus
}
#endif

#endif