Пример #1
0
        private static void AddTechnique(Class @class, Method reloadMethod, string technique, string methodName)
        {
            var field = new Field("EffectPass", $"{SourceUtilities.LowerCaseFirstLetter(technique)}Pass", "private");

            @class.Fields.Add(field);

            reloadMethod.Body.Expressions.Add(new Assignment($"this.{field.Name}", "=", $"this.Effect.Techniques[\"{technique}\"].Passes[0]"));

            var method = new Method("void", methodName, "public");

            @class.Methods.Add(method);

            method.Body.Expressions.Add(new Statement($"this.{field.Name}.Apply()"));
        }
Пример #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)"));
            }
        }