Closed maximegmd closed 3 months ago
This seems to work:
Can you share the code in which you create the three entities?
Sure:
auto player = world.entity(fmt::format("Player {:x}", aConnectionId).c_str())
.child_of(world.entity("Level"))
.emplace<PlayerComponent>(aConnectionId, flecs::entity{}, aUsername.c_str());
auto puppet = world.entity()
.child_of(player)
.set<MovementComponent>({pos, rot, {}});
Ah, this is because the entity name contains spaces, which causes problems with queries. What you can do instead is:
e.set_doc_name("Name with spaces");
To be fair, from what I know, the issue only occurs when using expressions to build queries, similar to SQL injection. When you build queries using the query builder you can avoid the problem. Same I believe if you used the entity ID itself in the query expression. (Unsure why the explorer is not doing this.)
I've run into the same problem because I wanted to use dots in my entity names (to mirror filenames with extensions), which caused issues both with the explorer and even entity creation, as dots are used as separators by default. Thankfully Sander introduced a way to avoid tokenization.
Yep, that's exactly it. Because the explorer is fully built on top of the (string based) query DSL, it is usually the first place where these problems show up.
I'm experimenting with some code that lets me use entity names with spaces since this comes up so often, may be able to check in a fix that adds support for it.
I just checked in a fix. If you update to the latest Flecs commit and refresh the explorer it should work as expected!
Describe the bug Using the explorer web app, the hierarchy does not go beyond 1 level.
To Reproduce Steps to reproduce the behavior: