public void Update() { if (!IsOnEditor()) { return; } if (this.isSetting) { foreach (var key in KRSUtils.BindableKeys) { if (Input.GetKey(key)) { SetInputFieldValue(this.currentControl.Key, this.currentControl.Value, KRSInputAttribute.GetInputString(key.ToString(), false, this.currentReversed)); this.isSetting = false; } } for (int i = 0; i < Input.GetJoystickNames().Length; i++) { for (int j = 0; j < 10; j++) { var axis = String.Format(KRSUtils.AxisFormat, i, j); if (Math.Abs(Input.GetAxis(axis)) > 0.25f) { SetInputFieldValue(this.currentControl.Key, this.currentControl.Value, KRSInputAttribute.GetInputString(axis, true, this.currentReversed)); this.isSetting = false; } } } } else if (isClearing) { this.isClearing = false; SetInputFieldValue(this.currentControl.Key, this.currentControl.Value, ""); } else if (this.isReversing) { this.isReversing = false; var v = GetInputFieldValue(this.currentControl.Key, this.currentControl.Value); string inputName; bool inputIsAxis, inputIsReversed; if (KRSInputAttribute.GetInputDef(v, out inputName, out inputIsAxis, out inputIsReversed)) { SetInputFieldValue(this.currentControl.Key, this.currentControl.Value, KRSInputAttribute.GetInputString(inputName, inputIsAxis, this.currentReversed)); } } }
public void WindowGUI(int id) { GUI.DragWindow(new Rect(0f, 0f, 1000f, 50f)); GUILayout.BeginVertical("box"); scrollPos = GUILayout.BeginScrollView(scrollPos, false, true); foreach (var c in (KRSHinge[])UnityEngine.Object.FindObjectsOfType(typeof(KRSHinge))) { GUILayout.BeginVertical("box"); GUILayout.Label("<b>" + c.part.partInfo.title + "</b>"); foreach (var f in GetInputFieldsAttributes(c)) { string inputName; bool inputIsAxis, inputIsReversed; var fieldValue = GetInputFieldValue(c, f.Key); var active = KRSInputAttribute.GetInputDef(fieldValue, out inputName, out inputIsAxis, out inputIsReversed); var isSettingCurrent = isSetting && this.currentControl.Value == f.Key; GUILayout.BeginHorizontal("box"); GUILayout.Label(f.Value.guiName + ": "); GUILayout.Label(!isSettingCurrent ? (active ? inputName : "<i><none></i>") : "<i><press key / axis></i>"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal("box"); GUI.enabled = !(isSetting || active); if (GUILayout.Button("Set")) { this.currentControl = new KeyValuePair <KRSHinge, string>(c, f.Key); this.isSetting = true; } GUI.enabled = isSettingCurrent || active; if (GUILayout.Button("Clear")) { this.currentControl = new KeyValuePair <KRSHinge, string>(c, f.Key); this.isClearing = true; } var r = GUILayout.Toggle(inputIsReversed, "Reversed"); if (r != inputIsReversed) { this.currentControl = new KeyValuePair <KRSHinge, string>(c, f.Key); this.currentReversed = r; this.isReversing = true; } GUI.enabled = true; GUILayout.EndHorizontal(); GUILayout.Space(5); } GUILayout.EndVertical(); GUILayout.Space(5); } GUILayout.EndScrollView(); GUILayout.EndVertical(); }