protected void f(j A_0) { global::u.c("handleGetElementsBound" + A_0.c); ComponentField componentField = JsonParser.Deserialization <ComponentField>(A_0); GameObject gameObject = GameObjectManager.INSTANCE.FindGameObjectGlobal(componentField.instance); if (gameObject == null) { A_0.f = ResponseStatus.GAMEOBJ_NOT_EXIST; } else { try { object componentAttribute = ReflectionTools.GetComponentAttribute(gameObject, componentField.comopentName, componentField.attributeName); if (componentAttribute != null) { A_0.b = componentAttribute.ToString(); } } catch (Exception ex) { A_0.f = ResponseStatus.REFLECTION_ERROR; A_0.b = ex.Message; } } global::o.a(A_0); }
List <ComponentField> getFields(XElement componentElement) { List <ComponentField> fields = new List <ComponentField>(); if (componentElement.HasElements) { IEnumerable <XElement> xmlFieldElements = componentElement.Descendants("field"); foreach (XElement fieldElement in xmlFieldElements) { ComponentField componentField = new ComponentField((string)fieldElement.Attribute("Name"), InjectMethod.Field); fields.Add(componentField); } IEnumerable <XElement> xmlParameterElements = componentElement.Descendants("parameter"); foreach (XElement parameterElement in xmlParameterElements) { ComponentField componentField = new ComponentField((string)parameterElement.Attribute("Name"), InjectMethod.Constructor); string value = (string)parameterElement.Attribute("Value"); if (value != null) { componentField.Value = value; } fields.Add(componentField); } } return(fields); }
private void comCb_SelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBox cb = sender as ComboBox; ComponentField cf = cb.Tag as ComponentField; cf.SetValue(cb.SelectedIndex == 0 ? "true" : "false"); }
private void VecElement_EnterKeyDown(object sender, KeyEventArgs e) { Vector3Control vc = sender as Vector3Control; ComponentField cf = vc.Tag as ComponentField; cf.SetValue(vc.X + "," + vc.Y + "," + vc.Z); }
internal static Result <BaseField> TrySetField(BaseField field, ElementIndex elementIndex, string newValue, bool navigateSubField = true) { BaseField?returnValue = null; bool subFieldWasSet = false; if (navigateSubField && elementIndex.SubFieldIndex?.HasValue == true) { if (!(field is RepetitionField repField)) { return(ErrorReturn <BaseField>($"failed to find RepetitionField on message with {elementIndex}")); } List <BaseField>?fields = repField.Repetitions?.ToList(); if (fields == null) { return(ErrorReturn <BaseField>($"Attempted to set field, but there was no field collection found at {elementIndex}")); } if (!TryGetField(fields !, elementIndex.SubFieldIndex, out int foundIndex).DecomposeResult(out BaseField innerField, out string?error)) { return(ErrorReturn <BaseField>(error ?? "Unknown error getting field")); } if (!TrySetField(innerField, elementIndex, newValue, false).DecomposeResult(out var result, out error)) { return(ErrorReturn <BaseField>(error ?? "Unknown error setting field")); } fields[foundIndex - 1] = result; returnValue = new RepetitionField(repField, fields); subFieldWasSet = true; } if (!subFieldWasSet)//prevents trying to do this twice in recursion scenarios for RepetitionFields { if (elementIndex.ComponentIndex?.HasValue == true) { if (!(field is ComponentField componentField)) { return(ErrorReturn <BaseField>($"failed to find component({elementIndex.ComponentIndex}) on message with {elementIndex}, as the field was not found")); } if (!TryGetComponent(componentField, elementIndex.ComponentIndex, out int fieldIndex).DecomposeResult(out BaseComponent component, out string?error)) { return(ErrorReturn <BaseField>(error ?? "unknown error getting component")); } if (!TrySetComponent(component, newValue, elementIndex).DecomposeResult(out var result, out error)) { return(ErrorReturn <BaseField>(error ?? "Unknown error setting component")); } List <BaseComponent> components = componentField.Components.ToList(); components[fieldIndex - 1] = result; returnValue = new ComponentField(componentField, components); } else//probably value field - but override the whole value anyway { returnValue = CreateField(field.Encoding, newValue); } } if (returnValue == null) { return(ErrorReturn <BaseField>($"attempted to set field {elementIndex}, but failed to make any updates")); } return(new Result <BaseField>(returnValue !, null)); }
private void comNumTb__KeyUp(object sender, KeyEventArgs e) { if (e.Key != Key.Enter) { return; } NumberTextBox tb = sender as NumberTextBox; ComponentField cf = tb.Tag as ComponentField; cf.SetValue(tb.Text); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { label = EditorGUI.BeginProperty(position, label, property); UnityEngine.Object comp = (UnityEngine.Object)Introspector.GetParent(property); ComponentField componentField = (ComponentField)Introspector.GetValue(comp, property.name); EditorGUI.HelpBox(position, "", MessageType.None); // label position.height = 16; EditorGUI.PrefixLabel(position, label); // component Component originalComponent = componentField.component; EditorGUI.indentLevel += 1; position.y += 16; int buttonWidth = 50; Rect tempPosition = position; tempPosition.width -= buttonWidth + 3; EditorGUI.PropertyField(tempPosition, property.FindPropertyRelative("component")); // button tempPosition.x = tempPosition.x + tempPosition.width + 3; tempPosition.width = buttonWidth; bool copiedComponent = stEditor.clipboard is Component; var tooltip = (copiedComponent) ? stEditor.clipboard.ToString() : "Use Get Component\nin component menu"; var button = new GUIContent("Put", tooltip); if (GUI.Button(tempPosition, button) && copiedComponent) { Undo.RecordObject(comp, "Set ComponentField '" + property.name + "' Component"); componentField.component = stEditor.clipboard; } GUI.enabled = true; //member if (componentField.component != originalComponent) { componentField.member = ""; } position.y += 16; if (componentField.component == null) { EditorGUI.Popup(position, "Member", 0, new string[] {}); } else { var availableMembers = Introspector .GetSmartMemberList(componentField.component); int memberIndex = availableMembers.ToList().FindIndex(member => member == componentField.member); int selected = EditorGUI.Popup(position, "Member", memberIndex, availableMembers); if (selected >= 0) { Undo.RecordObject(comp, "Set ComponentField '" + property.name + "' Member"); componentField.member = availableMembers[selected]; } } //EditorGUI.PropertyField( position, property.FindPropertyRelative("member") ); EditorGUI.EndProperty(); }
private void createComponentRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { IList <ComponentRef> componentList = prop.GetValue(_selectedObject) as IList <ComponentRef>; Type comType = typeof(ComponentRef); for (int i = 0; i < componentList.Count; i++) { gridAddRowDef(); CheckBox check = createCheckBox(); check.IsChecked = componentList[i].GetIsActive(); check.Tag = componentList[i]; check.Checked += Check_Checked; check.Unchecked += Check_Unchecked; gridAddTitle(15, componentList[i].GetName()); gridAddEnd(); ComponentRef com = componentList[i]; List <ComponentField> fieldList = com.GetFields(); for (int j = 0; j < fieldList.Count; j++) { gridAddRowDef(); TextBlock title = gridAddTitle(30, fieldList[j].Name); if ((fieldList[j].Type & ComponentFieldType.FT_FLOAT) == ComponentFieldType.FT_FLOAT || (fieldList[j].Type & ComponentFieldType.FT_INT) == ComponentFieldType.FT_INT) { NumberTextBox tb = createNumberTextBox(); tb.Text = fieldList[j].Value; tb.Tag = fieldList[j]; tb._KeyUp += comNumTb__KeyUp; title.Tag = fieldList[j]; float value = Convert.ToSingle(fieldList[j].Value); title.MouseLeftButtonDown += new MouseButtonEventHandler((object sender, MouseButtonEventArgs e) => { _mouseDown = true; _mousePosX = e.GetPosition(null).X; title.CaptureMouse(); }); title.MouseMove += new MouseEventHandler((object sender, MouseEventArgs e) => { if (_mouseDown) { double xPos = e.GetPosition(null).X; ComponentField f = (sender as TextBlock).Tag as ComponentField; if ((f.Type & ComponentFieldType.FT_READONLY) == ComponentFieldType.FT_READONLY) { return; } if ((f.Type & ComponentFieldType.FT_FLOAT) == ComponentFieldType.FT_FLOAT) { if (xPos > _mousePosX) { value += 0.01f; } else if (xPos < _mousePosX) { value -= 0.01f; } } else if ((f.Type & ComponentFieldType.FT_INT) == ComponentFieldType.FT_INT) { if (xPos > _mousePosX) { value += 1; } else if (xPos < _mousePosX) { value -= 1; } } tb.Text = value.ToString(); f.SetValue(tb.Text); _mousePosX = xPos; } }); title.MouseLeftButtonUp += new MouseButtonEventHandler((object sender, MouseButtonEventArgs e) => { _mouseDown = false; _mousePosX = 0; title.ReleaseMouseCapture(); }); } else if (fieldList[j].Type == ComponentFieldType.FT_OBJECT) { TextBox tb = createTextBox(true); tb.Tag = fieldList[j]; tb.KeyUp += comTb_KeyUp; tb.Text = fieldList[j].Value; } else if (fieldList[j].Type == ComponentFieldType.FT_BOOLEAN) { ComboBox cb = createBoolControl(); cb.Tag = fieldList[j]; cb.SelectionChanged += comCb_SelectionChanged; cb.SelectedIndex = fieldList[j].Value == "true" ? 0 : 1; } else if (fieldList[j].Type == ComponentFieldType.FT_VECTOR3) { var vecElement = new Vector3Control(); string[] vStr = fieldList[j].Value.Split(','); Vector3 vec = new Vector3(Convert.ToSingle(vStr[0]), Convert.ToSingle(vStr[1]), Convert.ToSingle(vStr[2])); vecElement.ValueObject = vec; vecElement.Margin = new Thickness(0, 2, 2, 0); vecElement.BorderThickness = new Thickness(0); vecElement.Tag = fieldList[j]; Grid.SetColumn(vecElement, 1); Grid.SetRow(vecElement, _panelParent.RowDefinitions.Count - 1); var template = (ControlTemplate)_View.Resources["validationErrorTemplate"]; Validation.SetErrorTemplate(vecElement, template); vecElement.EnterKeyDown += VecElement_EnterKeyDown; _panelParent.Children.Add(vecElement); } else { TextBox tb = createTextBox(false); tb.Tag = fieldList[j]; tb.KeyUp += comTb_KeyUp; tb.Text = fieldList[j].Value; } gridAddEnd(); } } }