public override void Draw()
        {
#if PSR_FULL
            GUILayout.BeginHorizontal();
            drawHeader();
            SRWindow.Instance.CVS();
            xField.Draw(showMoreOptions);
            yField.Draw(showMoreOptions);
            SRWindow.Instance.CVE();

            if (xField.updated || yField.updated)
            {
                Vector2 updatedValue = new Vector2(xField.fieldValue, yField.fieldValue);
                replaceValue = Vector2Serializable.FromVector2(updatedValue);
                SRWindow.Instance.PersistCurrentSearch();
            }
            if (!SRWindow.Instance.Compact())
            {
                GUILayout.Space(SRWindow.approxWidth); //approximate.
            }
            drawSwap();

            GUILayout.EndHorizontal();
#endif
        }
        public override void Draw()
        {
#if PSR_FULL
            GUILayout.BeginHorizontal();
            drawHeader();
            SRWindow.Instance.CVS();

            if (!SRWindow.Instance.Compact())
            {
                GUILayout.BeginVertical();
                GUILayout.BeginHorizontal();
            }

            xField.Draw(showMoreOptions);
            yField.Draw(showMoreOptions);

            if (!SRWindow.Instance.Compact())
            {
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal();
            }

            wField.Draw(showMoreOptions);
            hField.Draw(showMoreOptions);

            if (!SRWindow.Instance.Compact())
            {
                GUILayout.EndHorizontal();
                GUILayout.EndVertical();
            }

            SRWindow.Instance.CVE();

            if (xField.updated || yField.updated || wField.updated || hField.updated)
            {
                Rect updatedValue = new Rect(xField.fieldValue, yField.fieldValue, wField.fieldValue, hField.fieldValue);
                replaceValue = RectSerializable.FromRect(updatedValue);
                SRWindow.Instance.PersistCurrentSearch();
            }
            drawSwap();
            GUILayout.EndHorizontal();
#endif
        }
        public override void Draw(SearchOptions options)
        {
            this.options = options;


            GUILayout.BeginHorizontal();
            drawControlStart();
            GUILayout.BeginHorizontal();
            SRWindow.Instance.CVS();
            bool enabled = !anyValueEquals();

            xField.Draw(showMoreOptions, enabled);
            yField.Draw(showMoreOptions, enabled);

            if (xField.updated || yField.updated)
            {
                val         = new Vector2(xField.fieldValue, yField.fieldValue);
                searchValue = Vector2Serializable.FromVector2(val);
                SRWindow.Instance.PersistCurrentSearch();
            }
            if (showMoreOptions)
            {
                float lw = EditorGUIUtility.labelWidth;
                EditorGUIUtility.labelWidth = SRWindow.approxLabelWidth;
                bool newApproximate = EditorGUILayout.Toggle("Approximate?", approximate, GUILayout.Width(SRWindow.approxWidth - 4)); // -4 for style padding/margin
                EditorGUIUtility.labelWidth = lw;                                                                                     // i love stateful gui! :(
                if (newApproximate != approximate)
                {
                    approximate = newApproximate;
                    SRWindow.Instance.PersistCurrentSearch();
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.EndHorizontal();

            SRWindow.Instance.CVE();
            drawControlEnd();

            drawReplaceItem(options);
        }
        public override void Draw()
        {
#if PSR_FULL
            GUILayout.BeginHorizontal();
            drawHeader();
            SRWindow.Instance.CVS();
            xField.Draw(showMoreOptions);
            yField.Draw(showMoreOptions);
            zField.Draw(showMoreOptions);
            SRWindow.Instance.CVE();

            if (xField.updated || yField.updated || zField.updated)
            {
                Vector3 updatedValue = new Vector3(xField.fieldValue, yField.fieldValue, zField.fieldValue);
                replaceValue = Vector3Serializable.FromVector3(updatedValue);
                SRWindow.Instance.PersistCurrentSearch();
            }

            drawSwap();
            GUILayout.EndHorizontal();
#endif
        }