- Created a Scene_spheres_item
- Made the Scene_c3t3_item a group_item
- Changed the spheres management in the c3t3_item
- Fixed the has_group maintanance in group_items
New feature: an object of class `Scene_group_item`, or derived, is
responsible for drawing its children items. That is the first
approximation of a scene graph.
For that goal, several steps were needed.
- Remove the overload of `Scene::draw()` and `Scene::drawWithNames()`
that does not have the viewer as parameter. Remove then from
`Scene_draw_interface` as well.
- Add `Viewer::inDrawWithNames()` so that items, including the
`Scene_group_item`, can now if a draw function is called for the
picking or not.
- Add the draw function in `Scene_group_item`:
```
virtual void draw(CGAL::Three::Viewer_interface*) const;
virtual void draw_edges(CGAL::Three::Viewer_interface*) const;
virtual void draw_points(CGAL::Three::Viewer_interface*) const;
virtual void draw_splats(CGAL::Three::Viewer_interface*) const;
```
Those draw functions actually call the draw functions of all the
visible children, depending on their rendering mode. If
`viewer->inDrawWithNames()`, draw nothing, and let the children be
drawn with their own names. Another solution could be that the draw
functions of `Scene_group_item` use `glPushName/glPopName`. That API
seems to be usable with a scene graph.
- Add in `Scene_item` two functions:
```
void moveToGroup(Scene_group_item* group);
Scene_group_item* parentGroup() const;
```
That is one first step to allow the `has_group` data member to become
a private member, instead a public one (ugly!!).
Then the big change is in the scene:
- The scene will not call the draw function of items with a parent
group, if the group itself is visible. If the group is not visible but
the children are set to visible, then they are drawn anyway. That
means that a group can "steal" the drawing of its children when it is
visible. That behavior is really convenient for the use case I have in
mind, but it may be strange.
- In the picking, in `drawWithName()`, the draw function of all items
are called, even if they have a parent group.
Cosmetic:
- Move the definition of the constructor `Scene_item::Scene_item` in
the cpp file.