Now that the select engine data uses non-trivial objects in its global data, storing it at the global scope causes trouble due to arbitrary construction and destruction order. Instead use the construct on first use idiom to make the order clear. Though this struct probably shouldn't be static at all, it does simplify memory management as well, it's nice to remove the need to manually clear the arrays. Pull Request: https://projects.blender.org/blender/blender/pulls/117147