private void OnKeyDown(Event e)
        {
            if (e.keyCode == KeyCode.Return || e.keyCode == KeyCode.KeypadEnter)
            {
                string scriptPath = Path.Combine(m_Path, m_ScriptName + ".cs");
                if (!File.Exists(scriptPath))
                {
                    CreateScript(scriptPath);

                    ButtonDropWindow.Close();
                }
            }
        }
        private void OnGui(Rect position, ButtonDropWindow.Styles styles)
        {
            GUI.Label(new Rect(0.0f, 0.0f, position.width, position.height), GUIContent.none, styles.background);

            var rect = position;

            rect.x      = +1f;
            rect.y      = +0f;
            rect.width -= 2f;
            //rect.height -= 2f;

            using (GUILayoutEx.Area(rect))
            {
                rect = GUILayoutUtility.GetRect(10f, 25f);
                GUI.Label(rect, "New Script", styles.header);

                GUILayout.Label("Name:");
                m_ScriptName = EditorGUILayout.TextField(m_ScriptName);

                GUILayout.Label("Namespace:");
                using (GUILayoutEx.Horizontal())
                {
                    m_Namespace = EditorGUILayout.TextField(m_Namespace);
                    if (GUILayout.Button("S", GUILayout.Width(20)))
                    {
                    }
                }

                GUILayout.Label("Path:");
                using (GUILayoutEx.Horizontal())
                {
                    m_Path = EditorGUILayout.TextField(m_Path);
                    if (GUILayout.Button("S", GUILayout.Width(20)))
                    {
                    }
                }

                string scriptPath = Path.Combine(m_Path, m_ScriptName + ".cs");
                using (EditorGUIEx.DisabledScopeIf(File.Exists(scriptPath)))
                {
                    if (GUILayout.Button("Create and Add"))
                    {
                        CreateScript(scriptPath);

                        ButtonDropWindow.Close();
                    }
                }
            }
        }
        public override void OnSpyglassGUI()
        {
            base.OnSpyglassGUI();

            using (EditorGUILayoutEx.Vertical())
            {
                ButtonDropWindow.Show("Create Component", () => InitButtonDropWindow(),
                                      (position, styles) => {
                    Event e = Event.current;
                    switch (e.type)
                    {
                    case EventType.KeyDown:
                        OnKeyDown(e);
                        break;
                    }

                    OnGui(position, styles);
                });

                var cameraTransform = UnityEditor.SceneView.lastActiveSceneView.camera.transform;
                var delta           = target.transform.position - cameraTransform.position;
                EditorGUILayout.SelectableLabel($"{delta.x}, {delta.y}, {delta.z} : {delta.magnitude}");
            }
        }