// PRAGMA MARK - UI FUNCTIONS
        public void OnSearchValueUpdate(string searchString)
        {
            TweakableVariable <float>[] variables = VariableUIMap.Keys.ToArray();
            Array.Sort(variables, delegate(TweakableVariable <float> var1, TweakableVariable <float> var2) {
                double distance1 = StringMatch.ComputeDistance(searchString, var1.Name);
                double distance2 = StringMatch.ComputeDistance(searchString, var2.Name);
                return(distance2.CompareTo(distance1));
            });

            int index = 0;

            foreach (TweakableVariable <float> variable in variables)
            {
                GameObject variableViewObject = VariableUIMap[variable];

                bool active = index < MAX_VARIABLES_SHOWN;
                variableViewObject.SetActive(active);
                if (active)
                {
                    TweakableVariableView variableView = variableViewObject.GetComponent <TweakableVariableView>();
                    Vector2 offset = new Vector2(0.0f, -index * variableView.Height);
                    variableView.SetOffset(offset);
                }

                index++;
            }
        }