void OnSceneGUI() { Event e = Event.current; //Debug.Log("type " + e.type + ", ismouse " + e.isMouse + ", button " + e.button); // Is edit mode enabled ? if (IsEditModeEnabled) { // Catch window focus. int controlID = GUIUtility.GetControlID(FocusType.Passive); if (e.type == EventType.Layout) { HandleUtility.AddDefaultControl(controlID); return; } // Release mouse if (e.type == EventType.MouseUp && e.button == editMapButtonID) { _isDragging = false; } // paint. if ((e.type == EventType.MouseDrag || e.type == EventType.MouseDown) && e.button == editMapButtonID) { float rayDistance; Ray ray = HandleUtility.GUIPointToWorldRay(e.mousePosition); Plane plane = new Plane(new Vector3(0, 1, 0), 0); if (plane.Raycast(ray, out rayDistance)) { Vector3 point = ray.GetPoint(rayDistance); //Debug.Log("type " + e.type + ", ismouse " + e.isMouse + ", button " + e.button); if (e.type == EventType.MouseDrag && _isDragging) { if (TargetMap.EditHexagon(_lastMousePosition, point, _typeIdBrush, _heightBrush, _paintLayer)) { MapModified(); } } else { if (TargetMap.EditHexagon(point, _typeIdBrush, _heightBrush, _paintLayer)) { MapModified(); } _isDragging = true; } _lastMousePosition = point; } e.Use(); } } }