-typedef gboolean (*GritsLevelFunc)(GritsObject *obj, gpointer user_data, gint level, gboolean sorted);
-
-static gboolean _foreach_object_cb(gpointer key, gpointer value, gpointer pointers)
-{
- struct RenderLevel *level = value;
- GritsLevelFunc user_func = ((gpointer*)pointers)[0];
- gpointer user_data = ((gpointer*)pointers)[1];
- for (GList *cur = level->unsorted.next; cur; cur = cur->next)
- if (user_func(cur->data, user_data, (gint)key, FALSE))
- return TRUE;
- for (GList *cur = level->sorted.next; cur; cur = cur->next)
- if (user_func(cur->data, user_data, (gint)key, TRUE))
- return TRUE;
- return FALSE;
-}
-
-static void _foreach_object(GritsOpenGL *opengl, GritsLevelFunc func, gpointer user_data)
-{
- gpointer pointers[2] = {func, user_data};
- g_tree_foreach(opengl->objects, _foreach_object_cb, pointers);
-}
-
-static gboolean _add_object_world(GritsObject *object, GPtrArray *array, gint level, gboolean sorted)
-{
- if (level < GRITS_LEVEL_HUD)
- g_ptr_array_add(array, object);
- return FALSE;
-}
-
-static gboolean _add_object_ortho(GritsObject *object, GPtrArray *array, gint level, gboolean sorted)
-{
- if (level >= GRITS_LEVEL_HUD)
- g_ptr_array_add(array, object);
- return FALSE;
-}
-