Esempio n. 1
0
        private void SetCache(VarCata cata, int Pointer, object o)
        {
            if (cata == VarCata.Property)
            {
                propsModifyCache[Pointer] = o;
            }

            if (cata == VarCata.Field)
            {
                fieldsModifyCache[Pointer] = o;
            }
        }
Esempio n. 2
0
        private void UpdateCache(VarCata cata, int Pointer)
        {
            if (cata == VarCata.Property)
            {
                propsModifyCache[Pointer] = props[Pointer].GetValue(component, null);
            }

            if (cata == VarCata.Field)
            {
                fieldsModifyCache[Pointer] = fields[Pointer].GetValue(component);
            }
        }
Esempio n. 3
0
        private Type GetType(VarCata cata, int Pointer)
        {
            if (cata == VarCata.Property)
            {
                return(props[Pointer].PropertyType);
            }

            if (cata == VarCata.Field)
            {
                return(fields[Pointer].FieldType);
            }

            return(null);
        }
Esempio n. 4
0
        private object GetCache(VarCata cata, int Pointer)
        {
            if (cata == VarCata.Property)
            {
                return(propsModifyCache[Pointer]);
            }

            if (cata == VarCata.Field)
            {
                return(fieldsModifyCache[Pointer]);
            }

            return(null);
        }
Esempio n. 5
0
        private void SetVal(VarCata cata, int Pointer)
        {
            if (cata == VarCata.Property)
            {
                if (props[Pointer].CanWrite)
                {
                    props[Pointer].SetValue(component, propsModifyCache[Pointer], null);
                }
                else
                {
                    Debug.LogError(InjectDebug.prefix + "This property is Readonly.");
                }
            }

            if (cata == VarCata.Field)
            {
                fields[Pointer].SetValue(component, fieldsModifyCache[Pointer]);
            }
        }
Esempio n. 6
0
        private object GetVal(VarCata cata, int Pointer)
        {
            if (cata == VarCata.Property)
            {
                if (props[Pointer].CanRead)
                {
                    return(props[Pointer].GetValue(component, null));
                }
                else
                {
                    return("UNREADABLE!");
                }
            }

            if (cata == VarCata.Field)
            {
                return(fields[Pointer].GetValue(component));
            }

            return(null);
        }
Esempio n. 7
0
        private string GetFullName(VarCata cata, int Pointer)
        {
            if (cata == VarCata.Property)
            {
                return(props[Pointer].PropertyType.Name + " " + props[Pointer].Name);
            }

            if (cata == VarCata.Field)
            {
                string visit = string.Empty;
                if (fields[Pointer].IsPublic)
                {
                    visit = "Public ";
                }
                if (fields[Pointer].IsPrivate)
                {
                    visit = "Private ";
                }
                return(visit + (fields[Pointer].IsStatic ? "Static " : "") + fields[Pointer].FieldType.Name + " " + fields[Pointer].Name);
            }

            return(null);
        }
Esempio n. 8
0
        private void VarEditBox(VarLocker vl, int i, VarCata cata)
        {
            GUILayout.BeginVertical();
            GUILayout.BeginHorizontal();

            bool Editable = true;

            Type   t = GetType(cata, i);
            object o = GetCache(cata, i);

            if (t == typeof(bool))
            {
                o = GUILayout.Toggle((bool)o, "");
            }
            else if (t == typeof(int))
            {
                o = Convert.ToInt32(GUILayout.TextField(((int)o) + ""));
            }
            else if (t == typeof(float))
            {
                o = Convert.ToSingle(GUILayout.TextField(((float)o) + ""));
            }
            else if (t == typeof(double))
            {
                o = Convert.ToDouble(GUILayout.TextField(((double)o) + ""));
            }
            else if (t == typeof(string))
            {
                o = GUILayout.TextField((string)o);
            }
            else if (t == typeof(Vector2))
            {
                GUILayout.BeginHorizontal();
                o = new Vector2(
                    Convert.ToSingle(GUILayout.TextField(((Vector2)o).x.ToString())),
                    Convert.ToSingle(GUILayout.TextField(((Vector2)o).y.ToString()))
                    );
                GUILayout.EndHorizontal();
            }
            else if (t == typeof(Vector3))
            {
                GUILayout.BeginHorizontal();
                o = new Vector3(
                    Convert.ToSingle(GUILayout.TextField(((Vector3)o).x.ToString())),
                    Convert.ToSingle(GUILayout.TextField(((Vector3)o).y.ToString())),
                    Convert.ToSingle(GUILayout.TextField(((Vector3)o).z.ToString()))
                    );
                GUILayout.EndHorizontal();
            }
            else if (t == typeof(Color))
            {
                GUILayout.BeginHorizontal();
                o = new Color(
                    GUILayout.HorizontalSlider(((Color)o).r, 0f, 1f),
                    GUILayout.HorizontalSlider(((Color)o).g, 0f, 1f),
                    GUILayout.HorizontalSlider(((Color)o).b, 0f, 1f),
                    GUILayout.HorizontalSlider(((Color)o).a, 0f, 1f)
                    );
                GUILayout.EndHorizontal();
            }
            else
            {
                Editable = false;
            }

            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();

            bool Locked = false;

            if (cata == VarCata.Field)
            {
                Locked = vl.IsLocked(component, fields[i]);
            }
            if (cata == VarCata.Property)
            {
                Locked = vl.IsLocked(component, props[i]);
            }

            if (GUILayout.Button(Locked ? "UNLOCK" : "LOCK", GUILayout.Width(80)))
            {
                if (cata == VarCata.Field)
                {
                    if (Locked)
                    {
                        vl.UnLock(component, fields[i]);
                    }
                    else
                    {
                        vl.Lock(component, fields[i], fields[i].GetValue(component));
                    }
                }
                if (cata == VarCata.Property)
                {
                    if (Locked)
                    {
                        vl.UnLock(component, props[i]);
                    }
                    else
                    {
                        vl.Lock(component, props[i], props[i].GetValue(component, null));
                    }
                }
            }

            if (Editable)
            {
                SetCache(cata, i, o);

                if (GUILayout.Button("Update", GUILayout.Width(55)))
                {
                    UpdateCache(cata, i);
                }

                if (GUILayout.Button("Set", GUILayout.Width(35)))
                {
                    SetVal(cata, i);
                }
            }

            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
        }