Add PropagateOpacity for controlling the alpha of entire UI node trees #15206
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.
Objective
Solution
PropagateControl
,OpacityModifier
, andBlockOpacityPropagation
components.PropagateControl
will accumulate modifiers down the UI hierarchy, and then those modifiers will be pre-multiplied to UI components when extracting to render them. You can also insertOpacityModifier
directly as long as either there's no ancestor withPropagateControl
, or you includeBlockOpacityPropagation
on the entity. Also note thatOpacityModifier
has to be mutated every tick in order to be applied, which allows us to not care about hierarchy changes that might invalidate the modifier (and in another sense it enables manually setting the modifier since we never automatically remove it).Testing
transparency_ui
example to includePropagateOpacity
.Showcase
TODO: this is showcase-worthy.