public static List <Inspector> getInspectableProperties(object target) { var props = new List <Inspector>(); var targetType = target.GetType(); var fields = ReflectionUtils.getFields(targetType); foreach (var field in fields) { if (!field.IsPublic && IEnumerableExt.count(field.GetCustomAttributes <InspectableAttribute>()) == 0) { continue; } if (field.IsInitOnly) { continue; } // skip enabled which is handled elsewhere if (field.Name == "enabled") { continue; } var inspector = getInspectorForType(field.FieldType, target, field); if (inspector != null) { inspector.setTarget(target, field); props.Add(inspector); } } var properties = ReflectionUtils.getProperties(targetType); foreach (var prop in properties) { if (!prop.CanRead || !prop.CanWrite) { continue; } if ((!prop.GetMethod.IsPublic || !prop.SetMethod.IsPublic) && IEnumerableExt.count(prop.GetCustomAttributes <InspectableAttribute>()) == 0) { continue; } // skip Component.enabled which is handled elsewhere if (prop.Name == "enabled") { continue; } var inspector = getInspectorForType(prop.PropertyType, target, prop); if (inspector != null) { inspector.setTarget(target, prop); props.Add(inspector); } } var methods = ReflectionUtils.getMethods(targetType); foreach (var method in methods) { var attr = method.GetCustomAttribute <InspectorCallableAttribute>(); if (attr == null) { continue; } if (!MethodInspector.areParametersValid(method.GetParameters())) { continue; } var inspector = new MethodInspector(); inspector.setTarget(target, method); props.Add(inspector); } return(props); }
public static Matrix getSpriteBatchMatrix(this SpriteBatch spriteBatch) { var fieldInfo = ReflectionUtils.getFieldInfo(spriteBatch, "_matrix"); return((Matrix)fieldInfo.GetValue(spriteBatch)); }