From: Michel Pollet <buserror@gmail.com>
Date: Fri, 15 Jun 2012 08:17:47 +0000 (+0100)
Subject: c3geometry: Added a set_dirty() function
X-Git-Tag: v1.0~78
X-Git-Url: https://git.htl-mechatronik.at/public/?a=commitdiff_plain;h=28a895184b561b9054a55b705eb3aeb5d7dc2df2;p=sx%2Fsimavr.git

c3geometry: Added a set_dirty() function

Also dirties parent object

Signed-off-by: Michel Pollet <buserror@gmail.com>
---

diff --git a/examples/shared/libc3/src/c3geometry.c b/examples/shared/libc3/src/c3geometry.c
index 9c5d359..2b62d5b 100644
--- a/examples/shared/libc3/src/c3geometry.c
+++ b/examples/shared/libc3/src/c3geometry.c
@@ -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);
+}
diff --git a/examples/shared/libc3/src/c3geometry.h b/examples/shared/libc3/src/c3geometry.h
index 18d26de..548f22c 100644
--- a/examples/shared/libc3/src/c3geometry.h
+++ b/examples/shared/libc3/src/c3geometry.h
@@ -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