]> Pileus Git - grits/blobdiff - src/roam.c
Add preliminary support for points/markers
[grits] / src / roam.c
index 9f2474f6105f0f74c10f65b961a6e08e1a4a4663..3fe2e4c241a35c8b97c41d469fc134f04c587eec 100644 (file)
  *   - Target polygon count/detail
  */
 
-/* Misc */
-RoamView *roam_view_new()
-{
-       return g_new0(RoamView, 1);
-}
-void roam_view_update(RoamView *view)
-{
-       glGetDoublev (GL_MODELVIEW_MATRIX,  view->model);
-       glGetDoublev (GL_PROJECTION_MATRIX, view->proj);
-       glGetIntegerv(GL_VIEWPORT,          view->view);
-       view->version++;
-}
-
 /* For GPQueue comparators */
 static gint tri_cmp(RoamTriangle *a, RoamTriangle *b, gpointer data)
 {
@@ -535,16 +522,23 @@ RoamSphere *roam_sphere_new()
 
        return self;
 }
+void roam_sphere_update_view(RoamSphere *self)
+{
+       if (!self->view)
+               self->view = g_new0(RoamView, 1);
+       glGetDoublev (GL_MODELVIEW_MATRIX,  self->view->model);
+       glGetDoublev (GL_PROJECTION_MATRIX, self->view->proj);
+       glGetIntegerv(GL_VIEWPORT,          self->view->view);
+       self->view->version++;
+}
 void roam_sphere_update_errors(RoamSphere *self)
 {
        g_debug("RoamSphere: update_errors - polys=%d", self->polys);
-       if (!self->view)
-               self->view = roam_view_new();
-       roam_view_update(self->view);
-
        GPtrArray *tris = g_pqueue_get_array(self->triangles);
        GPtrArray *dias = g_pqueue_get_array(self->diamonds);
 
+       roam_sphere_update_view(self);
+
        for (int i = 0; i < tris->len; i++) {
                RoamTriangle *tri = tris->pdata[i];
                roam_triangle_update_errors(tri, self);
@@ -672,7 +666,8 @@ GList *roam_sphere_get_intersect(RoamSphere *self,
         * time = 30      * 2*333           * i_cost = 20000 * i_cost */
        GList *list = NULL;
        for (int i = 0; i < G_N_ELEMENTS(self->roots); i++)
-               list = _roam_sphere_get_intersect_rec(self->roots[i], list, n, s, e, w);
+               list = _roam_sphere_get_intersect_rec(self->roots[i],
+                               list, n, s, e, w);
        return list;
 }
 void roam_sphere_free_tri(RoamTriangle *tri)