// UnityEditor.UI.MenuOptions
    public static GameObject GetOrCreateCanvasGameObject()
    {
        GameObject activeGameObject = Selection.activeGameObject;
        Canvas     canvas           = (!(activeGameObject != null)) ? null : activeGameObject.GetComponentInParent <Canvas>();
        GameObject result;

        if (SpringGUIMenuOptions.IsValidCanvas(canvas))
        {
            result = canvas.gameObject;
        }
        else
        {
            Canvas[] array = StageUtility.GetCurrentStageHandle().FindComponentsOfType <Canvas>();
            for (int i = 0; i < array.Length; i++)
            {
                if (SpringGUIMenuOptions.IsValidCanvas(array[i]))
                {
                    result = array[i].gameObject;
                    return(result);
                }
            }
            result = SpringGUIMenuOptions.CreateNewUI();
        }
        return(result);
    }
    // UnityEditor.UI.MenuOptions
    public static GameObject CreateNewUI()
    {
        GameObject gameObject = new GameObject("Canvas");

        gameObject.layer = LayerMask.NameToLayer("UI");
        Canvas canvas = gameObject.AddComponent <Canvas>();

        canvas.renderMode = RenderMode.ScreenSpaceOverlay;
        gameObject.AddComponent <CanvasScaler>();
        gameObject.AddComponent <GraphicRaycaster>();
        StageUtility.PlaceGameObjectInCurrentStage(gameObject);
        bool        flag = false;
        PrefabStage currentPrefabStage = PrefabStageUtility.GetCurrentPrefabStage();

        if (currentPrefabStage != null)
        {
            gameObject.transform.SetParent(currentPrefabStage.prefabContentsRoot.transform, false);
            flag = true;
        }
        Undo.RegisterCreatedObjectUndo(gameObject, "Create " + gameObject.name);
        if (!flag)
        {
            SpringGUIMenuOptions.CreateEventSystem(false);
        }
        return(gameObject);
    }
    // UnityEditor.UI.MenuOptions
    private static void PlaceUIElementRoot(GameObject element, MenuCommand menuCommand)
    {
        GameObject gameObject = menuCommand.context as GameObject;
        bool       flag       = true;

        if (gameObject == null)
        {
            gameObject = SpringGUIMenuOptions.GetOrCreateCanvasGameObject();
            flag       = false;
            PrefabStage currentPrefabStage = PrefabStageUtility.GetCurrentPrefabStage();
            if (currentPrefabStage != null && !currentPrefabStage.IsPartOfPrefabContents(gameObject))
            {
                gameObject = currentPrefabStage.prefabContentsRoot;
            }
        }
        if (gameObject.GetComponentInParent <Canvas>() == null)
        {
            GameObject gameObject2 = SpringGUIMenuOptions.CreateNewUI();
            gameObject2.transform.SetParent(gameObject.transform, false);
            gameObject = gameObject2;
        }
        SceneManager.MoveGameObjectToScene(element, gameObject.scene);
        Undo.RegisterCreatedObjectUndo(element, "Create " + element.name);
        if (element.transform.parent == null)
        {
            Undo.SetTransformParent(element.transform, gameObject.transform, "Parent " + element.name);
        }
        GameObjectUtility.EnsureUniqueNameForSibling(element);
        Undo.SetCurrentGroupName("Create " + element.name);
        GameObjectUtility.SetParentAndAlign(element, gameObject);
        if (!flag)
        {
            SpringGUIMenuOptions.SetPositionVisibleinSceneView(gameObject.GetComponent <RectTransform>(), element.GetComponent <RectTransform>());
        }
        Selection.activeGameObject = element;
    }
 private static void CreateEventSystem(bool select)
 {
     SpringGUIMenuOptions.CreateEventSystem(select, null);
 }
    public static void CreateEventSystem(MenuCommand menuCommand)
    {
        GameObject parent = menuCommand.context as GameObject;

        SpringGUIMenuOptions.CreateEventSystem(true, parent);
    }