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(); }
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(); }