public void ProcessInvalidations(bool force = false)
    {
        if (force || (invalidationRequestedAt > 0 && EditorApplication.timeSinceStartup - invalidationRequestedAt > 0.1f))
        {
            frame = null;
            invalidationRequestedAt = 0;
            if (invalidatedTransformation != null)
            {
                if (editorModelFactorySource == invalidatedTransformation as NPVoxIModelFactory)
                {
                    EditorModelFactory.Invalidate();
                }

                SelectedFrame.InvalidateTransformation(invalidatedTransformation);
                invalidatedTransformation = null;
            }
            if (ModelMarker != null)
            {
                ModelMarker.Invalidate();
            }
            PreviewMeshOutput.Invalidate();
            invalidatePreviewMeshFactories();
            FireOnMeshChange();
        }
        else
        {
            if (invalidationRequestedAt > 0)
            {
                if (OnCheckForInvalidation != null)
                {
                    OnCheckForInvalidation();
                }
            }
        }
    }
    public void OnUndoPerformed()
    {
//        if (SelectedFrame != null && SelectedTransformer != null)
//        {
//            SelectedFrame.InvalidateTransformation(SelectedTransformer);
//        }
//        if (EditorModelFactory != null)
//        {
//            EditorModelFactory.Invalidate();
//        }
        InvalidateOutputMeshes(SelectedTransformer, true);
        if (ModelMarker != null)
        {
            ModelMarker.Invalidate();
        }
    }