def start_drawing( self, editor: map_editor.MapEditor, sector: map_objects.EditorSector, hit_point: core.Point3, insert: bool, ): self._editor = editor self._sector = sector if insert and self._sector is not None: for editor_wall in self._sector.walls: distance_to_wall = editor_wall.line_segment.get_point_distance( hit_point.xy) if (distance_to_wall is not None and distance_to_wall < self._editor.snapper.grid_size): insert = False projected_point = editor_wall.line_segment.project_point( hit_point.xy) hit_point.x = projected_point.x hit_point.y = projected_point.y break self._insert = insert position_2d = self._editor.snapper.snap_to_grid_2d(hit_point.xy) if not self._insert: point_neat_wall = self._point_near_wall(hit_point.xy) if point_neat_wall is not None: position_2d = point_neat_wall self._current_point = position_2d self._points[:] = [self._current_point] grid_position = core.Point3(position_2d.x, position_2d.y, self._floor_z_at_point(position_2d)) self._display.start_drawing(self._sector, grid_position, self._editor.snapper) self._update_debug_display()