c3geometry: Added a set_dirty() function
authorMichel Pollet <buserror@gmail.com>
Fri, 15 Jun 2012 08:17:47 +0000 (09:17 +0100)
committerMichel Pollet <buserror@gmail.com>
Fri, 15 Jun 2012 08:17:47 +0000 (09:17 +0100)
Also dirties parent object

Signed-off-by: Michel Pollet <buserror@gmail.com>
examples/shared/libc3/src/c3geometry.c
examples/shared/libc3/src/c3geometry.h

index 9c5d359..2b62d5b 100644 (file)
@@ -176,10 +176,9 @@ c3geometry_factor(
                c3f tolerance,
                c3f normaltolerance)
 {
-       printf("%s Start geometry has %d vertices and %d indexes\n", __func__,
-                       g->vertice.count, g->indices.count);
-       printf("%s Start geometry has %d normals and %d tex\n", __func__,
-                       g->normals.count, g->textures.count);
+       printf("%s has %d/%d/%d vertices/normals/tex and %d indexes\n", __func__,
+                       g->vertice.count, g->normals.count, g->textures.count,
+                       g->indices.count);
 
        c3f tolerance2 = tolerance * tolerance;
 
@@ -246,8 +245,18 @@ c3geometry_factor(
                g->colorf.count = output;
                c3colorf_array_realloc(&g->colorf, output);
        }
-       g->dirty = 1;
+       c3geometry_set_dirty(g, 1);
 
-       printf("%s end geometry has %d vertices and %d indexes\n",  __func__,
+       printf("%s converted to %d vertices and %d indexes\n",  __func__,
                        g->vertice.count, g->indices.count);
 }
+
+void
+c3geometry_set_dirty(
+               c3geometry_p g,
+               int dirty )
+{
+       g->dirty = dirty;
+       if (dirty && g->object)
+               c3object_set_dirty(g->object, 1);
+}
index 18d26de..548f22c 100644 (file)
@@ -94,7 +94,8 @@ typedef struct c3geometry_type_t {
 typedef struct c3geometry_t {
        c3geometry_type_t       type;   // geometry type
        int                                     dirty : 1,
-                                               custom : 1;             // has a custom driver
+                                               custom : 1,             // has a custom driver
+                                               hidden : 8;             // hidden from context_view, bitfield
        str_p                           name;   // optional
        c3apiobject_t           bid;    // buffer id for opengl
 
@@ -160,6 +161,15 @@ void
 c3geometry_draw(
                c3geometry_p g );
 
+//! Sets or clear geometry dirty bit
+/*
+ * This will dirty parent objects if set to 1
+ */
+void
+c3geometry_set_dirty(
+               c3geometry_p g,
+               int dirty );
+
 /*
  * if not present, create an index array, and collapses
  * the vertex array by removing vertices that are within