void OnEnable() { valueMonitorPool = new ValueMonitorPool(); valueMonitorPool.AddMonitor <bool>(() => { return(isEditing); }, (bool from, bool to) => { if (to) { SceneView.onSceneGUIDelegate = (SceneView.OnSceneFunc)Delegate.RemoveAll(SceneView.onSceneGUIDelegate, new SceneView.OnSceneFunc(this.OnSceneGUICallback_Move)); SceneView.onSceneGUIDelegate = (SceneView.OnSceneFunc)Delegate.Combine(SceneView.onSceneGUIDelegate, new SceneView.OnSceneFunc(this.OnSceneGUICallback_Move)); } else { SceneView.onSceneGUIDelegate = (SceneView.OnSceneFunc)Delegate.RemoveAll(SceneView.onSceneGUIDelegate, new SceneView.OnSceneFunc(this.OnSceneGUICallback_Move)); } }); EditorUpdateRunner.AddUpdateIfNot("MapEditorManager", () => { EditorUpdate(); }); }