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(); }
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(); }