// ---------------------- static public void AddAllMenuItems(GenericMenu menu, string axisName, string menuPath, InputRig rig, System.Action callback) { AddMenuItem(menu, axisName, menuPath, InputRig.AxisType.Digital, rig, callback); AddMenuItem(menu, axisName, menuPath, InputRig.AxisType.UnsignedAnalog, rig, callback); AddMenuItem(menu, axisName, menuPath, InputRig.AxisType.SignedAnalog, rig, callback); AddMenuItem(menu, axisName, menuPath, InputRig.AxisType.Delta, rig, callback); AddMenuItem(menu, axisName, menuPath, InputRig.AxisType.ScrollWheel, rig, callback); }
// ------------------ public string Draw(string labelText, string curName, InputRig rig) { return(Draw(new GUIContent(labelText, "Target Axis Name"), curName, rig)); }
// ---------------------- public void SetRig(InputRig rig) { this.rig = rig; }
// ------------------------ static public void CreateContextMenuForAxisBinding(Object panelOrRig, string axisName, /*InputRig.InputSource sourceType, */ System.Action onRefreshCallback = null) { InputRig rig = (panelOrRig as InputRig); TouchControlPanel panel = (panelOrRig as TouchControlPanel); //bool displayPanelName = false; if (panel != null) { rig = panel.rig; } else if (rig != null) { // Auto Select panel... panel = TouchControlWizardUtils.GetRigPanel(rig); //displayPanelName = true; } else { return; } List <TouchControl> controlList = rig.GetTouchControls(); GenericMenu menu = new GenericMenu(); string commandName = ("\"" + axisName + "\" axis "); menu.AddDisabledItem(new GUIContent("Actions for : " + commandName)); menu.AddSeparator(""); InputRig.AxisConfig axisConfig = rig.GetAxisConfig(axisName); if (axisConfig == null) { AxisCreationMenuItem.AddAllMenuItems(menu, axisName, "", rig, onRefreshCallback); } else { int axisSourceTypeMask = axisConfig.GetSupportedInputSourceMask(); BindingDescription.BindingType bindingTypeMask = BindingDescription.BindingType.Axis | BindingDescription.BindingType.Digital; UniversalBindingAssignment.AddBindingContainerToMenu(menu, rig, onRefreshCallback, bindingTypeMask, commandName, "Bind to Input Rig/", rig, KeyCode.None, axisName, axisSourceTypeMask); //, true); //, null); menu.AddSeparator(""); if (panel == null) { menu.AddDisabledItem(new GUIContent("Add a Touch Control Panel to this rig to create and bind commands to Touch Controls!")); } else { UniversalBindingAssignment.AddControlListBindingsToMenu(menu, controlList, onRefreshCallback, bindingTypeMask, commandName, "Bind to Touch Controls/", KeyCode.None, axisName); //, true); //, null); menu.AddSeparator(""); AddTouchControlCreationItemsToMenuForAxisOrKey(menu, panel, axisName, KeyCode.None, onRefreshCallback); } } menu.ShowAsContext(); }
public bool IsBoundToKey(KeyCode key, InputRig rig) { return(this.OnIsBoundToKey(key, rig)); }
virtual protected bool OnIsBoundToKey(KeyCode key, InputRig rig) { return(false); }
// ----------------- static public string GetUniqueButtonName(InputRig rig) { return(GetUniqueControlName(rig, typeof(ControlFreak2.TouchButton), "Button-")); }
// -------------------- bool OnIsBoundToAxis(string axisName, InputRig rig) { return((this.axisName == axisName)); }
// ------------------ public void Draw(DirectionBinding bind, InputRig rig) { bool bindingEnabled = bind.enabled, bindDiagonals = bind.bindDiagonals; DirectionBinding.BindMode bindMode = bind.bindMode; EditorGUILayout.BeginVertical(); if (bindingEnabled = EditorGUILayout.ToggleLeft(this.labelContent, bindingEnabled, GUILayout.MinWidth(30))) { CFGUI.BeginIndentedVertical(CFEditorStyles.Inst.transpSunkenBG); if (this.customPreGUI != null) { this.customPreGUI(); } bindMode = (DirectionBinding.BindMode)CFGUI.EnumPopup(new GUIContent("Bind mode"), bindMode, 70); bindDiagonals = EditorGUILayout.ToggleLeft(new GUIContent("Bind diagonals", "Bind diagonal directions separately. When turned off, diagonal directions are translated into combinations of main directions."), bindDiagonals, GUILayout.MinWidth(30)); EditorGUILayout.Space(); this.dirN.Draw(bind.dirBindingN, rig); this.dirAny.Draw(bind.dirBindingAny, rig); this.dirU.Draw(bind.dirBindingU, rig); if (bindDiagonals) { this.dirUR.Draw(bind.dirBindingUR, rig); } this.dirR.Draw(bind.dirBindingR, rig); if (bindDiagonals) { this.dirDR.Draw(bind.dirBindingDR, rig); } this.dirD.Draw(bind.dirBindingD, rig); if (bindDiagonals) { this.dirDL.Draw(bind.dirBindingDL, rig); } this.dirL.Draw(bind.dirBindingL, rig); if (bindDiagonals) { this.dirUL.Draw(bind.dirBindingUL, rig); } CFGUI.EndIndentedVertical(); GUILayout.Space(InputBindingGUIUtils.VERT_MARGIN); } EditorGUILayout.EndVertical(); if ((bindingEnabled != bind.enabled) || (bindMode != bind.bindMode) || (bindDiagonals != bind.bindDiagonals)) { CFGUI.CreateUndo("Direction Binding modification.", this.undoObject); bind.enabled = bindingEnabled; bind.bindDiagonals = bindDiagonals; bind.bindMode = bindMode; CFGUI.EndUndo(this.undoObject); } }
// ----------------- static public InputRig GetRigFromSelection(InputRig prevSel, bool searchForAnythingIfNothingIsSelected) { return((InputRig)GetComponentFromSelectionEx(typeof(InputRig), prevSel, searchForAnythingIfNothingIsSelected)); }
// ------------------ public void Draw(TouchGestureStateBinding bind, TouchGestureConfig config, InputRig rig) { bool bindingEnabled = bind.enabled; //EditorGUILayout.BeginVertical(); //if (bindingEnabled = EditorGUILayout.ToggleLeft(this.labelContent, bindingEnabled, GUILayout.MinWidth(30), GUILayout.ExpandWidth(true))) // { // CFGUI.BeginIndentedVertical(); if (InspectorUtils.BeginIndentedSection(this.labelContent, ref bindingEnabled)) { InspectorUtils.BeginIndentedSection(new GUIContent("Press bindings")); this.rawPressBinding.Draw(bind.rawPressBinding, rig); this.rawPressMousePosBindingInsp.Draw(bind.rawPressMousePosBinding, rig); EditorGUILayout.Space(); this.normalPressBinding.Draw(bind.normalPressBinding, rig); this.normalPressMousePosBindingInsp.Draw(bind.normalPressMousePosBinding, rig); EditorGUILayout.Space(); if ((config == null) || config.detectLongPress) { this.longPressBinding.Draw(bind.longPressBinding, rig); this.longPressMousePosBindingInsp.Draw(bind.longPressMousePosBinding, rig); } EditorGUILayout.Space(); this.rawPressEmuTouchInsp.Draw(bind.rawPressEmuTouchBinding, rig); this.normalPressEmuTouchInsp.Draw(bind.normalPressEmuTouchBinding, rig); if ((config == null) || config.detectLongPress) { this.longPressEmuTouchInsp.Draw(bind.longPressEmuTouchBinding, rig); } InspectorUtils.EndIndentedSection(); if ((config == null) || (config.maxTapCount >= 1) || (config.detectLongTap)) { InspectorUtils.BeginIndentedSection(new GUIContent("Tap bindings")); if ((config == null) || (config.maxTapCount >= 1)) { this.tapBinding.Draw(bind.tapBinding, rig); this.tapMousePosBindingInsp.Draw(bind.tapMousePosBinding, rig); EditorGUILayout.Space(); } if ((config == null) || (config.maxTapCount >= 2)) { this.doubleTapBinding.Draw(bind.doubleTapBinding, rig); this.doubleTapMousePosBindingInsp.Draw(bind.doubleTapMousePosBinding, rig); EditorGUILayout.Space(); } if ((config == null) || (config.detectLongPress && config.detectLongTap)) { this.longTapBinding.Draw(bind.longTapBinding, rig); this.longTapMousePosBindingInsp.Draw(bind.longTapMousePosBinding, rig); EditorGUILayout.Space(); } InspectorUtils.EndIndentedSection(); } InspectorUtils.BeginIndentedSection(new GUIContent("Swipe bindings")); this.normalPressSwipeHorzAxisBinding.Draw(bind.normalPressSwipeHorzAxisBinding, rig); this.normalPressSwipeVertAxisBinding.Draw(bind.normalPressSwipeVertAxisBinding, rig); this.normalPressSwipeMousePosBindingInsp.Draw(bind.normalPressSwipeMousePosBinding, rig); this.normalPressSwipeDirBinding.Draw(bind.normalPressSwipeDirBinding, rig); this.normalPressSwipeJoyBinding.Draw(bind.normalPressSwipeJoyBinding, rig); if ((config == null) || config.detectLongPress) { this.longPressSwipeHorzAxisBinding.Draw(bind.longPressSwipeHorzAxisBinding, rig); this.longPressSwipeVertAxisBinding.Draw(bind.longPressSwipeVertAxisBinding, rig); this.longPressSwipeMousePosBindingInsp.Draw(bind.longPressSwipeMousePosBinding, rig); this.longPressSwipeDirBinding.Draw(bind.longPressSwipeDirBinding, rig); this.longPressSwipeJoyBinding.Draw(bind.longPressSwipeJoyBinding, rig); } InspectorUtils.EndIndentedSection(); InspectorUtils.BeginIndentedSection(new GUIContent("Scroll bindings")); this.normalPressScrollHorzBinding.Draw(bind.normalPressScrollHorzBinding, rig); this.normalPressScrollVertBinding.Draw(bind.normalPressScrollVertBinding, rig); if ((config == null) || config.detectLongPress) { this.longPressScrollHorzBinding.Draw(bind.longPressScrollHorzBinding, rig); this.longPressScrollVertBinding.Draw(bind.longPressScrollVertBinding, rig); } InspectorUtils.EndIndentedSection(); if (this.customPostGUICallback != null) { InspectorUtils.BeginIndentedSection(new GUIContent("Other")); this.customPostGUICallback(); InspectorUtils.EndIndentedSection(); } InspectorUtils.EndIndentedSection(); //CFGUI.EndIndentedVertical(); //GUILayout.Space(InputBindingGUIUtils.VERT_MARGIN); } //EditorGUILayout.EndVertical(); if ((bindingEnabled != bind.enabled)) { CFGUI.CreateUndo("Touch Binding modification.", this.undoObject); bind.enabled = bindingEnabled; CFGUI.EndUndo(this.undoObject); } }
// ------------------------ static public void CreateContextMenuForKeyBinding(Object panelOrRig, KeyCode key, System.Action onRefreshCallback = null) { InputRig rig = (panelOrRig as InputRig); TouchControlPanel panel = (panelOrRig as TouchControlPanel); string axisName = null; //bool displayPanelName = false; if (panel != null) { rig = panel.rig; } else if (rig != null) { // Auto Select panel... panel = TouchControlWizardUtils.GetRigPanel(rig); //displayPanelName = true; } else { return; } List <TouchControl> controlList = rig.GetTouchControls(); GenericMenu menu = new GenericMenu(); string commandName = (string.IsNullOrEmpty(axisName) ? ("\"" + key.ToString() + "\" keycode ") : ("\"" + axisName + "\" axis ")); menu.AddDisabledItem(new GUIContent("Actions for : " + commandName)); menu.AddSeparator(""); { UniversalBindingAssignment.AddBindingContainerToMenu(menu, rig, onRefreshCallback, BindingDescription.BindingType.Digital, commandName, "Bind to Input Rig/", rig, key, null); //, null); menu.AddSeparator(""); if (panel == null) { menu.AddDisabledItem(new GUIContent("Add a Touch Control Panel to this rig to create and bind commands to Touch Controls!")); } else { UniversalBindingAssignment.AddControlListBindingsToMenu(menu, controlList, onRefreshCallback, BindingDescription.BindingType.Digital, commandName, "Bind to Touch Controls/", key, null); // true); //, null); menu.AddSeparator(""); AddTouchControlCreationItemsToMenuForAxisOrKey(menu, panel, null, key, onRefreshCallback); } } menu.ShowAsContext(); }
// ---------------------- static public void AddMenuItem(GenericMenu menu, string axisName, string menuPath, InputRig.AxisType axisType, InputRig rig, System.Action callback) { AxisCreationMenuItem o = new AxisCreationMenuItem(); string itemName = ""; o.axisName = axisName; o.axisType = axisType; o.callback = callback; o.rig = rig; itemName = "Create \"" + axisName + "\" " + axisType.ToString() + " axis!"; menu.AddItem(new GUIContent(menuPath + itemName), false, o.Execute); }
// ----------------- override protected bool OnIsBoundToKey(KeyCode keycode, InputRig rig) { return(this.enabled && (this.keyList.Count > 0) && (this.keyList.IndexOf(keycode) >= 0)); //(this.key == keycode)); }
static public string GetUniqueJoystickName(InputRig rig) { return(GetUniqueControlName(rig, typeof(ControlFreak2.TouchJoystick), "Joystick-")); }
// -------------------- override protected bool OnIsBoundToAxis(string axisName, InputRig rig) { return(this.enabled && (this.axisList.Count > 0) && (this.axisList.FindIndex(x => (x.axisName == axisName)) >= 0)); //(this.axisName == axisName)); }
static public string GetUniqueTrackPadName(InputRig rig) { return(GetUniqueControlName(rig, typeof(ControlFreak2.TouchTrackPad), "TrackPad-")); }
public bool IsBoundToAxis(string axisName, InputRig rig) { return(this.OnIsBoundToAxis(axisName, rig)); }
static public string GetUniqueWheelName(InputRig rig) { return(GetUniqueControlName(rig, typeof(ControlFreak2.TouchSteeringWheel), "Wheel-")); }
virtual protected bool OnIsBoundToAxis(string axisName, InputRig rig) { return(false); }
static public string GetUniqueTouchZoneName(InputRig rig) { return(GetUniqueControlName(rig, typeof(ControlFreak2.SuperTouchZone), "TouchZone-")); }
// --------------------- public bool IsInEffect(InputRig rig) { return(rig.rigSwitches.GetSwitchState(this.name, ref this.cachedId, this.disableWhenSwitchIsOff) != this.disableWhenSwitchIsOff); }
static public string GetUniqueTouchSplitterName(InputRig rig) { return(GetUniqueControlName(rig, typeof(ControlFreak2.TouchSplitter), "TouchSplitter-")); }
// ----------------- public SwitchCreationParams(InputRig rig, string name) { this.rig = rig; this.name = name; }
// ----------------- public AxisCreationParams(InputRig rig, string name, InputRig.AxisType axisType) { this.rig = rig; this.name = name; this.axisType = axisType; }
// ------------------------ static public void CreateContextMenuForMousePositionBinding(Object panelOrRig, System.Action onRefreshCallback = null) { InputRig rig = (panelOrRig as InputRig); TouchControlPanel panel = (panelOrRig as TouchControlPanel); //bool displayPanelName = false; if (panel != null) { rig = panel.rig; } else if (rig != null) { // Auto Select panel... panel = TouchControlWizardUtils.GetRigPanel(rig); //displayPanelName = true; } else { return; } List <TouchControl> controlList = rig.GetTouchControls(); GenericMenu menu = new GenericMenu(); string commandName = ("Mouse Position "); menu.AddDisabledItem(new GUIContent("Actions for : " + commandName)); menu.AddSeparator(""); UniversalBindingAssignment.AddBindingContainerToMenu(menu, rig, onRefreshCallback, BindingDescription.BindingType.MousePos, commandName, "Bind to Input Rig/", rig); menu.AddSeparator(""); if (panel == null) { menu.AddDisabledItem(new GUIContent("Add a Touch Control Panel to this rig to create and bind commands to Touch Controls!")); } else { UniversalBindingAssignment.AddControlListBindingsToMenu(menu, controlList, onRefreshCallback, BindingDescription.BindingType.MousePos, commandName, "Bind to Touch Controls/"); menu.AddSeparator(""); int mouseTargetMaxId = CFUtils.GetEnumMaxValue(typeof(SuperTouchZoneCreationWizard.BindingSetup.MouseBindingTarget)); for (int i = 1; i <= 2; ++i) { for (int j = 1; j <= mouseTargetMaxId; ++j) { SuperTouchZoneCreationWizard.BindingSetup.MouseBindingTarget mouseTarget = (SuperTouchZoneCreationWizard.BindingSetup.MouseBindingTarget)j; WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone with " + commandName + "bound to [" + ((i == 1) ? "Single-finger" : "Two-finger") + mouseTarget.ToString() + "]...", panel, typeof(SuperTouchZoneCreationWizard), SuperTouchZoneCreationWizard.BindingSetup.MousePos(i, mouseTarget), onRefreshCallback); } } menu.AddSeparator("Create a Super Touch Zone/"); WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone...", panel, typeof(SuperTouchZoneCreationWizard), null, onRefreshCallback); } menu.ShowAsContext(); }
// ------------------------ static public void CreateContextMenuForEmuTouchBinding(Object panelOrRig, System.Action onRefreshCallback = null) { InputRig rig = (panelOrRig as InputRig); TouchControlPanel panel = (panelOrRig as TouchControlPanel); //bool displayPanelName = false; if (panel != null) { rig = panel.rig; } else if (rig != null) { // Auto Select panel... panel = TouchControlWizardUtils.GetRigPanel(rig); //displayPanelName = true; } else { return; } List <TouchControl> controlList = rig.GetTouchControls(); GenericMenu menu = new GenericMenu(); string commandName = ("Emuulated Touch "); menu.AddDisabledItem(new GUIContent("Actions for : " + commandName)); menu.AddSeparator(""); UniversalBindingAssignment.AddBindingContainerToMenu(menu, rig, onRefreshCallback, BindingDescription.BindingType.EmuTouch, commandName, "Bind to Input Rig/", rig); menu.AddSeparator(""); if (panel == null) { menu.AddDisabledItem(new GUIContent("Add a Touch Control Panel to this rig to create and bind commands to Touch Controls!")); } else { UniversalBindingAssignment.AddControlListBindingsToMenu(menu, controlList, onRefreshCallback, BindingDescription.BindingType.EmuTouch, commandName, "Bind to Touch Controls/"); menu.AddSeparator(""); WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone with " + commandName + "bound to [Single-finger Touch]...", panel, typeof(SuperTouchZoneCreationWizard), SuperTouchZoneCreationWizard.BindingSetup.EmuTouch(1), onRefreshCallback); WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone with " + commandName + "bound to [Two-finger Touch]...", panel, typeof(SuperTouchZoneCreationWizard), SuperTouchZoneCreationWizard.BindingSetup.EmuTouch(2), onRefreshCallback); menu.AddSeparator("Create a Super Touch Zone/"); WizardMenuItem.AddToMenu(menu, "Create a Super Touch Zone/Super Touch Zone...", panel, typeof(SuperTouchZoneCreationWizard), null, onRefreshCallback); } menu.ShowAsContext(); }