So right now nodes that work on a surface output (or input) use a surface array required for ArrayMesh to work as the final output.
The nice thing about this is that it is nice and simple and means everything is usable from within Godot but I've been thinking about letting go of this approach.
It makes sense to create a new data object that contains all the data that makes up a mesh with a final "convert to surface array" function to generate the final output. This allows us to add in a lot of meta data such as edges, selections, n-polygons, etc. on which to make modifiers act.
This data object can off course be a GDNative object with an exposed interface as well making it possible to use the object within Godot as well (and keeping the door open to having GDProcNode nodes written in GDScript) but it also means having to provide a class in our input types. Though we could always make the assumption that Variant::OBJECT always refers to our data object.
So right now nodes that work on a surface output (or input) use a surface array required for ArrayMesh to work as the final output.
The nice thing about this is that it is nice and simple and means everything is usable from within Godot but I've been thinking about letting go of this approach.
It makes sense to create a new data object that contains all the data that makes up a mesh with a final "convert to surface array" function to generate the final output. This allows us to add in a lot of meta data such as edges, selections, n-polygons, etc. on which to make modifiers act.
This data object can off course be a GDNative object with an exposed interface as well making it possible to use the object within Godot as well (and keeping the door open to having GDProcNode nodes written in GDScript) but it also means having to provide a class in our input types. Though we could always make the assumption that Variant::OBJECT always refers to our data object.
Food for thought.