Report this content
We want the Dreams coMmunity to be a safe, diverse and tolerant place for everyone, no matter their age, gender, race, sexual orientation or otherwise. If you believe this content to contradict these principles, you can file a report for our coMmunity teams to investigate.
Note that misuse of the reporting tool will not be tolerated.Item being reported:
A common UI element in games is a "button hold ring" - a prompt that initially displays only the icon for a control button, but surrounds it with an animation of a ring filling up when the button is held.
At present these require two Text Displayers to create in Dreams:
- One to display the icon for the control button.
- One to display the animation of the ring filling up - its text is all of the hollow circle icons in sequence, and its display area only has enough room for one of them, so its animation progress tweak can be used to control which one is displayed.
But that's not a complete solution - if you want the button hold ring to have a background, you're restricted to two of the Text Displayer's display modes:
- Screen space - one of the Text Displayers has its background visible, and the sort order tweaks are used to ensure that that one is drawn behind the other.
- Sticker - the first created Text Displayer has its background visible, and it gets rendered first with the second created Text Displayer rendered on top.
If you want it freely positioned in scene space - which is a common way to display a button hold ring when it's used as an interaction prompt - neither Text Displayer can have the background visible, because you can't reliably control their draw order. They're rendered with midpoint depth sorting.
But what if you could do this with a single Text Displayer? You would need a way to tell Dreams that the control button icon and the hollow circle should be rendered in the same character space. And Unicode already has such a thing - the zero width joiner 0x200D. It already has defined behaviours for some pairs of characters between which it can appear, but Mm have used the basic multilingual plane's private use area for the icons, so they're free to define the behaviour of the zero width joiner when one or both of the neighbouring characters are one of those icons. If Dreams were to process this character by rendering the characters before and after in the same space, the button hold ring could be made with a single Text Displayer. The text would consist of the control button icon, followed by 16 sequences of three characters - the control button icon again, the zero width joiner, and one of the hollow circle icons. Controlling the animation progress would be a simple arithmetic progression, because advancing to the next state would always advance by the same number of characters.