Exemple #1
0
    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);
    }
Exemple #2
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);
        }
Exemple #3
0
        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");
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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();
    }
Exemple #8
0
        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();
                }
            }
        }