simvx.core.viewport¶

Viewport, SubViewport, and Display system for SimVX.

Module Contents¶

Classes¶

StretchMode

StretchAspect

VSyncMode

WindowMode

DisplaySettings

Project-level display configuration. Read from project.simvx.

SubViewport

Renders its children to an offscreen texture.

ViewportContainer

UI widget that hosts and displays a SubViewport.

WorldEnvironment

Global rendering environment settings for a scene.

Environment

Environment resource that can be shared between WorldEnvironment nodes.

API¶

class simvx.core.viewport.StretchMode¶

Bases: enum.IntEnum

DISABLED¶

0

CANVAS_ITEMS¶

1

VIEWPORT¶

2

__abs__()¶
__add__()¶
__and__()¶
__bool__()¶
__ceil__()¶
__delattr__()¶
__dir__()¶
__divmod__()¶
__eq__()¶
__float__()¶
__floor__()¶
__floordiv__()¶
__format__()¶
__ge__()¶
__getattribute__()¶
__getnewargs__()¶
__getstate__()¶
__gt__()¶
__hash__()¶
__index__()¶
__int__()¶
__invert__()¶
__le__()¶
__lshift__()¶
__lt__()¶
__mod__()¶
__mul__()¶
__ne__()¶
__neg__()¶
__new__()¶
__or__()¶
__pos__()¶
__pow__()¶
__radd__()¶
__rand__()¶
__rdivmod__()¶
__reduce__()¶
__reduce_ex__()¶
__repr__()¶
__rfloordiv__()¶
__rlshift__()¶
__rmod__()¶
__rmul__()¶
__ror__()¶
__round__()¶
__rpow__()¶
__rrshift__()¶
__rshift__()¶
__rsub__()¶
__rtruediv__()¶
__rxor__()¶
__setattr__()¶
__sizeof__()¶
__str__()¶
__sub__()¶
__subclasshook__()¶
__truediv__()¶
__trunc__()¶
__xor__()¶
as_integer_ratio()¶
bit_count()¶
bit_length()¶
conjugate()¶
class denominator¶
class imag¶
is_integer()¶
class numerator¶
class real¶
to_bytes()¶
__deepcopy__(memo)¶
__copy__()¶
name()¶
value()¶
class simvx.core.viewport.StretchAspect¶

Bases: enum.IntEnum

IGNORE¶

0

KEEP¶

1

KEEP_WIDTH¶

2

KEEP_HEIGHT¶

3

EXPAND¶

4

__abs__()¶
__add__()¶
__and__()¶
__bool__()¶
__ceil__()¶
__delattr__()¶
__dir__()¶
__divmod__()¶
__eq__()¶
__float__()¶
__floor__()¶
__floordiv__()¶
__format__()¶
__ge__()¶
__getattribute__()¶
__getnewargs__()¶
__getstate__()¶
__gt__()¶
__hash__()¶
__index__()¶
__int__()¶
__invert__()¶
__le__()¶
__lshift__()¶
__lt__()¶
__mod__()¶
__mul__()¶
__ne__()¶
__neg__()¶
__new__()¶
__or__()¶
__pos__()¶
__pow__()¶
__radd__()¶
__rand__()¶
__rdivmod__()¶
__reduce__()¶
__reduce_ex__()¶
__repr__()¶
__rfloordiv__()¶
__rlshift__()¶
__rmod__()¶
__rmul__()¶
__ror__()¶
__round__()¶
__rpow__()¶
__rrshift__()¶
__rshift__()¶
__rsub__()¶
__rtruediv__()¶
__rxor__()¶
__setattr__()¶
__sizeof__()¶
__str__()¶
__sub__()¶
__subclasshook__()¶
__truediv__()¶
__trunc__()¶
__xor__()¶
as_integer_ratio()¶
bit_count()¶
bit_length()¶
conjugate()¶
class denominator¶
class imag¶
is_integer()¶
class numerator¶
class real¶
to_bytes()¶
__deepcopy__(memo)¶
__copy__()¶
name()¶
value()¶
class simvx.core.viewport.VSyncMode¶

Bases: enum.IntEnum

DISABLED¶

0

ENABLED¶

1

ADAPTIVE¶

2

MAILBOX¶

3

__abs__()¶
__add__()¶
__and__()¶
__bool__()¶
__ceil__()¶
__delattr__()¶
__dir__()¶
__divmod__()¶
__eq__()¶
__float__()¶
__floor__()¶
__floordiv__()¶
__format__()¶
__ge__()¶
__getattribute__()¶
__getnewargs__()¶
__getstate__()¶
__gt__()¶
__hash__()¶
__index__()¶
__int__()¶
__invert__()¶
__le__()¶
__lshift__()¶
__lt__()¶
__mod__()¶
__mul__()¶
__ne__()¶
__neg__()¶
__new__()¶
__or__()¶
__pos__()¶
__pow__()¶
__radd__()¶
__rand__()¶
__rdivmod__()¶
__reduce__()¶
__reduce_ex__()¶
__repr__()¶
__rfloordiv__()¶
__rlshift__()¶
__rmod__()¶
__rmul__()¶
__ror__()¶
__round__()¶
__rpow__()¶
__rrshift__()¶
__rshift__()¶
__rsub__()¶
__rtruediv__()¶
__rxor__()¶
__setattr__()¶
__sizeof__()¶
__str__()¶
__sub__()¶
__subclasshook__()¶
__truediv__()¶
__trunc__()¶
__xor__()¶
as_integer_ratio()¶
bit_count()¶
bit_length()¶
conjugate()¶
class denominator¶
class imag¶
is_integer()¶
class numerator¶
class real¶
to_bytes()¶
__deepcopy__(memo)¶
__copy__()¶
name()¶
value()¶
class simvx.core.viewport.WindowMode¶

Bases: enum.IntEnum

WINDOWED¶

0

FULLSCREEN¶

1

BORDERLESS¶

2

MAXIMIZED¶

3

__abs__()¶
__add__()¶
__and__()¶
__bool__()¶
__ceil__()¶
__delattr__()¶
__dir__()¶
__divmod__()¶
__eq__()¶
__float__()¶
__floor__()¶
__floordiv__()¶
__format__()¶
__ge__()¶
__getattribute__()¶
__getnewargs__()¶
__getstate__()¶
__gt__()¶
__hash__()¶
__index__()¶
__int__()¶
__invert__()¶
__le__()¶
__lshift__()¶
__lt__()¶
__mod__()¶
__mul__()¶
__ne__()¶
__neg__()¶
__new__()¶
__or__()¶
__pos__()¶
__pow__()¶
__radd__()¶
__rand__()¶
__rdivmod__()¶
__reduce__()¶
__reduce_ex__()¶
__repr__()¶
__rfloordiv__()¶
__rlshift__()¶
__rmod__()¶
__rmul__()¶
__ror__()¶
__round__()¶
__rpow__()¶
__rrshift__()¶
__rshift__()¶
__rsub__()¶
__rtruediv__()¶
__rxor__()¶
__setattr__()¶
__sizeof__()¶
__str__()¶
__sub__()¶
__subclasshook__()¶
__truediv__()¶
__trunc__()¶
__xor__()¶
as_integer_ratio()¶
bit_count()¶
bit_length()¶
conjugate()¶
class denominator¶
class imag¶
is_integer()¶
class numerator¶
class real¶
to_bytes()¶
__deepcopy__(memo)¶
__copy__()¶
name()¶
value()¶
class simvx.core.viewport.DisplaySettings¶

Project-level display configuration. Read from project.simvx.

Initialization

compute_canvas_transform(window_width: int, window_height: int) numpy.ndarray¶

Compute the 2D canvas transform matrix based on stretch settings.

Returns 3x3 affine matrix to apply to all 2D rendering.

compute_viewport_rect(window_width: int, window_height: int) tuple[int, int, int, int]¶

Compute the viewport rectangle (x, y, w, h) for 3D rendering.

class simvx.core.viewport.SubViewport(name='SubViewport', **kwargs)¶

Bases: simvx.core.engine.Node

Renders its children to an offscreen texture.

Used for: minimaps, security cameras, portals, split-screen, 2D-in-3D (render 3D to texture, use as Sprite2D), 3D-in-2D (render 2D to texture, use on MeshInstance3D material).

Initialization

size¶

‘Property(…)’

transparent_bg¶

‘Property(…)’

render_target_update_mode¶

‘Property(…)’

property texture¶

The rendered texture, usable as material input or Sprite2D texture.

get_texture_size() tuple[int, int]¶
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) 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¶
process(dt: float) None¶
physics_process(dt: float) None¶
draw(renderer) 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)¶
destroy()¶
queue_free¶

None

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]¶
get_settings¶

None

__repr__()¶
class simvx.core.viewport.ViewportContainer(name='ViewportContainer', **kwargs)¶

Bases: simvx.core.ui.core.Control

UI widget that hosts and displays a SubViewport.

Initialization

stretch¶

‘Property(…)’

set_viewport(viewport: simvx.core.viewport.SubViewport)¶
size_x¶

‘Property(…)’

size_y¶

‘Property(…)’

property size: simvx.core.math.types.Vec2¶
get_theme() simvx.core.ui.core.Theme¶
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.core.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(…)’

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 global_position: simvx.core.math.types.Vec2¶
property global_rotation: float¶
property global_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, color=None)¶
wrap_screen(margin: float = 20)¶
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) 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¶
process(dt: float) None¶
physics_process(dt: float) None¶
draw(renderer) 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)¶
destroy()¶
queue_free¶

None

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]¶
get_settings¶

None

__repr__()¶
class simvx.core.viewport.WorldEnvironment(name: str = '', **kwargs)¶

Bases: simvx.core.engine.Node

Global rendering environment settings for a scene.

Initialization

ambient_light_color¶

‘Property(…)’

ambient_light_energy¶

‘Property(…)’

ambient_light_mode¶

‘Property(…)’

fog_enabled¶

‘Property(…)’

fog_color¶

‘Property(…)’

fog_density¶

‘Property(…)’

fog_height¶

‘Property(…)’

fog_height_density¶

‘Property(…)’

tonemap_mode¶

‘Property(…)’

tonemap_exposure¶

‘Property(…)’

tonemap_white¶

‘Property(…)’

bloom_enabled¶

‘Property(…)’

bloom_threshold¶

‘Property(…)’

bloom_intensity¶

‘Property(…)’

sky_mode¶

‘Property(…)’

sky_color_top¶

‘Property(…)’

sky_color_bottom¶

‘Property(…)’

sky_texture¶

‘Property(…)’

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) 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¶
process(dt: float) None¶
physics_process(dt: float) None¶
draw(renderer) 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)¶
destroy()¶
queue_free¶

None

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]¶
get_settings¶

None

__repr__()¶
class simvx.core.viewport.Environment¶

Environment resource that can be shared between WorldEnvironment nodes.

Initialization