[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11067] trunk/blender/source/blender/ blenkernel: - Added several new callback functions for geometry node.

Jiri Hnidek jiri.hnidek at tul.cz
Tue Jun 26 14:19:19 CEST 2007


Revision: 11067
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11067
Author:   jiri
Date:     2007-06-26 14:19:19 +0200 (Tue, 26 Jun 2007)

Log Message:
-----------
- Added several new callback functions for geometry node.
- Refactored geometry layers.
- Removed several unused debug prints.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_verse.h
    trunk/blender/source/blender/blenkernel/intern/verse_geometry_node.c

Modified: trunk/blender/source/blender/blenkernel/BKE_verse.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_verse.h	2007-06-26 12:05:17 UTC (rev 11066)
+++ trunk/blender/source/blender/blenkernel/BKE_verse.h	2007-06-26 12:19:19 UTC (rev 11067)
@@ -46,21 +46,12 @@
 #define VEDHASH(a, b)  ((a<b ? a : b) % VEDHASHSIZE)
 
 /*
- * virtual data type (used only for retype)
- */
-typedef struct verse_parent {
-	struct verse_parent *next, *prev;
-	VLayerID layer_id;
-	uint32 id;
-} verse_parent;
-
-/*
  * verse data: 4 float value
  */
 typedef struct quat_real32_item {
 	struct quat_real32_item *next, *prev;
-	VLayerID layer_id;
-	void *parent;
+	struct VLayer *vlayer;		/* pointer at VerseLayer */
+	uint32 id;			/* id of item */
 	real32 value[4];
 } quat_real32_item;
 
@@ -69,8 +60,8 @@
  */
 typedef struct quat_uint32_item {
 	struct quat_uint32_item *next, *prev;
-	VLayerID layer_id;
-	void *parent;
+	struct VLayer *vlayer;		/* pointer at VerseLayer */
+	uint32 id;			/* id of item */
 	uint32 value[4];
 } quat_uint32_item;
 
@@ -79,8 +70,8 @@
  */
 typedef struct vec_real32_item {
 	struct vec_real32_item *next, *prev;
-	VLayerID layer_id;
-	void *parent;
+	struct VLayer *vlayer;		/* pointer at VerseLayer */
+	uint32 id;			/* id of item */
 	real32 value[3];
 } vec_real32_item;
 
@@ -89,8 +80,8 @@
  */
 typedef struct real32_item {
 	struct real32_item *next, *prev;
-	VLayerID layer_id;
-	void *parent;
+	struct VLayer *vlayer;		/* pointer at VerseLayer */
+	uint32 id;			/* id of item */
 	real32 value;
 } real32_item;
 
@@ -99,8 +90,8 @@
  */
 typedef struct uint32_item {
 	struct uint32_item *next, *prev;
-	VLayerID layer_id;
-	void *parent;
+	struct VLayer *vlayer;		/* pointer at VerseLayer */
+	uint32 id;			/* id of item */
 	uint32 value;
 } uint32_item;
 
@@ -109,8 +100,8 @@
  */
 typedef struct uint8_item {
 	struct uint8_item *next, *prev;
-	VLayerID layer_id;
-	void *parent;
+	struct VLayer *vlayer;		/* pointer at VerseLayer */
+	uint32 id;			/* id of item */
 	uint8 value;
 } uint8_item;
 

Modified: trunk/blender/source/blender/blenkernel/intern/verse_geometry_node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/verse_geometry_node.c	2007-06-26 12:05:17 UTC (rev 11066)
+++ trunk/blender/source/blender/blenkernel/intern/verse_geometry_node.c	2007-06-26 12:19:19 UTC (rev 11067)
@@ -141,6 +141,11 @@
  */
 void add_item_to_send_queue(ListBase *lb, void *item, short type)
 {
+	struct VNode *vnode;
+	struct VLayer *vlayer;
+	struct VerseVert *vvert;
+	struct VerseFace *vface;
+
 	/* this prevent from adding duplicated faces */
 	if(type==VERSE_FACE) {
 		struct Link *link = (Link*)lb->first;
@@ -188,35 +193,59 @@
 			send_verse_taggroup((VTagGroup*)item);
 			break;
 		case VERSE_VERT_UINT32:	/* parent item has to exist */
-			if( ((verse_parent*)((uint32_item*)item)->parent)->id != -1)
+			vnode = (((uint32_item*)item)->vlayer)->vnode;
+			vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), 0 );
+			vvert = (VerseVert*)BLI_dlist_find_link(&(vlayer->dl), ((uint32_item*)item)->id );
+			if(vvert != NULL)
 				send_verse_vert_uint32((uint32_item*)item, type);
 			break;
 		case VERSE_VERT_REAL32:	/* parent item has to exist */
-			if( ((verse_parent*)((real32_item*)item)->parent)->id != -1)
+			vnode = (((real32_item*)item)->vlayer)->vnode;
+			vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), 0 );
+			vvert = (VerseVert*)BLI_dlist_find_link(&(vlayer->dl), ((real32_item*)item)->id );
+			if( vvert != NULL)
 				send_verse_vert_real32((real32_item*)item, type);
 			break;
 		case VERSE_VERT_VEC_REAL32:	/* parent item has to exist */
-			if( ((verse_parent*)((vec_real32_item*)item)->parent)->id != -1)
+			vnode = (((vec_real32_item*)item)->vlayer)->vnode;
+			vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), 0 );
+			vvert = (VerseVert*)BLI_dlist_find_link(&(vlayer->dl), ((vec_real32_item*)item)->id );
+			if(vvert != NULL)
 				send_verse_vert_vec_real32((vec_real32_item*)item, type);
 			break;
 		case VERSE_FACE_UINT8:	/* parent item has to exist */
-			if( ((verse_parent*)((uint8_item*)item)->parent)->id != -1)
+			vnode = (((uint8_item*)item)->vlayer)->vnode;
+			vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), 1 );
+			vface = (VerseFace*)BLI_dlist_find_link(&(vlayer->dl), ((uint8_item*)item)->id );
+			if(vface != NULL)
 				send_verse_face_uint8((uint8_item*)item, type);
 			break;
 		case VERSE_FACE_UINT32:	/* parent item has to exist */
-			if( ((verse_parent*)((uint32_item*)item)->parent)->id != -1)
+			vnode = (((uint32_item*)item)->vlayer)->vnode;
+			vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), 1 );
+			vface = (VerseFace*)BLI_dlist_find_link(&(vlayer->dl), ((uint32_item*)item)->id );
+			if(vface != NULL)
 				send_verse_face_uint32((uint32_item*)item, type);
 			break;
 		case VERSE_FACE_REAL32:	/* parent item has to exist */
-			if( ((verse_parent*)((real32_item*)item)->parent)->id != -1)
+			vnode = (((real32_item*)item)->vlayer)->vnode;
+			vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), 1 );
+			vface = (VerseFace*)BLI_dlist_find_link(&(vlayer->dl), ((real32_item*)item)->id );
+			if(vface != NULL)
 				send_verse_face_real32((real32_item*)item, type);
 			break;
 		case VERSE_FACE_QUAT_UINT32:	/* parent item has to exist */
-			if( ((verse_parent*)((quat_uint32_item*)item)->parent)->id != -1)
+			vnode = (((quat_uint32_item*)item)->vlayer)->vnode;
+			vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), 1 );
+			vface = (VerseFace*)BLI_dlist_find_link(&(vlayer->dl), ((quat_uint32_item*)item)->id );
+			if(vface != NULL)
 				send_verse_face_corner_quat_uint32((quat_uint32_item*)item, type);
 			break;
 		case VERSE_FACE_QUAT_REAL32:	/* parent item has to exist */
-			if( ((verse_parent*)((quat_real32_item*)item)->parent)->id != -1)
+			vnode = (((quat_real32_item*)item)->vlayer)->vnode;
+			vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), 1 );
+			vface = (VerseFace*)BLI_dlist_find_link(&(vlayer->dl), ((quat_real32_item*)item)->id );
+			if(vface != NULL)
 				send_verse_face_corner_quat_real32((quat_real32_item*)item, type);
 			break;
 	}
@@ -479,12 +508,10 @@
  */
 void send_verse_face_corner_quat_real32(quat_real32_item *item, short type)
 {
-	struct VerseFace *vface = (VerseFace*)item->parent;
-
 	verse_send_g_polygon_set_corner_real32(
-			vface->vlayer->vnode->id,
-			item->layer_id,
-			vface->id,
+			item->vlayer->vnode->id,
+			item->vlayer->id,
+			item->id,
 			item->value[0],
 			item->value[1],
 			item->value[2],
@@ -496,12 +523,10 @@
  */
 void send_verse_face_corner_quat_uint32(quat_uint32_item *item, short type)
 {
-	struct VerseFace *vface = (VerseFace*)item->parent;
-
 	verse_send_g_polygon_set_corner_uint32(
-			vface->vlayer->vnode->id,
-			item->layer_id,
-			vface->id,
+			item->vlayer->vnode->id,
+			item->vlayer->id,
+			item->id,
 			item->value[0],
 			item->value[1],
 			item->value[2],
@@ -513,12 +538,10 @@
  */
 void send_verse_face_real32(real32_item *item, short type)
 {
-	struct VerseFace *vface = (VerseFace*)item->parent;
-
 	verse_send_g_polygon_set_face_real32(
-			vface->vlayer->vnode->id,
-			item->layer_id,
-			vface->id,
+			item->vlayer->vnode->id,
+			item->vlayer->id,
+			item->id,
 			item->value);
 }
 
@@ -527,12 +550,10 @@
  */
 void send_verse_face_uint32(uint32_item *item, short type)
 {
-	struct VerseFace *vface = (VerseFace*)item->parent;
-
 	verse_send_g_polygon_set_face_uint32(
-			vface->vlayer->vnode->id,
-			item->layer_id,
-			vface->id,
+			item->vlayer->vnode->id,
+			item->vlayer->id,
+			item->id,
 			item->value);
 }
 
@@ -541,12 +562,10 @@
  */
 void send_verse_face_uint8(uint8_item *item, short type)
 {
-	struct VerseFace *vface = (VerseFace*)item->parent;
-
 	verse_send_g_polygon_set_face_uint8(
-			vface->vlayer->vnode->id,
-			item->layer_id,
-			vface->id,
+			item->vlayer->vnode->id,
+			item->vlayer->id,
+			item->id,
 			item->value);
 }
 
@@ -555,12 +574,10 @@
  */
 void send_verse_vert_vec_real32(vec_real32_item *item, short type)
 {
-	struct VerseVert *vvert = (VerseVert*)item->parent;
-
 	verse_send_g_vertex_set_xyz_real32(
-			vvert->vlayer->vnode->id,
-			item->layer_id,
-			vvert->id,
+			item->vlayer->vnode->id,
+			item->vlayer->id,
+			item->id,
 			item->value[0],
 			item->value[1],
 			item->value[2]);
@@ -571,12 +588,10 @@
  */
 void send_verse_vert_real32(real32_item *item, short type)
 {
-	struct VerseVert *vvert = (VerseVert*)item->parent;
-
 	verse_send_g_vertex_set_real32(
-			vvert->vlayer->vnode->id,
-			item->layer_id,
-			vvert->id,
+			item->vlayer->vnode->id,
+			item->vlayer->id,
+			item->id,
 			item->value);
 }
 
@@ -585,12 +600,10 @@
  */
 void send_verse_vert_uint32(uint32_item *item, short type)
 {
-	struct VerseVert *vvert = (VerseVert*)item->parent;
-
 	verse_send_g_vertex_set_uint32(
-			vvert->vlayer->vnode->id,
-			item->layer_id,
-			vvert->id,
+			item->vlayer->vnode->id,
+			item->vlayer->id,
+			item->id,
 			item->value);
 }
 
@@ -663,7 +676,6 @@
 	vface->flag |= FACE_SENT;
 
 	if(vface->v3 != -1) {
-/*		printf("\tSEND: VerseFace: %d, %d, %d, %d, %d\n", vface->id, vface->v0, vface->v3, vface->v2, vface->v1);*/
 		verse_send_g_polygon_set_corner_uint32(
 				vface->vlayer->vnode->id,
 				vface->vlayer->id,
@@ -674,7 +686,6 @@
 				vface->v1);	/* verse use clock-wise winding */
 	}
 	else {
-/*		printf("\tSEND: VerseFace: %d, %d, %d, %d, %d\n", vface->id, vface->v0, vface->v2, vface->v1, vface->v3);*/
 		verse_send_g_polygon_set_corner_uint32(
 				vface->vlayer->vnode->id,
 				vface->vlayer->id,
@@ -948,162 +959,80 @@
 	return geom;
 }
 
-/*
- * callback function: vertex crease was set
- */
-static void cb_g_crease_set_vertex(
-		void *user_data,
-		VNodeID node_id,
-		const char *layer,
-		uint32 def_crease)
+/* Create item containing 4 floats */
+static quat_real32_item *create_quat_real32_item(
+		VLayer *vlayer,
+		uint32 item_id,
+		real32 v0,
+		real32 v1,
+		real32 v2,
+		real32 v3)
 {
-/*	struct VerseSession *session = (VerseSession*)current_verse_session();
-	struct VNode *vnode;*/
-}
+	struct quat_real32_item *item;
 
-/*
- * callback function: edge crease was set
- */
-static void cb_g_crease_set_edge(
-		void *user_data,
-		VNodeID node_id,
-		const char *layer,
-		uint32 def_crease)
-{

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list