Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix push_children inserting a Children component even when no children are supplied #14109

Merged
merged 2 commits into from
Jul 2, 2024

Conversation

janhohenheim
Copy link
Member

@janhohenheim janhohenheim commented Jul 2, 2024

Objective

The Bevy API around manipulating hierarchies removes Children if the operation results in an entity having no children. This means that Children is guaranteed to hold actual children. However, the following code unexpectedly inserts empty Children:

commands.entity(entity).with_children(|_| {});

This was discovered by @Jondolf: https://discord.com/channels/691052431525675048/1124043933886976171/1257660865625325800

Solution

  • with_children is now a noop when no children were passed

Testing

  • Added a regression test

@janhohenheim janhohenheim added C-Bug An unexpected or incorrect behavior D-Trivial Nice and easy! A great choice to get started with Bevy S-Needs-Review Needs reviewer attention (from anyone!) to move forward A-ECS Entities, components, systems, and events labels Jul 2, 2024
@janhohenheim janhohenheim added this to the 0.14 milestone Jul 2, 2024
@janhohenheim
Copy link
Member Author

I added this to the milestone because of how trivial it is, assuming we don't implicitly depend on the faulty behavior anywhere. Feel free to remove it from the release if you want, it's not that important :)

@alice-i-cecile alice-i-cecile added S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it and removed S-Needs-Review Needs reviewer attention (from anyone!) to move forward labels Jul 2, 2024
@alice-i-cecile alice-i-cecile added this pull request to the merge queue Jul 2, 2024
Merged via the queue into bevyengine:main with commit 7aaf440 Jul 2, 2024
33 checks passed
@janhohenheim janhohenheim deleted the push-children branch July 2, 2024 13:52
mockersf pushed a commit that referenced this pull request Jul 2, 2024
…ldren are supplied (#14109)

# Objective

The Bevy API around manipulating hierarchies removes `Children` if the
operation results in an entity having no children. This means that
`Children` is guaranteed to hold actual children. However, the following
code unexpectedly inserts empty `Children`:

```rust
commands.entity(entity).with_children(|_| {});
```

This was discovered by @Jondolf:
https://discord.com/channels/691052431525675048/1124043933886976171/1257660865625325800

## Solution

- `with_children` is now a noop when no children were passed

## Testing

- Added a regression test
zmbush pushed a commit to zmbush/bevy that referenced this pull request Jul 3, 2024
…ldren are supplied (bevyengine#14109)

# Objective

The Bevy API around manipulating hierarchies removes `Children` if the
operation results in an entity having no children. This means that
`Children` is guaranteed to hold actual children. However, the following
code unexpectedly inserts empty `Children`:

```rust
commands.entity(entity).with_children(|_| {});
```

This was discovered by @Jondolf:
https://discord.com/channels/691052431525675048/1124043933886976171/1257660865625325800

## Solution

- `with_children` is now a noop when no children were passed

## Testing

- Added a regression test
MrGVSV pushed a commit to MrGVSV/bevy that referenced this pull request Jul 5, 2024
…ldren are supplied (bevyengine#14109)

# Objective

The Bevy API around manipulating hierarchies removes `Children` if the
operation results in an entity having no children. This means that
`Children` is guaranteed to hold actual children. However, the following
code unexpectedly inserts empty `Children`:

```rust
commands.entity(entity).with_children(|_| {});
```

This was discovered by @Jondolf:
https://discord.com/channels/691052431525675048/1124043933886976171/1257660865625325800

## Solution

- `with_children` is now a noop when no children were passed

## Testing

- Added a regression test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-ECS Entities, components, systems, and events C-Bug An unexpected or incorrect behavior D-Trivial Nice and easy! A great choice to get started with Bevy S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants