ecs: prepare for publishing

This commit is contained in:
Carter Anderson 2020-08-09 17:58:56 -07:00
parent 34752a27bd
commit 423c5e3e0f
24 changed files with 85 additions and 49 deletions

View file

@ -9,7 +9,8 @@ use bevy_ecs::{ParallelExecutor, Resources, Schedule, World};
/// ## Example /// ## Example
/// Here is a simple "Hello World" Bevy app: /// Here is a simple "Hello World" Bevy app:
/// ``` /// ```
///use bevy::prelude::*; ///use bevy_app::prelude::*;
///use bevy_ecs::prelude::*;
/// ///
///fn main() { ///fn main() {
/// App::build() /// App::build()

View file

@ -14,7 +14,7 @@ categories = ["game-engines", "data-structures"]
profiler = [] profiler = []
[dependencies] [dependencies]
hecs = { path = "hecs", features = ["macros", "serialize"] } bevy_hecs = { path = "hecs", features = ["macros", "serialize"], version = "0.1" }
rand = "0.7.2" rand = "0.7.2"
rayon = "1.3" rayon = "1.3"
crossbeam-channel = "0.4.2" crossbeam-channel = "0.4.2"

View file

@ -1,8 +1,11 @@
[package] [package]
name = "hecs" name = "bevy_hecs"
version = "0.2.12" version = "0.1.0"
description = "A fast, minimal, and ergonomic entity-component-system" description = "Bevy fork of hecs: a fast, minimal, and ergonomic entity-component-system"
authors = ["Benjamin Saunders <ben.e.saunders@gmail.com>"] authors = [
"Benjamin Saunders <ben.e.saunders@gmail.com>",
"Bevy Contributors <bevyengine@gmail.com>",
"Carter Anderson <mcanders1@gmail.com>"]
edition = "2018" edition = "2018"
license = "Apache-2.0" license = "Apache-2.0"
repository = "https://github.com/Ralith/hecs" repository = "https://github.com/Ralith/hecs"
@ -20,11 +23,11 @@ maintenance = { status = "actively-developed" }
default = ["std"] default = ["std"]
std = [] std = []
# Enables derive(Bundle) # Enables derive(Bundle)
macros = ["hecs-macros", "lazy_static"] macros = ["bevy_hecs_macros", "lazy_static"]
serialize = ["serde"] serialize = ["serde"]
[dependencies] [dependencies]
hecs-macros = { path = "macros", version = "0.3.0", optional = true } bevy_hecs_macros = { path = "macros", version = "0.1.0", optional = true }
hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more"] } hashbrown = { version = "0.8.0", default-features = false, features = ["ahash", "inline-more"] }
lazy_static = { version = "1.4.0", optional = true, features = ["spin_no_std"] } lazy_static = { version = "1.4.0", optional = true, features = ["spin_no_std"] }
serde = { version = "1", features = ["derive"], optional = true} serde = { version = "1", features = ["derive"], optional = true}

View file

@ -15,7 +15,7 @@
// modified by Bevy contributors // modified by Bevy contributors
use bencher::{benchmark_group, benchmark_main, Bencher}; use bencher::{benchmark_group, benchmark_main, Bencher};
use hecs::*; use bevy_hecs::*;
struct Position(f32); struct Position(f32);
struct Velocity(f32); struct Velocity(f32);

View file

@ -3,12 +3,12 @@
//! One way to the contents of an entity, as you might do for debugging. A similar pattern could //! One way to the contents of an entity, as you might do for debugging. A similar pattern could
//! also be useful for serialization, or other row-oriented generic operations. //! also be useful for serialization, or other row-oriented generic operations.
fn format_entity(entity: hecs::EntityRef<'_>) -> String { fn format_entity(entity: bevy_hecs::EntityRef<'_>) -> String {
fn fmt<T: hecs::Component + std::fmt::Display>(entity: hecs::EntityRef<'_>) -> Option<String> { fn fmt<T: bevy_hecs::Component + std::fmt::Display>(entity: bevy_hecs::EntityRef<'_>) -> Option<String> {
Some(entity.get::<T>()?.to_string()) Some(entity.get::<T>()?.to_string())
} }
const FUNCTIONS: &[&dyn Fn(hecs::EntityRef<'_>) -> Option<String>] = const FUNCTIONS: &[&dyn Fn(bevy_hecs::EntityRef<'_>) -> Option<String>] =
&[&fmt::<i32>, &fmt::<bool>, &fmt::<f64>]; &[&fmt::<i32>, &fmt::<bool>, &fmt::<f64>];
let mut out = String::new(); let mut out = String::new();
@ -31,7 +31,7 @@ fn format_entity(entity: hecs::EntityRef<'_>) -> String {
} }
fn main() { fn main() {
let mut world = hecs::World::new(); let mut world = bevy_hecs::World::new();
let e = world.spawn((42, true)); let e = world.spawn((42, true));
println!("{}", format_entity(world.entity(e).unwrap())); println!("{}", format_entity(world.entity(e).unwrap()));
} }

View file

@ -1,7 +1,7 @@
[package] [package]
name = "hecs-macros" name = "bevy_hecs_macros"
version = "0.3.0" version = "0.1.0"
description = "Procedural macro definitions for hecs" description = "Bevy fork of hecs-macros: procedural macro definitions for hecs"
authors = ["Benjamin Saunders <ben.e.saunders@gmail.com>"] authors = ["Benjamin Saunders <ben.e.saunders@gmail.com>"]
edition = "2018" edition = "2018"
license = "Apache-2.0" license = "Apache-2.0"
@ -10,7 +10,7 @@ license = "Apache-2.0"
proc-macro = true proc-macro = true
[dependencies] [dependencies]
syn = { version = "1.0", default-features = false, features = ["proc-macro", "parsing", "printing", "derive"] } syn = "1.0"
quote = "1.0.3" quote = "1.0.3"
proc-macro2 = "1.0.1" proc-macro2 = "1.0.1"
proc-macro-crate = "0.1.4" proc-macro-crate = "0.1.4"

View file

@ -50,7 +50,7 @@ pub fn derive_bundle(input: TokenStream) -> TokenStream {
} else if crate_name("bevy_ecs").is_ok() { } else if crate_name("bevy_ecs").is_ok() {
"bevy_ecs" "bevy_ecs"
} else { } else {
"hecs" "bevy_hecs"
}; };
let path: Path = syn::parse(path_str.parse::<TokenStream>().unwrap()).unwrap(); let path: Path = syn::parse(path_str.parse::<TokenStream>().unwrap()).unwrap();

View file

@ -35,7 +35,7 @@ use crate::{archetype::TypeInfo, Component, DynamicBundle};
/// Prefer reusing the same builder over creating new ones repeatedly. /// Prefer reusing the same builder over creating new ones repeatedly.
/// ///
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let mut builder = EntityBuilder::new(); /// let mut builder = EntityBuilder::new();
/// builder.add(123).add("abc"); /// builder.add(123).add("abc");

View file

@ -27,7 +27,7 @@
//! - exclusion of externally-implementable functionality //! - exclusion of externally-implementable functionality
//! //!
//! ``` //! ```
//! # use hecs::*; //! # use bevy_hecs::*;
//! let mut world = World::new(); //! let mut world = World::new();
//! // Nearly any type can be used as a component with zero boilerplate //! // Nearly any type can be used as a component with zero boilerplate
//! let a = world.spawn((123, true, "abc")); //! let a = world.spawn((123, true, "abc"));
@ -96,4 +96,4 @@ pub use lazy_static;
pub use query::Fetch; pub use query::Fetch;
#[cfg(feature = "macros")] #[cfg(feature = "macros")]
pub use hecs_macros::Bundle; pub use bevy_hecs_macros::Bundle;

View file

@ -463,7 +463,7 @@ impl<'a, T: Fetch<'a>> Fetch<'a> for TryFetch<T> {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let a = world.spawn((123, true, "abc")); /// let a = world.spawn((123, true, "abc"));
/// let b = world.spawn((456, false)); /// let b = world.spawn((456, false));
@ -524,7 +524,7 @@ impl<'a, T: Component, F: Fetch<'a>> Fetch<'a> for FetchWithout<T, F> {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let a = world.spawn((123, true, "abc")); /// let a = world.spawn((123, true, "abc"));
/// let b = world.spawn((456, false)); /// let b = world.spawn((456, false));
@ -648,7 +648,7 @@ impl<'w, Q: Query> QueryBorrow<'w, Q> {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let a = world.spawn((123, true, "abc")); /// let a = world.spawn((123, true, "abc"));
/// let b = world.spawn((456, false)); /// let b = world.spawn((456, false));
@ -671,7 +671,7 @@ impl<'w, Q: Query> QueryBorrow<'w, Q> {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let a = world.spawn((123, true, "abc")); /// let a = world.spawn((123, true, "abc"));
/// let b = world.spawn((456, false)); /// let b = world.spawn((456, false));

View file

@ -75,7 +75,7 @@ impl World {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let a = world.spawn((123, "abc")); /// let a = world.spawn((123, "abc"));
/// let b = world.spawn((456, true)); /// let b = world.spawn((456, true));
@ -128,7 +128,7 @@ impl World {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let entities = world.spawn_batch((0..1_000).map(|i| (i, "abc"))).collect::<Vec<_>>(); /// let entities = world.spawn_batch((0..1_000).map(|i| (i, "abc"))).collect::<Vec<_>>();
/// for i in 0..1_000 { /// for i in 0..1_000 {
@ -241,7 +241,7 @@ impl World {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let a = world.spawn((123, true, "abc")); /// let a = world.spawn((123, true, "abc"));
/// let b = world.spawn((456, false)); /// let b = world.spawn((456, false));
@ -268,7 +268,7 @@ impl World {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let a = world.spawn((123, true, "abc")); /// let a = world.spawn((123, true, "abc"));
/// // The returned query must outlive the borrow made by `get` /// // The returned query must outlive the borrow made by `get`
@ -322,7 +322,7 @@ impl World {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let a = world.spawn(()); /// let a = world.spawn(());
/// let b = world.spawn(()); /// let b = world.spawn(());
@ -351,7 +351,7 @@ impl World {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let e = world.spawn((123, "abc")); /// let e = world.spawn((123, "abc"));
/// world.insert(e, (456, true)); /// world.insert(e, (456, true));
@ -452,7 +452,7 @@ impl World {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let e = world.spawn((123, "abc", true)); /// let e = world.spawn((123, "abc", true));
/// assert_eq!(world.remove::<(i32, &str)>(e), Ok((123, "abc"))); /// assert_eq!(world.remove::<(i32, &str)>(e), Ok((123, "abc")));
@ -586,7 +586,7 @@ impl World {
/// ///
/// # Example /// # Example
/// ``` /// ```
/// # use hecs::*; /// # use bevy_hecs::*;
/// let mut world = World::new(); /// let mut world = World::new();
/// let initial_gen = world.archetypes_generation(); /// let initial_gen = world.archetypes_generation();
/// world.spawn((123, "abc")); /// world.spawn((123, "abc"));

View file

@ -14,7 +14,7 @@
// modified by Bevy contributors // modified by Bevy contributors
use hecs::*; use bevy_hecs::*;
#[test] #[test]
fn random_access() { fn random_access() {

View file

@ -1,4 +1,4 @@
pub use hecs::{Query as HecsQuery, *}; pub use bevy_hecs::{Query as HecsQuery, *};
mod resource; mod resource;
mod schedule; mod schedule;
mod system; mod system;

View file

@ -8,7 +8,7 @@ use core::{
ops::{Deref, DerefMut}, ops::{Deref, DerefMut},
ptr::NonNull, ptr::NonNull,
}; };
use hecs::smaller_tuples_too; use bevy_hecs::smaller_tuples_too;
use std::marker::PhantomData; use std::marker::PhantomData;
/// Shared borrow of a Resource /// Shared borrow of a Resource

View file

@ -1,7 +1,7 @@
use super::{FetchResource, ResourceQuery}; use super::{FetchResource, ResourceQuery};
use crate::system::SystemId; use crate::system::SystemId;
use core::any::TypeId; use core::any::TypeId;
use hecs::{Archetype, Ref, RefMut, TypeInfo}; use bevy_hecs::{Archetype, Ref, RefMut, TypeInfo};
use std::{collections::HashMap, ptr::NonNull}; use std::{collections::HashMap, ptr::NonNull};
/// A Resource type /// A Resource type

View file

@ -5,7 +5,7 @@ use crate::{
}; };
use crossbeam_channel::{Receiver, Sender}; use crossbeam_channel::{Receiver, Sender};
use fixedbitset::FixedBitSet; use fixedbitset::FixedBitSet;
use hecs::{ArchetypesGeneration, World}; use bevy_hecs::{ArchetypesGeneration, World};
use rayon::ScopeFifo; use rayon::ScopeFifo;
use std::{ use std::{
ops::Range, ops::Range,
@ -396,7 +396,7 @@ mod tests {
Commands, Commands,
}; };
use fixedbitset::FixedBitSet; use fixedbitset::FixedBitSet;
use hecs::{Entity, World}; use bevy_hecs::{Entity, World};
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
#[derive(Default)] #[derive(Default)]

View file

@ -2,7 +2,7 @@ use crate::{
resource::Resources, resource::Resources,
system::{System, SystemId, ThreadLocalExecution}, system::{System, SystemId, ThreadLocalExecution},
}; };
use hecs::World; use bevy_hecs::World;
use std::{ use std::{
borrow::Cow, borrow::Cow,
collections::{HashMap, HashSet}, collections::{HashMap, HashSet},

View file

@ -1,6 +1,6 @@
use super::SystemId; use super::SystemId;
use crate::resource::{Resource, Resources}; use crate::resource::{Resource, Resources};
use hecs::{Bundle, Component, DynamicBundle, Entity, World}; use bevy_hecs::{Bundle, Component, DynamicBundle, Entity, World};
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
/// A queued command to mutate the current [World] or [Resources] /// A queued command to mutate the current [World] or [Resources]
@ -327,7 +327,7 @@ impl Commands {
mod tests { mod tests {
use super::Commands; use super::Commands;
use crate::resource::Resources; use crate::resource::Resources;
use hecs::World; use bevy_hecs::World;
#[test] #[test]
fn command_buffer() { fn command_buffer() {

View file

@ -4,7 +4,7 @@ use crate::{
resource::{FetchResource, ResourceQuery, Resources, UnsafeClone}, resource::{FetchResource, ResourceQuery, Resources, UnsafeClone},
system::{ArchetypeAccess, Commands, System, SystemId, ThreadLocalExecution}, system::{ArchetypeAccess, Commands, System, SystemId, ThreadLocalExecution},
}; };
use hecs::{Fetch, Query as HecsQuery, World}; use bevy_hecs::{Fetch, Query as HecsQuery, World};
use std::borrow::Cow; use std::borrow::Cow;
pub(crate) struct SystemFn<State, F, ThreadLocalF, Init, SetArchetypeAccess> pub(crate) struct SystemFn<State, F, ThreadLocalF, Init, SetArchetypeAccess>
@ -347,7 +347,7 @@ mod tests {
resource::{ResMut, Resources}, resource::{ResMut, Resources},
schedule::Schedule, schedule::Schedule,
}; };
use hecs::{Entity, With, World}; use bevy_hecs::{Entity, With, World};
struct A; struct A;
struct B; struct B;

View file

@ -1,5 +1,5 @@
use crate::ArchetypeAccess; use crate::ArchetypeAccess;
use hecs::{ use bevy_hecs::{
Archetype, Component, ComponentError, Entity, Fetch, Query as HecsQuery, QueryOne, Ref, RefMut, Archetype, Component, ComponentError, Entity, Fetch, Query as HecsQuery, QueryOne, Ref, RefMut,
World, World,
}; };

View file

@ -1,6 +1,6 @@
use crate::resource::Resources; use crate::resource::Resources;
use fixedbitset::FixedBitSet; use fixedbitset::FixedBitSet;
use hecs::{Access, Query, World}; use bevy_hecs::{Access, Query, World};
use std::{any::TypeId, borrow::Cow, collections::HashSet}; use std::{any::TypeId, borrow::Cow, collections::HashSet};
/// Determines the strategy used to run the `run_thread_local` function in a [System] /// Determines the strategy used to run the `run_thread_local` function in a [System]
@ -105,7 +105,7 @@ impl TypeAccess {
mod tests { mod tests {
use super::{ArchetypeAccess, TypeAccess}; use super::{ArchetypeAccess, TypeAccess};
use crate::resource::{FetchResource, Res, ResMut, ResourceQuery}; use crate::resource::{FetchResource, Res, ResMut, ResourceQuery};
use hecs::World; use bevy_hecs::World;
use std::any::TypeId; use std::any::TypeId;
struct A; struct A;

View file

@ -1,4 +1,4 @@
use hecs::{Bundle, Component, DynamicBundle, Entity, World}; use bevy_hecs::{Bundle, Component, DynamicBundle, Entity, World};
/// Converts a reference to `Self` to a [WorldBuilder] /// Converts a reference to `Self` to a [WorldBuilder]
pub trait WorldBuilderSource { pub trait WorldBuilderSource {

View file

@ -299,7 +299,6 @@ pub fn derive_property(input: TokenStream) -> TokenStream {
}) })
} }
#[derive(Debug)]
struct PropertyDef { struct PropertyDef {
type_name: Ident, type_name: Ident,
generics: Generics, generics: Generics,

33
tools/publish.sh Normal file
View file

@ -0,0 +1,33 @@
crates=(
bevy_app
bevy_asset
bevy_audio
bevy_core
bevy_derive
bevy_diagnostic
bevy_ecs
bevy_ecs/hecs
bevy_ecs/hecs/macros
bevy_gltf
bevy_input
bevy_math
bevy_pbr
bevy_property
bevy_render
bevy_scene
bevy_sprite
bevy_text
bevy_transform
bevy_type_registry
bevy_ui
bevy_wgpu
bevy_window
bevy_winit
)
cd crates
for crate in "${crates[@]}"
do
echo "Publishing ${crate}"
(cd $crate; cargo build)
done