Ejemplo n.º 1
0
        /// <summary>
        ///     アノテーション名の大文字小文字を無視しして取得する
        /// </summary>
        /// <param name="pass">取得対象のパス</param>
        /// <param name="target">アノテーション名</param>
        /// <param name="typeName">期待する型</param>
        /// <returns>アノテーション</returns>
        public static EffectVariable アノテーションを取得する(EffectPass pass, string target, string typeName)
        {
            string name = target.ToLower();

            string[] valid = name.Split('/');
            for (int i = 0; i < pass.Description.AnnotationCount; i++)
            {
                EffectVariable val        = pass.GetAnnotationByIndex(i);
                string         typeString = val.Description.Name.ToLower();
                if (typeString == name)
                {
                    if (!valid.Contains(typeString) && !String.IsNullOrWhiteSpace(typeString))
                    {
                        throw new InvalidMMEEffectShader例外(
                                  string.Format(
                                      "パス「{0}」に適用されたアノテーション「{1} {2}」はアノテーションの型が正しくありません。期待した型は{3}でした。",
                                      pass.Description.Name, typeString, val.Description.Name, _期待される型の一覧を返す(valid, val.Description.Name)));
                    }
                    return(val);
                }
            }
            return(null);
        }
Ejemplo n.º 2
0
 public static List <EffectVariable> GetAnnotations(this EffectPass pass)
 {
     return(GetAsList(
                pass.Description.AnnotationCount,
                (i) => pass.GetAnnotationByIndex(i)));
 }