private void SetCache(VarCata cata, int Pointer, object o) { if (cata == VarCata.Property) { propsModifyCache[Pointer] = o; } if (cata == VarCata.Field) { fieldsModifyCache[Pointer] = o; } }
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); } }
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); }
private object GetCache(VarCata cata, int Pointer) { if (cata == VarCata.Property) { return(propsModifyCache[Pointer]); } if (cata == VarCata.Field) { return(fieldsModifyCache[Pointer]); } return(null); }
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]); } }
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); }
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); }
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(); }