Пример #1
0
    void GenerateCode(CodeGenDescription desc)
    {
        var treeAssetPath = Path;

        editorWindowCodeBuilder.Save(ClassName);

        var windowRegisterFilePath = Path.Replace(".uxml", ".RegisterCallbacks.cs");
        var registerWindowScript   = AssetDatabase.LoadAssetAtPath <MonoScript>(windowRegisterFilePath);

        if (registerWindowScript == null)
        {
            var registerScriptCode = EditorWindowCodeGen.GenerateEditorWindowRegisterCode(ClassName, treeAssetPath);
            SaveWindowScript(windowRegisterFilePath, registerScriptCode);
        }

        registerWindowScript = AssetDatabase.LoadAssetAtPath <MonoScript>(windowRegisterFilePath);
        var stubCode = string.Empty;

        if (desc.Type == typeof(Button))
        {
            stubCode = EditorWindowCodeGen.GetRegisterClickedCode(CurrentSelection.name, desc.CallbackMethodName);
        }
        else
        {
            stubCode = EditorWindowCodeGen.GetRegisterCallbackCode(desc, CurrentSelection.name);
        }
        if (!registerWindowScript.text.Contains(stubCode))
        {
            Debug.Log($"Add Method {stubCode}");
            var script = EditorWindowCodeGen.GetStubbedCodeAtSecondLastIndexOfBlacket(registerWindowScript.text, stubCode);
            SaveWindowScript(windowRegisterFilePath, script);
        }

        editorWindowCodeBuilder.StubCode(desc, CurrentSelection);
    }
 public void StubCode(CodeGenDescription desc, VisualElement ve)
 {
     LoadMonoScript();
     if (desc.Type == typeof(Button))
     {
         if (!ContainsCallback(desc.CallbackMethodName))
         {
             var stubCode = EditorWindowCodeGen.GetMethodCode(
                 methodName: desc.CallbackMethodName,
                 debugLogMessage: $"{ve.name} Clicked");
             StubCodeAndSave(windowEventFilePath, monoScript.text, stubCode);
         }
     }
     else
     {
         if (!ContainsCallback(desc.CallbackMethodName))
         {
             var stubCode = EditorWindowCodeGen.GetEventMethodCode(
                 methodName: desc.CallbackMethodName,
                 eventTypeName: desc.EventTypeName,
                 debugLogMessage: $"On {desc.EventTypeName}"
                 );
             StubCodeAndSave(windowEventFilePath, monoScript.text, stubCode);
         }
     }
 }
 public static string GetRegisterCallbackCode(CodeGenDescription desc, string visualElementName)
 {
     return($"    rootVisualElement.Q<VisualElement>(\"{visualElementName}\").RegisterCallback<{desc.EventTypeName}>({desc.CallbackMethodName});");
 }