Пример #1
0
 private static void AddTechniques(Effect effect, Class @class, Method reloadMethod)
 {
     if (effect.Techniques.Count == 1)
     {
         AddTechnique(@class, reloadMethod, effect.Techniques[0], "Apply");
     }
     else
     {
         foreach (var technique in effect.Techniques)
         {
             AddTechnique(@class, reloadMethod, technique, $"Apply{SourceUtilities.CapitalizeFirstLetter(technique)}");
         }
     }
 }
Пример #2
0
        private static void AddAndInitializeProperties(Effect effect, Class @class, Method reloadMethod)
        {
            foreach (var prop in effect.PublicProperties)
            {
                var fieldName = SourceUtilities.LowerCaseFirstLetter(prop.Name) + "Parameter";
                @class.Fields.Add(new Field("EffectParameter", fieldName, "private"));
                var assignment = new Assignment($"this.{fieldName}", "=", $"this.Effect.Parameters[\"{prop.Name}\"]");
                reloadMethod.Body.Expressions.Add(assignment);

                var property = new Property(prop.GetXNAType(), SourceUtilities.CapitalizeFirstLetter(prop.Name), false, "public");
                @class.Properties.Add(property);
                var propertySetter = new Body();
                property.SetSetter(propertySetter);
                propertySetter.Expressions.Add(new Statement($"this.{fieldName}.SetValue(value)"));
            }
        }