public void init() { // if (GetComponents <BoxCollider>() == null) { boundSource = BoundSource.meshes; } setPoints(); setLines(); setLineRenderers(); }
public BindingMember(MemberInfo propertyInfo, object baseObject, BindingMember parent = null, bool lean = false) { BoundSources = new List <BoundSource>(); _propertyInfo = propertyInfo as PropertyInfo; _baseObject = baseObject; PropertyName = propertyInfo.Name; if (lean) { return; } _defaultValueAttribute = GetAttribute <DefaultValueAttribute>(propertyInfo); _limitAttribute = GetAttribute <LimitAttribute>(propertyInfo); _displayNameAttribute = GetAttribute <DisplayNameAttribute>(propertyInfo); _descriptionAttribute = GetAttribute <DescriptionAttribute>(propertyInfo); _uiControlAttribute = GetAttribute <UIControlAttribute>(propertyInfo); _categoryAttribute = GetAttribute <CategoryAttribute>(propertyInfo); _advancedAttribute = GetAttribute <AdvancedSetting>(propertyInfo); _limitBindingAttribute = GetAttribute <LimitBindingAttribute>(propertyInfo); _isGroupControllerAttribute = GetAttribute <IsGroupController>(propertyInfo); _groupAttribute = GetAttribute <GroupAttribute>(propertyInfo); //Core.Logger.Verbose($"Created Binding Member for {propertyInfo.Name}"); var notify = baseObject as INotifyPropertyChanged; if (notify != null) { //Core.Logger.Verbose($"Registering Property Changed for {baseObject.GetType().Name} ({propertyInfo.Name})"); notify.PropertyChanged += NotifyOnPropertyChanged; } //_bindingAttribute = GetAttribute<BindingAttribute>(propertyInfo); _BindingAttributes = propertyInfo.GetCustomAttributes(typeof(BindingAttribute)).OfType <BindingAttribute>().ToList(); if (_categoryAttribute == null && parent != null && parent.Category != null) { _categoryAttribute = new CategoryAttribute(parent.Category); } // The parent property of embedded TrinitySettings objects can define a category // When children do not have one explicitly set. if (_categoryAttribute == null && parent != null && parent.Category != null) { _categoryAttribute = new CategoryAttribute(parent.Category); } // GroupControllers notify other instances that a category has changed. // Applicable listners can then refresh their state in the UI. OnCategoryChanged += categoryId => { if (categoryId == GroupId) { OnPropertyChanged(nameof(IsEnabled)); } }; IsNoLabel = _uiControlAttribute != null && _uiControlAttribute.Options.HasFlag(UIControlOptions.NoLabel); //IsUseDescription = _uiControlAttribute != null && _uiControlAttribute.Options.HasFlag(UIControlOptions.UseDescription); IsInline = _uiControlAttribute != null && _uiControlAttribute.Options.HasFlag(UIControlOptions.Inline); if (_limitAttribute != null) { Range = new Range { Min = _limitAttribute.Low, Max = _limitAttribute.High }; } _type = _baseObject.GetType(); if (_limitBindingAttribute != null) { var lowSource = _limitBindingAttribute.LowSource; var highSource = _limitBindingAttribute.HighSource; if (!BotMain.IsRunning) { using (ZetaDia.Memory.AcquireFrame()) { Range = new Range { Min = lowSource != null?GetMemberValue <double>(lowSource) : _limitBindingAttribute.Low, Max = highSource != null?GetMemberValue <double>(highSource) : _limitBindingAttribute.High }; } } else { Range = new Range { Min = lowSource != null?GetMemberValue <double>(lowSource) : _limitBindingAttribute.Low, Max = highSource != null?GetMemberValue <double>(highSource) : _limitBindingAttribute.High }; } } if (_BindingAttributes != null && _BindingAttributes.Any()) { var attributes = _BindingAttributes.OrderBy(a => a.Order).ToList(); foreach (var bindingAttr in attributes) { var member = GetMember(bindingAttr); var prop = member as PropertyInfo; if (prop == null) { continue; } var boundSource = new BoundSource { Member = new BindingMember(prop, baseObject, this), Items = GetBoundItems(prop, bindingAttr) }; BoundSources.Add(boundSource); } } if (IsGroupController) { ChangeGroup(GroupId, Value); } Source = new BoundSource { Member = this, Items = GetBoundItems(propertyInfo) }; }