Skip to content

Commit bd30e34

Browse files
committed
update references to old hecs APIs
1 parent b7189c1 commit bd30e34

File tree

7 files changed

+21
-24
lines changed

7 files changed

+21
-24
lines changed

feather/ecs/src/lib.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use hecs::{Component, DynamicBundle, Fetch, Query, World};
1616

1717
#[doc(inline)]
1818
pub use hecs::{
19-
BuiltEntity, ComponentError, DynamicQuery, DynamicQueryTypes, Entity, EntityBuilder,
19+
BuiltEntity, ComponentError, Entity, EntityBuilder,
2020
MissingComponent, NoSuchEntity, QueryBorrow, Ref, RefMut,
2121
};
2222

@@ -151,11 +151,6 @@ impl Ecs {
151151
self.world.query()
152152
}
153153

154-
/// Performs a dynamic query. Used for plugins.
155-
pub fn query_dynamic<'q>(&'q self, types: DynamicQueryTypes<'q>) -> DynamicQuery<'q> {
156-
self.world.query_dynamic(types)
157-
}
158-
159154
/// Sets the index of the currently executing system,
160155
/// used for event tracking.
161156
pub fn set_current_system_index(&mut self, index: usize) {

feather/plugin-host/src/host_calls/component.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub fn entity_get_component(
3333
bytes_len_ptr: PluginPtrMut<u32>,
3434
) -> anyhow::Result<()> {
3535
let component = HostComponent::from_u32(component).context("invalid component")?;
36-
let entity = Entity::from_bits(entity);
36+
let entity = Entity::from_bits(entity).context("invalid entity")?;
3737
let visitor = GetComponentVisitor { cx, entity };
3838
let (bytes_ptr, bytes_len) = component.visit(visitor)?;
3939

@@ -87,7 +87,7 @@ pub fn entity_set_component(
8787
bytes_ptr: PluginPtr<u8>,
8888
bytes_len: u32,
8989
) -> anyhow::Result<()> {
90-
let entity = Entity::from_bits(entity);
90+
let entity = Entity::from_bits(entity).context("invalid entity")?;
9191
let component = HostComponent::from_u32(component).context("invalid component")?;
9292
let visitor = InsertComponentVisitor {
9393
cx,

feather/plugin-host/src/host_calls/entity.rs

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use anyhow::Context;
12
use feather_base::Text;
23
use feather_common::chat::{ChatKind, ChatMessage};
34
use feather_ecs::Entity;
@@ -7,7 +8,12 @@ use crate::context::{PluginContext, PluginPtr};
78

89
#[host_function]
910
pub fn entity_exists(cx: &PluginContext, entity: u64) -> anyhow::Result<u32> {
10-
Ok(cx.game_mut().ecs.entity(Entity::from_bits(entity)).is_ok()).map(|b| b as u32)
11+
Ok(cx
12+
.game_mut()
13+
.ecs
14+
.entity(Entity::from_bits(entity).context("invalid entity")?)
15+
.is_ok())
16+
.map(|b| b as u32)
1117
}
1218

1319
#[host_function]
@@ -18,7 +24,7 @@ pub fn entity_send_message(
1824
message_len: u32,
1925
) -> anyhow::Result<()> {
2026
let message = cx.read_json(message_ptr, message_len)?;
21-
let entity = Entity::from_bits(entity);
27+
let entity = Entity::from_bits(entity).context("invalid entity")?;
2228
let _ = cx
2329
.game_mut()
2430
.send_message(entity, ChatMessage::new(ChatKind::System, message));
@@ -33,7 +39,7 @@ pub fn entity_send_title(
3339
title_len: u32,
3440
) -> anyhow::Result<()> {
3541
let title = cx.read_json(title_ptr, title_len)?;
36-
let entity = Entity::from_bits(entity);
42+
let entity = Entity::from_bits(entity).context("invalid entity")?;
3743
cx.game_mut().send_title(entity, title);
3844
Ok(())
3945
}

feather/plugin-host/src/host_calls/entity_builder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,5 @@ pub fn entity_builder_finish(cx: &PluginContext, builder: u32) -> anyhow::Result
8585
.context("invalid entity builder")?;
8686

8787
let entity = cx.game_mut().spawn_entity(builder);
88-
Ok(entity.to_bits())
88+
Ok(entity.to_bits().get())
8989
}

feather/plugin-host/src/host_calls/event.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub fn entity_add_event(
1313
bytes_ptr: PluginPtr<u8>,
1414
bytes_len: u32,
1515
) -> anyhow::Result<()> {
16-
let entity = Entity::from_bits(entity);
16+
let entity = Entity::from_bits(entity).context("invalid entity")?;
1717
let event = HostComponent::from_u32(event).context("invalid component")?;
1818
let visitor = InsertComponentVisitor {
1919
cx,

feather/plugin-host/src/host_calls/plugin_message.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use anyhow::Context;
12
use feather_common::events::PluginMessageEvent;
23
use feather_ecs::Entity;
34
use feather_plugin_host_macros::host_function;
@@ -16,7 +17,7 @@ pub fn plugin_message_send(
1617
let channel = cx.read_string(channel_ptr, channel_len)?;
1718
let data = cx.read_bytes(data_ptr, data_len)?;
1819

19-
let entity = Entity::from_bits(entity);
20+
let entity = Entity::from_bits(entity).context("invalid entity")?;
2021
let event = PluginMessageEvent { channel, data };
2122
cx.game_mut().ecs.insert_entity_event(entity, event)?;
2223

feather/plugin-host/src/host_calls/query.rs

+5-10
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use std::{alloc::Layout, any::TypeId, mem::size_of, ptr};
44

55
use anyhow::Context;
6-
use feather_ecs::{DynamicQuery, DynamicQueryTypes, Ecs};
6+
use feather_ecs::{Ecs};
77
use feather_plugin_host_macros::host_function;
88
use quill_common::{
99
component::{ComponentVisitor, SerializationMethod},
@@ -44,14 +44,13 @@ struct WrittenComponentData {
4444
/// `ComponentVisitor` implementation used to write
4545
/// component data to plugin memory.
4646
struct WriteComponentsVisitor<'a> {
47-
query: &'a DynamicQuery<'a>,
4847
cx: &'a PluginContext,
4948
num_entities: usize,
5049
}
5150

5251
impl<'a> ComponentVisitor<anyhow::Result<WrittenComponentData>> for WriteComponentsVisitor<'a> {
5352
fn visit<T: Component>(self) -> anyhow::Result<WrittenComponentData> {
54-
let components = self.query.iter_component_slices(TypeId::of::<T>());
53+
let components = todo!();
5554

5655
// Write each component.
5756
// We use a different strategy depending
@@ -109,10 +108,7 @@ fn create_query_data(
109108
ecs: &Ecs,
110109
types: &[HostComponent],
111110
) -> anyhow::Result<QueryData> {
112-
let query_types: Vec<TypeId> = types.iter().copied().map(HostComponent::type_id).collect();
113-
let query = ecs.query_dynamic(DynamicQueryTypes::new(&query_types, &[]));
114-
115-
let num_entities = query.iter_entities().count();
111+
let num_entities = todo!();
116112
if num_entities == 0 {
117113
return Ok(QueryData {
118114
num_entities: 0,
@@ -126,7 +122,6 @@ fn create_query_data(
126122
let component_lens = cx.bump_allocate(Layout::array::<u32>(types.len())?)?;
127123
for (i, &typ) in types.iter().enumerate() {
128124
let data = typ.visit(WriteComponentsVisitor {
129-
query: &query,
130125
cx,
131126
num_entities,
132127
})?;
@@ -138,8 +133,8 @@ fn create_query_data(
138133
}
139134

140135
let entities_ptr = cx.bump_allocate(Layout::array::<EntityId>(num_entities)?)?;
141-
for (i, entity) in query.iter_entities().enumerate() {
142-
let bits = entity.to_bits();
136+
for (i, entity) in todo!().enumerate() {
137+
let bits = entity.to_bits().get();
143138
unsafe {
144139
cx.write_pod(entities_ptr.cast().add(i), bits)?;
145140
}

0 commit comments

Comments
 (0)