Properties

Inspector panel for viewing and editing selected object properties and components

🚧

Under Construction

This documentation is currently being developed and will be available soon.

Overview

The Properties panel is located on the right side of the editor with a default width of 350px (resizable). It displays object information, component fields, and custom properties for the currently selected object(s). The panel shares tab space with Settings, Results, and Console panels.

Object Information

  • •Header: Object name and type
  • •ID: Unique identifier (copyable)
  • •Mesh Type: Primitive or custom mesh information
  • •Statistics: Vertex/face count for meshes

Built-in Components

Transform Component

  • • Position: X, Y, Z coordinates with draggable inputs
  • • Rotation: Euler angles or quaternion
  • • Scale: Uniform or per-axis scaling
  • • Local/World: Toggle coordinate space
  • • Reset Button: Return to default values

Material Component

  • • Color: RGBA color picker
  • • Metalness: 0-1 slider for metallic property
  • • Roughness: 0-1 slider for surface roughness
  • • Emissive: RGB emission color
  • • Emissive Intensity: Emission strength multiplier

Mesh Component

  • • Type: Primitive selector or custom mesh path
  • • File Path: For uploaded meshes
  • • Primitive Options: Subdivisions, segments, etc.

Automatic UI Widget Selection

Field TypeConstraintsWidget
Floatmin/max definedSlider
Floatno constraintsDraggable number
Boolean-Checkbox
Vector2DVec2 input
Vector3DVec3 input
Vector4D + 'color'Color picker
Stringoptions definedDropdown
Stringno optionsText input

Draggable Number Input

Interactive number input with drag-to-adjust functionality:

  • •Click & Drag: Horizontal drag to adjust value
  • •Shift: Fine adjustment (0.1x speed)
  • •Ctrl: Coarse adjustment (10x speed)
  • •Double Click: Manual text entry

Component Buttons

Buttons appear below component fields, styled as centered, theme-aware elements. They execute backend Python functions with loading state feedback during execution.

@button(display_name="Render")
def render_view(self):
    """Execute rendering."""
    result = self.perform_render()
    return f"Render complete: {result}"

Multi-Object Editing

  • •Show common properties when multiple objects are selected
  • •Mixed values displayed as "---"
  • •Edits apply to all selected objects

Collapsible Sections

  • •Click header to expand/collapse component sections
  • •Expansion state is remembered
  • •Smooth animation transitions

Keyboard Shortcuts

TabNext field
Shift + TabPrevious field
EnterConfirm input
EscapeCancel input
Ctrl + ZUndo change
Ctrl + YRedo change

Real-time Sync

  • •Immediate Local Updates: For responsiveness
  • •Debounced Server Sync: 300ms delay to batch updates
  • •Conflict Resolution: For concurrent edits