Exemplo n.º 1
0
        public void DrawVarList(VarLocker vl)
        {
            GUILayout.BeginVertical();

            GUILayout.Label("---------------------------------------------------------------------------");
            for (int i = 0; i < PropertyCount; i++)
            {
                try
                {
                    GUILayout.Label(GetFullName(VarCata.Property, i));
                    GUILayout.Label("Get: " + GetVal(VarCata.Property, i));
                    if (IsPropertySetable(i))
                    {
                        VarEditBox(vl, i, VarCata.Property);
                    }
                }
                catch (Exception e)
                {
                    Debug.LogError(InjectDebug.prefix + "Something Went Wrong When Drawing Variables!" + "\r\n" + e.Message + "\r\n" + e.StackTrace);
                }

                GUILayout.Label("---------------------------------------------------------------------------");
            }
            for (int i = 0; i < FieldCount; i++)
            {
                try
                {
                    GUILayout.Label(GetFullName(VarCata.Field, i) + " = " + GetVal(VarCata.Field, i));
                    VarEditBox(vl, i, VarCata.Field);
                }
                catch (Exception e)
                {
                    Debug.LogError(InjectDebug.prefix + "Something Went Wrong When Drawing Variables!" + "\r\n" + e.Message + "\r\n" + e.StackTrace);
                }

                GUILayout.Label("---------------------------------------------------------------------------");
            }



            GUILayout.EndVertical();
        }
Exemplo n.º 2
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();
        }