Original code:
public virtual int Index { get { return _parameter.Index; } set { if (_parameter == null) { Logger.WriteLineWarning("No parameters connected. Ignored"); return; }
if (UIParamMeta != null) { if (UIParamMeta.ReverseOrder) { int delta = _parameter.Index - value; if (UIParamMeta.IsCyclic) {
int targetIndex = _parameter.Index + delta; if (targetIndex >= ValuesCount) { _parameter.Index = targetIndex - ValuesCount; } else if (targetIndex < 0) { _parameter.Index = ValuesCount + targetIndex; } else { _parameter.Index = targetIndex; } } else { _parameter.Index += delta; } } else { if (UIParamMeta.IsCyclic) { if (value >= ValuesCount) { _parameter.Index = value - ValuesCount; } else if (value < 0) { _parameter.Index = ValuesCount + value; } else { _parameter.Index = value; } } else { _parameter.Index = value; } } } else { _parameter.Index = value; } } } |
Better rearranged code:
public virtual int Index { get { return _parameter.Index; } set { if(_parameter == null) { Logger.WriteLineWarning("No parameters connected. Ignored"); return; }
int newIndex = value; if (UIParamMeta != null) { int delta = UIParamMeta.ReverseOrder ? (_parameter.Index - value) : (value - _parameter.Index);
newIndex = _parameter.Index + delta; if (UIParamMeta.IsCyclic) { newIndex = (newIndex + ValuesCount) % ValuesCount; } }
_parameter.Index = newIndex; } } |