HRESULT FxAttributeFiller::PreEnumParameter(LPD3DXEFFECT pEffect, DXCCEffectPath& parameter, BOOL& GoDeeper, BOOL& DoEnum, BOOL& DoPost)
{
	SasUiLabel = FxParameterGetUiLabel(pEffect, parameter);


	if( parameter.End->Description.Class == D3DXPC_OBJECT)
	{
		switch( parameter.End->Description.Type )
		{
		case D3DXPT_STRING:
		case D3DXPT_TEXTURE:
		case D3DXPT_TEXTURE1D:
		case D3DXPT_TEXTURE2D:
		case D3DXPT_TEXTURE3D:
		case D3DXPT_TEXTURECUBE:
			break;
		default:
			{
				GoDeeper= FALSE;
				DoEnum= FALSE;
				DoPost= FALSE;
				return S_OK;
			}
			break;
		}
	}



	if(parameter.Length == 1)
	{
		SasUiVisible = FxParameterGetUiVisible(pEffect, parameter);
		if(SasUiVisible == TRUE)
		{
			SasUiControl = FxParameterGetUiControl(pEffect, parameter);

			if(0 == lstrcmpiA( SasUiControl.asChar(), "None"))
				SasUiVisible= FALSE;
		}

		if(SasUiVisible == FALSE)
		{
			GoDeeper= FALSE;
			DoEnum= FALSE;
			DoPost= FALSE;
			return S_OK;
		}


		if(0 == lstrcmpiA( SasUiControl.asChar(), "Slider"))
		{
			bool validSlider= true;

			D3DXHANDLE hMin= DXCCFindEffectAnnotation(pEffect, parameter.Root->Handle, "SasUiMin");
			D3DXHANDLE hMax= DXCCFindEffectAnnotation(pEffect, parameter.Root->Handle, "SasUiMax");

			if(	hMin != NULL 
				&& hMax != NULL
				&& DXCC_SUCCEEDED( pEffect->GetFloat(hMin, &SasUiMin)) 				
				&& DXCC_SUCCEEDED( pEffect->GetFloat(hMax, &SasUiMax)) )
			{
				SasUiSteps= 100;
				D3DXHANDLE hSteps= DXCCFindEffectAnnotation(pEffect, parameter.Root->Handle, "SasUiSteps");
				if(hSteps != NULL)
					pEffect->GetInt(hSteps, &SasUiSteps);
			}
			else //FAILED TO GET VALID SLIDER
			{
				SasUiControl = "Any";
			}
		}
	}



	Script.AppendFormat("dxfxStackUp( \"%s\", %d );\n", SasUiLabel.asChar(), (parameter.End->NumChildren() == 0) );

	if(parameter.End->NumChildren() != 0)
	{
		DoEnum= FALSE;
		return S_OK;
	}


	return S_OK;

}