v0.10.0
MCP Server: AI-Assisted Editor Integration
Estella now includes a built-in MCP (Model Context Protocol) bridge that enables AI assistants like Claude to directly interact with the running editor. The bridge starts automatically and exposes a comprehensive API for:
- Scene inspection: read entity hierarchy, component data, asset lists
- Entity operations: create, delete, rename, reparent entities; add/remove components
- Property editing: modify component properties with full undo support
- Timeline control: read/write timeline data, control playback
- Play mode: start/stop/pause play mode, adjust playback speed
- Asset management: read/write asset files, manage asset metadata
A standalone MCP server (tools/mcp-server/) wraps the bridge for use with any MCP-compatible client.
Timeline: AnimFrames Track
A new animFrames track type displays individual sprite frames as colored, resizable blocks on the timeline. Each frame has its own duration that can be adjusted by dragging the block edges, enabling precise control over frame timing without splitting into multiple clips.
Live Playhead Sync
When entering Play Mode, the timeline automatically switches to LIVE mode: the playhead tracks the runtime animation position in real-time (polled at 60fps from the C++ timeline system). A red blinking “LIVE” indicator appears in the toolbar. Editor playback controls are disabled during live mode and restore when exiting Play Mode.
Timeline Editing Improvements
- Multi-select keyframes: Ctrl+click to toggle, Shift+click for range select, rubber-band box select
- Batch operations: move or delete multiple selected keyframes as a single undo step
- Interpolation presets: right-click keyframes to apply Linear, EaseIn, EaseOut, EaseInOut, or Step
- Marker & custom event tracks: new track types for placing markers and custom events on the timeline
- Grid snap: toggle snap-to-grid in the toolbar; keyframes snap to grid lines during drag
- Playback controls: step forward/back by frame, speed control (0.25x–4x), wrap mode cycling (Once/Loop/PingPong)
- Duration editing: double-click the time display to edit total timeline duration
- Track management: drag to reorder, right-click for rename/delete, type-colored sidebar indicators
Physics: Joints, Raycasting & Queries
Joint Types
Five joint types are now available for connecting physics bodies:
- Distance Joint: maintains a fixed distance between two bodies
- Revolute Joint: hinge rotation around a shared anchor point, with optional motor and angle limits
- Prismatic Joint: linear sliding along an axis, with optional motor and translation limits
- Weld Joint: rigidly bonds two bodies together
- Wheel Joint: combines revolute and prismatic behavior for vehicle suspensions
Spatial Queries
- Raycast: cast a ray through the physics world and get all hit results (point, normal, distance, entity)
- Overlap queries: test a circle against the world to find overlapping bodies
- Compound shapes: attach multiple collision shapes to a single physics body
Editor Integration
A new physics editor plugin provides visual configuration of joints and shapes directly in the Inspector.
Spine: Mixing, Events & IK
- Animation mixing: crossfade between Spine animations with configurable mix duration
- Event system: listen for Spine animation events (start, end, complete, custom) via
SpineModuleController - Attachment control: show/hide slots and swap attachments at runtime via
SpineController - IK constraints: configure inverse kinematics constraints in Spine skeletons
- Slot color: tint individual Spine slots programmatically
Performance improvements:
- Mesh extraction results are cached across multi-camera renders
- Mesh allocations batched to 2 per frame maximum
- Transform matrix computation moved to C++ for reduced overhead
Tilemap: Animated Tiles & Isometric
- Animated tiles: tiles can reference animation sequences that play automatically
- Tile properties: access custom properties defined in Tiled on individual tiles
- Flip & rotate: tiles support horizontal/vertical flip and 90-degree rotation
- Isometric grid: native isometric tilemap rendering alongside orthogonal
- Debug visualization: toggle tilemap grid overlay for debugging tile placement
- Tilemap API: new
tilemapAPImodule for runtime tile manipulation (setTile, getTile, fillRect, etc.)
Pivot & Anchor Points
Sprites now support configurable pivot points that affect rotation, scaling, and positioning. The editor displays a draggable pivot overlay in the Scene View. Bounds calculation accounts for non-center pivots.
Editor Improvements
- Asset picker dialog: reusable modal for selecting assets by type, with grid preview and search
- Settings validation: project settings now validate against a JSON schema, surfacing configuration errors early
- Improved inspectors: AnimClip and BitmapFont inspectors redesigned with better UX
- Content browser: asset grid supports additional preview modes
Engine Internals
- Entity destruction cleanup hooks in the C++ Registry
- Blend state moved from file-static to RenderCommand class member
- Physics and Spine global state encapsulated into context structs
App.physicsInitPromisefor awaiting async physics initialization