Skip to content

Commit ab014cc

Browse files
authored
Merge pull request #12 from fallible-algebra/version-bump/bevy-0.17
Update to 0.17.0
2 parents ca2f6d6 + 0c58d04 commit ab014cc

File tree

9 files changed

+100
-68
lines changed

9 files changed

+100
-68
lines changed

Cargo.toml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ keywords = ["bevy", "http", "plugin", "wasm"]
1414
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
1515

1616
[dependencies]
17-
bevy_app = "0.16"
18-
bevy_derive = "0.16"
17+
bevy_app = "0.17.0-rc.1"
18+
bevy_derive = "0.17.0-rc.1"
1919
#bevy_hierarchy = "0.16.0"
20-
bevy_ecs = { version = "0.16", features = ["multi_threaded"] }
21-
bevy_tasks = "0.16"
22-
bevy_log = "0.16"
20+
bevy_ecs = { version = "0.17.0-rc.1", features = ["multi_threaded"] }
21+
bevy_tasks = "0.17.0-rc.1"
22+
bevy_log = "0.17.0-rc.1"
2323

2424
crossbeam-channel = "0.5.11"
2525
ehttp = { version = "0.5.0", features = ["native-async", "json"] }
@@ -29,7 +29,7 @@ serde_json = "1.0"
2929

3030

3131
[dev-dependencies]
32-
bevy = { version = "0.16", default-features = false, features = [
32+
bevy = { version = "0.17.0-rc.1", default-features = false, features = [
3333
"animation",
3434
"bevy_asset",
3535
"bevy_gilrs",
@@ -40,11 +40,13 @@ bevy = { version = "0.16", default-features = false, features = [
4040
"bevy_gltf",
4141
"bevy_render",
4242
"bevy_sprite",
43+
"bevy_sprite_render",
4344
"bevy_text",
4445
"bevy_ui",
4546
"bevy_window",
4647
"bevy_log",
4748
"multi_threaded",
49+
"zstd_rust",
4850
"png",
4951
"hdr",
5052
"x11",

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,24 @@ fn main() {
3232
app.run();
3333
}
3434
35-
fn send_request(mut ev_request: EventWriter<TypedRequest<IpInfo>>) {
35+
fn send_request(mut ev_request: MessageWriter<TypedRequest<IpInfo>>) {
3636
if let Ok(request) = HttpClient::new()
3737
.get("https://api.ipify.org?format=json")
3838
.try_with_type::<IpInfo>()
3939
{
40-
ev_request.send(request);
40+
ev_request.write(request);
4141
}
4242
}
4343
4444
/// consume TypedResponse<IpInfo> events
45-
fn handle_response(mut events: ResMut<Events<TypedResponse<IpInfo>>>) {
45+
fn handle_response(mut events: ResMut<Messages<TypedResponse<IpInfo>>>) {
4646
for response in events.drain() {
4747
let response: IpInfo = response.into_inner();
4848
println!("ip info: {:?}", response);
4949
}
5050
}
5151
52-
fn handle_error(mut ev_error: EventReader<TypedResponseError<IpInfo>>) {
52+
fn handle_error(mut ev_error: MessageReader<TypedResponseError<IpInfo>>) {
5353
for error in ev_error.read() {
5454
println!("Error retrieving IP: {}", error.err);
5555
}

examples/ipinfo.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ fn main() {
1313
.run();
1414
}
1515

16-
fn send_request(mut ev_request: EventWriter<HttpRequest>) {
16+
fn send_request(mut ev_request: MessageWriter<HttpRequest>) {
1717
match HttpClient::new().get("https://api.ipify.org").try_build() {
1818
Ok(request) => {
1919
ev_request.write(request);
@@ -24,13 +24,13 @@ fn send_request(mut ev_request: EventWriter<HttpRequest>) {
2424
}
2525
}
2626

27-
fn handle_response(mut ev_resp: EventReader<HttpResponse>) {
27+
fn handle_response(mut ev_resp: MessageReader<HttpResponse>) {
2828
for response in ev_resp.read() {
2929
println!("response: {:?}", response.text());
3030
}
3131
}
3232

33-
fn handle_error(mut ev_error: EventReader<HttpResponseError>) {
33+
fn handle_error(mut ev_error: MessageReader<HttpResponseError>) {
3434
for error in ev_error.read() {
3535
println!("Error retrieving IP: {}", error.err);
3636
}

examples/observer.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ fn init_request(mut commands: Commands) {
2828

2929
fn send_request(
3030
clients: Query<&HttpClient, With<IpRequestMarker>>,
31-
mut ev_request: EventWriter<HttpRequest>,
31+
mut ev_request: MessageWriter<HttpRequest>,
3232
) {
3333
let requests: Vec<HttpRequest> = clients
3434
.iter()
@@ -44,10 +44,10 @@ fn send_request(
4444
ev_request.write_batch(requests);
4545
}
4646

47-
fn handle_response(response: Trigger<HttpResponse>) {
48-
println!("response: {:?}", response.text());
47+
fn handle_response(response: On<HttpObserved<HttpResponse>>) {
48+
println!("response: {:?}", response.event().inner().text());
4949
}
5050

51-
fn handle_error(error: Trigger<HttpResponseError>) {
52-
println!("Error retrieving IP: {}", error.err);
51+
fn handle_error(error: On<HttpObserved<HttpResponseError>>) {
52+
println!("Error retrieving IP: {}", error.event().inner().err);
5353
}

examples/typed.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ fn main() {
1919
app.run();
2020
}
2121

22-
fn send_request(mut ev_request: EventWriter<TypedRequest<IpInfo>>) {
22+
fn send_request(mut ev_request: MessageWriter<TypedRequest<IpInfo>>) {
2323
match HttpClient::new()
2424
.get("https://api.ipify.org?format=json")
2525
.try_with_type::<IpInfo>()
@@ -34,14 +34,14 @@ fn send_request(mut ev_request: EventWriter<TypedRequest<IpInfo>>) {
3434
}
3535

3636
/// consume TypedResponse<IpInfo> events
37-
fn handle_response(mut events: ResMut<Events<TypedResponse<IpInfo>>>) {
37+
fn handle_response(mut events: ResMut<Messages<TypedResponse<IpInfo>>>) {
3838
for response in events.drain() {
3939
let response: IpInfo = response.into_inner();
4040
println!("ip info: {:?}", response);
4141
}
4242
}
4343

44-
fn handle_error(mut ev_error: EventReader<TypedResponseError<IpInfo>>) {
44+
fn handle_error(mut ev_error: MessageReader<TypedResponseError<IpInfo>>) {
4545
for error in ev_error.read() {
4646
println!("Error retrieving IP: {}", error.err);
4747
}

examples/window.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ fn setup(mut commands: Commands) {
8282
}
8383

8484
fn send_request(
85-
mut ev_request: EventWriter<HttpRequest>,
85+
mut ev_request: MessageWriter<HttpRequest>,
8686
mut status_query: Query<&mut Text, (With<ResponseText>, Without<ResponseIP>)>,
8787
mut ip_query: Query<&mut Text, (With<ResponseIP>, Without<ResponseText>)>,
8888
) {
@@ -107,7 +107,7 @@ fn send_request(
107107
}
108108

109109
fn handle_response(
110-
mut ev_resp: EventReader<HttpResponse>,
110+
mut ev_resp: MessageReader<HttpResponse>,
111111
mut status_query: Query<&mut Text, (With<ResponseText>, Without<ResponseIP>)>,
112112
mut ip_query: Query<&mut Text, (With<ResponseIP>, Without<ResponseText>)>,
113113
) {
@@ -120,7 +120,7 @@ fn handle_response(
120120
}
121121
}
122122
}
123-
fn handle_error(mut ev_error: EventReader<HttpResponseError>) {
123+
fn handle_error(mut ev_error: MessageReader<HttpResponseError>) {
124124
for error in ev_error.read() {
125125
println!("Error retrieving IP: {}", error.err);
126126
}

src/lib.rs

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use bevy_tasks::IoTaskPool;
77
use crossbeam_channel::{Receiver, Sender};
88
use ehttp::{Headers, Request, Response};
99

10-
use crate::prelude::TypedRequest;
10+
use crate::{prelude::TypedRequest, typed::HttpObserved};
1111

1212
pub mod prelude;
1313
mod typed;
@@ -94,9 +94,9 @@ impl Plugin for HttpClientPlugin {
9494
if !app.world().contains_resource::<HttpClientSetting>() {
9595
app.init_resource::<HttpClientSetting>();
9696
}
97-
app.add_event::<HttpRequest>();
98-
app.add_event::<HttpResponse>();
99-
app.add_event::<HttpResponseError>();
97+
app.add_message::<HttpRequest>();
98+
app.add_message::<HttpResponse>();
99+
app.add_message::<HttpResponseError>();
100100
app.add_systems(Update, (handle_request, handle_tasks));
101101
}
102102
}
@@ -135,7 +135,7 @@ impl HttpClientSetting {
135135
}
136136
}
137137

138-
#[derive(Event, Debug, Clone)]
138+
#[derive(Event, Message, Debug, Clone)]
139139
pub struct HttpRequest {
140140
pub from_entity: Option<Entity>,
141141
pub request: Request,
@@ -208,7 +208,7 @@ impl HttpClient {
208208
/// use bevy_http_client::HttpClient;
209209
/// use bevy_ecs::entity::Entity;
210210
///
211-
/// let entity = Entity::from_raw(42); // Example entity
211+
/// let entity = Entity::from_raw_u32(42).unwrap(); // Example entity
212212
/// let http_client = HttpClient::new_with_entity(entity);
213213
/// ```
214214
pub fn new_with_entity(entity: Entity) -> Self {
@@ -588,7 +588,7 @@ impl HttpClient {
588588
/// use bevy_http_client::HttpClient;
589589
/// use bevy_ecs::entity::Entity;
590590
///
591-
/// let entity = Entity::from_raw(42); // Example entity
591+
/// let entity = Entity::from_raw_u32(42).unwrap(); // Example entity
592592
/// let http_client = HttpClient::new().entity(entity);
593593
/// ```
594594
pub fn entity(mut self, entity: Entity) -> Self {
@@ -737,7 +737,9 @@ impl HttpClient {
737737
since = "0.8.3",
738738
note = "Use `try_with_type()` instead for better error handling"
739739
)]
740-
pub fn with_type<T: for<'a> serde::Deserialize<'a>>(self) -> TypedRequest<T> {
740+
pub fn with_type<T: Send + Sync + 'static + for<'a> serde::Deserialize<'a>>(
741+
self,
742+
) -> TypedRequest<T> {
741743
TypedRequest::new(
742744
Request {
743745
method: self.method.expect("method is required"),
@@ -782,7 +784,7 @@ impl HttpClient {
782784
/// Err(e) => eprintln!("Build failed: {}", e),
783785
/// }
784786
/// ```
785-
pub fn try_with_type<T: for<'a> serde::Deserialize<'a>>(
787+
pub fn try_with_type<T: Send + Sync + 'static + for<'a> serde::Deserialize<'a>>(
786788
self,
787789
) -> Result<TypedRequest<T>, HttpClientBuilderError> {
788790
let method = self.method.ok_or(HttpClientBuilderError::MissingMethod)?;
@@ -807,11 +809,11 @@ impl HttpClient {
807809
}
808810

809811
/// wrap for ehttp response
810-
#[derive(Event, Debug, Clone, Deref)]
812+
#[derive(Event, Message, Debug, Clone, Deref)]
811813
pub struct HttpResponse(pub Response);
812814

813815
/// wrap for ehttp error
814-
#[derive(Event, Debug, Clone, Deref)]
816+
#[derive(Event, Message, Debug, Clone, Deref)]
815817
pub struct HttpResponseError {
816818
pub err: String,
817819
}
@@ -832,7 +834,7 @@ pub struct RequestTask {
832834
fn handle_request(
833835
mut commands: Commands,
834836
mut req_res: ResMut<HttpClientSetting>,
835-
mut requests: EventReader<HttpRequest>,
837+
mut requests: MessageReader<HttpRequest>,
836838
q_tasks: Query<&RequestTask>,
837839
) {
838840
let thread_pool = IoTaskPool::get();
@@ -856,24 +858,26 @@ fn handle_request(
856858
match response {
857859
Ok(res) => {
858860
if let Some(mut events) =
859-
world.get_resource_mut::<Events<HttpResponse>>()
861+
world.get_resource_mut::<Messages<HttpResponse>>()
860862
{
861-
events.send(HttpResponse(res.clone()));
863+
events.write(HttpResponse(res.clone()));
862864
} else {
863865
bevy_log::error!("HttpResponse events resource not found");
864866
}
865-
world.trigger_targets(HttpResponse(res), entity);
867+
world.trigger(HttpObserved::new(entity, HttpResponse(res)));
866868
}
867869
Err(e) => {
868870
if let Some(mut events) =
869-
world.get_resource_mut::<Events<HttpResponseError>>()
871+
world.get_resource_mut::<Messages<HttpResponseError>>()
870872
{
871-
events.send(HttpResponseError::new(e.to_string()));
873+
events.write(HttpResponseError::new(e.to_string()));
872874
} else {
873875
bevy_log::error!("HttpResponseError events resource not found");
874876
}
875-
world
876-
.trigger_targets(HttpResponseError::new(e.to_string()), entity);
877+
world.trigger(HttpObserved::new(
878+
entity,
879+
HttpResponseError::new(e.to_string()),
880+
));
877881
}
878882
}
879883

src/prelude.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
pub use super::{
2-
typed::{HttpTypedRequestTrait, TypedRequest, TypedResponse, TypedResponseError},
2+
typed::{HttpObserved, HttpTypedRequestTrait, TypedRequest, TypedResponse, TypedResponseError},
33
HttpClient, HttpClientBuilderError, HttpClientPlugin, HttpClientSetting, HttpRequest,
44
HttpResponse, HttpResponseError, JsonFallback, JsonSerializationError, RequestTask,
55
};

0 commit comments

Comments
 (0)