Fix gizmo on top material option having no effect #90183
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes #44077
I found that the
get_material
function in EditorNode3DGizmoPlugin is changing the gizmo materials directly to add and remove the disable depth test flag to enable/disable them for the 'x-ray' visibility state before returning them. This is causing the original state of the disable depth test flag to be lost so materials that were created with the on_top parameter are never returned with the disable depth test flag enabled when in the regular 'visible' visibility state.To fix this I have updated
get_material
to change the disable depth test flag on duplicate versions of the gizmomaterials when the gizmo is set to use the 'x-ray' /
ON_TOP
visibility state if the flag is not already set or otherwise return the stored materials without change.(Since StandardMaterial3D is RefCounted these duplicates should be freed automatically when later unreferenced when the gizmo is redrawn.)