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

TileMapTool

Available tilemap editing tools.

TileMapEditorPanel

Tilemap painting toolbar and tile selector.

Data

API

simvx.editor.panels.tilemap_editor.log[source]

‘getLogger(…)’

simvx.editor.panels.tilemap_editor.__all__

[‘TileMapEditorPanel’, ‘TileMapTool’]

class simvx.editor.panels.tilemap_editor.TileMapTool[source]

Bases: enum.Enum

Available 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.Control

Tilemap 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 EditorState for 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.

erase_at(grid_x: int, grid_y: int)[source]

Erase tiles 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.

end_stroke()[source]

End the current stroke and push it as a single undo command.

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.

draw(renderer)[source]
process(dt: float)[source]
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
find_all(node_type: type, recursive: bool = True) list
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__()