#pragma warning restore 414
        public void OnSceneGUI()
        {
            _targetPoint = (target as AutoUpdatePointPosition);
            if (_targetPoint == null || !_toolActive)
            {
                return;
            }
#if UNITY_EDITOR
            var newEvent = Event.current;

            if (_positionChanged &&
                newEvent.type == EventType.MouseUp &&
                newEvent.button == 0 &&
                _targetPoint.spawnPointTransform != null)
            {
                Undo.RecordObject(target, $"Changed {_targetPoint.positionName}'s Position");
                _targetPoint.pointPosition = _newPosition;

                var realPoints = _targetPoint.spawnPointTransform.FindProperty("spawnPoints");
                foreach (SerializedProperty realPoint in realPoints)
                {
                    if (realPoint.displayName != _targetPoint.positionName)
                    {
                        continue;
                    }

                    realPoint.FindPropertyRelative("spawnPointTransform").vector3Value = _newPosition;
                    Debug.Log($"Updated {_targetPoint.positionName}'s Position");
                    break;
                }

                _targetPoint.spawnPointTransform.ApplyModifiedProperties();

                if (_window != null)
                {
                    _window.Repaint();
                }

                _positionChanged = false;
            }
#endif
            EditorGUI.BeginChangeCheck();

            _newPosition = Handles.PositionHandle(_targetPoint.transform.position, Quaternion.identity);

            if (!EditorGUI.EndChangeCheck())
            {
                return;
            }

            _positionChanged = true;
            _targetPoint.transform.position = _newPosition;
        }
        private void OnEnable()
        {
            _targetPoint = (target as AutoUpdatePointPosition);
            _lastTool    = UnityEditor.Tools.current;
            UnityEditor.Tools.current = Tool.None;
            _toolActive             = true;
            Undo.undoRedoPerformed += UndoCallback;

            if (!EditorWindow.HasOpenInstances <SpawnDataOfLevel_InspectorWindow>())
            {
                return;
            }

            _window = (SpawnDataOfLevel_InspectorWindow)EditorWindow.GetWindow(typeof(SpawnDataOfLevel_InspectorWindow));
            if (_targetPoint == null)
            {
                return;
            }
            _window.EditNewPoint(_targetPoint.positionName);
        }