override public void OnInspectorGUI() { //the target has been GC'd, so do nothing if (link.GetTarget() == null) { return; } GUILayout.Label(link.name, EditorStyles.boldLabel); EditorGUILayout.Separator(); int memberCount = link.members.Count; for (int m = 0; m < memberCount; m++) { RXWatcherLinkMember member = link.members[m]; object oldValue = member.GetValue(); object newValue = null; if (member.memberType == FLOAT) { newValue = EditorGUILayout.FloatField(member.name, (float)oldValue); } else if (member.memberType == INT) { newValue = EditorGUILayout.IntField(member.name, (int)oldValue); } else if (member.memberType == STRING) { newValue = EditorGUILayout.TextField(member.name, (string)oldValue); } else if (member.memberType == COLOR) { newValue = EditorGUILayout.ColorField(member.name, (Color)oldValue); } else if (member.memberType == VECTOR2) { newValue = EditorGUILayout.Vector2Field(member.name, (Vector2)oldValue); } else if (member.memberType == BOOL) { newValue = EditorGUILayout.Toggle(member.name, (bool)oldValue); } if (newValue != null && !newValue.Equals(oldValue)) { member.SetValue(newValue); } } }
private void SetupTarget() { object target = _targetRef.Target; Type targetType = _targetRef.Target.GetType(); BindingFlags bindingFlags = BindingFlags.Public; if (target is Type) { bindingFlags |= BindingFlags.Static; targetType = target as Type; } else { bindingFlags |= BindingFlags.Instance; } if (_shouldShowNonPublicMembers) { bindingFlags |= BindingFlags.NonPublic; } FieldInfo[] fieldInfos = targetType.GetFields(bindingFlags); PropertyInfo[] propertyInfos = targetType.GetProperties(bindingFlags); for (int f = 0; f < fieldInfos.Length; f++) { RXWatcherLinkMember member = new RXWatcherLinkMember(this, fieldInfos[f]); if (member.CheckIfValid()) { _members.Add(member); } } for (int p = 0; p < propertyInfos.Length; p++) { RXWatcherLinkMember member = new RXWatcherLinkMember(this, propertyInfos[p]); if (member.CheckIfValid()) { _members.Add(member); } } }
private void SetupTarget() { object target = _targetRef.Target; Type targetType = _targetRef.Target.GetType(); BindingFlags bindingFlags = BindingFlags.Public; if(target is Type) { bindingFlags |= BindingFlags.Static; targetType = target as Type; } else { bindingFlags |= BindingFlags.Instance; } if(_shouldShowNonPublicMembers) { bindingFlags |= BindingFlags.NonPublic; } FieldInfo[] fieldInfos = targetType.GetFields(bindingFlags); PropertyInfo[] propertyInfos = targetType.GetProperties(bindingFlags); for(int f = 0; f<fieldInfos.Length; f++) { RXWatcherLinkMember member = new RXWatcherLinkMember(this, fieldInfos[f]); if(member.CheckIfValid()) { _members.Add(member); } } for(int p = 0; p<propertyInfos.Length; p++) { RXWatcherLinkMember member = new RXWatcherLinkMember(this, propertyInfos[p]); if(member.CheckIfValid()) { _members.Add(member); } } }
override public void OnInspectorGUI() { //the target has been GC'd, so do nothing if (link.GetTarget() == null) { return; } GUILayout.Label(link.name, EditorStyles.boldLabel); EditorGUILayout.Separator(); int memberCount = link.members.Count; for (int m = 0; m < memberCount; m++) { RXWatcherLinkMember member = link.members[m]; object oldValue = member.GetValue(); object newValue = null; if (member.memberType == FLOAT) { newValue = EditorGUILayout.FloatField(member.name, (float)oldValue); } else if (member.memberType == INT) { newValue = EditorGUILayout.IntField(member.name, (int)oldValue); } else if (member.memberType == STRING) { newValue = EditorGUILayout.TextField(member.name, (string)oldValue); } else if (member.memberType == COLOR) { newValue = EditorGUILayout.ColorField(member.name, (Color)oldValue); } else if (member.memberType == VECTOR2) { newValue = EditorGUILayout.Vector2Field(member.name, (Vector2)oldValue); } else if (member.memberType == BOOL) { newValue = EditorGUILayout.Toggle(member.name, (bool)oldValue); } if (newValue != null && !newValue.Equals(oldValue)) { member.SetValue(newValue); } } EditorGUILayout.Separator(); GUILayout.Label("Transform Hierarchy", EditorStyles.boldLabel); var node = link.GetTarget() as FNode; while (node != null) { GUILayout.Label($"{node.GetType()}: x:{node.x} y:{node.y}", EditorStyles.miniLabel); GUILayout.Label($"scaleX:{node.scaleX} scaleY:{node.scaleY} rotation:{node.rotation}", EditorStyles.miniLabel); var spriteNode = node as FSprite; if (spriteNode != null) { GUILayout.Label($"localRect:{spriteNode.localRect} boundsRect::{spriteNode.textureRect}", EditorStyles.miniLabel); GUILayout.Label($"anchorX:{spriteNode.anchorX} anchorY:{spriteNode.anchorY}", EditorStyles.miniLabel); GUILayout.Label($"pixelAnchorX:{spriteNode.anchorX*spriteNode.textureRect.width} pixelAnchorY:{spriteNode.anchorY*spriteNode.textureRect.height}", EditorStyles.miniLabel); } EditorGUILayout.Separator(); //display parent next node = node.container; } EditorGUILayout.Separator(); }