Пример #1
0
        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);
        }
Пример #2
0
        public static Matrix getSpriteBatchMatrix(this SpriteBatch spriteBatch)
        {
            var fieldInfo = ReflectionUtils.getFieldInfo(spriteBatch, "_matrix");

            return((Matrix)fieldInfo.GetValue(spriteBatch));
        }