Skip to main content

Crate jackdaw

Crate jackdaw 

Source
Expand description

Main crate for the Jackdaw editor. Usage of this crate is meant for headless operation. If you want to interact with the jackdaw API for extensions, use the jackdaw_api crate instead.

Modules§

add_entity_picker
Unified Add Entity picker, shared by the toolbar Add menu and the scene-tree Add Entity button. Sources items from built-in templates plus extension-contributed RegisteredMenuEntry rows under menu == "Add".
alignment_guides
app_ops
App-level operators: open the Extensions dialog, open the Keybind settings dialog, toggle hot reload, return to the project-select home screen. None have keybinds currently; they exist so menus (and a future command palette) can dispatch them uniformly.
asset_browser
asset_catalog
brush
brush_drag_ops
Modal operators for the per-element brush drags: face / vertex / edge. Each one wraps the corresponding interaction state machine that used to run as an unconditional system in brush::interaction. The drag math itself is unchanged; this file owns the modal lifecycle (trigger on click, per-frame invoke, release commit, Escape cancel) and Right-click cancel.
brush_element_ops
One-shot brush-element operators: delete the active sub-element and nudge selected vertices/edges/faces along Y by one grid step. Dispatch by current BrushEditMode.
build_status
Static-editor build state machine.
builtin_extensions
Built-in Jackdaw extensions. Each feature area of the editor owns its dock windows through a JackdawExtension, so Jackdaw uses the same API third-party authors do. Disable one in File > Extensions to remove its windows from the layout.
clip_ops
Clip-tool operators. Replace the keybind/click branches in brush::interaction::handle_clip_mode. The remaining clip-mode work (recomputing the preview plane and drawing the gizmo overlay) stays in interaction.rs.
command_palette
commands
core_extension
custom_properties
default_style
document_ops
draw_brush
edit_mode_ops
Edit-mode switch operators: Object / Vertex / Edge / Face / Clip / Physics. Each one either enters the named mode or, if already in it, toggles back out to Object.
entity_ops
entity_templates
ext_build
Editor-driven build pipeline for extension and game projects.
extension_resolution
Persistence for the enabled-extensions list at ~/.config/jackdaw/extensions.json. Read on startup, rewritten whenever the user toggles an extension.
extension_watcher
Watch extension dylib directories for .so / .dylib / .dll changes and surface them to the user.
extensions_dialog
File > Extensions dialog. Toggles compiled-in extensions at runtime and persists the current state to extensions.json.
face_grid
gizmo_ops
Gizmo mode + space operators.
gizmos
grid_ops
Grid-size operators: increase / decrease the editor grid by one power. Flips a resource, no history entry.
hierarchy
history_ops
Undo/Redo operators.
hot_reload
Build-artifact watcher: when cargo writes a fresh target/debug/lib<name>.so for the active project, install it and hot-swap the running dylib.
inspector
keybind_focus
Decide whether a keybind/operator gate should refuse because the user is typing into a UI text input.
keybind_settings
keybinds
layout
material_browser
material_preview
measure_tool
modal_transform
navmesh
new_project
Scaffolding user projects via Bevy CLI.
operator_tooltip
Operator bridge into the generic feathers tooltip pipeline.
physics_brush_bridge
Bridge between editor collider configuration and avian Collider components.
physics_tool
Hammer-style physics placement tool.
pie
Play-In-Editor runtime.
prefab_picker
prelude
Everything needed to start using Jackdaw.
project
project_files
Project Files panel: a file tree view with live filesystem watching.
project_select
reflect_default
Default-construct any reflected type, including ones that don’t #[derive(Default)].
remote
restart
Respawn the editor binary from within a running instance.
scene_io
scene_ops
Scene I/O operators: new / open / save / save as / save selection as template / open recent.
sdk_paths
Locate the SDK dylib, its deps/ dir, and the rustc wrapper.
selection
snapping
status_bar
terrain
transform_ops
Transform-shortcut operators: reset, 90° rotate, and nudge.
undo_snapshot
SceneJsnAst-backed implementation of the snapshotter traits.
view_modes
view_ops
View-mode toggles and per-viewport view operators.
viewport
viewport_overlays
viewport_select
viewport_util

Structs§

BlocksCameraInput
Marker component for UI overlays that should block viewport camera input (scroll, pan, orbit) while they exist. Add this to any overlay entity (e.g. prefab picker, context menus) to automatically disable camera controls.
DylibLoaderPlugin
Enable discovery and loading of dynamic-library extensions.
EditorCategory
Picker grouping for a component. Attach via #[reflect(@EditorCategory("Your Group"))].
EditorCorePlugin
Plugin required for the Jackdaw’s core functionality.
EditorDescription
Picker tooltip override. Falls back to the reflected doc comment when absent.
EditorEntity
EditorHidden
Hides things from editor-facing surfaces. Used in two ways:
EditorInteractionSystems
System set for all editor interaction systems (input handling, viewport clicks, gizmo drags, etc.). Automatically disabled when any dialog is open.
EditorPlugins
The editor plugin group. Construct with EditorPlugins::default for the builder, or add the default instance directly with app.add_plugins(EditorPlugin::default()).
ExtensionPlugin
JackdawDrawSystems
System set for drawing systems. Scheduled in PostUpdate after all propagation sets.
MenuBarDirty
Drained once per frame so multiple registrations coalesce into a single menu-bar rebuild.
NonSerializable
Marker component for entities that should not be included in scene serialization. Add this to runtime-generated child entities (brush face meshes, terrain chunks, etc.) that are rebuilt automatically from their parent’s component data.
SkipSerialization
Marker for entities that exist as editor-time visual indicators. The save filter skips this entity (and its subtree) so the helper never lands in .jsn; the editor viewport still renders it.

Enums§

AppState

Functions§

no_dialog_open
Run condition: returns true when no EditorDialog entity exists.