simvx.editor.panels.tilemap_editor¶
TileMap Editor Panel – Paint, erase, fill, and pick tiles on a TileMapLayer.
Provides an interactive toolbar with four tools (Paint, Erase, Fill, Pick) and a brush size selector. Integrates with the 2D viewport to apply tile operations at the mouse position, with full undo support via CallableCommand.
The panel listens for a TileMap selection in EditorState and delegates viewport mouse events through a coordinate-conversion callback.
Module Contents¶
Classes¶
Available tilemap editing tools. |
|
Tilemap painting toolbar and tile selector. |
Data¶
API¶
- simvx.editor.panels.tilemap_editor.__all__¶
[‘TileMapEditorPanel’, ‘TileMapTool’]
- class simvx.editor.panels.tilemap_editor.TileMapTool[source]¶
Bases:
enum.EnumAvailable tilemap editing tools.
- PAINT¶
‘auto(…)’
- ERASE¶
‘auto(…)’
- FILL¶
‘auto(…)’
- PICK¶
‘auto(…)’
- __new__(value)¶
- __repr__()¶
- __str__()¶
- __dir__()¶
- __format__(format_spec)¶
- __hash__()¶
- __reduce_ex__(proto)¶
- __deepcopy__(memo)¶
- __copy__()¶
- name()¶
- value()¶
- class simvx.editor.panels.tilemap_editor.TileMapEditorPanel(editor_state: simvx.editor.state.EditorState, **kwargs)[source]¶
Bases:
simvx.core.ControlTilemap painting toolbar and tile selector.
Provides Paint, Erase, Fill, and Pick tools with configurable brush size. Applies operations to the active TileMap’s first layer via the undo system.
Parameters
editor_state: The central
EditorStatefor undo, selection, and scene access.Initialization
- property selected_tool: simvx.editor.panels.tilemap_editor.TileMapTool¶
- property current_tile_id: int¶
- property brush_size: int¶
- paint_at(grid_x: int, grid_y: int)[source]¶
Paint the current tile at grid position, respecting brush size.
- fill_at(grid_x: int, grid_y: int)[source]¶
Flood-fill from the given grid position with the current tile.
- pick_at(grid_x: int, grid_y: int)[source]¶
Pick the tile ID at the given grid position (eyedropper).
- begin_stroke(grid_x: int, grid_y: int)[source]¶
Begin a paint/erase stroke at the given grid position.
- continue_stroke(grid_x: int, grid_y: int)[source]¶
Continue the current stroke to a new grid position.
- handle_viewport_click(grid_x: int, grid_y: int)[source]¶
Called by the 2D viewport when the user clicks while tilemap mode is active.
- handle_viewport_drag(grid_x: int, grid_y: int)[source]¶
Called by the 2D viewport during mouse drag in tilemap mode.
- handle_viewport_release()[source]¶
Called by the 2D viewport when mouse is released in tilemap mode.
- size_x¶
‘Property(…)’
- size_y¶
‘Property(…)’
- property size: simvx.core.math.types.Vec2¶
- touch_mode: str¶
‘mouse’
- property theme: simvx.core.ui.types.Theme | None¶
- property mouse_over: bool¶
- property focused: bool¶
- property disabled: bool¶
- get_theme() simvx.core.ui.types.Theme¶
- queue_redraw()¶
- get_minimum_size() simvx.core.math.types.Vec2¶
- get_rect() tuple[float, float, float, float]¶
- get_global_rect() tuple[float, float, float, float]¶
- is_point_inside(point) bool¶
- set_anchor_preset(preset: simvx.core.ui.enums.AnchorPreset)¶
- set_focus()¶
- grab_focus()¶
- release_focus()¶
- has_focus() bool¶
- focus_next_control()¶
- focus_previous_control()¶
- grab_mouse()¶
- release_mouse()¶
- set_drag_preview(control: simvx.core.ui.core.Control)¶
- draw_popup(renderer)¶
- is_popup_point_inside(point) bool¶
- popup_input(event)¶
- dismiss_popup()¶
- z_index¶
‘Property(…)’
- z_as_relative¶
‘Property(…)’
- render_layer¶
‘Property(…)’
- set_render_layer(index: int, enabled: bool = True) None¶
- is_on_render_layer(index: int) bool¶
- property absolute_z_index: int¶
- property position: simvx.core.math.types.Vec2¶
- property rotation: float¶
- property rotation_degrees: float¶
- property scale: simvx.core.math.types.Vec2¶
- property world_position: simvx.core.math.types.Vec2¶
- property world_rotation: float¶
- property world_scale: simvx.core.math.types.Vec2¶
- property forward: simvx.core.math.types.Vec2¶
- property right: simvx.core.math.types.Vec2¶
- translate(offset: tuple[float, float] | numpy.ndarray)¶
- rotate(radians: float)¶
- rotate_deg(degrees: float)¶
- look_at(target: tuple[float, float] | numpy.ndarray)¶
- transform_points(points: list[simvx.core.math.types.Vec2]) list[simvx.core.math.types.Vec2]¶
- draw_polygon(renderer, points: list[simvx.core.math.types.Vec2], closed=True, colour=None)¶
- wrap_screen(margin: float = 20)¶
- strict_errors: ClassVar[bool]¶
True
- script_error_raised¶
‘Signal(…)’
- classmethod __init_subclass__(**kwargs)¶
- property name: str¶
- property process_mode: simvx.core.descriptors.ProcessMode¶
- reset_error() None¶
- add_child(node: simvx.core.node.Node) simvx.core.node.Node¶
- remove_child(node: simvx.core.node.Node)¶
- reparent(new_parent: simvx.core.node.Node)¶
- get_node(path: str) simvx.core.node.Node¶
- find_child(name: str, recursive: bool = False) simvx.core.node.Node | None¶
- find(node_type: type, recursive: bool = True) simvx.core.node.Node | None¶
- property path: str¶
- add_to_group(group: str)¶
- remove_from_group(group: str)¶
- is_in_group(group: str) bool¶
- ready() None¶
- enter_tree() None¶
- exit_tree() None¶
- physics_process(dt: float) None¶
- input_event(event: simvx.core.events.InputEvent) None¶
- input(event: simvx.core.events.TreeInputEvent) None¶
- unhandled_input(event: simvx.core.events.TreeInputEvent) None¶
- start_coroutine(gen: simvx.core.descriptors.Coroutine) simvx.core.descriptors.CoroutineHandle¶
- stop_coroutine(gen_or_handle)¶
- clear_children()¶
- destroy()¶
- property app¶
- property tree: simvx.core.scene_tree.SceneTree¶
- get_tree() simvx.core.scene_tree.SceneTree¶
- __getitem__(key: str)¶
- classmethod get_properties() dict[str, simvx.core.descriptors.Property]¶
- __repr__()¶