Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        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);
        }