/* -----------------------------------------------------------------------------
	GSFramework
	Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */


#ifndef	__SCRIPTENGINETYPES__
#define __SCRIPTENGINETYPES__


namespace GS {
	namespace Script {

/// Native C object types that the VM can interact with.
enum CObjectType
{
	typetag_Undefined	=	0,
	typetag_Deleted,			// The native object was deleted.

	typetag_Engine,
	typetag_ScriptVM,
	typetag_ResourceSet,
	typetag_Project,
	typetag_Renderer,
	typetag_Raytracer,
	typetag_Mixer,
	typetag_Scene3d,
	typetag_Clock,

	typetag_Font,
	typetag_RasterFont,
	typetag_Scene2d,
	typetag_UICursor,
	typetag_UIItem,
	typetag_UISprite,
	typetag_Window,
	typetag_Widget,
	typetag_SizerWidget,
	typetag_ContainerWidget,
	typetag_SpacerWidget,
	typetag_CanvasWidget,
	typetag_TextWidget,
	typetag_BitmapWidget,
	typetag_CheckWidget,
	typetag_Picture,

	typetag_Group,
	typetag_Item,
	typetag_Camera,
	typetag_Object,
	typetag_Light,
	typetag_Instance,
	typetag_Emitter,
	typetag_ParticleModel,
	typetag_Motion,
	typetag_Trigger,
	typetag_Path,

	typetag_Sound,
	typetag_Shader,
	typetag_Texture,
	typetag_Geometry,
	typetag_GeometryTemplate,
	typetag_Material,
	typetag_MaterialShader,
	typetag_ColShape,
	typetag_Constraint,

	typetag_Metafile,
	typetag_Metatag,
	typetag_FileHandle,

	typetag_InputDevice,

	typetag_EditorPlugin,

	typetag_ProjectScene,
	typetag_ProjectLayer,

	typetag_AutomationSource,
	typetag_AutomationSourceGroup,

	typetag_ResourceFactories,

	typetag_PeerController,
	typetag_Peer,

	typetag_WebSocketManager,

	typetag_End
};

const char	*CObjectTypeToString(CObjectType type);

	} // Script
} // GS


#endif	// __SCRIPTENGINETYPES__
