nightshade 0.8.0

A cross-platform data-oriented game engine.
Documentation
//! Scene editor infrastructure for building custom editors.
//!
//! Provides the building blocks for interactive 3D scene editing:
//!
//! - **Gizmos**: Transform manipulation (translate, rotate, scale) with local/global spaces
//! - **Modal transforms**: Blender-style G/R/S keys with axis constraints
//! - **Undo/redo**: History tracking with entity snapshots via [`UndoHistory`]
//! - **Inspectors**: Component inspector UI for all built-in components
//! - **Picking**: GPU-based entity picking and marquee selection
//! - **Selection**: Multi-select, copy/paste, duplicate via [`EntitySelection`]
//! - **Scene tree**: Hierarchical tree view with drag-and-drop reparenting
//! - **Context menus**: Right-click entity context menus and add-node modal
//! - **Camera controls**: View presets and orthographic toggle
//! - **Asset loading**: glTF/GLB and FBX import utilities
//!
//! Requires the `editor` feature (which implies `mosaic` and `picking`).

pub mod add_node;
pub mod asset_loading;
pub mod camera_controls;
#[cfg(not(target_arch = "wasm32"))]
pub mod clipboard;
pub mod code_editor;
pub mod context;
pub mod gizmo;
pub mod input;
pub mod inspector;
pub mod menus;
pub mod picking;
pub mod selection;
pub mod spawning;
pub mod tree;
pub mod undo;

pub use add_node::render_add_node_modal;
pub use asset_loading::{
    GltfImportResult, load_gltf, load_gltf_from_bytes, load_gltf_resources, spawn_asset_at_viewport,
};
#[cfg(all(feature = "fbx", not(target_arch = "wasm32")))]
pub use asset_loading::{import_animation, import_fbx, load_fbx};
pub use camera_controls::{
    CameraView, focus_on_selection, is_mouse_in_selected_viewport, set_camera_view,
    toggle_camera_orthographic,
};
pub use context::{
    CoordinateSpace, EditorContext, GizmoInteraction, MarqueeState, ModalTransformState,
    SnapSettings, TransformConstraint, TransformEdit, TransformOperation,
};
pub use gizmo::{recreate_gizmo_for_mode, update_gizmo_mode_for_coordinate_space};
pub use input::{
    InputResult, InputSignal, is_ctrl_pressed, is_shift_pressed, on_keyboard_input_handler,
};
pub use inspector::{ComponentInspector, ComponentInspectorUi, InspectorAction, InspectorContext};
pub use menus::{
    AddNodeModalResult, AddPrimitiveResult, EntityContextAction, EntityContextResult, NodeType,
    add_node_modal_ui, add_primitive_popup_ui, create_node, entity_context_menu_ui,
    should_dismiss_popup,
};
pub use picking::{
    check_context_menu_trigger, draw_marquee_selection, is_editor_utility_entity,
    update_marquee_selection, update_picking,
};
pub use selection::{
    EntitySelection, copy_selection_to_clipboard, delete_selection, duplicate_selection,
    paste_from_clipboard, redo_with_selection_update, select_all, undo_with_selection_update,
};
pub use spawning::{ensure_bounding_volumes, query_number_of_lines};
pub use tree::{TreeCache, TreeUiResult, WorldTreeUi};
pub use undo::{
    EntitySnapshot, UndoHistory, UndoableOperation, capture_hierarchy, push_component_change,
};