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 Skeleton3D dirty update notification #78623

Closed

Conversation

bitsawer
Copy link
Member

@bitsawer bitsawer commented Jun 23, 2023

Fixes #78470 (second try, my first PR fixed the another issue only)

Bisected the regression to #75901 and the change it made to Skeleton3D. After some testing, it's seems that at least push_notification(NOTIFICATION_UPDATE_SKELETON); must be called to catch all skeleton update paths in my test projects and in the linked MRP (even if the node is not in the scene tree). I left notify_deferred_thread_group(NOTIFICATION_UPDATE_SKELETON);, but I'm not totally sure where it is needed. This place seems to be the only place in the entire Godot codebase where it is actually directly called so the behaviour is a bit hard to understand. reduz does discuss that in the node processing PR, but not very in-deph.

So, feedback very much appreciated.

edit:

After some more digging (see my second post here), I'm becoming more convinced that the real solution to this bug and possibly #77548 is to either fix or tweak some notification / thread group processing changes done in #75901. I'm keeping this PR open for discussion or in case we actually want to revert to the old way of handling notifications in some places.

@bitsawer bitsawer force-pushed the fix_skeleton_dirty_notification branch from 72e146b to 94eea79 Compare June 23, 2023 20:15
@YuriSizov YuriSizov modified the milestones: 4.2, 4.1 Jun 23, 2023
@bitsawer
Copy link
Member Author

Now I also noticed that setting the scene root node Thread Group to Main Thread instead of Inherit and enabling the Messages -> Process checkbox in there also makes the character visible in the MRP. Looks like a similar issue with #77548 (comment). Which seems kind of strange, I would assume that the default Inherit setting would be the main thread group. And seems like there is a difference between the editor mode vs play mode.

@reduz
Copy link
Member

reduz commented Jun 26, 2023

it looks like notify_deferred_thread_group() is not being called for some reason. This may need a bit more research, maybe @RandomShaper wants to take a look at some point?

@akien-mga
Copy link
Member

Superseded by #78713.

@akien-mga akien-mga closed this Jun 26, 2023
@bitsawer bitsawer deleted the fix_skeleton_dirty_notification branch June 26, 2023 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Skeleton causes error and project stops working when played when a camera3D is in the scene.
4 participants