public void generateControllerTest() { ShaderControllerGenerator generator = new ShaderControllerGenerator(); Shader shader = Resources.Load <Shader>("TestShader"); var unit = generator.generateGraphicController(shader, "Game"); var Namespace = unit.Namespaces[0]; Assert.AreEqual("Game", Namespace.Name); var Class = Namespace.Types[0]; Assert.AreEqual(typeof(GraphMatPropCtrl).FullName, Class.BaseTypes[0].BaseType); Assert.AreEqual("TestShader" + "Controller", Class.Name); checkField(Class, typeof(int), "SHADER_ID", MemberAttributes.Public | MemberAttributes.Const, shader.GetInstanceID()); checkField(Class, typeof(Color), "_Color"); checkField(Class, typeof(float), "_Gray"); var update = checkMethod(Class, MemberAttributes.Family | MemberAttributes.Override, typeof(void), "Update"); checkCall(update, "SetColor", "_Color"); checkCall(update, "SetFloat", "_Gray"); var reset = checkMethod(Class, MemberAttributes.Family, typeof(void), "Reset"); checkAssign(reset, "_Gray", "GetFloat", "_Gray"); checkAssign(reset, "_Color", "GetColor", "_Color"); }
public static void GenerateShaderController(Shader shader, string outputPath) { //string shaderName = shader.name.Split('/').Last(); ShaderControllerGenerator generator = new ShaderControllerGenerator(); generator.Session = new Dictionary<string, object>(); generator.Session["ControllerClassName"] = Path.GetFileNameWithoutExtension(outputPath); generator.Session["ShaderPathInternal"] = shader.name; generator.Session["Properties"] = GetShaderPropertyInfos(shader); generator.Initialize(); string classDefinition = generator.TransformText(); File.WriteAllText(outputPath, classDefinition); AssetDatabase.Refresh(); }