Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
751 changes: 386 additions & 365 deletions Cargo.lock

Large diffs are not rendered by default.

87 changes: 80 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,11 @@ include = [
default-run = "jackdaw"

[features]
default = []
default = ["navmesh", "avian"]
navmesh = ["dep:bevy_rerecast"]
avian = ["dep:avian3d", "dep:jackdaw_avian_integration"]
dynamic_linking = []

hot-reload = ["dep:bevy_simple_subsecond_system"]
# Experimental dylib-based extension flow. Enables Bevy's
# `dynamic_linking` plus jackdaw's `bevy_dylib`-style facade so
Expand Down Expand Up @@ -67,7 +71,6 @@ members = [
]

[dependencies]
bevy.workspace = true
jackdaw_jsn.workspace = true
jackdaw_geometry.workspace = true
jackdaw_csg.workspace = true
Expand All @@ -81,7 +84,8 @@ jackdaw_terrain.workspace = true
jackdaw_remote.workspace = true
jackdaw_node_graph.workspace = true
jackdaw_animation.workspace = true
jackdaw_avian_integration.workspace = true
jackdaw_avian_integration = { workspace = true, optional = true }
parry3d.workspace = true
jackdaw_panels.workspace = true
jackdaw_api.workspace = true
# The editor crate uses `jackdaw_api` the same way third-party
Expand Down Expand Up @@ -116,9 +120,9 @@ jackdaw_rustc_wrapper.workspace = true
bevy_enhanced_input.workspace = true
serde.workspace = true
serde_json.workspace = true
avian3d.workspace = true
avian3d = { workspace = true, optional = true }
rfd.workspace = true
bevy_rerecast.workspace = true
bevy_rerecast = { workspace = true, optional = true }
ehttp.workspace = true
bincode.workspace = true
base64.workspace = true
Expand All @@ -132,8 +136,68 @@ ctrlc = "3"
bevy_simple_subsecond_system = { version = "0.2", optional = true }
winit.workspace = true
image.workspace = true
bevy_ecs.workspace = true
bevy_app.workspace = true
bevy_feathers.workspace = true
bevy_input.workspace = true
bevy_input_focus.workspace = true
bevy_picking.workspace = true
bevy_platform.workspace = true
bevy_ui_widgets.workspace = true
bevy_ui.workspace = true
bevy_window.workspace = true
bevy_log.workspace = true
bevy_asset.workspace = true
bevy_image.workspace = true
bevy_light.workspace = true
bevy_mesh.workspace = true
bevy_reflect.workspace = true
bevy_math.workspace = true
bevy_gizmos.workspace = true
bevy_remote.workspace = true
bevy_tasks.workspace = true
bevy_derive.workspace = true
bevy_utils.workspace = true
bevy_render.workspace = true
bevy_color.workspace = true

[workspace.dependencies]
bevy_ecs = "0.18"
bevy_app = "0.18"
bevy_feathers = "0.18"
bevy_reflect = "0.18"
bevy_color = "0.18"
bevy_transform = "0.18"
bevy_animation = "0.18"
bevy_gizmos = "0.18"
bevy_camera = "0.18"
bevy_platform = "0.18"
bevy_math = "0.18"
bevy_time = "0.18"
bevy_ui = "0.18"
bevy_ui_widgets = "0.18"
bevy_picking = "0.18"
bevy_asset = "0.18"
bevy_pbr = "0.18"
bevy_utils = "0.18"
bevy_scene = "0.18"
bevy_log = "0.18"
bevy_derive = "0.18"
bevy_mesh = "0.18"
bevy_image = "0.18"
bevy_render = "0.18"
bevy_remote = "0.18"
bevy_internal = "0.18"
bevy_window = "0.18"
bevy_input_focus = "0.18"
bevy_shader = "0.18"
bevy_ui_render = "0.18"
bevy_text = "0.18"
bevy_state = "0.18"
bevy_gltf = "0.18"
bevy_light = "0.18"
bevy_tasks = "0.18"
bevy_input = { version = "0.18", features = ["serialize"] }
bevy = { version = "0.18", features = [
"experimental_bevy_feathers",
"serialize",
Expand Down Expand Up @@ -178,7 +242,10 @@ jackdaw_dylib = { version = "0.4.1", path = "crates/jackdaw_dylib" }
jackdaw_loader = { version = "0.4.1", path = "crates/jackdaw_loader" }
jackdaw_sdk = { version = "0.4.1", path = "crates/jackdaw_sdk" }
jackdaw_rustc_wrapper = { version = "0.4.1", path = "crates/jackdaw_rustc_wrapper" }
bevy_enhanced_input = "0.24"
# TODO: This is only used for its `convex_hull` method, which is a bit of a waste
# find out how to handle that with e.g. manifold, or vendor the function in question
parry3d = "0.26"
bevy_enhanced_input = "0.25"
rfd = "0.15"
bevy_rerecast = { version = "0.4", default-features = true }
ehttp = { version = "0.5", default-features = false, features = [
Expand Down Expand Up @@ -228,7 +295,7 @@ redundant_closure_for_method_calls = "warn"
# undocumented_unsafe_blocks = "warn"

[dev-dependencies]
bevy = { workspace = true, features = ["dynamic_linking"] }
#bevy = { workspace = true, features = ["dynamic_linking"] }
jackdaw_runtime.workspace = true
# Pulled in so cargo builds the fixture cdylib as part of the
# workspace test-target graph. `tests/dylib_loading.rs` dlopens the
Expand Down Expand Up @@ -322,3 +389,9 @@ doc-scrape-examples = true
name = "modal"
path = "examples/extension/modal.rs"
doc-scrape-examples = true

[[example]]
name = "navmesh_server"
path = "examples/navmesh_server.rs"
doc-scrape-examples = true
required-features = ["navmesh"]
17 changes: 16 additions & 1 deletion crates/jackdaw_animation/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,22 @@ repository = "https://github.com/jbuehler23/jackdaw"
include = ["src/**/*", "Cargo.toml", "LICENSE*"]

[dependencies]
bevy.workspace = true
bevy_ecs.workspace = true
bevy_app.workspace = true
bevy_reflect.workspace = true
bevy_math.workspace = true
bevy_color.workspace = true
bevy_gltf.workspace = true
bevy_ui.workspace = true
bevy_text.workspace = true
bevy_picking.workspace = true
bevy_utils.workspace = true
bevy_log.workspace = true
bevy_asset.workspace = true
bevy_transform.workspace = true
bevy_input.workspace = true

bevy_animation.workspace = true
jackdaw_feathers.workspace = true
jackdaw_commands.workspace = true
jackdaw_node_graph.workspace = true
Expand Down
4 changes: 3 additions & 1 deletion crates/jackdaw_animation/src/blend_graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
//! another clip), `anim.blend`, `anim.additive`, and `anim.output`.
//! Currently only single-clip passthrough compiles (`ClipRef` -> Output).
use bevy::prelude::*;
use bevy_color::prelude::*;
use bevy_ecs::prelude::*;
use bevy_reflect::prelude::*;
use serde::{Deserialize, Serialize};

/// Marker on a `Clip` entity whose source is a node-canvas blend tree.
Expand Down
4 changes: 3 additions & 1 deletion crates/jackdaw_animation/src/clip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@
//!
//! [`compile_clips`]: crate::compile_clips

use bevy::prelude::*;
use bevy_ecs::prelude::*;
use bevy_math::prelude::*;
use bevy_reflect::prelude::*;
use serde::{Deserialize, Serialize};

/// Top-level component on a clip entity.
Expand Down
13 changes: 9 additions & 4 deletions crates/jackdaw_animation/src/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,18 @@
use std::cmp::Ordering;
use std::collections::HashSet;

use bevy::animation::{
use bevy_animation::prelude::*;
use bevy_animation::{
AnimationClip, AnimationTargetId, animated_field,
animation_curves::{AnimatableCurve, AnimatableKeyframeCurve},
graph::{AnimationGraph, AnimationNodeIndex},
};
use bevy::gltf::Gltf;
use bevy::prelude::*;
use bevy_asset::prelude::*;
use bevy_ecs::prelude::*;
use bevy_gltf::Gltf;
use bevy_log::prelude::*;
use bevy_math::prelude::*;
use bevy_transform::prelude::*;

use crate::blend_graph::{AnimationBlendGraph, ClipNodeRef, OutputNode};
use crate::clip::{
Expand Down Expand Up @@ -187,7 +192,7 @@ pub fn compile_clips(
/// un-compiled until a later phase adds the proper tree walker.
///
/// [`AnimationBlendGraph`]: crate::blend_graph::AnimationBlendGraph
/// [`AnimationGraph`]: bevy::animation::graph::AnimationGraph
/// [`AnimationGraph`]: bevy_animation::graph::AnimationGraph
pub fn compile_blend_graphs(
blend_graphs: Query<(Entity, Option<&Children>), (With<Clip>, With<AnimationBlendGraph>)>,
existing_compiled: Query<&CompiledClip>,
Expand Down
3 changes: 2 additions & 1 deletion crates/jackdaw_animation/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
//! All mutations go through `SpawnEntity` / `SetJsnField` /
//! `DespawnEntity`. No custom `EditorCommand` types.

use bevy::prelude::*;
use bevy_app::prelude::*;
use bevy_ecs::prelude::*;

pub mod blend_graph;
pub mod clip;
Expand Down
6 changes: 2 additions & 4 deletions crates/jackdaw_animation/src/player.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
//! `AnimationTargetId`, `AnimatedBy`) based on engagement state.
//! None of these are persisted.

use bevy::animation::{
AnimatedBy, AnimationPlayer, AnimationTargetId, graph::AnimationGraphHandle,
};
use bevy::prelude::*;
use bevy_animation::{AnimatedBy, AnimationPlayer, AnimationTargetId, graph::AnimationGraphHandle};
use bevy_ecs::prelude::*;

use crate::blend_graph::{AnimationBlendGraph, ClipNodeRef, OutputNode};
use crate::clip::{Clip, GltfClipRef, SelectedClip};
Expand Down
14 changes: 11 additions & 3 deletions crates/jackdaw_animation/src/timeline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,17 @@
//! main editor's existing `SpawnEntity` / `SetJsnField` / `DespawnEntity`
//! command primitives; see [`crate::commands`] for the rationale.

use bevy::prelude::*;
use bevy::ui::ComputedNode;
use bevy::ui::ui_transform::UiGlobalTransform;
use bevy_color::prelude::*;
use bevy_ecs::prelude::*;
use bevy_input::prelude::*;
use bevy_log::prelude::*;
use bevy_picking::prelude::*;
use bevy_text::prelude::*;
use bevy_transform::prelude::*;
use bevy_ui::ComputedNode;
use bevy_ui::prelude::*;
use bevy_ui::ui_transform::UiGlobalTransform;
use bevy_utils::prelude::*;
use jackdaw_feathers::button::{
ButtonClickEvent, ButtonProps, ButtonSize, ButtonVariant, IconButtonProps, button, icon_button,
};
Expand Down
16 changes: 9 additions & 7 deletions crates/jackdaw_api/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,18 @@ repository = "https://github.com/jbuehler23/jackdaw"
# the editor's.
dynamic_linking = [
"dep:jackdaw_dylib",
"bevy/dynamic_linking",
"bevy/experimental_bevy_feathers",
"bevy/serialize",
"bevy/debug",
"bevy/bevy_remote",
"bevy/file_watcher",
#"bevy/dynamic_linking",
"dep:bevy_feathers",
#"bevy/serialize",
#"bevy/debug",
#"bevy/bevy_remote",
#"bevy/file_watcher",
]

[dependencies]
bevy.workspace = true
bevy_ecs.workspace = true
bevy_feathers = { workspace = true, optional = true }

bevy_enhanced_input.workspace = true
jackdaw_api_internal.workspace = true
jackdaw_api_macros.workspace = true
Expand Down
4 changes: 2 additions & 2 deletions crates/jackdaw_api/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ pub mod prelude {
WindowDescriptor, operator,
};

/// Helper [`SystemParam`](bevy::ecs::system::SystemParam) for
/// Helper [`SystemParam`](bevy_ecs::system::SystemParam) for
/// operators that need to read or cancel the active modal.
pub use jackdaw_api_internal::lifecycle::ActiveModalQuery;

Expand All @@ -161,5 +161,5 @@ pub mod prelude {

/// Re-exported so manual [`Operator`] impls don't need an extra
/// bevy import.
pub use bevy::ecs::system::SystemId;
pub use bevy_ecs::system::SystemId;
}
10 changes: 9 additions & 1 deletion crates/jackdaw_api_internal/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,15 @@ license = "MIT OR Apache-2.0"
repository = "https://github.com/jbuehler23/jackdaw"

[dependencies]
bevy.workspace = true
bevy_ecs.workspace = true
bevy_app.workspace = true
bevy_state.workspace = true
bevy_log.workspace = true
bevy_derive.workspace = true
bevy_reflect.workspace = true
bevy_utils.workspace = true
bevy_platform.workspace = true

bevy_enhanced_input.workspace = true
jackdaw_panels.workspace = true
jackdaw_commands.workspace = true
Expand Down
4 changes: 3 additions & 1 deletion crates/jackdaw_api_internal/src/extensions_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

use std::{collections::BTreeMap, path::PathBuf};

use bevy::{platform::collections::HashSet, prelude::*};
use bevy_derive::{Deref, DerefMut};
use bevy_ecs::prelude::*;
use bevy_platform::collections::HashSet;
use serde::{Deserialize, Serialize};

use crate::paths::config_dir;
Expand Down
6 changes: 3 additions & 3 deletions crates/jackdaw_api_internal/src/ffi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ pub const REFLECT_REGISTER_SYMBOL: &[u8] = b"jackdaw_register_reflect_types_v1\0
/// sound because both sides share `TypeRegistry`'s type layout
/// through `libjackdaw_sdk.so` (via `bevy/dynamic_linking` plus
/// jackdaw's rustc wrapper).
pub type ReflectRegisterFn = unsafe extern "Rust" fn(&mut bevy::reflect::TypeRegistry);
pub type ReflectRegisterFn = unsafe extern "Rust" fn(&mut bevy_reflect::TypeRegistry);

/// Shape returned by every dylib extension's entry function.
///
Expand Down Expand Up @@ -161,6 +161,6 @@ pub struct GameEntry {
pub bevy_version: *const c_char,
pub profile: *const c_char,
pub name: *const c_char,
pub build: unsafe extern "C" fn(*mut bevy::ecs::world::World),
pub teardown: unsafe extern "C" fn(*mut bevy::ecs::world::World),
pub build: unsafe extern "C" fn(*mut bevy_ecs::world::World),
pub teardown: unsafe extern "C" fn(*mut bevy_ecs::world::World),
}
11 changes: 7 additions & 4 deletions crates/jackdaw_api_internal/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,12 @@ pub mod snapshot;
use std::borrow::Cow;
use std::sync::Arc;

use bevy::ecs::{system::IntoObserverSystem, world::EntityWorldMut};
use bevy::prelude::*;
use bevy_app::prelude::*;
use bevy_ecs::prelude::*;
use bevy_ecs::{system::IntoObserverSystem, world::EntityWorldMut};
use bevy_enhanced_input::prelude::{Action, Fire};
use bevy_log::prelude::*;
use bevy_utils::prelude::*;
use jackdaw_panels::{
DockWindowDescriptor, WindowRegistry, WorkspaceDescriptor, WorkspaceRegistry,
};
Expand Down Expand Up @@ -110,7 +113,7 @@ pub mod prelude {
// BEI types extension authors need for `actions!` / `bindings!` / observers.
pub use bevy_enhanced_input::prelude::*;
// Re-export Bevy's SystemId here so Operator impls don't need to import it.
pub use bevy::ecs::system::SystemId;
pub use bevy_ecs::system::SystemId;
}

/// Trait implemented by every extension. Declares the extension's name
Expand Down Expand Up @@ -294,7 +297,7 @@ impl<'a> ExtensionContext<'a> {
let ext = self.extension_entity;

let (execute, invoke, availability_check, cancel) = {
let mut queue = bevy::ecs::world::CommandQueue::default();
let mut queue = bevy_ecs::world::CommandQueue::default();
let mut commands = Commands::new(&mut queue, self.world);
let execute = O::register_execute(&mut commands);
let invoke = O::register_invoke(&mut commands);
Expand Down
Loading
Loading