public override bool Update() { if (IsDirty) { string selection = EvaluateChoice(); Count = 0; if (!string.IsNullOrEmpty(selection)) { EffectHandle paramHandle = Effect.GetParameter(null, selection); if (paramHandle == null) { Log.Error("SAS: Couldn't get loopbycount parameter"); } else { Count = SasHelper.GetIntegerFromParam(Effect, paramHandle); } } IsDirty = false; } return(true); }
public override bool Update() { if (IsDirty) { string selection = EvaluateChoice(); EffectHandle paramHandle = Effect.GetParameter(null, selection); if (paramHandle != null) { Stencil = SasHelper.GetIntegerFromParam(Effect, paramHandle); } else { Log.Error("SAS: Couldn't get clear stencil parameter"); } IsDirty = false; } return(true); }
private bool LoadScript() { // Remove previous data Techniques.Clear(); Passes.Clear(); #region Global script for (int i = 0; i < Effect.Description.Parameters; i++) { EffectHandle handleParam = Effect.GetParameter(null, i); ParameterDescription desc = Effect.GetParameterDescription(handleParam); if (desc.Type == ParameterType.Float && StringUtils.EqualsIgnoreCase(desc.Semantic, "STANDARDSGLOBAL")) { Log.Info("Loading SAS script"); string script = SasHelper.FindAnnotationString(Effect, handleParam, "script"); GlobalScript = ParseScript(script); ScriptType = ScriptEffectType.Object; string scriptClass = SasHelper.FindAnnotationString(Effect, handleParam, "ScriptClass"); if (scriptClass != null) { if (StringUtils.EqualsIgnoreCase(scriptClass, "scene")) { ScriptType = ScriptEffectType.Scene; } } // Stop after the first global script was found break; } } #endregion if (GlobalScript == null || GlobalScript.Count == 0) { return(false); } #region Technique & pass scripts for (int technique = 0; technique < Effect.Description.Techniques; technique++) { EffectHandle handleTech = Effect.GetTechnique(technique); string script = SasHelper.FindTechniqueAnnotationString(Effect, handleTech, "script"); var list = ParseScript(script); if (list == null || list.Count == 0) { Log.Warn("Failed to load SAS script: Couldn't find technique script"); return(false); } Techniques.Add(handleTech, list); TechniqueDescription techDesc = Effect.GetTechniqueDescription(handleTech); for (int pass = 0; pass < techDesc.Passes; pass++) { EffectHandle handlePass = Effect.GetPass(handleTech, pass); string passScript = SasHelper.FindPassAnnotationString(Effect, handlePass, "script"); var passList = ParseScript(passScript); if (passList == null || passList.Count == 0) { Log.Warn("Failed to load SAS script: Couldn't find pass script"); return(false); } Passes.Add(handlePass, passList); } } #endregion return(true); }