public string Draw(GUIContent labelContent, string curName, InputRig rig) { EditorGUILayout.BeginHorizontal(); if (labelContent.text.Length > 0) { EditorGUILayout.LabelField(labelContent); //, GUILayout.Width(40)); } string s = EditorGUILayout.TextField(curName, GUILayout.MinWidth(20), GUILayout.ExpandWidth(true)); bool buttonPressed = false; InputRig.AxisConfig axisConfig = (rig == null) ? null : rig.GetAxisConfig(s, ref this.cachedAxisId); float buttonWidth = 16; //float buttonHeight = 16; GUIContent buttonContent; if (rig == null) { buttonContent = new GUIContent(string.Empty, CFEditorStyles.Inst.texError, "No rig attached!"); } else if (axisConfig == null) { buttonContent = new GUIContent(string.Empty, CFEditorStyles.Inst.texError, "Axis not found!"); //, CFEditorStyles.Inst.iconError); } else if (!axisConfig.DoesSupportInputSource(this.inputSource)) { buttonContent = new GUIContent(string.Empty, CFEditorStyles.Inst.texWarning, "Target axis is incompatible!"); //, CFEditorStyles.Inst.iconOkWarning); } else { buttonContent = new GUIContent(string.Empty, CFEditorStyles.Inst.texOk, "Axis name is ok!"); //, CFEditorStyles.Inst.iconOk); } buttonPressed = GUILayout.Button(buttonContent, CFEditorStyles.Inst.iconButtonStyle, GUILayout.Width(buttonWidth)); //, GUILayout.Height(buttonHeight)); EditorGUILayout.EndHorizontal(); // Show context menu... if (buttonPressed) { this.ShowContextMenu(s, rig); } // Apply the name selected via context menu.. if (this.menuSelectedName != null) { s = this.menuSelectedName; this.menuSelectedName = null; EditorGUI.FocusTextInControl(""); } return(s); }
// ------------------ private void ShowContextMenu(string curName, InputRig rig) { if (rig == null) { return; } GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("Select rig"), false, this.OnMenuSelectRig, rig); //menu.AddDisabledItem(new GUIContent("Available axes:")); InputRig.AxisConfig axisConfig = rig.GetAxisConfig(curName, ref this.cachedAxisId); if ((curName.Length > 0) && (axisConfig == null)) { menu.AddSeparator(""); menu.AddItem(new GUIContent("Create \"" + curName + "\" Digital Axis"), false, this.OnMenuCreateAxis, new AxisCreationParams(rig, curName, InputRig.AxisType.Digital)); menu.AddItem(new GUIContent("Create \"" + curName + "\" Unsigned Analog Axis"), false, this.OnMenuCreateAxis, new AxisCreationParams(rig, curName, InputRig.AxisType.UnsignedAnalog)); menu.AddItem(new GUIContent("Create \"" + curName + "\" Signed Analog Axis"), false, this.OnMenuCreateAxis, new AxisCreationParams(rig, curName, InputRig.AxisType.SignedAnalog)); menu.AddItem(new GUIContent("Create \"" + curName + "\" Delta"), false, this.OnMenuCreateAxis, new AxisCreationParams(rig, curName, InputRig.AxisType.Delta)); menu.AddItem(new GUIContent("Create \"" + curName + "\" Scroll"), false, this.OnMenuCreateAxis, new AxisCreationParams(rig, curName, InputRig.AxisType.ScrollWheel)); } menu.AddSeparator(""); for (int i = 0; i < rig.axes.list.Count; ++i) { InputRig.AxisConfig axis = rig.axes.list[i]; if (axis.DoesSupportInputSource(this.inputSource)) { menu.AddItem(new GUIContent("Use \"" + axis.name + "\""), (axis.name == curName), this.OnMenuNameSelected, axis.name); } } menu.ShowAsContext(); }