Exemplo n.º 1
0
            internal static void SpawnDefaultTools(IProxy proxy)
            {
                var vacuumables  = evr.GetNestedModule <Vacuumables>();
                var lockModule   = evr.GetModule <LockModule>();
                var defaultTools = evr.m_DefaultTools;

                foreach (var deviceData in evr.m_DeviceData)
                {
                    var      inputDevice       = deviceData.inputDevice;
                    ToolData selectionToolData = null;

                    if (deviceData.proxy != proxy)
                    {
                        continue;
                    }

                    foreach (var toolType in defaultTools)
                    {
                        HashSet <InputDevice> devices;
                        var toolData = SpawnTool(toolType, out devices, inputDevice);
                        AddToolToDeviceData(toolData, devices);

                        var tool          = toolData.tool;
                        var selectionTool = tool as SelectionTool;
                        if (selectionTool)
                        {
                            selectionToolData      = toolData;
                            selectionTool.hovered += lockModule.OnHovered;
                        }

                        var vacuumTool = tool as VacuumTool;
                        if (vacuumTool)
                        {
                            vacuumTool.defaultOffset = WorkspaceModule.DefaultWorkspaceOffset;
                            vacuumTool.defaultTilt   = WorkspaceModule.DefaultWorkspaceTilt;
                            vacuumTool.vacuumables   = vacuumables.vacuumables;
                        }
                    }

                    var menuHideData = deviceData.menuHideData;
                    var mainMenu     = Menus.SpawnMainMenu(typeof(MainMenu), inputDevice, false, out deviceData.mainMenuInput);
                    deviceData.mainMenu    = mainMenu;
                    menuHideData[mainMenu] = new Menus.MenuHideData();

                    var alternateMenu = Menus.SpawnAlternateMenu(typeof(RadialMenu), inputDevice, out deviceData.alternateMenuInput);
                    deviceData.alternateMenu       = alternateMenu;
                    menuHideData[alternateMenu]    = new Menus.MenuHideData();
                    alternateMenu.itemWasSelected += Menus.UpdateAlternateMenuOnSelectionChanged;

                    // Setup ToolsMenu
                    var toolsMenu = Menus.SpawnToolsMenu(typeof(Experimental.EditorVR.Menus.ToolsMenu), inputDevice, out deviceData.toolsMenuInput);
                    deviceData.ToolsMenu = toolsMenu;
                    toolsMenu.rayOrigin  = deviceData.rayOrigin;
                    toolsMenu.setButtonForType(typeof(IMainMenu), null);
                    toolsMenu.setButtonForType(typeof(SelectionTool), selectionToolData != null ? selectionToolData.icon : null);
                }

                evr.GetModule <DeviceInputModule>().UpdatePlayerHandleMaps();
            }
Exemplo n.º 2
0
            internal void SpawnDefaultTools(IProxy proxy)
            {
                var vacuumables  = evr.GetNestedModule <Vacuumables>();
                var lockModule   = evr.GetModule <LockModule>();
                var defaultTools = evr.m_DefaultTools;

                foreach (var deviceData in evr.m_DeviceData)
                {
                    var      inputDevice       = deviceData.inputDevice;
                    ToolData selectionToolData = null;

                    if (deviceData.proxy != proxy)
                    {
                        continue;
                    }

                    var rayOrigin = deviceData.rayOrigin;
                    foreach (var toolType in defaultTools)
                    {
                        HashSet <InputDevice> devices;
                        var toolData = SpawnTool(toolType, out devices, inputDevice, rayOrigin);
                        AddToolToDeviceData(toolData, devices);

                        var tool          = toolData.tool;
                        var selectionTool = tool as SelectionTool;
                        if (selectionTool)
                        {
                            selectionToolData      = toolData;
                            selectionTool.hovered += lockModule.OnHovered;
                        }

                        var vacuumTool = tool as VacuumTool;
                        if (vacuumTool)
                        {
                            vacuumTool.defaultOffset = WorkspaceModule.DefaultWorkspaceOffset;
                            vacuumTool.defaultTilt   = WorkspaceModule.DefaultWorkspaceTilt;
                            vacuumTool.vacuumables   = vacuumables.vacuumables;
                        }
                    }

                    IMainMenu mainMenu     = null;
                    var       menus        = evr.GetNestedModule <Menus>();
                    var       menuHideData = deviceData.menuHideData;
                    if (DefaultMenu != null)
                    {
                        mainMenu               = (IMainMenu)menus.SpawnMenu(DefaultMenu, rayOrigin);
                        deviceData.mainMenu    = mainMenu;
                        menuHideData[mainMenu] = new Menus.MenuHideData();
                    }

                    if (DefaultAlternateMenu != null)
                    {
                        var alternateMenu = (IAlternateMenu)menus.SpawnMenu(DefaultAlternateMenu, rayOrigin);
                        menuHideData[alternateMenu] = new Menus.MenuHideData();
                        var radialMenu = alternateMenu as RadialMenu;
                        if (radialMenu)
                        {
                            radialMenu.itemWasSelected += Menus.UpdateAlternateMenuOnSelectionChanged;
                        }
                    }

                    var undoMenu = menus.SpawnMenu <UndoMenu>(rayOrigin);
                    var hideData = new Menus.MenuHideData();
                    menuHideData[undoMenu] = hideData;
                    hideData.hideFlags     = 0;

                    // Setup ToolsMenu
                    Experimental.EditorVR.Menus.ToolsMenu toolsMenu = null;
                    var toolsMenus = evr.gameObject.GetComponents <Experimental.EditorVR.Menus.ToolsMenu>();
                    foreach (var m in toolsMenus)
                    {
                        if (!m.enabled)
                        {
                            toolsMenu = m;
                            break;
                        }
                    }

                    if (!toolsMenu)
                    {
                        toolsMenu = ObjectUtils.AddComponent <Experimental.EditorVR.Menus.ToolsMenu>(evr.gameObject);
                    }

                    toolsMenu.enabled = true;
                    this.ConnectInterfaces(toolsMenu, rayOrigin);
                    deviceData.toolsMenu = toolsMenu;
                    toolsMenu.rayOrigin  = rayOrigin;
                    toolsMenu.setButtonForType(typeof(IMainMenu), null);
                    toolsMenu.setButtonForType(typeof(SelectionTool), selectionToolData != null ? selectionToolData.icon : null);

                    var spatialMenu = ObjectUtils.AddComponent <SpatialMenu>(evr.gameObject);
                    this.ConnectInterfaces(spatialMenu, rayOrigin);
                    spatialMenu.Setup();
                }

                evr.GetModule <DeviceInputModule>().UpdatePlayerHandleMaps();
            }