// ------------------ public void Draw(EmuTouchBinding bind, InputRig rig) { bool bindingEnabled = bind.enabled; EditorGUILayout.BeginVertical(); if (bindingEnabled = EditorGUILayout.ToggleLeft(this.labelContent, bindingEnabled, GUILayout.MinWidth(30))) { } EditorGUILayout.EndVertical(); if ((bindingEnabled != bind.enabled)) { CFGUI.CreateUndo("Emu Touch Binding modification.", this.undoObject); bind.enabled = bindingEnabled; CFGUI.EndUndo(this.undoObject); } }
// --------------- public void Execute() { if (this.binding == null) { return; } CFGUI.CreateUndo(this.undoLabel, this.undoObject); DigitalBinding digiBinding = (this.binding as DigitalBinding); AxisBinding analogBinding = (this.binding as AxisBinding); EmuTouchBinding touchBinding = (this.binding as EmuTouchBinding); MousePositionBinding mouseBinding = (this.binding as MousePositionBinding); //JoystickNameBinding joyNameBinding = (this.binding as JoystickNameBinding); // Digi binding... if (digiBinding != null) { if (this.digiKey != KeyCode.None) { digiBinding.Enable(); if (this.digiKeyElemId < 0) { digiBinding.AddKey(this.digiKey); } else { digiBinding.ReplaceKey(this.digiKeyElemId, this.digiKey); } } if (!string.IsNullOrEmpty(this.digiAxisName)) { digiBinding.Enable(); DigitalBinding.AxisElem elem = null; if (this.digiAxisElemId < 0) { elem = digiBinding.AddAxis(); } else { elem = digiBinding.GetAxisElem(this.digiAxisElemId); } if (elem != null) { elem.SetAxis(this.digiAxisName, this.digiBindToPositiveAxis); } } } // Analog Binding... else if (analogBinding != null) { if (!string.IsNullOrEmpty(this.analogAxisName)) { analogBinding.Enable(); AxisBinding.TargetElem elem = null; if (this.analogElemId < 0) { elem = analogBinding.AddTarget(); } else { elem = analogBinding.GetTarget(this.analogElemId); } if (elem != null) { if (this.analogSeparate) { elem.SetSeparateAxis(this.analogAxisName, this.analogPositiveSide, !this.analogFlip); } else { elem.SetSingleAxis(this.analogAxisName, this.analogFlip); } } } } // Touch Binding... else if (touchBinding != null) { touchBinding.Enable(); } // Mouse Binding... else if (mouseBinding != null) { mouseBinding.Enable(); } CFGUI.EndUndo(this.undoObject); if (this.onRefreshCallback != null) { this.onRefreshCallback(); } }
// ---------------------- static public void AddBindingContainerToMenu( GenericMenu menu, IBindingContainer bc, System.Action onRefreshCallback, BindingDescription.BindingType typeMask, string commandName, string menuPath, Object undoObject, KeyCode digiKey = KeyCode.None, string axisName = null, int axisInputSourceMask = ((1 << 16) - 1)) //bool digiBindToPositiveAxis = true) //string joyName = null) { BindingDescriptionList bindingDescList = new BindingDescriptionList(typeMask, false, axisInputSourceMask, FormatBindingMenuLabel); //bc.GetSubBindingDescriptions(bindingDescList, typeMask, undoObject, menuPath, false, axisInputSourceMask); bc.GetSubBindingDescriptions(bindingDescList, undoObject, menuPath); for (int i = 0; i < bindingDescList.Count; ++i) { BindingDescription desc = bindingDescList[i]; string itemLabel = ""; bool itemEnabled = false; DigitalBinding digiBinding = (desc.binding as DigitalBinding); AxisBinding analogBinding = (desc.binding as AxisBinding); EmuTouchBinding touchBinding = (desc.binding as EmuTouchBinding); MousePositionBinding mouseBinding = (desc.binding as MousePositionBinding); // Digi binding... if (digiBinding != null) { // o.digiKey = digiKey; // o.digiAxisName = axisName; // o.digiBindToPositiveAxis = true; if (digiKey != KeyCode.None) { AddDigitalBindingKeySubMenu(menu, digiKey, desc, onRefreshCallback); } else if (!string.IsNullOrEmpty(axisName)) { AddDigitalBindingAxisSubMenu(menu, axisName, desc, onRefreshCallback); } } // Analog binding... else if (analogBinding != null) { AddAnalogBindingAxisSubMenu(menu, axisName, desc, onRefreshCallback); } // Touch binding... else if (touchBinding != null) { UniversalBindingAssignment o = new UniversalBindingAssignment(); o.undoObject = desc.undoObject; o.binding = desc.binding; o.onRefreshCallback = onRefreshCallback; o.undoLabel = "Bind [" + desc.nameFormatted + "] to Eumlated Touch."; itemLabel = o.undoLabel; menu.AddItem(new GUIContent(desc.menuPath + itemLabel), itemEnabled, o.Execute); } // Mouse binding... else if (mouseBinding != null) { UniversalBindingAssignment o = new UniversalBindingAssignment(); o.undoObject = desc.undoObject; o.binding = desc.binding; o.onRefreshCallback = onRefreshCallback; o.undoLabel = "Bind [" + desc.nameFormatted + "] to Mouse Position."; itemLabel = o.undoLabel; menu.AddItem(new GUIContent(desc.menuPath + itemLabel), itemEnabled, o.Execute); } else { continue; } } }