//! 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, spawn_asset_at_viewport,
};
#[cfg(not(target_arch = "wasm32"))]
pub use asset_loading::{import_animation, import_fbx, load_fbx};
pub use context::{EditorContext, TransformOperation};
pub use gizmo::recreate_gizmo_for_mode;
pub use inspector::{ComponentInspectorUi, InspectorAction, InspectorContext};
pub use menus::{EntityContextAction, add_primitive_popup_ui, entity_context_menu_ui};
pub use spawning::ensure_bounding_volumes;
pub use tree::{TreeCache, WorldTreeUi};
pub use undo::{UndoHistory, UndoableOperation, capture_hierarchy};
