pub mod animation;
pub mod asset_uuid;
pub mod audio;
pub mod character_controller;
pub mod commands;
#[cfg(feature = "physics")]
mod commands_physics;
pub mod components;
pub mod lighting;
pub mod loader;
pub mod manifest;
pub mod material;
pub mod mesh;
pub mod navigation;
pub mod particles;
pub mod physics;
pub mod registry;
pub mod settings;
pub mod typed;

pub use animation::SceneAnimationPlayer;
pub use asset_uuid::AssetUuid;
pub use audio::{EmbeddedAudio, EmbeddedTexture, SceneAudioSource, ScenePrefabInstance};
pub use character_controller::SceneCharacterController;
pub use commands::{
    SceneError, SpawnSceneResult, apply_scene_settings, capture_scene_settings,
    embed_referenced_meshes, embed_referenced_textures, entity_to_scene_entity,
    entity_to_scene_entity_with_uuids, load_scene, load_scene_binary, load_scene_binary_from_bytes,
    load_scene_json, save_scene, save_scene_binary, save_scene_json, spawn_scene,
    spawn_scene_with_deserializer, world_to_scene, world_to_scene_with_serializer,
    world_to_scene_with_uuids, world_to_scene_with_uuids_and_serializer,
};
pub use components::{
    AssetMode, ChunkId, LayerId, MetadataValue, Scene, SceneChunk, SceneChunkConfig,
    SceneComponents, SceneEntity, SceneHdrSkybox, SceneLayerConfig, SceneMesh,
};
pub use lighting::{SceneCamera, SceneLight};
pub use loader::{SceneLoadState, SceneLoadStatus};
pub use manifest::{
    AssetEntry, AssetManifest, AssetType, ManifestError, load_manifest, load_manifest_binary,
    load_manifest_json, save_manifest, save_manifest_binary, save_manifest_json,
};
pub use material::{SceneAlphaMode, SceneMaterial};
pub use mesh::{SceneInstancedMesh, SceneMeshInstance};
pub use navigation::{SceneNavMesh, SceneNavMeshConnection, SceneNavMeshTriangle};
pub use particles::SceneParticleEmitter;
pub use physics::{SceneBodyType, SceneCollider, SceneJoint, SceneJointConnection, ScenePhysics};
pub use registry::{AssetRegistry, RuntimeAssetEntry, RuntimeAssetRegistry};
pub use settings::SceneSettings;
pub use typed::{
    ComponentDescriptor, ComponentTypeRegistry, FieldDescriptor, FieldKind, Persistence,
    SceneDeserializer, SceneSerializer, TypedComponent, TypedPayload, TypedResource,
    apply_field_overrides, component_descriptor, register_component_descriptor,
};
