//-------------------------------------------------------------------------------------------------------
	static void Register_IPipelineSystem( IScriptSystem& sys )
	{
		{
			ClassRegister sc;
			sc.ClassType( &IPipelineSystem::RTTI() );

			sys.RegisterClass(sc);
		}
		ClassRegister sc;
		sc.ClassType( &PipelineProperty::RTTI() );
		sc.ClassConstant( PipelineProperty::PT_LIGHTING_AMBIENT, "PT_LIGHTING_AMBIENT" );
		sc.ClassConstant( PipelineProperty::PT_LIGHTING_DIRECTION, "PT_LIGHTING_DIRECTION" );
		sc.ClassConstant( PipelineProperty::PT_LIGHTING_POINT, "PT_LIGHTING_POINT" );
		sc.ClassConstant( PipelineProperty::PT_LIGHTING_SPOT, "PT_LIGHTING_SPOT" );
		sc.ClassConstant( PipelineProperty::PT_UNIVERSAL_DEPTH, "PT_UNIVERSAL_DEPTH" );
		sc.ClassConstant( PipelineProperty::PT_UNIVERSAL_NORMAL, "PT_UNIVERSAL_NORMAL" );
		sc.ClassConstant( PipelineProperty::PT_UNIVERSAL_DECAL, "PT_UNIVERSAL_DECAL" );
		sc.ClassConstant( PipelineProperty::PT_UNIVERSAL_MULTI_RENDER_TARGET, "PT_UNIVERSAL_MULTI_RENDER_TARGET" );
		sc.ClassConstant( PipelineProperty::PT_UNIVERSAL_POST_EFFECT, "PT_UNIVERSAL_POST_EFFECT" );

		sc.ClassConstant( PipelineProperty::LT_AMBIENT, "LT_AMBIENT" );
		sc.ClassConstant( PipelineProperty::LT_DIRECTIONAL, "LT_DIRECTIONAL" );
		sc.ClassConstant( PipelineProperty::LT_POINT, "LT_POINT" );
		sc.ClassConstant( PipelineProperty::LT_SPOT, "LT_SPOT" );
		sys.RegisterClass(sc);
	}
	//-------------------------------------------------------------------------------------------------------
	static void Register_IResourceSystem( IScriptSystem& sys )
	{
		ClassRegister sc;
		sc.ClassType( &IResourceSystem::RTTI() );

		sys.RegisterClass(sc);
	}
	//-------------------------------------------------------------------------------------------------------
	static void Register_IPostHandle( IScriptSystem& sys )
	{
		ClassRegister sc;
		sc.ClassType( &IPostHandle::RTTI(), &IBaseHandle::RTTI() );

		{
			FunctionRegister sf;
			sf.Result( sys, &String::RTTI() );
			sf.Function( &BohgeEngine::IPostHandle_GetResult, "GetResult" );
			sc.ClassFunction( sf );
		}

		{
			FunctionRegister sf;
			sf.Arguments( sys, &String::RTTI(), &String::RTTI() );
			sf.Function( &BohgeEngine::IPostHandle_SetPostContent, "SetPostContent" );
			sc.ClassFunction( sf );
		}

		sys.RegisterClass(sc);
	}
	//-------------------------------------------------------------------------------------------------------
	static void Register_RenderTargetEntity( IScriptSystem& sys )
	{
		{
			ClassRegister sc;
			sc.ClassType( &RenderTargetEntity::RTTI() );
			{
				FunctionRegister sf;
				sf.Result( sys, &RenderTargetEntity::RTTI() );
				sf.Function( &BohgeEngine::RenderTargetEntity_PushRenderTarget, "PushRenderTarget" );
				sc.ClassFunction( sf );
			}

			{
				FunctionRegister sf;
				sf.Arguments( sys, &Number::RTTI() );
				sf.Function( &BohgeEngine::RenderTargetEntity_ClearBuffer, "ClearBuffer" );
				sc.ClassFunction( sf );
			}

			{
				FunctionRegister sf;
				sf.Arguments( sys, &Number::RTTI() );
				sf.Function( &BohgeEngine::RenderTargetEntity_ActiveTargetFace, "ActiveTargetFace" );
				sc.ClassFunction( sf );
			}

			{
				FunctionRegister sf;
				sf.Result( sys, &TextureEntity::RTTI() );
				sf.Arguments( sys, &Number::RTTI() );
				sf.Function( &BohgeEngine::RenderTargetEntity_GetAttachment, "GetAttachment" );
				sc.ClassFunction( sf );
			}
			sys.RegisterClass(sc);
		}

		{
			ClassRegister sc;
			sc.ClassType( &RenderTargetProperty::RTTI() );
			sc.ClassConstant( RenderTargetProperty::ST_SWAP_A, "ST_SWAP_A" );
			sc.ClassConstant( RenderTargetProperty::ST_SWAP_B, "ST_SWAP_B" );
			sc.ClassConstant( RenderTargetProperty::ST_SWAP_C, "ST_SWAP_C" );
			sc.ClassConstant( RenderTargetProperty::ST_SWAP_D, "ST_SWAP_D" );

			sc.ClassConstant( RenderTargetProperty::RT_RENDER_TARGET_MAIN, "RT_RENDER_TARGET_MAIN" );
			sc.ClassConstant( RenderTargetProperty::RT_RENDER_TARGET_2D, "RT_RENDER_TARGET_2D" );
			sc.ClassConstant( RenderTargetProperty::RT_RENDER_TARGET_CUBE, "RT_RENDER_TARGET_CUBE" );

			sc.ClassConstant( RenderTargetProperty::TF_POSITIVE_X, "TF_POSITIVE_X" );
			sc.ClassConstant( RenderTargetProperty::TF_NEGATIVE_X, "TF_NEGATIVE_X" );
			sc.ClassConstant( RenderTargetProperty::TF_POSITIVE_Y, "TF_POSITIVE_Y" );
			sc.ClassConstant( RenderTargetProperty::TF_NEGATIVE_Y, "TF_NEGATIVE_Y" );
			sc.ClassConstant( RenderTargetProperty::TF_POSITIVE_Z, "TF_POSITIVE_Z" );
			sc.ClassConstant( RenderTargetProperty::TF_NEGATIVE_Z, "TF_NEGATIVE_Z" );
			sc.ClassConstant( RenderTargetProperty::TF_DEFAULT, "TF_DEFAULT" );

			sc.ClassConstant( RenderTargetProperty::TA_COLOR_0, "TA_COLOR_0" );
			sc.ClassConstant( RenderTargetProperty::TA_COLOR_1, "TA_COLOR_1" );
			sc.ClassConstant( RenderTargetProperty::TA_COLOR_2, "TA_COLOR_2" );
			sc.ClassConstant( RenderTargetProperty::TA_COLOR_3, "TA_COLOR_3" );
			sc.ClassConstant( RenderTargetProperty::TA_COLOR_4, "TA_COLOR_4" );
			sc.ClassConstant( RenderTargetProperty::TA_COLOR_5, "TA_COLOR_5" );
			sc.ClassConstant( RenderTargetProperty::TA_COLOR_6, "TA_COLOR_6" );
			sc.ClassConstant( RenderTargetProperty::TA_COLOR_7, "TA_COLOR_7" );
			sc.ClassConstant( RenderTargetProperty::TA_COLOR_8, "TA_COLOR_8" );
			sc.ClassConstant( RenderTargetProperty::TA_COLOR_9, "TA_COLOR_9" );
			sc.ClassConstant( RenderTargetProperty::TA_DEPTH, "TA_DEPTH" );
			sc.ClassConstant( RenderTargetProperty::TA_DEPTH_STENCIL, "TA_DEPTH_STENCIL" );

			sc.ClassConstant( RenderTargetProperty::CF_COLOR, "CF_COLOR" );
			sc.ClassConstant( RenderTargetProperty::CF_DEPTH, "CF_DEPTH" );
			sc.ClassConstant( RenderTargetProperty::CF_STENCIL, "CF_STENCIL" );
			sc.ClassConstant( RenderTargetProperty::CF_COLOR_DEPTH, "CF_COLOR_DEPTH" );
			sc.ClassConstant( RenderTargetProperty::CF_COLOR_STENCIL, "CF_COLOR_STENCIL" );
			sc.ClassConstant( RenderTargetProperty::CF_DEPTH_STENCIL, "CF_DEPTH_STENCIL" );
			sc.ClassConstant( RenderTargetProperty::CF_COLOR_DEPTH_STENCIL, "CF_COLOR_DEPTH_STENCIL" );

			sys.RegisterClass(sc);
		}
	}