diff options
author | Jiri Hnidek <jiri.hnidek@tul.cz> | 2007-04-27 18:04:30 +0400 |
---|---|---|
committer | Jiri Hnidek <jiri.hnidek@tul.cz> | 2007-04-27 18:04:30 +0400 |
commit | 76c11ec9f71ef796d6cd6cbbe09add73a30e4af2 (patch) | |
tree | 2dcd9bf62ba94ea4fc2127b7fca38e6e67e361bd /source/blender/blenkernel/BKE_verse.h | |
parent | d584c8a1e62a596d3a9bf3f5555ed050427a5990 (diff) |
- support for fake verse edges (subsurf modifier should work now)
- edges are generated from verse faces
- no support for lose edge!
- informations about edges aren't sent to verse server (other applications
can't share edges with blender)
- better sending/receiving vertex position
Diffstat (limited to 'source/blender/blenkernel/BKE_verse.h')
-rw-r--r-- | source/blender/blenkernel/BKE_verse.h | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_verse.h b/source/blender/blenkernel/BKE_verse.h index 18dfbf15640..fe5fc44ba1e 100644 --- a/source/blender/blenkernel/BKE_verse.h +++ b/source/blender/blenkernel/BKE_verse.h @@ -37,6 +37,13 @@ #include "verse_ms.h" struct VNode; +struct VerseEdge; + +/* + * Verse Edge Hash (similar to edit edge hash) + */ +#define VEDHASHSIZE (512*512) +#define VEDHASH(a, b) ((a<b ? a : b) % VEDHASHSIZE) /* * virtual data type (used only for retype) @@ -118,7 +125,7 @@ typedef struct VerseVert { real32 co[3]; /* x,y,z-coordinates of vertex */ real32 no[3]; /* normal of vertex */ /* blender internals */ - short flag; /* flags: VERT_DELETED, VERT_RECEIVED */ + short flag; /* flags: VERT_DELETED, VERT_RECEIVED, etc. */ void *vertex; /* pointer at EditVert or MVert */ int counter; /* counter of VerseFaces using this VerseVert */ union { @@ -127,9 +134,31 @@ typedef struct VerseVert { } tmp; /* pointer at new created verse vert, it is * used during duplicating geometry node */ float *cos; /* modified coordinates of vertex */ + float *nos; /* modified normal vector */ } VerseVert; /* + * structture used for verse edge hash + */ +typedef struct HashVerseEdge { + struct VerseEdge *vedge; + struct HashVerseEdge *next; +} HashVerseEdge; + +/* + * fake verse data: edge + */ +typedef struct VerseEdge { + struct VerseEdge *next, *prev; + uint32 v0, v1; /* indexes of verse vertexes */ + int counter; /* counter of verse faces using this edge */ + struct HashVerseEdge hash; /* hash table */ + union { + unsigned int index; /* temporary index of edge */ + } tmp; +} VerseEdge; + +/* * verse data: polygon */ typedef struct VerseFace { @@ -147,6 +176,7 @@ typedef struct VerseFace { short counter; /* counter of missed VerseVertexes */ void *face; /* pointer at EditFace */ float no[3]; /* normal vector */ + float *nos; /* modified normal vector */ } VerseFace; /* @@ -237,6 +267,8 @@ typedef struct VGeomData { struct ListBase queue; /* queue of our layers waiting for receiving from verse server */ void *mesh; /* pointer at Mesh (object node) */ void *editmesh; /* pointer at EditMesh (edit mode) */ + struct HashVerseEdge *hash; /* verse edge hash */ + struct ListBase edges; /* list of fake verse edges */ /* client dependent methods */ void (*post_vertex_create)(struct VerseVert *vvert); void (*post_vertex_set_xyz)(struct VerseVert *vvert); |