void drawComponent(EntityBehaviour entityBehaviour, Entity entity, int index, IComponent component) { var componentType = component.GetType(); var fields = componentType.GetFields(BindingFlags.Public | BindingFlags.Instance); EditorGUILayout.BeginVertical(GUI.skin.box); EditorGUILayout.BeginHorizontal(); if (fields.Length == 0) { EditorGUILayout.LabelField(componentType.RemoveComponentSuffix(), EditorStyles.boldLabel); } else { entityBehaviour.unfoldedComponents[index] = EditorGUILayout.Foldout(entityBehaviour.unfoldedComponents[index], componentType.RemoveComponentSuffix(), _foldoutStyle); } if (GUILayout.Button("-", GUILayout.Width(19), GUILayout.Height(14))) { entity.RemoveComponent(index); } EditorGUILayout.EndHorizontal(); if (entityBehaviour.unfoldedComponents[index]) { foreach (var field in fields) { var value = field.GetValue(component); DrawAndSetElement(field.FieldType, field.Name, value, entity, index, component, newValue => field.SetValue(component, newValue)); } } EditorGUILayout.EndVertical(); }
void drawComponent(EntityBehaviour entityBehaviour, Entity entity, int index, IComponent component) { var componentType = component.GetType(); var fields = componentType.GetFields(BindingFlags.Public | BindingFlags.Instance); EditorGUILayout.BeginVertical(GUI.skin.box); { EditorGUILayout.BeginHorizontal(); { if (fields.Length == 0) { EditorGUILayout.LabelField(componentType.RemoveComponentSuffix(), EditorStyles.boldLabel); } else { entityBehaviour.unfoldedComponents[index] = EditorGUILayout.Foldout(entityBehaviour.unfoldedComponents[index], componentType.RemoveComponentSuffix(), _foldoutStyle); } if (GUILayout.Button("-", GUILayout.Width(19), GUILayout.Height(14))) { entity.RemoveComponent(index); } } EditorGUILayout.EndHorizontal(); if (entityBehaviour.unfoldedComponents[index]) { foreach (var field in fields) { var value = field.GetValue(component); DrawAndSetElement(field.FieldType, field.Name, value, entity, index, component, newValue => field.SetValue(component, newValue)); } } } EditorGUILayout.EndVertical(); }