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; }