示例#1
0
    void _initializeProgram()
    {
        storedProg = null; prog = null; progGUI = null;

        // Look for a program stored in the asset.
        storedProg = KMImportSettings.ProgramForMesh(assetGUID, meshPath);
        if (storedProg != null)
        {
            // Create a copy of the program to work with.
            prog = ScriptableObject.CreateInstance <KMProcessorProgram>();
            EditorUtility.CopySerialized(storedProg, prog);
            int numProcessors = prog.processors.Length;
            for (int i = 0; i < numProcessors; ++i)
            {
                KrablMesh.Processor proc  = prog.processors[i];
                KrablMesh.Processor clone = ScriptableObject.CreateInstance(proc.GetType()) as KrablMesh.Processor;
                EditorUtility.CopySerialized(proc, clone);
                clone.hideFlags    = HideFlags.DontSave;
                prog.processors[i] = clone;
            }

            prog.hideFlags = HideFlags.DontSave;

            progGUI = (KMProcessorProgramGUI)Editor.CreateEditor(prog);

            if (progGUI != null)
            {
                progGUI.usedByMeshImporter = true;
            }
        }
    }
示例#2
0
    void OnDisable()
    {
        //Debug.Log("Inspector OnDisable workingObj: " + workingObj + " isPLaying " + Application.isPlaying);

        if (hasChanges && EditorUtility.DisplayDialog("Unapplied import settings",
                                                      "Unapplied import settings for '" + assetPath + "'",
                                                      "Apply",
                                                      "Revert"))
        {
            _applyProgramChanges();
        }
        if (prog != null)
        {
            // First destroy the processors
            KrablMesh.Processor[] procs = prog.processors;
            for (int i = 0; i < procs.Length; ++i)
            {
                DestroyImmediate(procs[i]);
            }
            DestroyImmediate(prog);
            prog = null;
        }
        if (progGUI != null)
        {
            DestroyImmediate(progGUI);
            progGUI = null;
        }
    }
示例#3
0
    // Called from progGUI
    public void DeleteProgram()
    {
        if (prog == null)
        {
            return;
        }
        bool del = true;

        if (prog.processors.Length > 0)
        {
            del = EditorUtility.DisplayDialog("Delete Import Program", "Do you want to permanently delete this mesh import program?", "Delete", "Cancel");
        }
        if (del)
        {
            if (storedProg != null)
            {
                EditorUtility.DisplayProgressBar(KMImportProcessor.ProgressTitle(prog), "Unity3D reimports model file", 0.0f);
                KMImportSettings.RemoveProgram(storedProg);

                // Trigger model reimport
                AssetDatabase.ImportAsset(assetPath);
                EditorUtility.ClearProgressBar();
            }
            prog       = null; progGUI = null;
            storedProg = null;
        }
    }
示例#4
0
 void OnEnable()
 {
     // Debug.Log("Inspector OnEnable workingObj " + workingObj);
     storedProg         = null;
     prog               = null;
     hasChanges         = false;
     progGUI            = null;
     searchedForProgram = false;
     meshPath           = null;
     mesh               = null;
     // Don't fetch the prog here, as this will break the intial library buildup as it creates the settings before they are imported .. when creating previews
 }
示例#5
0
 void AddProgram()
 {
     // Create an empty program in memory
     prog = KMImportSettings.CreateProgram(assetGUID, meshPath, mesh);
     // Now create the GUI
     progGUI = (KMProcessorProgramGUI)Editor.CreateEditor(prog);
     if (progGUI != null)
     {
         progGUI.usedByMeshImporter = true;
     }
     hasChanges = true;
 }