public void LateBindInterfaceMethods(Tools provider) { m_MainMenuTools = provider.allTools.Where(t => { return(!Tools.IsDefaultTool(t) && !HiddenTypes.Contains(t)); }).ToList(); // Don't show tools that can't be selected/toggled }
public void ConnectInterface(object target, object userData = null) { var rayOrigin = userData as Transform; var settingsMenuProvider = target as ISettingsMenuProvider; if (settingsMenuProvider != null) { m_SettingsMenuProviders[new KeyValuePair <Type, Transform>(target.GetType(), rayOrigin)] = settingsMenuProvider; foreach (var kvp in m_MainMenus) { if (rayOrigin == null || kvp.Key == rayOrigin) { kvp.Value.AddSettingsMenu(settingsMenuProvider); } } } var settingsMenuItemProvider = target as ISettingsMenuItemProvider; if (settingsMenuItemProvider != null) { m_SettingsMenuItemProviders[new KeyValuePair <Type, Transform>(target.GetType(), rayOrigin)] = settingsMenuItemProvider; foreach (var kvp in m_MainMenus) { if (rayOrigin == null || kvp.Key == rayOrigin) { kvp.Value.AddSettingsMenuItem(settingsMenuItemProvider); } } } var mainMenu = target as IMainMenu; if (mainMenu != null && rayOrigin != null) { mainMenu.menuTools = m_MainMenuTools; mainMenu.menuWorkspaces = WorkspaceModule.workspaceTypes.Where(t => !HiddenTypes.Contains(t)).ToList(); mainMenu.settingsMenuProviders = m_SettingsMenuProviders; mainMenu.settingsMenuItemProviders = m_SettingsMenuItemProviders; m_MainMenus[rayOrigin] = mainMenu; } var menuOrigins = target as IUsesMenuOrigins; if (menuOrigins != null) { Transform mainMenuOrigin; var proxy = Rays.GetProxyForRayOrigin(rayOrigin); if (proxy != null && proxy.menuOrigins.TryGetValue(rayOrigin, out mainMenuOrigin)) { menuOrigins.menuOrigin = mainMenuOrigin; Transform alternateMenuOrigin; if (proxy.alternateMenuOrigins.TryGetValue(rayOrigin, out alternateMenuOrigin)) { menuOrigins.alternateMenuOrigin = alternateMenuOrigin; } } } var alternateMenu = target as IAlternateMenu; if (alternateMenu != null) { AddAlternateMenu(alternateMenu, rayOrigin); } var spatialMenuProvider = target as ISpatialMenuProvider; if (spatialMenuProvider != null) { SpatialMenu.AddProvider(spatialMenuProvider); } }