public void DestroyExportedModel(CSGModelExported exportedModel, bool undoable = false)
        {
            if (UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode)
            {
                return;
            }

            if (undoable)            // && exportedModel)
            {
                UnityEditor.Undo.RegisterCompleteObjectUndo(exportedModel, "Destroying model");
            }

            if (exportedModel.hiddenComponents != null)
            {
                foreach (var hiddenComponent in exportedModel.hiddenComponents)
                {
                    var behaviour = hiddenComponent.behaviour;
                    if (!behaviour)
                    {
                        continue;
                    }

                    if (undoable)
                    {
                        UnityEditor.Undo.DestroyObjectImmediate(behaviour);
                    }
                    else
                    {
                        UnityEngine.Object.DestroyImmediate(behaviour);
                    }
                }
            }

            if (exportedModel.containedModel)
            {
                if (undoable)
                {
                    UnityEditor.Undo.DestroyObjectImmediate(exportedModel.containedModel);
                }
                else
                {
                    UnityEngine.Object.DestroyImmediate(exportedModel.containedModel);
                }
            }
        }
        public static void ReverseExport(CSGModelExported exported)
        {
            if (exported.hiddenComponents != null)
            {
                for (var i = exported.hiddenComponents.Length - 1; i >= 0; i--)
                {
                    if (!exported.hiddenComponents[i].behaviour)
                    {
                        continue;
                    }

                    Undo.RegisterCompleteObjectUndo(exported.hiddenComponents[i].behaviour, "Show hidden component");
                    exported.hiddenComponents[i].behaviour.enabled   = exported.hiddenComponents[i].enabled;
                    exported.hiddenComponents[i].behaviour.hideFlags = exported.hiddenComponents[i].hideFlags;
                }
            }
            if (exported.containedExportedModel)
            {
                UnityEditor.Undo.DestroyObjectImmediate(exported.containedExportedModel);
            }
        }