public static ITweakable MakeTweakable(TweakableAttribute attribute, Type type, MemberInfo memberInfo, IBoundInstance instance, MemberInfo containerMemberInfo = null)
        {
            Type                  type2       = typeof(TweakableInfo <>).MakeGenericType(type);
            uint                  num         = instance?.UniqueId ?? 0;
            MemberInfo            memberInfo2 = ((containerMemberInfo != null) ? containerMemberInfo : memberInfo);
            TweakerRangeAttribute attribute2  = memberInfo2.GetCustomAttributes(typeof(TweakerRangeAttribute), inherit: false).FirstOrDefault() as TweakerRangeAttribute;
            StepSizeAttribute     attribute3  = memberInfo2.GetCustomAttributes(typeof(StepSizeAttribute), inherit: false).FirstOrDefault() as StepSizeAttribute;

            NamedToggleValueAttribute[] source = memberInfo2.GetCustomAttributes(typeof(NamedToggleValueAttribute), inherit: false) as NamedToggleValueAttribute[];
            ICustomTweakerAttribute[]   array  = memberInfo2.GetCustomAttributes(typeof(ICustomTweakerAttribute), inherit: true) as ICustomTweakerAttribute[];
            source = source.OrderBy((NamedToggleValueAttribute toggle) => toggle.Order).ToArray();
            object        obj           = MakeTweakableRange(type, attribute2);
            object        obj2          = MakeTweakableStepSize(type, attribute3, attribute.Name);
            Array         array2        = MakeTweakableToggleValues(type, source);
            WeakReference weakReference = null;

            if (instance != null)
            {
                weakReference = new WeakReference(instance.Instance);
            }
            string finalName = GetFinalName(attribute.Name, instance);
            object obj3      = Activator.CreateInstance(type2, finalName, obj, obj2, array2, num, array, attribute.Description);
            Type   type3     = typeof(BaseTweakable <>).MakeGenericType(type);

            return(Activator.CreateInstance(type3, obj3, memberInfo, weakReference) as ITweakable);
        }
 public static ITweakable MakeTweakable(TweakableAttribute attribute, FieldInfo fieldInfo, IBoundInstance instance, MemberInfo containerMemberInfo = null)
 {
     return(MakeTweakable(attribute, fieldInfo.FieldType, fieldInfo, instance, containerMemberInfo));
 }
 public static ITweakable MakeTweakable(TweakableAttribute attribute, PropertyInfo propertyInfo, IBoundInstance instance, MemberInfo containerMemberInfo = null)
 {
     return(MakeTweakable(attribute, propertyInfo.PropertyType, propertyInfo, instance, containerMemberInfo));
 }