Geometry Nodes: iterate on attributes api and improve random attribute node
Attributes can now be accessed through a GeometryComponent. MeshComponent and PointCloudComponent implement the specific attribute access mechanisms using virtual methods.
This simplifies code that should work on different geometry components quite a bit, because it only has to be written once without using templates. The Random Attribute node benefits from that a lot.
Geometry Nodes: Add "Edge Angle" option to edge split node
Although disabling this option is equivalent to setting the edge angle to 180 degrees, there is no great reason to change the settings from what is exposed in the modifier.
Geometry Nodes: Hide unsupported attribute types and domains
The random attribute node currently doesn't support every attribute domain or data type. With a bit of boilerplate code we can remove these unsupported enum items from the UI for now, and also get a system to remove unsupported items from the UI in the future. If all attribute creation nodes end up always supporting all attibute types and domains, this can be removed.
Geometry Nodes: Disallow editing and animating modifier active property
There will be an operator to access this property instead, which provides a better name and tooltip to expose in the UI, and makes it more clear that the property is dependent on the other modifiers.
Geometry Nodes: Add the concept of an active modifier
This commit adds functions to set and get the object's active modifier, which is stored as a flag in the ModifierData struct, similar to constraints. This will be used to set the context in the node editor. There are no visible changes in this commit.