Skip to content

Commit 845509e

Browse files
committed
feat: use new assoc api
1 parent d324920 commit 845509e

File tree

7 files changed

+56
-52
lines changed

7 files changed

+56
-52
lines changed

MODULE.bazel

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,20 @@ module(
77
bazel_dep(name = "rules_cc", version = "0.0.9")
88
bazel_dep(name = "bazel_skylib", version = "1.6.1")
99
bazel_dep(name = "rules_ecsact", version = "0.5.2")
10-
bazel_dep(name = "ecsact_runtime", version = "0.6.2")
11-
bazel_dep(name = "ecsact_lang_cpp", version = "0.4.1")
10+
bazel_dep(name = "ecsact_runtime", version = "0.6.5")
11+
bazel_dep(name = "ecsact_lang_cpp", version = "0.4.3")
1212
bazel_dep(name = "boost.mp11", version = "1.83.0.bzl.1")
1313
bazel_dep(name = "entt", version = "3.12.2")
1414
bazel_dep(name = "ecsact_codegen", version = "0.2.0")
15-
bazel_dep(name = "ecsact_cli", version = "0.3.9")
15+
bazel_dep(name = "ecsact_cli", version = "0.3.10")
1616
bazel_dep(name = "xxhash", version = "0.8.2")
1717
bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
1818

19+
local_path_override(
20+
module_name = "ecsact_lang_cpp",
21+
path = "../ecsact_lang_cpp",
22+
)
23+
1924
bazel_dep(name = "toolchains_llvm", version = "1.0.0", dev_dependency = True)
2025
bazel_dep(name = "hedron_compile_commands", dev_dependency = True)
2126
git_override(

rt_entt_codegen/shared/comps_with_caps.hh

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,19 @@ auto get_all_deep_capabilities( //
2121
all_capabilities[comp_id] = static_cast<ecsact_system_capability>(
2222
capability | all_capabilities[comp_id]
2323
);
24+
}
2425

25-
auto fields =
26-
ecsact::meta::system_association_fields(system_like_id, comp_id);
27-
for(auto field_id : fields) {
28-
auto assoc_comps = ecsact::meta::system_association_capabilities(
29-
system_like_id,
30-
comp_id,
31-
field_id
32-
);
26+
auto assoc_ids = ecsact::meta::system_assoc_ids(system_like_id);
27+
for(auto assoc_id : assoc_ids) {
28+
auto assoc_comp =
29+
ecsact::meta::system_assoc_component_id(system_like_id, assoc_id);
30+
auto assoc_comp_caps =
31+
ecsact::meta::system_assoc_capabilities(system_like_id, assoc_id);
3332

34-
for(auto&& [assoc_comp_id, assoc_comp_cap] : assoc_comps) {
35-
all_capabilities[assoc_comp_id] = static_cast<ecsact_system_capability>(
36-
assoc_comp_cap | all_capabilities[assoc_comp_id]
37-
);
38-
}
33+
for(auto&& [comp_id, capability] : assoc_comp_caps) {
34+
all_capabilities[comp_id] = static_cast<ecsact_system_capability>(
35+
capability | all_capabilities[comp_id]
36+
);
3937
}
4038
}
4139

rt_entt_codegen/shared/ecsact_entt_details.cc

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -140,24 +140,22 @@ auto ecsact_entt_system_details::from_system_like( //
140140

141141
fill_system_details(details, caps);
142142

143-
for(auto comp_id : details.readable_comps) {
144-
auto fields = ecsact::meta::system_association_fields(sys_like_id, comp_id);
145-
for(auto field_id : fields) {
146-
auto assoc_comps = ecsact::meta::system_association_capabilities(
147-
sys_like_id,
148-
comp_id,
149-
field_id
150-
);
151-
152-
details.association_details.insert(
153-
details.association_details.end(),
154-
association_info{
155-
.component_id = comp_id,
156-
.field_id = field_id,
157-
.capabilities = assoc_comps,
158-
}
159-
);
160-
}
143+
for(auto assoc_id : ecsact::meta::system_assoc_ids(sys_like_id)) {
144+
auto assoc_comp_id =
145+
ecsact::meta::system_assoc_component_id(sys_like_id, assoc_id);
146+
auto assoc_fields =
147+
ecsact::meta::system_assoc_fields(sys_like_id, assoc_id);
148+
auto assoc_capabilities =
149+
ecsact::meta::system_assoc_capabilities(sys_like_id, assoc_id);
150+
151+
details.association_details.insert(
152+
details.association_details.end(),
153+
association_info{
154+
assoc_comp_id,
155+
assoc_fields,
156+
assoc_capabilities,
157+
}
158+
);
161159
}
162160

163161
auto generate_ids = ecsact::meta::get_system_generates_ids(sys_like_id);

rt_entt_codegen/shared/ecsact_entt_details.hh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
namespace ecsact::rt_entt_codegen {
99

1010
struct association_info {
11-
ecsact_component_like_id component_id;
12-
ecsact_field_id field_id;
13-
std::unordered_map<ecsact_component_like_id, ecsact_system_capability>
11+
ecsact_component_like_id component_id;
12+
std::vector<ecsact_field_id> field_ids;
13+
std::vector<std::pair<ecsact_component_like_id, ecsact_system_capability>>
1414
capabilities;
1515
};
1616

rt_entt_codegen/shared/parallel.cc

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,17 +121,17 @@ static auto loop_iterator(
121121
}
122122
}
123123

124-
auto other_fields =
125-
ecsact::meta::system_association_fields(sys_like_id, comp_id);
126-
127-
for(auto field_id : other_fields) {
128-
auto other_capabilities = ecsact::meta::system_association_capabilities(
129-
sys_like_id,
130-
comp_id,
131-
field_id
132-
);
124+
auto assoc_ids = ecsact::meta::system_assoc_ids(sys_like_id);
125+
126+
for(auto assoc_id : assoc_ids) {
127+
auto assoc_comp_id =
128+
ecsact::meta::system_assoc_component_id(sys_like_id, assoc_id);
129+
auto assoc_field_ids =
130+
ecsact::meta::system_assoc_fields(sys_like_id, assoc_id);
131+
auto assoc_capabilities =
132+
ecsact::meta::system_assoc_capabilities(sys_like_id, assoc_id);
133133

134-
for(const auto [other_comp_id, other_capability] : other_capabilities) {
134+
for(const auto [other_comp_id, other_capability] : assoc_capabilities) {
135135
auto cpp_name = decl_full_name(other_comp_id);
136136
if(!is_capability_safe(other_capability)) {
137137
if(!unsafe_comps.contains(other_comp_id)) {

runtime/index.bzl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ def ecsact_entt_runtime(name, srcs = [], deps = [], system_impls = [], tags = []
2828
"@ecsact_lang_cpp//cpp_header_codegen",
2929
"@ecsact_lang_cpp//cpp_systems_header_codegen",
3030
"@ecsact_lang_cpp//systems_header_codegen",
31-
"@ecsact_lang_cpp//cpp_meta_header_codegen",
3231
],
3332
output_directory = "_%s__public_hdrs" % name,
3433
**kwargs
@@ -42,7 +41,6 @@ def ecsact_entt_runtime(name, srcs = [], deps = [], system_impls = [], tags = []
4241
strip_include_prefix = "_%s__public_hdrs" % name,
4342
deps = [
4443
"@ecsact_lang_cpp//:execution_context",
45-
"@ecsact_lang_cpp//:type_info",
4644
],
4745
**kwargs
4846
)

test/MODULE.bazel

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ bazel_dep(name = "rules_cc", version = "0.0.9")
44
bazel_dep(name = "bazel_skylib", version = "1.5.0")
55
bazel_dep(name = "googletest", version = "1.14.0")
66
bazel_dep(name = "rules_ecsact", version = "0.5.2")
7-
bazel_dep(name = "ecsact_lang_cpp", version = "0.4.1")
8-
bazel_dep(name = "ecsact_runtime", version = "0.6.1")
7+
bazel_dep(name = "ecsact_lang_cpp", version = "0.4.3")
8+
bazel_dep(name = "ecsact_runtime", version = "0.6.5")
99
bazel_dep(name = "boost.mp11", version = "1.83.0.bzl.1")
1010
bazel_dep(name = "boost.dll", version = "1.83.0.bzl.2")
1111
bazel_dep(name = "entt", version = "3.12.2")
12-
bazel_dep(name = "ecsact_cli", version = "0.3.9")
12+
bazel_dep(name = "ecsact_cli", version = "0.3.10")
1313
bazel_dep(name = "boost.process", version = "1.83.0.bzl.2")
1414

1515
bazel_dep(name = "toolchains_llvm", version = "1.0.0", dev_dependency = True)
@@ -20,6 +20,11 @@ git_override(
2020
remote = "https://github.com/hedronvision/bazel-compile-commands-extractor.git",
2121
)
2222

23+
local_path_override(
24+
module_name = "ecsact_lang_cpp",
25+
path = "../../ecsact_lang_cpp",
26+
)
27+
2328
# TODO: https://github.com/bazelbuild/bazel-central-registry/pull/1916
2429
git_override(
2530
module_name = "libarchive",

0 commit comments

Comments
 (0)