Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Letwory <nathan@letworyinteractive.com>2009-01-04 21:16:34 +0300
committerNathan Letwory <nathan@letworyinteractive.com>2009-01-04 21:16:34 +0300
commit9e7643aa7c25ce551bfe59905fbf56156e264824 (patch)
tree7664a0ae5f539b9d9fb7ac476c78377373a80afb /source/blender
parent3aeb63cad2340d92c17df375bbe55629299661c0 (diff)
2.5 / Cleanup
- remove Verse support. This will be brought back in The Future (probably jiri + me) This means 5k lines less in blenkernel. - fix two small errors for global cleanup, now compiles properly with FFMPEG enabled too.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h2
-rw-r--r--source/blender/blenkernel/BKE_global.h5
-rw-r--r--source/blender/blenkernel/BKE_image.h1
-rw-r--r--source/blender/blenkernel/BKE_verse.h583
-rw-r--r--source/blender/blenkernel/CMakeLists.txt9
-rw-r--r--source/blender/blenkernel/SConscript7
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c606
-rw-r--r--source/blender/blenkernel/intern/Makefile5
-rw-r--r--source/blender/blenkernel/intern/image.c17
-rw-r--r--source/blender/blenkernel/intern/mesh.c52
-rw-r--r--source/blender/blenkernel/intern/object.c4
-rw-r--r--source/blender/blenkernel/intern/verse_bitmap_node.c448
-rw-r--r--source/blender/blenkernel/intern/verse_geometry_node.c2098
-rw-r--r--source/blender/blenkernel/intern/verse_method.c519
-rw-r--r--source/blender/blenkernel/intern/verse_node.c747
-rw-r--r--source/blender/blenkernel/intern/verse_object_node.c617
-rw-r--r--source/blender/blenkernel/intern/verse_session.c478
-rw-r--r--source/blender/blenkernel/intern/writeavi.c2
-rw-r--r--source/blender/blenkernel/intern/writeffmpeg.c2
-rw-r--r--source/blender/blenlib/BLI_editVert.h9
-rw-r--r--source/blender/blenlib/BLI_storage_types.h3
-rw-r--r--source/blender/blenlib/CMakeLists.txt5
-rw-r--r--source/blender/blenlib/SConscript4
-rw-r--r--source/blender/blenloader/CMakeLists.txt6
-rw-r--r--source/blender/blenloader/SConscript7
-rw-r--r--source/blender/blenloader/intern/Makefile5
-rw-r--r--source/blender/blenloader/intern/writefile.c25
-rw-r--r--source/blender/editors/CMakeLists.txt9
-rw-r--r--source/blender/editors/screen/CMakeLists.txt9
-rw-r--r--source/blender/editors/space_outliner/outliner.c6
-rw-r--r--source/blender/editors/transform/transform.h7
-rw-r--r--source/blender/editors/transform/transform_conversions.c23
-rw-r--r--source/blender/editors/transform/transform_generics.c59
-rw-r--r--source/blender/imbuf/CMakeLists.txt5
-rw-r--r--source/blender/imbuf/SConscript4
-rw-r--r--source/blender/makesdna/DNA_ID.h9
-rw-r--r--source/blender/makesdna/DNA_image_types.h4
-rw-r--r--source/blender/makesdna/DNA_mesh_types.h4
-rw-r--r--source/blender/makesdna/DNA_object_types.h4
-rw-r--r--source/blender/makesrna/intern/rna_image.c1
-rw-r--r--source/blender/nodes/CMakeLists.txt9
-rw-r--r--source/blender/nodes/SConscript7
-rw-r--r--source/blender/python/CMakeLists.txt9
-rw-r--r--source/blender/python/intern/Makefile10
-rw-r--r--source/blender/windowmanager/CMakeLists.txt9
-rw-r--r--source/blender/windowmanager/intern/Makefile9
-rw-r--r--source/blender/windowmanager/intern/wm_init_exit.c3
47 files changed, 28 insertions, 6438 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 60d7c09c7a3..3e03ac3fb9f 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -83,7 +83,7 @@ struct DerivedMesh {
/* copy a single vert/edge/face from the derived mesh into
* *{vert/edge/face}_r. note that the current implementation
* of this function can be quite slow, iterating over all
- * elements (editmesh, verse mesh)
+ * elements (editmesh)
*/
void (*getVert)(DerivedMesh *dm, int index, struct MVert *vert_r);
void (*getEdge)(DerivedMesh *dm, int index, struct MEdge *edge_r);
diff --git a/source/blender/blenkernel/BKE_global.h b/source/blender/blenkernel/BKE_global.h
index 99ce091621e..1803e9ff7db 100644
--- a/source/blender/blenkernel/BKE_global.h
+++ b/source/blender/blenkernel/BKE_global.h
@@ -152,10 +152,7 @@ typedef struct Global {
#define G_DRAW_EDGEANG (1 << 24)
/* #define G_RECORDKEYS (1 << 25) also removed */
-/*#ifdef WITH_VERSE*/
-#define G_VERSE_CONNECTED (1 << 26)
-#define G_DRAW_VERSE_DEBUG (1 << 27)
-/*#endif*/
+
#define G_DRAWSHARP (1 << 28) /* draw edges with the sharp flag */
#define G_SCULPTMODE (1 << 29)
#define G_PARTICLEEDIT (1 << 30)
diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h
index b0cf58d8216..d1bcd63c936 100644
--- a/source/blender/blenkernel/BKE_image.h
+++ b/source/blender/blenkernel/BKE_image.h
@@ -82,7 +82,6 @@ struct RenderResult;
#define IMA_TYPE_MULTILAYER 1
/* generated */
#define IMA_TYPE_UV_TEST 2
-#define IMA_TYPE_VERSE 3
/* viewers */
#define IMA_TYPE_R_RESULT 4
#define IMA_TYPE_COMPOSITE 5
diff --git a/source/blender/blenkernel/BKE_verse.h b/source/blender/blenkernel/BKE_verse.h
deleted file mode 100644
index e67696dc62a..00000000000
--- a/source/blender/blenkernel/BKE_verse.h
+++ /dev/null
@@ -1,583 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Contributor(s): Jiri Hnidek.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-/* #define WITH_VERSE */
-
-#ifndef BKE_VERSE_H
-#define BKE_VERSE_H
-
-#include "DNA_listBase.h"
-#include "BLI_dynamiclist.h"
-
-#include "verse.h"
-#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)
-
-/*
- * verse data: 4 float value
- */
-typedef struct quat_real32_item {
- struct quat_real32_item *next, *prev;
- struct VLayer *vlayer; /* pointer at VerseLayer */
- uint32 id; /* id of item */
- real32 value[4];
-} quat_real32_item;
-
-/*
- * verse data: 4 uint32 values
- */
-typedef struct quat_uint32_item {
- struct quat_uint32_item *next, *prev;
- struct VLayer *vlayer; /* pointer at VerseLayer */
- uint32 id; /* id of item */
- uint32 value[4];
-} quat_uint32_item;
-
-/*
- * verse data: 3 float values
- */
-typedef struct vec_real32_item {
- struct vec_real32_item *next, *prev;
- struct VLayer *vlayer; /* pointer at VerseLayer */
- uint32 id; /* id of item */
- real32 value[3];
-} vec_real32_item;
-
-/*
- * verse data: float value (weight)
- */
-typedef struct real32_item {
- struct real32_item *next, *prev;
- struct VLayer *vlayer; /* pointer at VerseLayer */
- uint32 id; /* id of item */
- real32 value;
-} real32_item;
-
-/*
- * verse data: uint32 value
- */
-typedef struct uint32_item {
- struct uint32_item *next, *prev;
- struct VLayer *vlayer; /* pointer at VerseLayer */
- uint32 id; /* id of item */
- uint32 value;
-} uint32_item;
-
-/*
- * verse data: uint8 value
- */
-typedef struct uint8_item {
- struct uint8_item *next, *prev;
- struct VLayer *vlayer; /* pointer at VerseLayer */
- uint32 id; /* id of item */
- uint8 value;
-} uint8_item;
-
-/*
- * verse data: vertex
- */
-typedef struct VerseVert {
- struct VerseVert *next, *prev;
- /* verse data */
- struct VLayer *vlayer; /* pointer at VerseLayer */
- uint32 id; /* id of vertex */
- real32 co[3]; /* x,y,z-coordinates of vertex */
- real32 no[3]; /* normal of vertex */
- /* blender internals */
- short flag; /* flags: VERT_DELETED, VERT_RECEIVED, etc. */
- void *vertex; /* pointer at EditVert or MVert */
- int counter; /* counter of VerseFaces using this VerseVert */
- union {
- unsigned int index; /* counter need during transformation to mesh */
- struct VerseVert *vvert;
- } 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 {
- struct VerseFace *next, *prev;
- /* verse data */
- struct VLayer *vlayer; /* pointer at VerseLayer */
- uint32 id; /* id of face */
- struct VerseVert *vvert0; /* pointer at 1st VerseVert */
- struct VerseVert *vvert1; /* pointer at 2nd VerseVert */
- struct VerseVert *vvert2; /* pointer at 3th VerseVert */
- struct VerseVert *vvert3; /* pointer at 4th VerseVert */
- unsigned int v0, v1, v2, v3; /* indexes of VerseVerts ... needed during receiving */
- /* blender internals */
- char flag; /* flags: FACE_SEND_READY, FACE_SENT, FACE_RECEIVED, FACE_CHANGED*/
- short counter; /* counter of missed VerseVertexes */
- void *face; /* pointer at EditFace */
- float no[3]; /* normal vector */
- float *nos; /* modified normal vector */
-} VerseFace;
-
-/*
- * verse data: layer
- */
-typedef struct VLayer {
- struct VLayer *next, *prev;
- /* verse data*/
- struct VNode *vnode; /* pointer at VerseNode */
- uint16 id; /* id of layer */
- char *name; /* name of layer */
- VNGLayerType type; /* type of layer (VN_G_LAYER_VERTEX_XYZ, VN_G_LAYER_POLYGON_CORNER_UINT32) */
- uint32 def_int; /* default integer value */
- real64 def_real; /* default float value */
- /* blender internals */
- char flag; /* flags: LAYER_SENT, LAYER_RECEIVED, LAYER_DELETED, LAYER_OBSOLETE */
- short content; /* type of content (VERTEX_LAYER, POLYGON_LAYER) */
- struct DynamicList dl; /* vertexes, polygons, etc. */
- struct ListBase queue; /* queue of vertexes, polygons, etc. waiting for sending to verse server */
- struct ListBase orphans; /* list of versedata (polygons, etc.), that can be added to the DynamicList
- * due to not received VerseVerts */
- unsigned int counter; /* counter of sent items */
- /* client dependent methods */
- void (*post_layer_create)(struct VLayer *vlayer);
- void (*post_layer_destroy)(struct VLayer *vlayer);
-} VLayer;
-
-/*
- * verse data: link
- */
-typedef struct VLink{
- struct VLink *next, *prev;
- /* verse data */
- struct VerseSession *session; /* session pointer */
- struct VNode *source; /* object VerseNode "pointing" at some other VerseNode */
- struct VNode *target; /* VerseNode linked with some object node */
- unsigned int id; /* id of VerseLink */
- unsigned int target_id; /* some unknow id */
- char *label; /* name/label of VerseLink */
- /* blender internals */
- char flag; /* flags: LINK_SEND_READY */
- /* client dependent methods */
- void (*post_link_set)(struct VLink *vlink);
- void (*post_link_destroy)(struct VLink *vlink);
-} VLink;
-
-/*
- * bitmap layer
- */
-typedef struct VBitmapLayer {
- struct VBitmapLayer *next, *prev;
- /* verse data */
- struct VNode *vnode; /* pointer at Verse Node */
- VLayerID id; /* id of layer */
- char *name; /* name of layer */
- VNBLayerType type; /* type of layer (bits per channel) 1, 8, 16, 32, 64 */
- void *data; /* dynamic allocated data */
- /* blender internals */
- char flag;
-} VBitmapLayer;
-
-/*
- * data of bitmap node
- */
-typedef struct VBitmapData {
- struct DynamicList layers; /* dynamic list with access array of bitmap layers */
- struct ListBase queue; /* queue of layers waiting for receiving from verse server */
- uint16 width; /* width of all verse layers */
- uint16 height; /* height of all verse layers */
- uint16 depth; /* depth of bitmap 1 is 2D bitmap, >1 is 3D bitmap */
- /* blender internals */
- uint16 t_width; /* = (width/VN_B_TILE_SIZE + 1)*VN_B_TILE_SIZE */
- uint16 t_height; /* = (height/VN_B_TILE_SIZE + 1)*VN_B_TILE_SIZE */
- void *image; /* pointer at image */
- /* client dependent methods */
- void (*post_bitmap_dimension_set)(struct VNode *vnode);
- void (*post_bitmap_layer_create)(struct VBitmapLayer *vblayer);
- void (*post_bitmap_layer_destroy)(struct VBitmapLayer *vblayer);
- void (*post_bitmap_tile_set)(struct VBitmapLayer *vblayer, unsigned int xs, unsigned int ys);
-}VBitmapData;
-
-/*
- * data of geometry node
- */
-typedef struct VGeomData {
- struct DynamicList layers; /* dynamic list with access array of Layers */
- struct VLink *vlink; /* pointer at VerseLink connecting object node and geom node */
- 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);
- void (*post_vertex_delete)(struct VerseVert *vvert);
- void (*post_vertex_free_constraint)(struct VerseVert *vvert);
- void (*post_polygon_create)(struct VerseFace *vface);
- void (*post_polygon_set_corner)(struct VerseFace *vface);
- void (*post_polygon_delete)(struct VerseFace *vface);
- void (*post_polygon_free_constraint)(struct VerseFace *vface);
- void (*post_geometry_free_constraint)(struct VNode *vnode);
- void (*post_polygon_set_uint8)(struct VerseFace *vface);
-} VGeomData;
-
-/*
- * data of object node
- */
-typedef struct VObjectData {
- struct DynamicList links; /* dynamic list with access array of links between other nodes */
- struct ListBase queue; /* queue of links waiting for sending and receiving from verse server */
- float pos[3]; /* position of object VerseNode */
- float quat[4]; /* rotation of object VerseNode stored in quat */
- float scale[3]; /* scale of object VerseNode */
- void *object; /* pointer at object */
- short flag; /* flag: POS_RECEIVE_READY, ROT_RECEIVE_READY. SCALE_RECEIVE_READY */
- /* client dependent methods */
-/* void (*post_transform)(struct VNode *vnode);*/
- void (*post_transform_pos)(struct VNode *vnode);
- void (*post_transform_rot)(struct VNode *vnode);
- void (*post_transform_scale)(struct VNode *vnode);
- void (*post_object_free_constraint)(struct VNode *vnode);
-} VObjectData;
-
-/*
- * Verse Tag
- */
-typedef struct VTag {
- struct VTag *next, *prev;
- /* verse data*/
- struct VTagGroup *vtaggroup; /* pointer at Verse Tag Group */
- uint16 id; /* id of this tag */
- char *name; /* name of this tag*/
- VNTagType type; /* type: VN_TAG_BOOLEAN, VN_TAG_UINT32, VN_TAG_REAL64, VN_TAG_REAL64_VEC3,
- VN_TAG_LINK, VN_TAG_ANIMATION, VN_TAG_BLOB */
- VNTag *tag; /* pointer at value (enum: vboolean, vuint32, vreal64, vstring,
- vreal64_vec3, vlink, vanimation, vblob)*/
- /* blender internals */
- void *value; /* pointer at blender value */
-} VTag;
-
-/*
- * Verse Tag Group (verse tags are grouped in tag groups)
- */
-typedef struct VTagGroup {
- struct VTagGroup *next, *prev;
- /* verse data*/
- struct VNode *vnode; /* pointer at Verse Node */
- uint16 id; /* id of this tag group */
- char *name; /* name of this tag group */
- /* blender internals */
- struct DynamicList tags; /* dynamic list with access array containing tags */
- struct ListBase queue; /* list of tags waiting for receiving from verse server */
- /* client dependent methods */
- void (*post_tag_change)(struct VTag *vatg);
- void (*post_taggroup_create)(struct VTagGroup *vtaggroup);
-} VTagGroup;
-
- /*
- * Verse Method Group
- */
-typedef struct VMethodGroup
-{
- struct VMethodGroup *next, *prev;
- uint16 group_id;
- char name[16];
- struct ListBase methods;
-} VMethodGroup;
-
-/*
- * Verse Method
- */
-typedef struct VMethod
-{
- struct VMethod *next, *prev;
- uint16 id;
- char name[500];
- uint8 param_count;
- VNOParamType *param_type;
- char **param_name;
-} VMethod;
-
-/*
- * Verse Node
- */
-typedef struct VNode {
- struct VNode *next, *prev;
- /* verse data*/
- struct VerseSession *session; /* session pointer */
- VNodeID id; /* node id */
- VNodeID owner_id; /* owner's id of this node */
- char *name; /* name of this node */
- uint32 type; /* type of node (V_NT_OBJECT, V_NT_GEOMETRY, V_NT_BITMAP) */
- /* blender internals */
- char flag; /* flags: NODE_SENT, NODE_RECEIVED, NODE_DELTED, NODE_OBSOLETE */
- struct DynamicList taggroups; /* dynamic list with access array of taggroups */
- struct ListBase methodgroups; /* method groups */
- struct ListBase queue; /* list of taggroups waiting for receiving from verse server */
- void *data; /* generic pointer at some data (VObjectData, VGeomData, ...) */
- int counter; /* counter of verse link pointing at this vnode (vlink->target) */
- /* client dependent methods */
- void (*post_node_create)(struct VNode *vnode);
- void (*post_node_destroy)(struct VNode *vnode);
- void (*post_node_name_set)(struct VNode *vnode);
-#ifdef VERSECHAT
- /* verse chat */
- int chat_flag; /* CHAT_LOGGED, CHAT_NOTLOGGED */
-#endif
-} VNode;
-
-
-/*
- * Verse Session: verse client can be connected to several verse servers
- * it is neccessary to store some information about each session
- */
-typedef struct VerseSession {
- struct VerseSession *next, *prev;
- /* verse data */
- VSession *vsession; /* pointer at VSeesion (verse.h) */
- uint32 avatar; /* id of avatar */
- char *address; /* string containg IP/domain name of verse server and number of port */
- void *connection; /* no clue */
- uint8 *host_id; /* no clue */
- /* blender internals */
- short flag; /* flag: VERSE_CONNECTING, VERSE_CONNECTED */
- DynamicList nodes; /* list of verse nodes */
- ListBase queue; /* list of nodes waiting for sending to verse server */
- unsigned int counter; /* count of events, when connection wasn't accepted */
- /* client dependent methods */
- void (*post_connect_accept)(struct VerseSession *session);
- void (*post_connect_terminated)(struct VerseSession *session);
- void (*post_connect_update)(struct VerseSession *session);
-} VerseSession;
-
-typedef struct VerseServer {
- struct VerseServer *next, *prev;
- char *name; /* human-readable server name */
- char *ip; /* string containing IP/domain name of verse server and number of port */
- short flag; /* flag: VERSE_CONNECTING, VERSE_CONNECTED */
- struct VerseSession *session; /* pointer to related session */
-} VerseServer;
-/*
- * list of post callback functions
- */
-typedef struct PostCallbackFunction {
- void (*function)(void *arg);
- void *param;
-} PostCallbackFunction;
-
-/* VerseSession->flag */
-#define VERSE_CONNECTING 1
-#define VERSE_CONNECTED 2
-#define VERSE_AUTOSUBSCRIBE 4
-
-/* max VerseSession->counter value */
-#define MAX_UNCONNECTED_EVENTS 100
-
-/* VNode flags */
-#define NODE_SENT 1
-#define NODE_RECEIVED 2
-#define NODE_DELTED 4
-#define NODE_OBSOLETE 8
-
-#ifdef VERSECHAT
-#define CHAT_NOTLOGGED 0
-#define CHAT_LOGGED 1
-#endif
-
-/* VLayer flags */
-#define LAYER_SENT 1
-#define LAYER_RECEIVED 2
-#define LAYER_DELETED 4
-#define LAYER_OBSOLETE 8
-
-/* VLink->flag */
-#define LINK_SEND_READY 1
-
-/* VObjectData->flag */
-#define POS_RECEIVE_READY 1
-#define ROT_RECEIVE_READY 2
-#define SCALE_RECEIVE_READY 4
-#define POS_SEND_READY 8
-#define ROT_SEND_READY 16
-#define SCALE_SEND_READY 32
-
-/* VLayer->content */
-#define VERTEX_LAYER 0
-#define POLYGON_LAYER 1
-
-/* VerseVert->flag */
-#define VERT_DELETED 1 /* vertex delete command was received from verse server */
-#define VERT_RECEIVED 2 /* VerseVert was received from verse server (is not in sending queue) */
-#define VERT_LOCKED 4 /* VerseVert is ready to send local position to verse server */
-#define VERT_POS_OBSOLETE 8 /* position of vertex was changed during sending to verse server */
-#define VERT_OBSOLETE 16 /* vertex delete command was sent to verse server; it means, that
- * no information related to this vertex shoudln't be sent to verse
- * until verse vertex is completely deleted ... then this vertex id
- * can be reused again for new vertex */
-
-/* VerseFace->flag */
-#define FACE_SEND_READY 1 /* VerseFace is ready for sending to verse server */
-#define FACE_RECEIVED 2 /* VerseFace was received from verse server */
-#define FACE_SENT 4 /* VerseFace was sent to verse server and we expect receiving from verse server */
-#define FACE_DELETED 8 /* delete command was sent to verse server */
-#define FACE_CHANGED 16 /* VerseFace was only changed not created */
-#define FACE_OBSOLETE 32 /* VerseFace was changed during sending to verse server */
-
-/* Queue type */
-#define VERSE_NODE 1
-#define VERSE_LINK 2
-#define VERSE_LAYER 3
-#define VERSE_VERT 4
-#define VERSE_FACE 5
-
-#define VERSE_TAG 6
-#define VERSE_TAG_GROUP 7
-
-#define VERSE_VERT_UINT32 8
-#define VERSE_VERT_REAL32 9
-#define VERSE_VERT_VEC_REAL32 10
-
-#define VERSE_FACE_UINT8 11
-#define VERSE_FACE_UINT32 12
-#define VERSE_FACE_REAL32 13
-#define VERSE_FACE_QUAT_UINT32 14
-#define VERSE_FACE_QUAT_REAL32 15
-
-/* Verse Bitmap Layer flags */
-#define VBLAYER_SUBSCRIBED 1
-
-/* function prototypes */
-
-/* functions from verse_session.c */
-void set_verse_session_callbacks(void);
-struct VerseSession *versesession_from_vsession(VSession *vsession);
-struct VerseSession *current_verse_session(void);
-struct VerseSession *create_verse_session(const char *name, const char *pass, const char *address, uint8 *expected_key);
-void free_verse_session(struct VerseSession *session);
-void b_verse_update(void);
-void b_verse_ms_get(void);
-void b_verse_connect(char *address);
-void end_verse_session(struct VerseSession *session);
-void end_all_verse_sessions(void);
-
-/* functions from verse_node.c */
-void send_verse_tag(struct VTag *vtag);
-void send_verse_taggroup(struct VTagGroup *vtaggroup);
-void send_verse_node(struct VNode *vnode);
-void free_verse_node_data(struct VNode *vnode);
-void free_verse_node(struct VNode *vnode);
-struct VNode* lookup_vnode(VerseSession *session, VNodeID node_id);
-struct VNode* create_verse_node(VerseSession *session, VNodeID node_id, uint8 type, VNodeID owner_id);
-void set_node_callbacks(void);
-
-/* functions from verse_object_node.c */
-struct VLink *find_unsent_parent_vlink(struct VerseSession *session, struct VNode *vnode);
-struct VLink *find_unsent_child_vlink(struct VerseSession *session, struct VNode *vnode);
-struct VLink *create_verse_link(VerseSession *session, struct VNode *source, struct VNode *target, uint16 link_id, uint32 target_id, const char *label);
-void send_verse_object_position(struct VNode *vnode);
-void send_verse_object_rotation(struct VNode *vnode);
-void send_verse_object_scale(struct VNode *vnode);
-void send_verse_link(struct VLink *vlink);
-
-void free_object_data(struct VNode *vnode);
-void set_object_callbacks(void);
-struct VObjectData *create_object_data(void);
-
-
-/* functions from verse_method.c */
-void free_verse_methodgroup(VMethodGroup *vmg);
-#ifdef VERSECHAT
-void send_say(const char *chan, const char *utter);
-void send_login(struct VNode *vnode);
-void send_logout(struct VNode *vnode);
-void send_join(struct VNode *vnode, const char *chan);
-void send_leave(struct VNode *vnode, const char *chan);
-#endif
-void set_method_callbacks(void);
-
-/* functions from verse_geometry_node.c */
-struct VerseFace* create_verse_face(struct VLayer *vlayer, uint32 polygon_id, uint32 v0, uint32 v1, uint32 v2, uint32 v3);
-struct VerseVert* create_verse_vertex(struct VLayer *vlayer, uint32 vertex_id, real32 x, real32 y, real32 z);
-struct VLayer *create_verse_layer(struct VNode *vnode, VLayerID layer_id, const char *name, VNGLayerType type, uint32 def_integer, real64 def_real);
-struct VGeomData *create_geometry_data(void);
-
-void send_verse_layer(struct VLayer *vlayer);
-
-void send_verse_face_corner_quat_real32(struct quat_real32_item *item, short type);
-void send_verse_face_corner_quat_uint32(struct quat_uint32_item *item, short type);
-void send_verse_face_real32(struct real32_item *item, short type);
-void send_verse_face_uint32(struct uint32_item *item, short type);
-void send_verse_face_uint8(struct uint8_item *item, short type);
-
-void send_verse_vert_vec_real32(struct vec_real32_item *item, short type);
-void send_verse_vert_real32(struct real32_item *item, short type);
-void send_verse_vert_uint32(struct uint32_item *item, short type);
-
-void send_verse_vertex_delete(struct VerseVert *vvert);
-void send_verse_vertex(struct VerseVert *vvert);
-void send_verse_face_delete(struct VerseFace *vface);
-
-void destroy_geometry(struct VNode *vnode);
-
-struct VLayer* find_verse_layer_type(struct VGeomData *geom, short content);
-void add_item_to_send_queue(struct ListBase *lb, void *item, short type);
-void free_geom_data(struct VNode *vnode);
-void set_geometry_callbacks(void);
-
-/* functions prototypes from verse_bitmap.c */
-void set_bitmap_callbacks(void);
-void free_bitmap_layer_data(struct VBitmapLayer *vblayer);
-struct VBitmapLayer *create_bitmap_layer(struct VNode *vnode, VLayerID layer_id, const char *name, VNBLayerType type);
-void free_bitmap_node_data(struct VNode *vnode);
-struct VBitmapData *create_bitmap_data(void);
-
-#endif
diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index 0680827c548..8f11928e63f 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -37,11 +37,6 @@ SET(INC
${ZLIB_INC}
)
-IF(WITH_VERSE)
- ADD_DEFINITIONS(-DWITH_VERSE)
- SET(INC ${INC} ${VERSE_INC})
-ENDIF(WITH_VERSE)
-
IF(WITH_OPENEXR)
ADD_DEFINITIONS(-DWITH_OPENEXR)
ENDIF(WITH_OPENEXR)
@@ -72,10 +67,6 @@ ENDIF(WITH_PYTHON)
BLENDERLIB(bf_blenkernel "${SRC}" "${INC}")
-IF(WITH_VERSE)
- ADD_DEPENDENCIES(bf_blenkernel mkprot verse)
-ENDIF(WITH_VERSE)
-
IF(WITH_INTERNATIONAL)
ADD_DEFINITIONS(-DWITH_FREETYPE2)
ENDIF(WITH_INTERNATIONAL)
diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript
index 5d9ce532d89..9fef30381a8 100644
--- a/source/blender/blenkernel/SConscript
+++ b/source/blender/blenkernel/SConscript
@@ -31,13 +31,6 @@ if env['WITH_BF_SDL']:
if env['WITH_BF_INTERNATIONAL']:
defs += ' WITH_FREETYPE2'
-
-if env['WITH_BF_VERSE']:
- defs += ' WITH_VERSE'
- incs += ' ' + env['BF_VERSE_INCLUDE']
-
-if env['WITH_BF_VERSE']:
- defs += ' WITH_VERSE'
if env['WITH_BF_OPENEXR']:
defs += ' WITH_OPENEXR'
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 2aeef91538c..f056d1fa61b 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -80,10 +80,6 @@
#include "BLO_sys_types.h" // for intptr_t support
-#ifdef WITH_VERSE
-#include "BKE_verse.h"
-#endif
-
#include "BIF_gl.h"
#include "BIF_glutil.h"
@@ -1388,573 +1384,6 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em, Object *ob,
return (DerivedMesh*) emdm;
}
-#ifdef WITH_VERSE
-
-/* verse derived mesh */
-typedef struct {
- struct DerivedMesh dm;
- struct VNode *vnode;
- struct VLayer *vertex_layer;
- struct VLayer *polygon_layer;
- struct ListBase *edges;
- float (*vertexCos)[3];
-} VDerivedMesh;
-
-/* this function set up border points of verse mesh bounding box */
-static void vDM_getMinMax(DerivedMesh *dm, float min_r[3], float max_r[3])
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseVert *vvert;
-
- if(!vdm->vertex_layer) return;
-
- vvert = (VerseVert*)vdm->vertex_layer->dl.lb.first;
-
- if(vdm->vertex_layer->dl.da.count > 0) {
- while(vvert) {
- DO_MINMAX(vdm->vertexCos ? vvert->cos : vvert->co, min_r, max_r);
- vvert = vvert->next;
- }
- }
- else {
- min_r[0] = min_r[1] = min_r[2] = max_r[0] = max_r[1] = max_r[2] = 0.0;
- }
-}
-
-/* this function return number of vertexes in vertex layer */
-static int vDM_getNumVerts(DerivedMesh *dm)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
-
- if(!vdm->vertex_layer) return 0;
- else return vdm->vertex_layer->dl.da.count;
-}
-
-/* this function return number of 'fake' edges */
-static int vDM_getNumEdges(DerivedMesh *dm)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
-
- return BLI_countlist(vdm->edges);
-}
-
-/* this function returns number of polygons in polygon layer */
-static int vDM_getNumFaces(DerivedMesh *dm)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
-
- if(!vdm->polygon_layer) return 0;
- else return vdm->polygon_layer->dl.da.count;
-}
-
-/* this function doesn't return vertex with index of access array,
- * but it return 'indexth' vertex of dynamic list */
-void vDM_getVert(DerivedMesh *dm, int index, MVert *vert_r)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseVert *vvert;
- int i;
-
- if(!vdm->vertex_layer) return;
-
- for(vvert = vdm->vertex_layer->dl.lb.first, i=0 ; i<index; i++) vvert = vvert->next;
-
- if(vvert) {
- VECCOPY(vert_r->co, vvert->co);
-
- vert_r->no[0] = vvert->no[0] * 32767.0;
- vert_r->no[1] = vvert->no[1] * 32767.0;
- vert_r->no[2] = vvert->no[2] * 32767.0;
-
- /* TODO what to do with vert_r->flag and vert_r->mat_nr? */
- vert_r->mat_nr = 0;
- vert_r->flag = 0;
- }
-}
-
-/* this function returns fake verse edge */
-void vDM_getEdge(DerivedMesh *dm, int index, MEdge *edge_r)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseEdge *vedge;
- struct VLayer *vert_vlayer = vdm->vertex_layer;
- struct VerseVert *vvert;
- int j;
-
- if(!vdm->vertex_layer || !vdm->edges) return;
-
- if(vdm->edges->first) {
- struct VerseVert *vvert1, *vvert2;
-
- /* store vert indices in tmp union */
- for(vvert = vdm->vertex_layer->dl.lb.first, j = 0; vvert; vvert = vvert->next, j++)
- vvert->tmp.index = j;
-
- for(vedge = vdm->edges->first; vedge; vedge = vedge->next) {
- if(vedge->tmp.index==index) {
- vvert1 = BLI_dlist_find_link(&(vert_vlayer->dl), (unsigned int)vedge->v0);
- vvert2 = BLI_dlist_find_link(&(vert_vlayer->dl), (unsigned int)vedge->v1);
-
- if(vvert1 && vvert2) {
- edge_r->v1 = vvert1->tmp.index;
- edge_r->v2 = vvert2->tmp.index;
- }
- else {
- edge_r->v1 = 0;
- edge_r->v2 = 0;
- }
- /* not supported yet */
- edge_r->flag = 0;
- edge_r->crease = 0;
- edge_r->bweight = 0;
- break;
- }
- }
- }
-}
-
-/* this function doesn't return face with index of access array,
- * but it returns 'indexth' vertex of dynamic list */
-void vDM_getFace(DerivedMesh *dm, int index, MFace *face_r)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseFace *vface;
- struct VerseVert *vvert;
- struct VerseVert *vvert0, *vvert1, *vvert2, *vvert3;
- int i;
-
- if(!vdm->vertex_layer || !vdm->polygon_layer) return;
-
- for(vface = vdm->polygon_layer->dl.lb.first, i = 0; i < index; ++i) vface = vface->next;
-
- face_r->mat_nr = 0;
- face_r->flag = 0;
-
- /* goddamn, we have to search all verts to find indices */
- vvert0 = vface->vvert0;
- vvert1 = vface->vvert1;
- vvert2 = vface->vvert2;
- vvert3 = vface->vvert3;
- if(!vvert3) face_r->v4 = 0;
-
- for(vvert = vdm->vertex_layer->dl.lb.first, i = 0; vvert0 || vvert1 || vvert2 || vvert3; i++, vvert = vvert->next) {
- if(vvert == vvert0) {
- face_r->v1 = i;
- vvert0 = NULL;
- }
- if(vvert == vvert1) {
- face_r->v2 = i;
- vvert1 = NULL;
- }
- if(vvert == vvert2) {
- face_r->v3 = i;
- vvert2 = NULL;
- }
- if(vvert == vvert3) {
- face_r->v4 = i;
- vvert3 = NULL;
- }
- }
-
- test_index_face(face_r, NULL, 0, vface->vvert3?4:3);
-}
-
-/* fill array of mvert */
-void vDM_copyVertArray(DerivedMesh *dm, MVert *vert_r)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseVert *vvert;
-
- if(!vdm->vertex_layer) return;
-
- for(vvert = vdm->vertex_layer->dl.lb.first ; vvert; vvert = vvert->next, ++vert_r) {
- VECCOPY(vert_r->co, vvert->co);
-
- vert_r->no[0] = vvert->no[0] * 32767.0;
- vert_r->no[1] = vvert->no[1] * 32767.0;
- vert_r->no[2] = vvert->no[2] * 32767.0;
-
- vert_r->mat_nr = 0;
- vert_r->flag = 0;
- }
-}
-
-/* dummy function, edges arent supported in verse mesh */
-void vDM_copyEdgeArray(DerivedMesh *dm, MEdge *edge_r)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
-
- if(!vdm->vertex_layer || !vdm->edges) return;
-
- if(vdm->edges->first) {
- struct VerseEdge *vedge;
- struct VLayer *vert_vlayer = vdm->vertex_layer;
- struct VerseVert *vvert, *vvert1, *vvert2;
- int j;
-
- /* store vert indices in tmp union */
- for(vvert = vdm->vertex_layer->dl.lb.first, j = 0; vvert; vvert = vvert->next, ++j)
- vvert->tmp.index = j;
-
- for(vedge = vdm->edges->first, j=0 ; vedge; vedge = vedge->next, ++edge_r, j++) {
- /* create temporary edge index */
- vedge->tmp.index = j;
- vvert1 = BLI_dlist_find_link(&(vert_vlayer->dl), (unsigned int)vedge->v0);
- vvert2 = BLI_dlist_find_link(&(vert_vlayer->dl), (unsigned int)vedge->v1);
- if(vvert1 && vvert2) {
- edge_r->v1 = vvert1->tmp.index;
- edge_r->v2 = vvert2->tmp.index;
- }
- else {
- printf("error: vDM_copyEdgeArray: %d, %d\n", vedge->v0, vedge->v1);
- edge_r->v1 = 0;
- edge_r->v2 = 0;
- }
- /* not supported yet */
- edge_r->flag = 0;
- edge_r->crease = 0;
- edge_r->bweight = 0;
- }
- }
-}
-
-/* fill array of mfaces */
-void vDM_copyFaceArray(DerivedMesh *dm, MFace *face_r)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseFace *vface;
- struct VerseVert *vvert;
- int i;
-
- if(!vdm->vertex_layer || !vdm->polygon_layer) return;
-
- /* store vertexes indices in tmp union */
- for(vvert = vdm->vertex_layer->dl.lb.first, i = 0; vvert; vvert = vvert->next, ++i)
- vvert->tmp.index = i;
-
- for(vface = vdm->polygon_layer->dl.lb.first; vface; vface = vface->next, ++face_r) {
- face_r->mat_nr = 0;
- face_r->flag = 0;
-
- face_r->v1 = vface->vvert0->tmp.index;
- face_r->v2 = vface->vvert1->tmp.index;
- face_r->v3 = vface->vvert2->tmp.index;
- if(vface->vvert3) face_r->v4 = vface->vvert3->tmp.index;
- else face_r->v4 = 0;
-
- test_index_face(face_r, NULL, 0, vface->vvert3?4:3);
- }
-}
-
-/* return coordination of vertex with index */
-static void vDM_getVertCo(DerivedMesh *dm, int index, float co_r[3])
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseVert *vvert = NULL;
-
- if(!vdm->vertex_layer) return;
-
- vvert = BLI_dlist_find_link(&(vdm->vertex_layer->dl), index);
-
- if(vvert) {
- VECCOPY(co_r, vdm->vertexCos ? vvert->cos : vvert->co);
- }
- else {
- co_r[0] = co_r[1] = co_r[2] = 0.0;
- }
-}
-
-/* return array of vertex coordiantions */
-static void vDM_getVertCos(DerivedMesh *dm, float (*cos_r)[3])
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseVert *vvert;
- int i = 0;
-
- if(!vdm->vertex_layer) return;
-
- vvert = vdm->vertex_layer->dl.lb.first;
- while(vvert) {
- VECCOPY(cos_r[i], vdm->vertexCos ? vvert->cos : vvert->co);
- i++;
- vvert = vvert->next;
- }
-}
-
-/* return normal of vertex with index */
-static void vDM_getVertNo(DerivedMesh *dm, int index, float no_r[3])
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseVert *vvert = NULL;
-
- if(!vdm->vertex_layer) return;
-
- vvert = BLI_dlist_find_link(&(vdm->vertex_layer->dl), index);
- if(vvert) {
- VECCOPY(no_r, vvert->no);
- }
- else {
- no_r[0] = no_r[1] = no_r[2] = 0.0;
- }
-}
-
-/* draw all VerseVertexes */
-static void vDM_drawVerts(DerivedMesh *dm)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseVert *vvert;
-
- if(!vdm->vertex_layer) return;
-
- vvert = vdm->vertex_layer->dl.lb.first;
-
- //XXX bglBegin(GL_POINTS);
- while(vvert) {
- //XXX bglVertex3fv(vdm->vertexCos ? vvert->cos : vvert->co);
- vvert = vvert->next;
- }
- //XXX bglEnd();
-}
-
-/* draw all edges of VerseFaces ... it isn't optimal, because verse
- * specification doesn't support edges :-( ... bother eskil ;-)
- * ... some edges (most of edges) are drawn twice */
-static void vDM_drawEdges(DerivedMesh *dm, int drawLooseEdges)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseEdge *vedge;
- struct VLayer *vert_vlayer = vdm->vertex_layer;
-
- if(vert_vlayer && vdm->edges && (BLI_countlist(vdm->edges) > 0)) {
- struct VerseVert *vvert1, *vvert2;
-
- glBegin(GL_LINES);
- for(vedge = vdm->edges->first; vedge; vedge = vedge->next) {
- vvert1 = BLI_dlist_find_link(&(vert_vlayer->dl), (unsigned int)vedge->v0);
- vvert2 = BLI_dlist_find_link(&(vert_vlayer->dl), (unsigned int)vedge->v1);
- if(vvert1 && vvert2) {
- glVertex3fv(vdm->vertexCos ? vvert1->cos : vvert1->co);
- glVertex3fv(vdm->vertexCos ? vvert2->cos : vvert2->co);
- }
- }
- glEnd();
- }
-}
-
-/* verse spec doesn't support edges ... loose edges can't exist */
-void vDM_drawLooseEdges(DerivedMesh *dm)
-{
-}
-
-/* draw uv edges, not supported yet */
-static void vDM_drawUVEdges(DerivedMesh *dm)
-{
-}
-
-/* draw all VerseFaces */
-static void vDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *attribs))
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseFace *vface;
-
- if(!vdm->polygon_layer) return;
-
- vface = vdm->polygon_layer->dl.lb.first;
-
- glShadeModel(GL_FLAT);
- while(vface) {
- glBegin(vface->vvert3?GL_QUADS:GL_TRIANGLES);
- glNormal3fv(vface->no);
- glVertex3fv(vdm->vertexCos ? vface->vvert0->cos : vface->vvert0->co);
- glVertex3fv(vdm->vertexCos ? vface->vvert1->cos : vface->vvert1->co);
- glVertex3fv(vdm->vertexCos ? vface->vvert2->cos : vface->vvert2->co);
- if(vface->vvert3)
- glVertex3fv(vdm->vertexCos ? vface->vvert3->cos : vface->vvert3->co);
- glEnd();
- vface = vface->next;
- }
-}
-
-/* this function should draw mesh with mapped texture, but it isn't supported yet */
-static void vDM_drawFacesTex(DerivedMesh *dm, int (*setDrawOptions)(MTFace *tface, MCol *mcol, int matnr))
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseFace *vface;
-
- if(!vdm->polygon_layer) return;
-
- vface = vdm->polygon_layer->dl.lb.first;
-
- while(vface) {
- glBegin(vface->vvert3?GL_QUADS:GL_TRIANGLES);
- glVertex3fv(vdm->vertexCos ? vface->vvert0->cos : vface->vvert0->co);
- glVertex3fv(vdm->vertexCos ? vface->vvert1->cos : vface->vvert1->co);
- glVertex3fv(vdm->vertexCos ? vface->vvert2->cos : vface->vvert2->co);
- if(vface->vvert3)
- glVertex3fv(vdm->vertexCos ? vface->vvert3->cos : vface->vvert3->co);
- glEnd();
-
- vface = vface->next;
- }
-}
-
-/* this function should draw mesh with colored faces (weight paint, vertex
- * colors, etc.), but it isn't supported yet */
-static void vDM_drawFacesColored(DerivedMesh *dm, int useTwoSided, unsigned char *col1, unsigned char *col2)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
- struct VerseFace *vface;
-
- if(!vdm->polygon_layer) return;
-
- vface = vdm->polygon_layer->dl.lb.first;
-
- while(vface) {
- glBegin(vface->vvert3?GL_QUADS:GL_TRIANGLES);
- glVertex3fv(vdm->vertexCos ? vface->vvert0->cos : vface->vvert0->co);
- glVertex3fv(vdm->vertexCos ? vface->vvert1->cos : vface->vvert1->co);
- glVertex3fv(vdm->vertexCos ? vface->vvert2->cos : vface->vvert2->co);
- if(vface->vvert3)
- glVertex3fv(vdm->vertexCos ? vface->vvert3->cos : vface->vvert3->co);
- glEnd();
-
- vface = vface->next;
- }
-}
-
-/**/
-static void vDM_foreachMappedVert(
- DerivedMesh *dm,
- void (*func)(void *userData, int index, float *co, float *no_f, short *no_s),
- void *userData)
-{
-}
-
-/**/
-static void vDM_foreachMappedEdge(
- DerivedMesh *dm,
- void (*func)(void *userData, int index, float *v0co, float *v1co),
- void *userData)
-{
-}
-
-/**/
-static void vDM_foreachMappedFaceCenter(
- DerivedMesh *dm,
- void (*func)(void *userData, int index, float *cent, float *no),
- void *userData)
-{
-}
-
-/**/
-static void vDM_drawMappedFacesTex(
- DerivedMesh *dm,
- int (*setDrawParams)(void *userData, int index),
- void *userData)
-{
- /* not supported yet */
- vDM_drawFacesTex(dm, NULL);
-}
-
-/**/
-static void vDM_drawMappedFaces(
- DerivedMesh *dm,
- int (*setDrawOptions)(void *userData, int index, int *drawSmooth_r),
- void *userData,
- int useColors)
-{
-}
-
-/**/
-static void vDM_drawMappedEdges(
- DerivedMesh *dm,
- int (*setDrawOptions)(void *userData, int index),
- void *userData)
-{
-}
-
-/**/
-static void vDM_drawMappedEdgesInterp(
- DerivedMesh *dm,
- int (*setDrawOptions)(void *userData, int index),
- void (*setDrawInterpOptions)(void *userData, int index, float t),
- void *userData)
-{
-}
-
-/* free all DerivedMesh data */
-static void vDM_release(DerivedMesh *dm)
-{
- VDerivedMesh *vdm = (VDerivedMesh*)dm;
-
- if (DM_release(dm)) {
- if(vdm->vertexCos) MEM_freeN(vdm->vertexCos);
- MEM_freeN(vdm);
- }
-}
-
-/* create derived mesh from verse mesh ... it is used in object mode, when some other client can
- * change shared data and want to see this changes in real time too */
-DerivedMesh *derivedmesh_from_versemesh(VNode *vnode, float (*vertexCos)[3])
-{
- VDerivedMesh *vdm = MEM_callocN(sizeof(*vdm), "vdm");
-
- vdm->vnode = vnode;
- vdm->vertex_layer = find_verse_layer_type((VGeomData*)vnode->data, VERTEX_LAYER);
- vdm->polygon_layer = find_verse_layer_type((VGeomData*)vnode->data, POLYGON_LAYER);
- vdm->edges = &((VGeomData*)vnode->data)->edges;
-
- /* vertex and polygon layer has to exist */
- if(vdm->vertex_layer && vdm->polygon_layer)
- DM_init(&vdm->dm, vdm->vertex_layer->dl.da.count, BLI_countlist(vdm->edges), vdm->polygon_layer->dl.da.count);
- else
- DM_init(&vdm->dm, 0, 0, 0);
-
- vdm->dm.getMinMax = vDM_getMinMax;
-
- vdm->dm.getNumVerts = vDM_getNumVerts;
- vdm->dm.getNumEdges = vDM_getNumEdges;
- vdm->dm.getNumFaces = vDM_getNumFaces;
-
- vdm->dm.getVert = vDM_getVert;
- vdm->dm.getEdge = vDM_getEdge;
- vdm->dm.getFace = vDM_getFace;
- vdm->dm.copyVertArray = vDM_copyVertArray;
- vdm->dm.copyEdgeArray = vDM_copyEdgeArray;
- vdm->dm.copyFaceArray = vDM_copyFaceArray;
-
- vdm->dm.foreachMappedVert = vDM_foreachMappedVert;
- vdm->dm.foreachMappedEdge = vDM_foreachMappedEdge;
- vdm->dm.foreachMappedFaceCenter = vDM_foreachMappedFaceCenter;
-
- vdm->dm.getVertCos = vDM_getVertCos;
- vdm->dm.getVertCo = vDM_getVertCo;
- vdm->dm.getVertNo = vDM_getVertNo;
-
- vdm->dm.drawVerts = vDM_drawVerts;
-
- vdm->dm.drawEdges = vDM_drawEdges;
- vdm->dm.drawLooseEdges = vDM_drawLooseEdges;
- vdm->dm.drawUVEdges = vDM_drawUVEdges;
-
- vdm->dm.drawFacesSolid = vDM_drawFacesSolid;
- vdm->dm.drawFacesTex = vDM_drawFacesTex;
- vdm->dm.drawFacesColored = vDM_drawFacesColored;
-
- vdm->dm.drawMappedFacesTex = vDM_drawMappedFacesTex;
- vdm->dm.drawMappedFaces = vDM_drawMappedFaces;
- vdm->dm.drawMappedEdges = vDM_drawMappedEdges;
- vdm->dm.drawMappedEdgesInterp = vDM_drawMappedEdgesInterp;
-
- vdm->dm.release = vDM_release;
-
- vdm->vertexCos = vertexCos;
-
- return (DerivedMesh*) vdm;
-}
-
-#endif
-
/***/
DerivedMesh *mesh_create_derived_for_modifier(Scene *scene, Object *ob, ModifierData *md)
@@ -1973,12 +1402,7 @@ DerivedMesh *mesh_create_derived_for_modifier(Scene *scene, Object *ob, Modifier
float (*deformedVerts)[3] = mesh_getVertexCos(me, &numVerts);
mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
-#ifdef WITH_VERSE
- if(me->vnode) dm = derivedmesh_from_versemesh(me->vnode, deformedVerts);
- else dm = getMeshDerivedMesh(me, ob, deformedVerts);
-#else
dm = getMeshDerivedMesh(me, ob, deformedVerts);
-#endif
MEM_freeN(deformedVerts);
} else {
@@ -2163,22 +1587,11 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
* coordinates (vpaint, etc.)
*/
if (deform_r) {
-#ifdef WITH_VERSE
- if(me->vnode) *deform_r = derivedmesh_from_versemesh(me->vnode, deformedVerts);
- else {
- *deform_r = CDDM_from_mesh(me, ob);
- if(deformedVerts) {
- CDDM_apply_vert_coords(*deform_r, deformedVerts);
- CDDM_calc_normals(*deform_r);
- }
- }
-#else
*deform_r = CDDM_from_mesh(me, ob);
if(deformedVerts) {
CDDM_apply_vert_coords(*deform_r, deformedVerts);
CDDM_calc_normals(*deform_r);
}
-#endif
}
} else {
/* default behaviour for meshes */
@@ -2195,13 +1608,6 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
dm = NULL;
orcodm = NULL;
-#ifdef WITH_VERSE
- /* hack to make sure modifiers don't try to use mesh data from a verse
- * node
- */
- if(me->vnode) dm = derivedmesh_from_versemesh(me->vnode, deformedVerts);
-#endif
-
for(;md; md = md->next, curr = curr->next) {
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
@@ -2333,23 +1739,11 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
} else if(dm) {
finaldm = dm;
} else {
-#ifdef WITH_VERSE
- if(me->vnode)
- finaldm = derivedmesh_from_versemesh(me->vnode, deformedVerts);
- else {
- finaldm = CDDM_from_mesh(me, ob);
- if(deformedVerts) {
- CDDM_apply_vert_coords(finaldm, deformedVerts);
- CDDM_calc_normals(finaldm);
- }
- }
-#else
finaldm = CDDM_from_mesh(me, ob);
if(deformedVerts) {
CDDM_apply_vert_coords(finaldm, deformedVerts);
CDDM_calc_normals(finaldm);
}
-#endif
}
/* add an orco layer if needed */
diff --git a/source/blender/blenkernel/intern/Makefile b/source/blender/blenkernel/intern/Makefile
index 8919719d64d..3d8a47e3683 100644
--- a/source/blender/blenkernel/intern/Makefile
+++ b/source/blender/blenkernel/intern/Makefile
@@ -91,11 +91,6 @@ ifeq ($(WITH_FREETYPE2), true)
CPPFLAGS += -I$(NAN_FREETYPE)/include/freetype2
endif
-ifeq ($(WITH_VERSE), true)
- CPPFLAGS += -DWITH_VERSE
- CPPFLAGS += -I$(NAN_VERSE)/include
-endif
-
ifeq ($(WITH_FFMPEG),true)
CPPFLAGS += -DWITH_FFMPEG
CPPFLAGS += $(NAN_FFMPEGCFLAGS)
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 597687101b0..7890b72f6e2 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -1939,17 +1939,12 @@ ImBuf *BKE_image_get_ibuf(Image *ima, ImageUser *iuser)
}
else if(ima->source == IMA_SRC_GENERATED) {
/* generated is: ibuf is allocated dynamically */
- if(ima->type==IMA_TYPE_VERSE) {
- /* todo */
- }
- else { /* always fall back to IMA_TYPE_UV_TEST */
- /* UV testgrid or black or solid etc */
- if(ima->gen_x==0) ima->gen_x= 256;
- if(ima->gen_y==0) ima->gen_y= 256;
- ibuf= add_ibuf_size(ima->gen_x, ima->gen_y, ima->name, 0, ima->gen_type, color);
- image_assign_ibuf(ima, ibuf, IMA_NO_INDEX, 0);
- ima->ok= IMA_OK_LOADED;
- }
+ /* UV testgrid or black or solid etc */
+ if(ima->gen_x==0) ima->gen_x= 256;
+ if(ima->gen_y==0) ima->gen_y= 256;
+ ibuf= add_ibuf_size(ima->gen_x, ima->gen_y, ima->name, 0, ima->gen_type, color);
+ image_assign_ibuf(ima, ibuf, IMA_NO_INDEX, 0);
+ ima->ok= IMA_OK_LOADED;
}
else if(ima->source == IMA_SRC_VIEWER) {
if(ima->type==IMA_TYPE_R_RESULT) {
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index b41f82bbcf8..3f35e70114a 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -68,10 +68,6 @@
#include "BKE_object.h"
#include "BKE_utildefines.h"
-#ifdef WITH_VERSE
-#include "BKE_verse.h"
-#endif
-
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
#include "BLI_arithb.h"
@@ -193,10 +189,6 @@ Mesh *add_mesh(char *name)
me->flag= ME_TWOSIDED;
me->bb= unit_boundbox();
-#ifdef WITH_VERSE
- me->vnode = NULL;
-#endif
-
return me;
}
@@ -240,10 +232,6 @@ Mesh *copy_mesh(Mesh *me)
men->key= copy_key(me->key);
if(men->key) men->key->from= (ID *)men;
-#ifdef WITH_VERSE
- men->vnode = NULL;
-#endif
-
return men;
}
@@ -1025,38 +1013,14 @@ void mesh_calc_normals(MVert *mverts, int numVerts, MFace *mfaces, int numFaces,
float (*mesh_getVertexCos(Mesh *me, int *numVerts_r))[3]
{
-#ifdef WITH_VERSE
- if(me->vnode) {
- struct VLayer *vlayer;
- struct VerseVert *vvert;
- unsigned int i, numVerts;
- float (*cos)[3];
-
- vlayer = find_verse_layer_type((VGeomData*)((VNode*)me->vnode)->data, VERTEX_LAYER);
-
- vvert = vlayer->dl.lb.first;
- numVerts = vlayer->dl.da.count;
- cos = MEM_mallocN(sizeof(*cos)*numVerts, "verse_vertexcos");
-
- for(i=0; i<numVerts && vvert; vvert = vvert->next, i++) {
- VECCOPY(cos[i], vvert->co);
- }
-
- return cos;
- }
- else {
-#endif
- int i, numVerts = me->totvert;
- float (*cos)[3] = MEM_mallocN(sizeof(*cos)*numVerts, "vertexcos1");
-
- if (numVerts_r) *numVerts_r = numVerts;
- for (i=0; i<numVerts; i++)
- VECCOPY(cos[i], me->mvert[i].co);
-
- return cos;
-#ifdef WITH_VERSE
- }
-#endif
+ int i, numVerts = me->totvert;
+ float (*cos)[3] = MEM_mallocN(sizeof(*cos)*numVerts, "vertexcos1");
+
+ if (numVerts_r) *numVerts_r = numVerts;
+ for (i=0; i<numVerts; i++)
+ VECCOPY(cos[i], me->mvert[i].co);
+
+ return cos;
}
float (*mesh_getRefKeyCos(Mesh *me, int *numVerts_r))[3]
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 7f3f21e106a..185ce73c936 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1253,10 +1253,6 @@ Object *copy_object(Object *ob)
obn->derivedDeform = NULL;
obn->derivedFinal = NULL;
-#ifdef WITH_VERSE
- obn->vnode = NULL;
-#endif
-
obn->gpulamp.first = obn->gpulamp.last = NULL;
return obn;
diff --git a/source/blender/blenkernel/intern/verse_bitmap_node.c b/source/blender/blenkernel/intern/verse_bitmap_node.c
deleted file mode 100644
index 92bdd28027f..00000000000
--- a/source/blender/blenkernel/intern/verse_bitmap_node.c
+++ /dev/null
@@ -1,448 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Contributor(s): Jiri Hnidek.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifdef WITH_VERSE
-
-#include <string.h>
-
-#include "MEM_guardedalloc.h"
-
-#include "DNA_listBase.h"
-
-#include "BLI_dynamiclist.h"
-#include "BLI_blenlib.h"
-
-//XXX #include "BIF_verse.h"
-
-#include "BKE_verse.h"
-
-#include "verse.h"
-
-/* function prototypes of static functions */
-static void cb_b_dimension_set(void *user_data, VNodeID node_id, uint16 width, uint16 height, uint16 depth);
-static void cb_b_layer_create(void *user_data, VNodeID node_id, VLayerID layer_id, const char *name, VNBLayerType type);
-static void cb_b_layer_destroy(void *user_data, VNodeID node_id, VLayerID layer_id);
-static void cb_b_tile_set(void *user_data, VNodeID node_id, VLayerID layer_id, uint16 tile_x, uint16 tile_y, uint16 z, VNBLayerType type, const VNBTile *tile);
-
-static void change_layer_dimension(
- VBitmapLayer *vblayer,
- unsigned int old_width,
- unsigned int old_height,
- unsigned int t_old_width,
- unsigned int t_old_height);
-static void *alloc_verse_bitmap_layer_data(struct VBitmapLayer *vblayer);
-
-/*
- * resize/crop verse bitmap layer
- */
-static void change_layer_dimension(
- VBitmapLayer *vblayer,
- unsigned int old_width,
- unsigned int old_height,
- unsigned int t_old_width,
- unsigned int t_old_height)
-{
- struct VNode *vnode = vblayer->vnode;
- unsigned int t_width = ((VBitmapData*)(vnode->data))->t_width;
- unsigned int width = ((VBitmapData*)(vnode->data))->width;
- unsigned int height = ((VBitmapData*)(vnode->data))->height;
- unsigned int x, y, i, j;
-
- i = j = 0;
-
- /* "copy" old data to new data */
- if(vblayer->type==VN_B_LAYER_UINT8) {
- unsigned char *data = (unsigned char*)vblayer->data;
- /* allocate new verse bitmap layer data */
- unsigned char *new_data = (unsigned char*)alloc_verse_bitmap_layer_data(vblayer);
- for(y=0; y<old_height && y<height; y++, i=y*t_width, j=y*t_old_width) {
- for(x=0; x<old_width && y<width; x++, i++, j++) {
- new_data[i] = data[j];
- }
- }
- MEM_freeN(vblayer->data);
- vblayer->data = new_data;
- }
-}
-
-/*
- * free data stored in verse bitmap layer
- */
-void free_bitmap_layer_data(VBitmapLayer *vblayer)
-{
- struct VerseSession *session = vblayer->vnode->session;
-
- /* free name of bitmap layer */
- MEM_freeN(vblayer->name);
-
- /* unsubscribe from verse bitmap layer */
- if(session->flag & VERSE_CONNECTED)
- verse_send_b_layer_unsubscribe(vblayer->vnode->id, vblayer->id);
-
- /* free image data of bitmap layer */
- if(vblayer->data) MEM_freeN(vblayer->data);
-}
-
-/*
- * allocate data of verse bitmap layer
- */
-static void *alloc_verse_bitmap_layer_data(VBitmapLayer *vblayer)
-{
- struct VNode *vnode = vblayer->vnode;
- unsigned int t_width = ((VBitmapData*)(vnode->data))->t_width;
- unsigned int t_height = ((VBitmapData*)(vnode->data))->t_height;
- unsigned int size;
- void *data;
-
- size = t_width*t_height;
-
- /* allocation of own data stored in verse bitmap layer */
- switch (vblayer->type) {
- case VN_B_LAYER_UINT1:
- data = (void*)MEM_mallocN(sizeof(unsigned char)*size, "VBLayer data uint1");
- break;
- case VN_B_LAYER_UINT8:
- data = (void*)MEM_mallocN(sizeof(unsigned char)*size, "VBLayer data uint8");
- break;
- case VN_B_LAYER_UINT16:
- data = (void*)MEM_mallocN(sizeof(unsigned int)*size, "VBLayer data uint16");
- break;
- case VN_B_LAYER_REAL32:
- data = (void*)MEM_mallocN(sizeof(float)*size, "VBLayer data float16");
- break;
- case VN_B_LAYER_REAL64:
- data = (void*)MEM_mallocN(sizeof(double)*size, "VBLayer data float32");
- break;
- default:
- data = NULL;
- break;
- }
-
- return data;
-}
-
-/*
- * create verse bitmap layer
- */
-VBitmapLayer *create_bitmap_layer(
- VNode *vnode,
- VLayerID layer_id,
- const char *name,
- VNBLayerType type)
-{
- struct VBitmapLayer *vblayer;
- unsigned int width = ((VBitmapData*)(vnode->data))->width;
- unsigned int height = ((VBitmapData*)(vnode->data))->height;
-
- /* allocate memory for own verse bitmap layer */
- vblayer = (VBitmapLayer*)MEM_mallocN(sizeof(VBitmapLayer), "Verse Bitmap Layer");
-
- /* verse bitmap layer will include pointer at parent verse node and own id */
- vblayer->vnode = vnode;
- vblayer->id = layer_id;
-
- /* name of verse layer */
- vblayer->name = (char*)MEM_mallocN(sizeof(char)*(strlen(name)+1), "Verse Bitmap Layer name");
- vblayer->name[0] = '\0';
- strcpy(vblayer->name, name);
-
- /* type of data stored in verse bitmap layer */
- vblayer->type = type;
-
- /* we can allocate memory for layer data, when we know dimmension of layers; when
- * we don't know it, then we will allocate this data when we will receive dimmension */
- if(width==0 || height==0)
- vblayer->data = NULL;
- else
- vblayer->data = alloc_verse_bitmap_layer_data(vblayer);
-
- vblayer->flag = 0;
-
- return vblayer;
-}
-
-/*
- * free data of bitmap node
- */
-void free_bitmap_node_data(VNode *vnode)
-{
- if(vnode->data) {
- struct VBitmapLayer *vblayer = (VBitmapLayer*)((VBitmapData*)(vnode->data))->layers.lb.first;
-
- /* free all VerseLayer data */
- while(vblayer) {
- free_bitmap_layer_data(vblayer);
- vblayer = vblayer->next;
- }
-
- /* free all VerseLayers */
- BLI_dlist_destroy(&(((VGeomData*)vnode->data)->layers));
- }
-}
-
-/*
- * create data of bitmap node
- */
-VBitmapData *create_bitmap_data()
-{
- struct VBitmapData *vbitmap;
-
- vbitmap = (VBitmapData*)MEM_mallocN(sizeof(VBitmapData), "Verse Bitmap Data");
-
- BLI_dlist_init(&(vbitmap->layers));
- vbitmap->queue.first = vbitmap->queue.last = NULL;
-
- vbitmap->width = 0;
- vbitmap->height = 0;
- vbitmap->depth = 0;
-
- vbitmap->image = NULL;
-
- //XXX vbitmap->post_bitmap_dimension_set = post_bitmap_dimension_set;
- //XXX vbitmap->post_bitmap_layer_create = post_bitmap_layer_create;
- //XXX vbitmap->post_bitmap_layer_destroy = post_bitmap_layer_destroy;
- //XXX vbitmap->post_bitmap_tile_set = post_bitmap_tile_set;
-
- return vbitmap;
-}
-
-/*
- * callback function, dimension of image was changed, it is neccessary to
- * crop all layers
- */
-static void cb_b_dimension_set(
- void *user_data,
- VNodeID node_id,
- uint16 width,
- uint16 height,
- uint16 depth)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VBitmapLayer *vblayer;
- unsigned int old_width, old_height, t_old_width, t_old_height;
-
- if(!session) return;
-
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode) return;
-
-#ifdef VERSE_DEBUG_PRINT
- printf("\t cb_b_dimension_set()\n");
-#endif
-
- /* backup old width and height */
- old_width = ((VBitmapData*)(vnode->data))->width;
- old_height = ((VBitmapData*)(vnode->data))->height;
- t_old_width = ((VBitmapData*)(vnode->data))->t_width;
- t_old_height = ((VBitmapData*)(vnode->data))->t_height;
-
- /* set up new dimension of layers */
- ((VBitmapData*)(vnode->data))->width = width;
- ((VBitmapData*)(vnode->data))->height = height;
- ((VBitmapData*)(vnode->data))->depth = depth;
-
- /* we cache t_width because tiles aren't one pixel width */
- if((width % VN_B_TILE_SIZE)!=0)
- ((VBitmapData*)(vnode->data))->t_width = (width/VN_B_TILE_SIZE + 1)*VN_B_TILE_SIZE;
- else
- ((VBitmapData*)(vnode->data))->t_width = width;
-
- /* we cache t_height because tiles aren't one pixel height */
- if((height % VN_B_TILE_SIZE)!=0)
- ((VBitmapData*)(vnode->data))->t_height = (height/VN_B_TILE_SIZE + 1)*VN_B_TILE_SIZE;
- else
- ((VBitmapData*)(vnode->data))->t_height = height;
-
- /* crop resize all layers */
- vblayer = ((VBitmapData*)vnode->data)->layers.lb.first;
-
- while(vblayer) {
- /* when this callback function received after cb_b_layer_create,
- * then we have to allocate memory for verse bitmap layer data */
- if(!vblayer->data) vblayer->data = alloc_verse_bitmap_layer_data(vblayer);
- /* crop/resize all verse bitmap layers */
- else change_layer_dimension(vblayer, old_width, old_height, t_old_width, t_old_height);
-
- vblayer = vblayer->next;
- }
-
- /* post callback function */
- ((VBitmapData*)(vnode->data))->post_bitmap_dimension_set(vnode);
-}
-
-/*
- * callback function, new layer channel of image was created
- */
-static void cb_b_layer_create(
- void *user_data,
- VNodeID node_id,
- VLayerID layer_id,
- const char *name,
- VNBLayerType type)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VBitmapLayer *vblayer;
-
- if(!session) return;
-
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode) return;
-
-#ifdef VERSE_DEBUG_PRINT
- printf("\t cb_b_layer_create()\n");
-#endif
-
- /* when no layer exists, then new layer will be created */
- vblayer = create_bitmap_layer(vnode, layer_id, name, type);
-
- /* add verse bitmap layer to list of layers */
- BLI_dlist_add_item_index(&((VBitmapData*)vnode->data)->layers, vblayer, layer_id);
-
- /* post callback function */
- ((VBitmapData*)(vnode->data))->post_bitmap_layer_create(vblayer);
-
-}
-
-/*
- * callback function, existing layer of image was destroyed
- */
-static void cb_b_layer_destroy(
- void *user_data,
- VNodeID node_id,
- VLayerID layer_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VBitmapLayer *vblayer;
-
- if(!session) return;
-
- /* find node of this layer*/
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode) return;
-
- vblayer = (VBitmapLayer*)BLI_dlist_find_link(&(((VBitmapData*)vnode->data)->layers), layer_id);
- if(!vblayer) return;
-
-#ifdef VERSE_DEBUG_PRINT
- printf("\t cb_b_layer_destroy()\n");
-#endif
-
- /* remove verse bitmap layer from list of layers */
- BLI_dlist_rem_item(&(((VBitmapData*)vnode->data)->layers), layer_id);
-
- /* post callback function */
- ((VBitmapData*)(vnode->data))->post_bitmap_layer_destroy(vblayer);
-
- /* free data of verse bitmap layer */
- free_bitmap_layer_data(vblayer);
-
- /* free verse bitmap layer */
- MEM_freeN(vblayer);
-}
-
-/*
- * callback function, small part (8x8 pixels) was changed
- */
-static void cb_b_tile_set(
- void *user_data,
- VNodeID node_id,
- VLayerID layer_id,
- uint16 tile_x,
- uint16 tile_y,
- uint16 z,
- VNBLayerType type,
- const VNBTile *tile)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VBitmapLayer *vblayer;
- unsigned int x, y, xs, ys, width, height, t_height, t_width, i, j;
-
- if(!session) return;
-
- /* try to find verse node in dynamic list nodes */
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode) return;
-
- /* try to find verse bitmap layer in list of layers */
- vblayer = (VBitmapLayer*)BLI_dlist_find_link(&(((VBitmapData*)vnode->data)->layers), layer_id);
- if(!vblayer) return;
-
- /* we have to have allocated memory for bitmap layer */
- if(!vblayer->data) return;
-
- width = ((VBitmapData*)vnode->data)->width;
- height = ((VBitmapData*)vnode->data)->height;
-
- /* width of verse image including all tiles */
- t_height = ((VBitmapData*)vnode->data)->t_height;
- /* height of verse image including all tiles */
- t_width = ((VBitmapData*)vnode->data)->t_width;
-
-#ifdef VERSE_DEBUG_PRINT
- printf("\t cb_b_tile_set()\n");
-#endif
-
- xs = tile_x*VN_B_TILE_SIZE;
- ys = tile_y*VN_B_TILE_SIZE;
-
- /* initial position in one dimension vblayer->data (y_start*width + x_start) */
- i = ys*t_width + xs;
- /* intial position in one dimension tile array */
- j = 0;
-
- if(type==VN_B_LAYER_UINT8) {
- unsigned char *data = (unsigned char*)vblayer->data;
- for(y=ys; y<ys+VN_B_TILE_SIZE && y<height; y++, i=y*t_width+xs)
- for(x=xs; x<xs+VN_B_TILE_SIZE && x<width; x++, i++, j++)
- data[i] = (unsigned char)tile->vuint8[j];
- }
-
- /* post callback function */
- ((VBitmapData*)(vnode->data))->post_bitmap_tile_set(vblayer, xs, ys);
-}
-
-/*
- * set up all callbacks functions for image nodes
- */
-void set_bitmap_callbacks(void)
-{
- /* dimension (size) of bitmap was set up or changes (image will be croped) */
- verse_callback_set(verse_send_b_dimensions_set, cb_b_dimension_set, NULL);
-
- /* new layer (chanell) of image was added or created */
- verse_callback_set(verse_send_b_layer_create, cb_b_layer_create, NULL);
-
- /* existing layer was destroyed */
- verse_callback_set(verse_send_b_layer_destroy, cb_b_layer_destroy, NULL);
-
- /* some tile (small part 8x8 pixels of image was changed) */
- verse_callback_set(verse_send_b_tile_set, cb_b_tile_set, NULL);
-}
-
-#endif
-
diff --git a/source/blender/blenkernel/intern/verse_geometry_node.c b/source/blender/blenkernel/intern/verse_geometry_node.c
deleted file mode 100644
index a0afd1ef5f0..00000000000
--- a/source/blender/blenkernel/intern/verse_geometry_node.c
+++ /dev/null
@@ -1,2098 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Contributor(s): Jiri Hnidek.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifdef WITH_VERSE
-
-#include <string.h>
-
-#include "MEM_guardedalloc.h"
-
-#include "DNA_listBase.h"
-
-#include "BLI_dynamiclist.h"
-#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
-
-#include "BKE_verse.h"
-#include "BKE_utildefines.h"
-
-//XXX #include "BIF_verse.h"
-
-#include "verse.h"
-
-/* function prototypes of static functions */
-
-/* test functions for callback functions */
-static char test_polygon_set_corner_uint32(uint32 v0, uint32 v1, uint32 v2, uint32 v3);
-
-/* callback functions */
-static void cb_g_layer_create(void *user_data, VNodeID node_id, VLayerID layer_id, const char *name, VNGLayerType type, uint32 def_integer, real64 def_real);
-static void cb_g_layer_destroy(void *user_data, VNodeID node_id, VLayerID layer_id);
-static void cb_g_vertex_set_xyz_real32(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real32 x, real32 y, real32 z);
-static void cb_g_polygon_set_corner_uint32(void *user_data, VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 v0, uint32 v1, uint32 v2, uint32 v3);
-static void cb_g_vertex_delete_real32(void *user_data, VNodeID node_id, uint32 vertex_id);
-static void cb_g_polygon_delete(void *user_data, VNodeID node_id, uint32 polygon_id);
-static void cb_g_crease_set_edge(void *user_data, VNodeID node_id, const char *layer, uint32 def_crease);
-static void cb_g_crease_set_vertex(void *user_data, VNodeID node_id, const char *layer, uint32 def_crease);
-
-/* other static functions */
-
-static void free_unneeded_verseverts_of_verseface(struct VNode *vnode, struct VerseFace *vface);
-static void free_verse_vertex(struct VLayer *vlayer, struct VerseVert *vvert);
-static void free_verse_face(struct VLayer *vlayer, struct VerseFace *vface);
-static void free_verse_layer_data(struct VNode *vnode, struct VLayer *vlayer);
-
-static void send_verse_face(struct VerseFace *vface);
-
-static VerseVert* find_verse_vert_in_queue(struct VLayer *vlayer, VNodeID node_id, uint32 vertex_id, real32 x, real32 y, real32 z);
-static VerseFace* find_verse_face_in_queue(struct VLayer *vlayer, VNodeID node_id, uint32 polygon_id, uint32 v0, uint32 v1, uint32 v2, uint32 v3);
-
-static unsigned short test_incoming_verseface(struct VGeomData *geom, struct VerseFace *vface);
-static void find_unsent_faces(struct VNode *vnode, struct VerseVert *vvert);
-static void find_vlayer_orphans(struct VNode *vnode, struct VerseVert *vvert);
-static void move_face_orphan_to_dlist(struct VNode *vnode, struct VLayer *vlayer, struct VerseFace *vface);
-static void increase_verse_verts_references(struct VerseFace *vface);
-static void recalculate_verseface_normals(struct VNode *vnode);
-
-/* verse edge functions */
-static VerseEdge* find_verse_edge(struct VNode *vnode, uint32 v0, uint32 v1);
-static void insert_verse_edgehash(struct VNode *vnode, struct VerseEdge *vedge);
-static void remove_verse_edgehash(struct VNode *vnode, struct VerseEdge *vedge);
-static void remove_verse_edge(struct VNode *vnode, uint32 v0, uint32 v1);
-static void add_verse_edge(struct VNode *vnode, uint32 v0, uint32 v1);
-static void update_edgehash_of_deleted_verseface(struct VNode *vnode, struct VerseFace *vface);
-static void update_edgehash_of_changed_verseface(struct VNode *vnode, struct VerseFace *vface, uint32 v0, uint32 v1, uint32 v2, uint32 v3);
-static void update_edgehash_of_new_verseface(struct VNode *vnode, uint32 v0, uint32 v1, uint32 v2, uint32 v3);
-
-/*
- * recalcute normals of all VerseFaces
- */
-static void recalculate_verseface_normals(VNode *vnode)
-{
- struct VLayer *vert_layer, *face_layer;
- struct VerseFace *vface;
- struct VerseVert *vvert;
-
- if(vnode->type != V_NT_GEOMETRY) return;
-
- vert_layer = find_verse_layer_type((VGeomData*)vnode->data, VERTEX_LAYER);
- face_layer = find_verse_layer_type((VGeomData*)vnode->data, POLYGON_LAYER);
-
- vvert = vert_layer->dl.lb.first;
- while(vvert) {
- vvert->no[0] = vvert->no[1] = vvert->no[2] = 0.0;
- vvert = vvert->next;
- }
-
- vface = face_layer->dl.lb.first;
- while(vface) {
- /* calculate face normals */
- if(vface->vvert3) {
- CalcNormFloat4(vface->vvert0->co, vface->vvert1->co,
- vface->vvert2->co, vface->vvert3->co, vface->no);
- VecAddf(vface->vvert3->no, vface->vvert3->no, vface->no);
- }
- else
- CalcNormFloat(vface->vvert0->co, vface->vvert1->co,
- vface->vvert2->co, vface->no);
-
- /* calculate vertex normals ... it is averadge of all face normals using the vertex */
- VecAddf(vface->vvert0->no, vface->vvert0->no, vface->no);
- VecAddf(vface->vvert1->no, vface->vvert1->no, vface->no);
- VecAddf(vface->vvert2->no, vface->vvert2->no, vface->no);
-
- vface = vface->next;
- }
-
- /* we have to normalize all vertex normals */
- vvert = vert_layer->dl.lb.first;
- while(vvert) {
- Normalize(vvert->no);
- vvert = vvert->next;
- }
-}
-
-/*
- * add created item to the queue and send it if possible
- */
-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;
- while(link) {
- if(link==item) {
- if(((VerseFace*)item)->flag & FACE_SENT) {
-/* printf("\tverse face %d marked as OBSOLETE\n", ((VerseFace*)item)->id);*/
- ((VerseFace*)item)->flag |= FACE_OBSOLETE;
- }
- return;
- }
- link = link->next;
- }
- }
-
- /* add item to sending queue (two way dynamic list) */
- BLI_addtail(lb, item);
-
- /* send item, when it is possible */
- switch (type) {
- case VERSE_NODE: /* only first node in queue can be sent */
- if(lb->first==lb->last)
- send_verse_node((VNode*)item);
- break;
- case VERSE_LINK: /* both object between have to exist */
- if(((VLink*)item)->flag & LINK_SEND_READY)
- send_verse_link((VLink*)item);
- break;
- case VERSE_LAYER:
- if(((VLayer*)item)->vnode->flag & NODE_RECEIVED)
- send_verse_layer((VLayer*)item);
- break;
- case VERSE_VERT:
- if(((VerseVert*)item)->vlayer->flag & LAYER_RECEIVED)
- send_verse_vertex((VerseVert*)item);
- break;
- case VERSE_FACE: /* all vertexes of face have to be received */
- if(((VerseFace*)item)->flag & FACE_SEND_READY)
- send_verse_face((VerseFace*)item);
- break;
- case VERSE_TAG:
- send_verse_tag((VTag*)item);
- break;
- case VERSE_TAG_GROUP:
- send_verse_taggroup((VTagGroup*)item);
- break;
- case VERSE_VERT_UINT32: /* parent item has to exist */
- 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 */
- 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 */
- 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 */
- 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 */
- 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 */
- 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 */
- 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 */
- 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;
- }
-}
-
-/*
- * return VerseLayer with certain content (vertexes, polygons, in the
- * future: weight, red color, etc.)
- */
-VLayer* find_verse_layer_type(VGeomData *geom, short content)
-{
- struct VLayer *vlayer = NULL;
-
- switch(content) {
- case VERTEX_LAYER:
- /* VERTEX_LAYER equals 0 and vertex layer is
- * always in 1st layer */
- vlayer = geom->layers.da.items[VERTEX_LAYER];
- break;
- case POLYGON_LAYER:
- /* POLYGON_LAYER equals 1 and vertex layer is
- * always in 2nd layer */
- vlayer = geom->layers.da.items[POLYGON_LAYER];
- break;
- }
-
- return vlayer;
-}
-
-/*
- * increase references of VerseVerts of new VerseFace
- */
-static void increase_verse_verts_references(VerseFace *vface)
-{
- if(vface->vvert0) vface->vvert0->counter++;
- if(vface->vvert1) vface->vvert1->counter++;
- if(vface->vvert2) vface->vvert2->counter++;
- if(vface->vvert3) vface->vvert3->counter++;
-}
-
-/*
- * move VerseFace from list of orphans to dlist of VerseFaces (if VerseFace was only changed
- * then this VerseFace is only removed from list of orphans)
- */
-static void move_face_orphan_to_dlist(VNode *vnode, VLayer *vlayer, VerseFace *vface)
-{
- /* remove vface from list of orphans */
- BLI_remlink(&(vlayer->orphans), vface);
- /* increase references of all vertexes beying part of this face*/
- increase_verse_verts_references(vface);
-
- if(vface->flag & FACE_RECEIVED) {
- /* set up vface flag */
- vface->flag &= ~FACE_RECEIVED;
- /* move vface to dynamic list of faces */
- BLI_dlist_add_item_index(&(vlayer->dl), (void*)vface, vface->id);
- /* recalculate all vertex and faces normals */
- recalculate_verseface_normals(vnode);
- /* post create action (change local data) */
- ((VGeomData*)vnode->data)->post_polygon_create(vface);
- }
- else if(vface->flag & FACE_CHANGED) {
- /* set up vface flag */
- vface->flag &= ~FACE_CHANGED;
- /* move vface to dynamic list of faces */
- BLI_dlist_add_item_index(&(vlayer->dl), (void*)vface, vface->id);
- /* recalculate all vertex and faces normals */
- recalculate_verseface_normals(vnode);
- /* post create action (change local data) */
- ((VGeomData*)vnode->data)->post_polygon_set_corner(vface);
- }
-}
-
-/*
- * find all VerseFaces waiting in queue, which needs id of new VerseVert
- */
-static void find_unsent_faces(VNode *vnode, VerseVert *vvert)
-{
- VLayer *vlayer;
- VerseFace *vface, *next_vface;
-
- vlayer = find_verse_layer_type((VGeomData*)vnode->data, POLYGON_LAYER);
-
- if(vlayer) {
- vface = vlayer->queue.first;
- while(vface) {
- next_vface = vface->next;
- if(vface->vvert0==vvert) {
- vface->v0 = vvert->id;
- vface->counter--;
- }
- else if(vface->vvert1==vvert) {
- vface->v1 = vvert->id;
- vface->counter--;
- }
- else if(vface->vvert2==vvert) {
- vface->v2 = vvert->id;
- vface->counter--;
- }
- else if(vface->vvert3==vvert){
- vface->v3 = vvert->id;
- vface->counter--;
- }
-
- if(vface->counter<1 && !(vface->flag & FACE_SENT))
- send_verse_face(vface);
-
- vface = next_vface;
- }
- }
-}
-
-/*
- * find all VerseFace orphans, which needs incoming VerseVert
- */
-static void find_vlayer_orphans(VNode *vnode, VerseVert *vvert)
-{
- VLayer *vlayer;
- VerseFace *vface, *next_vface;
- unsigned int vertex_id = vvert->id;
-
- vlayer = find_verse_layer_type((VGeomData*)vnode->data, POLYGON_LAYER);
-
- if(vlayer) {
- vface = vlayer->orphans.first;
- while(vface){
- next_vface = vface->next;
- if(vface->v0 == vertex_id) {
- vface->vvert0 = vvert;
- vface->counter--;
- }
- else if(vface->v1 == vertex_id) {
- vface->vvert1 = vvert;
- vface->counter--;
- }
- else if(vface->v2 == vertex_id) {
- vface->vvert2 = vvert;
- vface->counter--;
- }
- else if(vface->v3 == vertex_id) {
- vface->vvert3 = vvert;
- vface->counter--;
- }
- if(vface->counter<1) {
- /* moving VerseFace orphan to dlist */
- move_face_orphan_to_dlist(vnode, vlayer, vface);
- }
- vface = next_vface;
- }
- }
-}
-
-/*
- * return number of VerseVerts missing to incoming VerseFace, set up pointers
- * at VerseVerts
- */
-static unsigned short test_incoming_verseface(VGeomData *geom, VerseFace *vface)
-{
- struct VLayer *vert_layer;
- struct VerseVert *vvert;
- int counter=0;
-
- vert_layer = find_verse_layer_type(geom, VERTEX_LAYER);
-
- if(vface->v0 != -1){
- vvert = BLI_dlist_find_link(&(vert_layer->dl), vface->v0);
- if(vvert==NULL) counter++;
- else vface->vvert0 = vvert;
- }
- if(vface->v1 != -1){
- vvert = BLI_dlist_find_link(&(vert_layer->dl), vface->v1);
- if(vvert==NULL) counter++;
- else vface->vvert1 = vvert;
- }
- if(vface->v2 != -1){
- vvert = BLI_dlist_find_link(&(vert_layer->dl), vface->v2);
- if(vvert==NULL) counter++;
- else vface->vvert2 = vvert;
- }
- if(vface->v3 != -1){
- vvert = BLI_dlist_find_link(&(vert_layer->dl), vface->v3);
- if(vvert==NULL) counter++;
- else vface->vvert3 = vvert;
- }
-
- return counter;
-}
-
-/*
- * try to find changed VerseFace in sending queue
- */
-static VerseFace* find_changed_verse_face_in_queue(VLayer *vlayer, uint32 polygon_id)
-{
- struct VerseFace *vface = vlayer->queue.first;
-
- while(vface){
- if(vface->id == polygon_id && vface->flag & FACE_CHANGED) {
- return vface;
- }
- vface = vface->next;
- }
- return NULL;
-}
-
-/*
- * try to find VerseFace in queue
- */
-static VerseFace* find_verse_face_in_queue(
- VLayer *vlayer,
- VNodeID node_id,
- uint32 polygon_id,
- uint32 v0,
- uint32 v1,
- uint32 v2,
- uint32 v3)
-{
- struct VerseFace *vface = vlayer->queue.first;
-
- while(vface){
- if((vface->v0==v0) && (vface->v1==v1) && (vface->v2==v2) && (vface->v3==v3)){
- vface->id = polygon_id;
- vface->vlayer = vlayer;
- return vface;
- }
- vface = vface->next;
- }
- return NULL;
-}
-
-/*
- * try to find VerseVert in queue
- */
-static VerseVert* find_verse_vert_in_queue(
- VLayer *vlayer,
- VNodeID node_id,
- uint32 vertex_id,
- real32 x,
- real32 y,
- real32 z)
-{
- struct VerseVert *vvert = vlayer->queue.first;
-
- while(vvert){
- if((vvert->vlayer->vnode->id == node_id) && (vvert->co[0] == x) && (vvert->co[1] == y) && (vvert->co[2] == z))
- {
- vvert->id = vertex_id;
- vvert->vlayer = vlayer;
-
- return vvert;
- }
- vvert = vvert->next;
- }
-
- return NULL;
-}
-
-
-/*
- * send quat of float values to verse server (4x32 bits)
- */
-void send_verse_face_corner_quat_real32(quat_real32_item *item, short type)
-{
- verse_send_g_polygon_set_corner_real32(
- item->vlayer->vnode->id,
- item->vlayer->id,
- item->id,
- item->value[0],
- item->value[1],
- item->value[2],
- item->value[3]);
-}
-
-/*
- * send quat of unsigned int values to verse server (4x32 bits)
- */
-void send_verse_face_corner_quat_uint32(quat_uint32_item *item, short type)
-{
- verse_send_g_polygon_set_corner_uint32(
- item->vlayer->vnode->id,
- item->vlayer->id,
- item->id,
- item->value[0],
- item->value[1],
- item->value[2],
- item->value[3]);
-}
-
-/*
- * send float value (32 bits) to verse server
- */
-void send_verse_face_real32(real32_item *item, short type)
-{
- verse_send_g_polygon_set_face_real32(
- item->vlayer->vnode->id,
- item->vlayer->id,
- item->id,
- item->value);
-}
-
-/*
- * send unsigned integer (32 bits) to verse server
- */
-void send_verse_face_uint32(uint32_item *item, short type)
-{
- verse_send_g_polygon_set_face_uint32(
- item->vlayer->vnode->id,
- item->vlayer->id,
- item->id,
- item->value);
-}
-
-/*
- * send unsigned char (8 bits) to verse server
- */
-void send_verse_face_uint8(uint8_item *item, short type)
-{
- verse_send_g_polygon_set_face_uint8(
- item->vlayer->vnode->id,
- item->vlayer->id,
- item->id,
- item->value);
-}
-
-/*
- * send vector of float values to verse server (3x32 bits)
- */
-void send_verse_vert_vec_real32(vec_real32_item *item, short type)
-{
- verse_send_g_vertex_set_xyz_real32(
- item->vlayer->vnode->id,
- item->vlayer->id,
- item->id,
- item->value[0],
- item->value[1],
- item->value[2]);
-}
-
-/*
- * send float value (32 bits) to verse server
- */
-void send_verse_vert_real32(real32_item *item, short type)
-{
- verse_send_g_vertex_set_real32(
- item->vlayer->vnode->id,
- item->vlayer->id,
- item->id,
- item->value);
-}
-
-/*
- * send unsigned integer (32 bits) to verse server
- */
-void send_verse_vert_uint32(uint32_item *item, short type)
-{
- verse_send_g_vertex_set_uint32(
- item->vlayer->vnode->id,
- item->vlayer->id,
- item->id,
- item->value);
-}
-
-/*
- * send delete command to verse server
- */
-void send_verse_vertex_delete(VerseVert *vvert)
-{
- verse_session_set(vvert->vlayer->vnode->session->vsession);
-
- vvert->flag |= VERT_OBSOLETE;
-
- verse_send_g_vertex_delete_real32(vvert->vlayer->vnode->id, vvert->id);
-}
-
-/*
- * send VerseLayer to verse server
- */
-void send_verse_layer(VLayer *vlayer)
-{
- verse_session_set(vlayer->vnode->session->vsession);
-
- verse_send_g_layer_create(
- vlayer->vnode->id,
- vlayer->id,
- vlayer->name,
- vlayer->type,
- vlayer->def_int,
- vlayer->def_real);
-}
-
-/*
- * send VerseVert to verse server
- */
-void send_verse_vertex(VerseVert *vvert)
-{
- /* new vertex position will not be sent, when vertex was deleted */
- if(vvert->flag & VERT_OBSOLETE) return;
-
- verse_session_set(vvert->vlayer->vnode->session->vsession);
-
- verse_send_g_vertex_set_xyz_real32(
- vvert->vlayer->vnode->id,
- vvert->vlayer->id,
- vvert->id,
- vvert->co[0],
- vvert->co[2],
- -vvert->co[1]);
-}
-
-/*
- * send delete command to verse server
- */
-void send_verse_face_delete(VerseFace *vface)
-{
- verse_session_set(vface->vlayer->vnode->session->vsession);
-
- vface->flag |= FACE_DELETED;
-
- verse_send_g_polygon_delete(vface->vlayer->vnode->id, vface->id);
-}
-
-/*
- * send VerseFace to verse server
- */
-static void send_verse_face(VerseFace *vface)
-{
- verse_session_set(vface->vlayer->vnode->session->vsession);
-
- vface->flag |= FACE_SENT;
-
- if(vface->v3 != -1) {
- verse_send_g_polygon_set_corner_uint32(
- vface->vlayer->vnode->id,
- vface->vlayer->id,
- vface->id,
- vface->v0,
- vface->v3, /* verse use clock-wise winding */
- vface->v2,
- vface->v1); /* verse use clock-wise winding */
- }
- else {
- verse_send_g_polygon_set_corner_uint32(
- vface->vlayer->vnode->id,
- vface->vlayer->id,
- vface->id,
- vface->v0,
- vface->v2, /* verse use clock-wise winding */
- vface->v1, /* verse use clock-wise winding */
- vface->v3);
- }
-}
-
-/*
- * free VerseVert
- */
-static void free_verse_vertex(VLayer *vlayer, VerseVert *vvert)
-{
- /* free VerseVert */
- BLI_freelinkN(&(vlayer->orphans), vvert);
-}
-
-/*
- * free VerseFace (and blender face)
- */
-static void free_verse_face(VLayer *vlayer, VerseFace *vface)
-{
- /* free VerseFace */
- BLI_dlist_free_item(&(vlayer->dl), (unsigned int)vface->id);
-}
-
-/*
- * free VerseLayer data
- */
-static void free_verse_layer_data(VNode *vnode, VLayer *vlayer)
-{
- struct VerseFace *vface;
- struct VerseVert *vvert;
-
- /* set up EditVert->vvert and EditFace->vface pointers to NULL */
- switch(vlayer->content) {
- case VERTEX_LAYER:
- vvert = (VerseVert*)vlayer->dl.lb.first;
- while(vvert) {
- ((VGeomData*)vnode->data)->post_vertex_free_constraint(vvert);
- vvert = vvert->next;
- }
- break;
- case POLYGON_LAYER:
- vface = (VerseFace*)vlayer->dl.lb.first;
- while(vface) {
- ((VGeomData*)vnode->data)->post_polygon_free_constraint(vface);
- vface = vface->next;
- }
- break;
- default:
- break;
- }
- /* free Verse Layer name */
- MEM_freeN(vlayer->name);
- /* destroy VerseLayer data (vertexes, polygons, etc.) */
- BLI_dlist_destroy(&(vlayer->dl));
- /* free unsent data */
- BLI_freelistN(&(vlayer->queue));
- /* free orphans */
- BLI_freelistN(&(vlayer->orphans));
-}
-
-/*
- * free all unneeded VerseVerts waiting for deleting
- */
-static void free_unneeded_verseverts_of_verseface(VNode *vnode, VerseFace *vface)
-{
- struct VLayer *vert_vlayer;
-
- /* find layer containing vertexes */
- vert_vlayer = find_verse_layer_type((VGeomData*)vnode->data, VERTEX_LAYER);
-
- /* free all "deleted" VerseVert waiting for deleting this VerseFace */
-
- if((vface->vvert0->counter < 1) && (vface->vvert0->flag & VERT_DELETED)) {
- ((VGeomData*)vnode->data)->post_vertex_delete(vface->vvert0);
- free_verse_vertex(vert_vlayer, vface->vvert0);
- vface->vvert0 = NULL;
- }
- if((vface->vvert1->counter < 1) && (vface->vvert1->flag & VERT_DELETED)) {
- ((VGeomData*)vnode->data)->post_vertex_delete(vface->vvert1);
- free_verse_vertex(vert_vlayer, vface->vvert1);
- vface->vvert1 = NULL;
- }
- if((vface->vvert2->counter < 1) && (vface->vvert2->flag & VERT_DELETED)) {
- ((VGeomData*)vnode->data)->post_vertex_delete(vface->vvert2);
- free_verse_vertex(vert_vlayer, vface->vvert2);
- vface->vvert2 = NULL;
- }
- if((vface->vvert3) && (vface->vvert3->counter < 1) && (vface->vvert3->flag & VERT_DELETED)) {
- ((VGeomData*)vnode->data)->post_vertex_delete(vface->vvert3);
- free_verse_vertex(vert_vlayer, vface->vvert3);
- vface->vvert3 = NULL;
- }
-}
-
-/*
- * This function create VerseVert and returns pointer on this vertex
- */
-VerseVert* create_verse_vertex(
- VLayer *vlayer,
- uint32 vertex_id,
- real32 x,
- real32 y,
- real32 z)
-{
- struct VerseVert *vvert;
-
- vvert = (VerseVert*)MEM_mallocN(sizeof(VerseVert), "VerseVert");
-
- /* set up pointer on parent node */
- vvert->vlayer = vlayer;
- vvert->id = vertex_id;
- /* position */
- vvert->co[0] = x;
- vvert->co[1] = y;
- vvert->co[2] = z;
- /* normal */
- vvert->no[0] = vvert->no[1] = vvert->no[2] = 0.0;
- /* blender internals */
- vvert->flag = 0;
- vvert->counter = 0;
- vvert->vertex = NULL;
-
- /* increase layer counter of vertexes */
- vlayer->counter++;
-
- return vvert;
-}
-
-/*
- * this function creates fake VerseEdge and returns pointer at this edge
- */
-VerseEdge *create_verse_edge(uint32 v0, uint32 v1)
-{
- struct VerseEdge *vedge;
-
- vedge = (VerseEdge*)MEM_mallocN(sizeof(VerseEdge), "VerseEdge");
-
- vedge->v0 = v0;
- vedge->v1 = v1;
- vedge->counter = 0;
-
- return vedge;
-}
-
-/*
- * this function will create new VerseFace and will return pointer on such Face
- */
-VerseFace* create_verse_face(
- VLayer *vlayer,
- uint32 polygon_id,
- uint32 v0,
- uint32 v1,
- uint32 v2,
- uint32 v3)
-{
- struct VerseFace *vface;
-
- vface = (VerseFace*)MEM_mallocN(sizeof(VerseFace), "VerseFace");
-
- /* verse data */
- vface->vlayer = vlayer;
- vface->id = polygon_id;
-
- vface->vvert0 = NULL;
- vface->vvert1 = NULL;
- vface->vvert2 = NULL;
- vface->vvert3 = NULL;
-
- vface->v0 = v0;
- vface->v1 = v1;
- vface->v2 = v2;
- vface->v3 = v3;
-
- /* blender data */
- vface->face = NULL;
- vface->flag = 0;
- vface->counter = 4;
-
- /* increase layer counter of faces */
- vlayer->counter++;
-
- return vface;
-}
-
-/*
- * create and return VerseLayer
- */
-VLayer *create_verse_layer(
- VNode *vnode,
- VLayerID layer_id,
- const char *name,
- VNGLayerType type,
- uint32 def_integer,
- real64 def_real)
-{
- struct VLayer *vlayer;
-
- /* add layer to the DynamicList */
- vlayer = (VLayer*)MEM_mallocN(sizeof(VLayer), "VerseLayer");
-
- /* store all relevant info to the vlayer and set up vlayer */
- vlayer->vnode = vnode;
- vlayer->id = layer_id;
- vlayer->name = (char*)MEM_mallocN(sizeof(char)*(sizeof(name)+1),"Verse Layer name");
- strcpy(vlayer->name, name);
- vlayer->type = type;
- vlayer->def_int = def_integer;
- vlayer->def_real = def_real;
-
- if((type == VN_G_LAYER_VERTEX_XYZ) && (layer_id == 0))
- vlayer->content = VERTEX_LAYER;
- else if((type == VN_G_LAYER_POLYGON_CORNER_UINT32) && (layer_id == 1))
- vlayer->content = POLYGON_LAYER;
- else
- vlayer->content = -1;
-
- /* initialize DynamicList in the vlayer (vertexes, polygons, etc.)*/
- BLI_dlist_init(&(vlayer->dl));
- /* initialization of queue of layer */
- vlayer->queue.first = vlayer->queue.last = NULL;
- /* initialization of list of orphans */
- vlayer->orphans.first = vlayer->orphans.last = NULL;
- /* initialize number of sent items (vertexes, faces, etc) */
- vlayer->counter = 0;
- /* initialize flag */
- vlayer->flag = 0;
-
- /* set up methods */
- //XXX vlayer->post_layer_create = post_layer_create;
- //XXX vlayer->post_layer_destroy = post_layer_destroy;
-
- return vlayer;
-}
-
-/*
- * create geometry data
- */
-VGeomData *create_geometry_data(void)
-{
- struct VGeomData *geom;
-
- geom = (VGeomData*)MEM_mallocN(sizeof(VGeomData), "VerseGeometryData");
- BLI_dlist_init(&(geom->layers));
- geom->vlink = NULL;
- geom->queue.first = geom->queue.last = NULL;
- geom->mesh = NULL;
- geom->editmesh = NULL;
-
- /* initialize list of fake verse edges and initialize verse edge hash */
- geom->edges.first = geom->edges.last = NULL;
- geom->hash = MEM_callocN(VEDHASHSIZE*sizeof(HashVerseEdge), "verse hashedge tab");
-
- /* set up methods */
- //XXX geom->post_vertex_create = post_vertex_create;
- //XXX geom->post_vertex_set_xyz = post_vertex_set_xyz;
- //XXX geom->post_vertex_delete = post_vertex_delete;
- //XXX geom->post_vertex_free_constraint = post_vertex_free_constraint;
- //XXX geom->post_polygon_create = post_polygon_create;
- //XXX geom->post_polygon_set_corner = post_polygon_set_corner;
- //XXX geom->post_polygon_delete = post_polygon_delete;
- //XXX geom->post_polygon_free_constraint = post_polygon_free_constraint;
- //XXX geom->post_geometry_free_constraint = post_geometry_free_constraint;
- //XXX geom->post_polygon_set_uint8 = post_polygon_set_uint8;
-
- return geom;
-}
-
-/* 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 quat_real32_item *item;
-
- item = (quat_real32_item*)MEM_mallocN(sizeof(quat_real32_item), "quat_real32_item");
-
- item->vlayer = vlayer;
- item->id = item_id;
- item->value[0] = v0;
- item->value[1] = v1;
- item->value[2] = v2;
- item->value[3] = v3;
-
- return item;
-}
-
-/* Create item containing 1 float */
-static real32_item *create_real32_item(VLayer *vlayer, uint32 item_id, real32 value)
-{
- struct real32_item *item;
-
- item = (real32_item*)MEM_mallocN(sizeof(real32_item), "real32_item");
-
- item->vlayer = vlayer;
- item->id = item_id;
- item->value = value;
-
- return item;
-}
-
-/* Create item containing 1 integer */
-static uint32_item *create_uint32_item(VLayer *vlayer, uint32 item_id, uint32 value)
-{
- struct uint32_item *item;
-
- item = (uint32_item*)MEM_mallocN(sizeof(uint32_item), "uint32_item");
-
- item->vlayer = vlayer;
- item->id = item_id;
- item->value = value;
-
- return item;
-}
-
-/* Create item containing 1 byte */
-static uint8_item *create_uint8_item(VLayer *vlayer, uint32 item_id, uint8 value)
-{
- struct uint8_item *item;
-
- item = (uint8_item*)MEM_mallocN(sizeof(uint8_item), "uint8_item");
-
- item->vlayer = vlayer;
- item->id = item_id;
- item->value = value;
-
- return item;
-}
-
-/*
- * 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)
-{
-}
-
-/*
- * we have to test corretness of incoming data from verse server
- * no two vertexes can have the same index
- */
-static char test_polygon_set_corner_uint32(
- uint32 v0,
- uint32 v1,
- uint32 v2,
- uint32 v3)
-{
- if((v0==v1) || (v0==v2) || (v0==v3) || (v1==v2) || (v1==v3) || (v2==v3))
- return 0;
- else
- return 1;
-}
-
-/*
- * try to find verse layer in sending queue of verse geometry node
- */
-static VLayer *find_vlayer_in_sending_queue(VNode *vnode, VLayerID layer_id)
-{
- struct VLayer *vlayer;
-
- /* try to find verse layyer in sending queue */
- vlayer = ((VGeomData*)vnode->data)->queue.first;
- while(vlayer) {
- if(vlayer->id==layer_id) return vlayer;
- vlayer = vlayer->next;
- }
-
- return NULL;
-}
-
-/*
- * this function will find edge in hash table, hash function isn't too optimal (it needs
- * lot of memory for every verse node), but it works without any bug
- */
-static VerseEdge* find_verse_edge(VNode *vnode, uint32 v0, uint32 v1)
-{
- struct HashVerseEdge *hve;
-
- if(((VGeomData*)vnode->data)->hash==NULL)
- ((VGeomData*)vnode->data)->hash = MEM_callocN(VEDHASHSIZE*sizeof(HashVerseEdge), "verse hashedge tab");
-
- hve = ((VGeomData*)vnode->data)->hash + VEDHASH(v0, v1);;
- while(hve) {
- /* edge v0---v1 is the same edge as v1---v0 */
- if(hve->vedge && ((hve->vedge->v0==v0 && hve->vedge->v1==v1) || (hve->vedge->v0==v1 && hve->vedge->v1==v0))) return hve->vedge;
- hve = hve->next;
- }
-
- return NULL;
-}
-
-/*
- * insert hash of verse edge to hash table
- */
-static void insert_verse_edgehash(VNode *vnode, VerseEdge *vedge)
-{
- struct HashVerseEdge *first, *hve;
-
- if(((VGeomData*)vnode->data)->hash==NULL)
- ((VGeomData*)vnode->data)->hash = MEM_callocN(VEDHASHSIZE*sizeof(HashVerseEdge), "verse hashedge tab");
-
- first = ((VGeomData*)vnode->data)->hash + VEDHASH(vedge->v0, vedge->v1);
-
- if(first->vedge==NULL) {
- first->vedge = vedge;
- }
- else {
- hve = &(vedge->hash);
- hve->vedge = vedge;
- hve->next = first->next;
- first->next = hve;
- }
-}
-
-/*
- * remove hash of verse edge from hash table
- */
-static void remove_verse_edgehash(VNode *vnode, VerseEdge *vedge)
-{
- struct HashVerseEdge *first, *hve, *prev;
-
- hve = first = ((VGeomData*)vnode->data)->hash + VEDHASH(vedge->v0, vedge->v1);
-
- while(hve) {
- if(hve->vedge == vedge) {
- if(hve==first) {
- if(first->next) {
- hve = first->next;
- first->vedge = hve->vedge;
- first->next = hve->next;
- }
- else {
- hve->vedge = NULL;
- }
- }
- else {
- prev->next = hve->next;
- }
- return;
- }
- prev = hve;
- hve = hve->next;
- }
-}
-
-/*
- * this function will try to remove existing fake verse edge, when this verse
- * edge is still used by some faces, then counter will be only decremented
- */
-static void remove_verse_edge(VNode *vnode, uint32 v0, uint32 v1)
-{
- struct VerseEdge *vedge;
-
- vedge = find_verse_edge(vnode, v0, v1);
- if(vedge) {
- vedge->counter--;
- if(vedge->counter==0) {
- remove_verse_edgehash(vnode, vedge);
- BLI_freelinkN(&(((VGeomData*)vnode->data)->edges), vedge);
- }
- }
- else {
- printf("error: remove_verse_edge %d, %d\n", v0, v1);
- }
-}
-
-/*
- * this function will try to add new fake verse edge, when no such edge exist,
- * when such edge exist, then only counter of edge will be incremented
- */
-static void add_verse_edge(VNode *vnode, uint32 v0, uint32 v1)
-{
- struct VerseEdge *vedge;
-
- vedge = find_verse_edge(vnode, v0, v1);
- if(!vedge) {
- if(v0!=v1) {
- vedge = create_verse_edge(v0, v1);
- BLI_addtail(&(((VGeomData*)vnode->data)->edges), vedge);
- insert_verse_edgehash(vnode, vedge);
- }
- else {
- printf("error:add_verse_edge: %d, %d\n", v0, v1);
- return;
- }
- }
- vedge->counter++;
-}
-
-/*
- * verse face was deleted ... update edge hash
- */
-static void update_edgehash_of_deleted_verseface(VNode *vnode, VerseFace *vface)
-{
- uint32 v0, v1, v2, v3; /* verse vertex indexes of deleted verse face */
-
- v0 = vface->vvert0->id;
- v1 = vface->vvert1->id;
- v2 = vface->vvert2->id;
- v3 = vface->vvert3 ? vface->vvert3->id : -1;
-
- remove_verse_edge(vnode, v0, v1);
- remove_verse_edge(vnode, v1, v2);
- if(v3!=-1) {
- remove_verse_edge(vnode, v2, v3);
- remove_verse_edge(vnode, v3, v0);
- }
- else {
- remove_verse_edge(vnode, v2, v0);
- }
-}
-
-/*
- * existing verse face was changed ... update edge hash
- */
-static void update_edgehash_of_changed_verseface(
- VNode *vnode,
- VerseFace *vface,
- uint32 v0,
- uint32 v1,
- uint32 v2,
- uint32 v3)
-{
- uint32 ov0, ov1, ov2, ov3; /* old indexes at verse vertexes*/
-
- ov0 = vface->vvert0->id;
- ov1 = vface->vvert1->id;
- ov2 = vface->vvert2->id;
- ov3 = vface->vvert3 ? vface->vvert3->id : -1;
-
- /* 1st edge */
- if(v0!=ov0 || v1!=ov1) {
- remove_verse_edge(vnode, ov0, ov1);
- add_verse_edge(vnode, v0, v1);
- }
-
- /* 2nd edge */
- if(v1!=ov1 || v2!=ov2) {
- remove_verse_edge(vnode, ov1, ov2);
- add_verse_edge(vnode, v1, v2);
- }
-
- /* 3rd edge */
- if(v2!=ov2 || v3!=ov3 || v0!=ov0) {
- if(ov3!=-1) {
- remove_verse_edge(vnode, ov2, ov3);
- if(v3!=-1) {
- add_verse_edge(vnode, v2, v3); /* new 3rd edge (quat->quat) */
- }
- else {
- remove_verse_edge(vnode, ov3, ov0); /* old edge v3,v0 of quat have to be removed */
- add_verse_edge(vnode, v2, v0); /* new 3rd edge (quat->triangle) */
- }
- }
- else {
- remove_verse_edge(vnode, ov2, ov0);
- if(v3!=-1) {
- add_verse_edge(vnode, v2, v3); /* new 3rd edge (triangle->quat) */
- }
- else {
- add_verse_edge(vnode, v2, v0); /* new 3rd edge (triangle->triangle) */
- }
- }
- }
-
- /* 4th edge */
- if(v3!=-1 && (v3!=ov3 || v0!=ov0)) {
- remove_verse_edge(vnode, ov3, ov0);
- add_verse_edge(vnode, v3, v0);
- }
-}
-
-/*
- * new verse face was created ... update list of edges and edge has
- */
-static void update_edgehash_of_new_verseface(
- VNode *vnode,
- uint32 v0,
- uint32 v1,
- uint32 v2,
- uint32 v3)
-{
- /* when edge already exists, then only its counter is incremented,
- * look at commentary of add_verse_edge() function */
- add_verse_edge(vnode, v0, v1);
- add_verse_edge(vnode, v1, v2);
- if(v3!=-1) {
- add_verse_edge(vnode, v2, v3);
- add_verse_edge(vnode, v3, v0);
- }
- else {
- add_verse_edge(vnode, v2, v0);
- }
-}
-
-/*
- * 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)
-{
-}
-
-/*
- * callback function: float value for polygon was set up
- */
-static void cb_g_polygon_set_face_real32(
- void *user_def,
- VNodeID node_id,
- VLayerID layer_id,
- uint32 polygon_id,
- real32 value)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VLayer *vlayer;
- struct real32_item *item;
-
- if(!session) return;
-
- /* find needed node (we can be sure, that it is geometry node) */
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- /* find layer containing uint_8 data */
- vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), (unsigned int)layer_id);
-
- /* try to find item*/
- item = BLI_dlist_find_link(&(vlayer->dl), polygon_id);
-
- if(item) {
- item->value = value;
- }
- else {
- item = create_real32_item(vlayer, polygon_id, value);
- BLI_dlist_add_item_index(&(vlayer->dl), item, item->id);
- }
-}
-
-/*
- * callback function: int values for polygon was set up
- */
-static void cb_g_polygon_set_face_uint32(
- void *user_def,
- VNodeID node_id,
- VLayerID layer_id,
- uint32 polygon_id,
- uint32 value)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VLayer *vlayer;
- struct uint32_item *item;
-
- if(!session) return;
-
- /* find needed node (we can be sure, that it is geometry node) */
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- /* find layer containing uint_8 data */
- vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), (unsigned int)layer_id);
-
- /* try to find item*/
- item = BLI_dlist_find_link(&(vlayer->dl), polygon_id);
-
- if(item) {
- item->value = value;
- }
- else {
- item = create_uint32_item(vlayer, polygon_id, value);
- BLI_dlist_add_item_index(&(vlayer->dl), item, item->id);
- }
-}
-
-/*
- * callback function: uint8 value for polygon was set up
- */
-static void cb_g_polygon_set_face_uint8(
- void *user_def,
- VNodeID node_id,
- VLayerID layer_id,
- uint32 polygon_id,
- uint8 value)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VLayer *vlayer;
- struct uint8_item *item;
-
- if(!session) return;
-
- /* find needed node (we can be sure, that it is geometry node) */
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- /* find layer containing uint_8 data */
- vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), (unsigned int)layer_id);
-
- /* try to find item*/
- item = BLI_dlist_find_link(&(vlayer->dl), polygon_id);
-
- if(item) {
- item->value = value;
- }
- else {
- item = create_uint8_item(vlayer, polygon_id, value);
- BLI_dlist_add_item_index(&(vlayer->dl), item, item->id);
- }
-}
-
-/*
- * callback function: float value for polygon corner was set up
- */
-static void cb_g_polygon_set_corner_real32(
- void *user_def,
- VNodeID node_id,
- VLayerID layer_id,
- uint32 polygon_id,
- real32 v0,
- real32 v1,
- real32 v2,
- real32 v3)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VLayer *vlayer;
- struct quat_real32_item *item;
-
- if(!session) return;
-
- /* find needed node (we can be sure, that it is geometry node) */
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- /* find layer containing uint_8 data */
- vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), (unsigned int)layer_id);
-
- /* try to find item*/
- item = BLI_dlist_find_link(&(vlayer->dl), polygon_id);
-
- if(item) {
- item->value[0] = v0;
- item->value[1] = v1;
- item->value[2] = v2;
- item->value[3] = v3;
- }
- else {
- item = create_quat_real32_item(vlayer, polygon_id, v0, v1, v2, v3);
- BLI_dlist_add_item_index(&(vlayer->dl), item, item->id);
- }
-}
-
-/*
- * callback function: polygon is deleted
- */
-static void cb_g_polygon_delete(
- void *user_data,
- VNodeID node_id,
- uint32 polygon_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- VNode *vnode;
- VLayer *vlayer;
- VerseFace *vface;
-
- if(!session) return;
-
- /* find needed node (we can be sure, that it is geometry node) */
- vnode = BLI_dlist_find_link(&(session->nodes), node_id);
-
- /* find layer containing faces */
- vlayer = find_verse_layer_type((VGeomData*)vnode->data, POLYGON_LAYER);
-
- /* find wanted VerseFace */
- vface = BLI_dlist_find_link(&(vlayer->dl), polygon_id);
-
- if(!vface) return;
-
- /* update edge hash */
- update_edgehash_of_deleted_verseface(vnode, vface);
-
- ((VGeomData*)vnode->data)->post_polygon_delete(vface);
-
- /* decrease references at coresponding VerseVertexes */
- vface->vvert0->counter--;
- vface->vvert1->counter--;
- vface->vvert2->counter--;
- if(vface->vvert3) vface->vvert3->counter--;
-
- /* delete unneeded VerseVertexes */
- free_unneeded_verseverts_of_verseface(vnode, vface);
-
- free_verse_face(vlayer, vface);
-}
-
-/*
- * callback function: new polygon (face) created or existing polygon was changed
- */
-static void cb_g_polygon_set_corner_uint32(
- void *user_data,
- VNodeID node_id,
- VLayerID layer_id,
- uint32 polygon_id,
- uint32 v0,
- uint32 v1,
- uint32 v2,
- uint32 v3)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VLayer *vlayer;
- struct VerseFace *vface=NULL;
-
- if(!session) return;
-
- /* try to find VerseNode */
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode) return;
-
- /* try to find VerseLayer */
- vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), (unsigned int)layer_id);
- if(!vlayer) return;
-
- /* we have to test coretness of incoming data */
- if(!test_polygon_set_corner_uint32(v0, v1, v2, v3)) return;
-
- /* Blender uses different order of vertexes */
- if(v3!=-1) { /* quat swap */
- unsigned int v; v = v1; v1 = v3; v3 = v;
- }
- else { /* triangle swap */
- unsigned int v; v = v1; v1 = v2; v2 = v;
- }
-
- /* try to find VerseFace */
- vface = (VerseFace*)BLI_dlist_find_link(&(vlayer->dl), (unsigned int)polygon_id);
-
- /* try to find modified VerseFace */
- if(!vface) {
- vface = find_changed_verse_face_in_queue(vlayer, polygon_id);
- if(vface) {
- BLI_remlink(&(vlayer->queue), (void*)vface);
- BLI_dlist_add_item_index(&(vlayer->dl), (void*)vface, (unsigned int)polygon_id);
- }
- }
-
- if(!vface) {
- /* try to find VerseFace in list of VerseVaces created by me and set up polygon and
- * layer ids */
- vface = find_verse_face_in_queue(vlayer, node_id, polygon_id, v0, v1, v2, v3);
-
- /* update edge hash */
- update_edgehash_of_new_verseface(vnode, v0, v1, v2, v3);
-
- if(vface){
- /* I creeated this face ... remove VerseFace from queue */
- BLI_remlink(&(vlayer->queue), (void*)vface);
- }
- else {
- /* some other client created this face*/
- vface = create_verse_face(vlayer, polygon_id, v0, v1, v2, v3);
- }
-
- vface->flag &= ~FACE_SENT;
-
- /* return number of missing verse vertexes */
- vface->counter = test_incoming_verseface((VGeomData*)vnode->data, vface);
-
- if(vface->counter < 1) {
- /* when VerseFace received all needed VerseFaces, then it is moved
- * to list of VerseFaces */
- BLI_dlist_add_item_index(&(vlayer->dl), (void*)vface, (unsigned int)polygon_id);
- increase_verse_verts_references(vface);
- recalculate_verseface_normals(vnode);
- ((VGeomData*)vnode->data)->post_polygon_create(vface);
- }
- else {
- /* when all needed VerseVertexes weren't received, then VerseFace is moved to
- * the list of orphans waiting on needed vertexes */
- vface->flag |= FACE_RECEIVED;
- BLI_addtail(&(vlayer->orphans), (void*)vface);
- }
- }
- else {
- VLayer *vert_vlayer = find_verse_layer_type((VGeomData*)vnode->data, VERTEX_LAYER);
- /* VerseVertexes of existing VerseFace were changed (VerseFace will use some different
- * VerseVertexes or it will use them in different order) */
-
- /* update fake verse edges */
- update_edgehash_of_changed_verseface(vnode, vface, v0, v1, v2, v3);
-
- /* initialize count of unreceived vertexes needed for this face */
- vface->counter = 4;
-
- /* 1st corner */
- if(vface->vvert0->id != v0) {
- /* decrease references of obsolete vertexes*/
- vface->vvert0->counter--;
- /* delete this vertex, when it isn't used by any face and it was marked as deleted */
- if((vface->vvert0->counter < 1) && (vface->vvert0->flag & VERT_DELETED)) {
- ((VGeomData*)vnode->data)->post_vertex_delete(vface->vvert0);
- free_verse_vertex(vert_vlayer, vface->vvert0);
- }
- /* try to set up new pointer at verse vertex */
- vface->v0 = v0;
- vface->vvert0 = BLI_dlist_find_link(&(vert_vlayer->dl), vface->v0);
- if(vface->vvert0) {
- /* increase references at new vertex */
- vface->vvert0->counter++;
- /* decrease count of needed vertex to receive */
- vface->counter--;
- }
-
- }
- else
- /* this corner wasn't changed */
- vface->counter--;
-
- /* 2nd corner */
- if(vface->vvert1->id != v1) {
- vface->vvert1->counter--;
- if((vface->vvert1->counter < 1) && (vface->vvert1->flag & VERT_DELETED)) {
- ((VGeomData*)vnode->data)->post_vertex_delete(vface->vvert1);
- free_verse_vertex(vert_vlayer, vface->vvert1);
- }
- vface->v1 = v1;
- vface->vvert1 = BLI_dlist_find_link(&(vert_vlayer->dl), vface->v1);
- if(vface->vvert1) {
- vface->vvert1->counter++;
- vface->counter--;
- }
- }
- else
- vface->counter--;
-
- /* 3rd corner */
- if(vface->vvert2->id != v2) {
- vface->vvert2->counter--;
- if((vface->vvert2->counter < 1) && (vface->vvert2->flag & VERT_DELETED)) {
- ((VGeomData*)vnode->data)->post_vertex_delete(vface->vvert2);
- free_verse_vertex(vert_vlayer, vface->vvert2);
- }
- vface->v2 = v2;
- vface->vvert2 = BLI_dlist_find_link(&(vert_vlayer->dl), vface->v2);
- if(vface->vvert2) {
- vface->vvert2->counter++;
- vface->counter--;
- }
- }
- else
- vface->counter--;
-
- /* 4th corner */
- if(vface->vvert3) {
- if(vface->vvert3->id != v3) {
- vface->vvert3->counter--;
- if((vface->vvert3->counter < 1) && (vface->vvert3->flag & VERT_DELETED)) {
- ((VGeomData*)vnode->data)->post_vertex_delete(vface->vvert3);
- free_verse_vertex(vert_vlayer, vface->vvert3);
- }
- vface->v3 = v3;
- if(v3 != -1) {
- vface->vvert3 = BLI_dlist_find_link(&(vert_vlayer->dl), vface->v3);
- if(vface->vvert3) {
- vface->vvert3->counter++;
- vface->counter--;
- }
- }
- else {
- /* this is some special case, this face hase now only 3 corners
- * quat -> triangle */
- vface->vvert3 = NULL;
- vface->counter--;
- }
- }
- }
- else if(v3 != -1)
- /* this is some special case, 4th corner of this polygon was created
- * triangle -> quat */
- vface->v3 = v3;
- vface->vvert3 = BLI_dlist_find_link(&(vert_vlayer->dl), vface->v3);
- if(vface->vvert3) {
- vface->vvert3->counter++;
- vface->counter--;
- }
- else {
- vface->v3 = -1;
- vface->counter--;
- }
-
- vface->flag &= ~FACE_SENT;
- vface->flag |= FACE_CHANGED;
-
- if(vface->counter<1) {
- vface->flag &= ~FACE_CHANGED;
- recalculate_verseface_normals(vnode);
- ((VGeomData*)vnode->data)->post_polygon_set_corner(vface);
- }
- else {
- /* when all needed VerseVertexes weren't received, then VerseFace is added to
- * the list of orphans waiting on needed vertexes */
- BLI_dlist_rem_item(&(vlayer->dl), vface->id);
- BLI_addtail(&(vlayer->orphans), (void*)vface);
- }
- }
-}
-
-/*
- * callback function: float value was set up for VerseVert with vertex_id
- */
-static void cb_g_vertex_set_real32(
- void *user_def,
- VNodeID node_id,
- VLayerID layer_id,
- uint32 vertex_id,
- real32 value)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VLayer *vlayer;
- struct real32_item *item;
-
- if(!session) return;
-
- /* find needed node (we can be sure, that it is geometry node) */
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- /* find layer containing uint_8 data */
- vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), (unsigned int)layer_id);
-
- /* try to find item*/
- item = BLI_dlist_find_link(&(vlayer->dl), vertex_id);
-
- if(item) {
- item->value = value;
- }
- else {
- item = create_real32_item(vlayer, vertex_id, value);
- BLI_dlist_add_item_index(&(vlayer->dl), item, item->id);
- }
-}
-
-/*
- * callback function: int value was set up for VerseVert with vertex_id
- */
-static void cb_g_vertex_set_uint32(
- void *user_def,
- VNodeID node_id,
- VLayerID layer_id,
- uint32 vertex_id,
- uint32 value)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VLayer *vlayer;
- struct uint32_item *item;
-
- if(!session) return;
-
- /* find needed node (we can be sure, that it is geometry node) */
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- /* find layer containing uint_8 data */
- vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), (unsigned int)layer_id);
-
- /* try to find item*/
- item = BLI_dlist_find_link(&(vlayer->dl), vertex_id);
-
- if(item) {
- item->value = value;
- }
- else {
- item = create_uint32_item(vlayer, vertex_id, value);
- BLI_dlist_add_item_index(&(vlayer->dl), item, item->id);
- }
-}
-
-/*
- * callback function: polygon was deleted
- */
-static void cb_g_vertex_delete_real32(
- void *user_data,
- VNodeID node_id,
- uint32 vertex_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- VNode *vnode=NULL;
- VLayer *vert_vlayer=NULL;
- VerseVert *vvert=NULL;
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- vert_vlayer = find_verse_layer_type((VGeomData*)vnode->data, VERTEX_LAYER);
-
- vvert = BLI_dlist_find_link(&(vert_vlayer->dl), (unsigned int)vertex_id);
-
- if(!vvert) return;
-
- if(vvert->counter < 1) {
- ((VGeomData*)vnode->data)->post_vertex_delete(vvert);
- BLI_dlist_free_item(&(vert_vlayer->dl), (unsigned int)vertex_id);
- }
- else {
- /* some VerseFace(s) still need VerseVert, remove verse vert from
- * list verse vertexes and put it to list of orphans */
- vvert->flag |= VERT_DELETED;
- BLI_dlist_rem_item(&(vert_vlayer->dl), (unsigned int)vertex_id);
- BLI_addtail(&(vert_vlayer->orphans), vvert);
- }
-}
-
-/*
- * callback function: position of one vertex was changed or new vertex was created
- */
-static void cb_g_vertex_set_xyz_real32(
- void *user_data,
- VNodeID node_id,
- VLayerID layer_id,
- uint32 vertex_id,
- real32 x,
- real32 y,
- real32 z)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode = NULL;
- struct VLayer *vlayer = NULL;
- struct VerseVert *vvert = NULL;
- real32 tmp;
-
- if(!session) return;
-
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode)return;
-
- vlayer = (VLayer*)BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), (unsigned int)layer_id);
- if(!vlayer) return;
-
- /* switch axis orientation */
- tmp = y;
- y = -z;
- z = tmp;
-
- if(vlayer->id == 0) {
- /* try to pick up verse vert from DynamicList */
- vvert = (VerseVert*)BLI_dlist_find_link(&(vlayer->dl), (unsigned int)vertex_id);
-
- if(vvert) {
- if(vvert->flag & VERT_OBSOLETE) return;
-
- if (vvert->flag & VERT_LOCKED) {
- /* this application changed position of this vertex */
- if((vvert->co[0]==x) && (vvert->co[1]==y) && (vvert->co[2]==z)) {
- /* unlock vertex position */
- vvert->flag &= ~VERT_LOCKED;
- /* call post_vertex_set_xyz only, when position of vertex is
- * obsolete ... the new vertex position will be sent to
- * verse server */
- if (vvert->flag & VERT_POS_OBSOLETE) {
- ((VGeomData*)vnode->data)->post_vertex_set_xyz(vvert);
- }
- }
- }
- else {
- /* somebody else changed position of this vertex*/
- if((vvert->co[0]!=x) || (vvert->co[1]!=y) || (vvert->co[2]!=z)) {
- vvert->co[0] = x;
- vvert->co[1] = y;
- vvert->co[2] = z;
- recalculate_verseface_normals(vnode);
- ((VGeomData*)vnode->data)->post_vertex_set_xyz(vvert);
- }
- }
- }
- else {
- /* create new verse vert */
-
- /* test if we are authors of this vertex :-) */
- vvert = find_verse_vert_in_queue(vlayer, node_id, vertex_id, x, y, z);
-
- if(vvert) {
- /* remove vert from queue */
- BLI_remlink(&(vlayer->queue), (void*)vvert);
- /* add vvert to the dynamic list */
- BLI_dlist_add_item_index(&(vlayer->dl), (void*)vvert, (unsigned int)vertex_id);
- /* set VerseVert flags */
- vvert->flag |= VERT_RECEIVED;
- if(!(vvert->flag & VERT_POS_OBSOLETE))
- vvert->flag &= ~VERT_LOCKED;
- /* find VerseFaces orphans */
- find_vlayer_orphans(vnode, vvert);
- /* find unsent VerseFaces */
- find_unsent_faces(vnode, vvert);
- }
- else {
- /* create new VerseVert */
- vvert = create_verse_vertex(vlayer, vertex_id, x, y, z);
- /* add VerseVert to list of VerseVerts */
- BLI_dlist_add_item_index(&(vlayer->dl), (void*)vvert, (unsigned int)vertex_id);
- /* set VerseVert flags */
- vvert->flag |= VERT_RECEIVED;
- /* find VerseFaces orphans */
- find_vlayer_orphans(vnode, vvert);
- }
-
- ((VGeomData*)vnode->data)->post_vertex_create(vvert);
- }
- }
-}
-
-/*
- * callback function for destroyng of verse layer
- */
-static void cb_g_layer_destroy(
- void *user_data,
- VNodeID node_id,
- VLayerID layer_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VLayer *vlayer;
-
- if(!session) return;
-
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), node_id);
- if(!vnode) return;
-
- vlayer = (VLayer*) BLI_dlist_find_link(&(((VGeomData*)vnode->data)->layers), layer_id);
-
- if(vlayer){
- /* free VerseLayer data */
- free_verse_layer_data(vnode, vlayer);
- /* remove VerseLayer from list of verse layers */
- BLI_dlist_rem_item(&(((VGeomData*)vnode->data)->layers), layer_id);
- /* do client dependent actions */
- vlayer->post_layer_destroy(vlayer);
- /* free vlayer itself */
- MEM_freeN(vlayer);
- }
-
-}
-
-/*
- * callback function: new layer was created
- */
-static void cb_g_layer_create(
- void *user_data,
- VNodeID node_id,
- VLayerID layer_id,
- const char *name,
- VNGLayerType type,
- uint32 def_integer,
- real64 def_real)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode=NULL;
- struct VLayer *vlayer=NULL;
-
- if(!session) return;
-
- /* find node of this layer*/
- vnode = BLI_dlist_find_link(&(session->nodes), node_id);
- if(!vnode) return;
-
- /* when we created this layer, then subscribe to this layer */
- if(vnode->owner_id == VN_OWNER_MINE || session->flag & VERSE_AUTOSUBSCRIBE)
- verse_send_g_layer_subscribe(node_id, layer_id, 0);
-
- /* try to find */
- if(vnode->owner_id == VN_OWNER_MINE)
- vlayer = find_vlayer_in_sending_queue(vnode, layer_id);
-
- if(vlayer) {
- /* remove vlayer form sending queue add verse layer to list of verse layers */
- BLI_remlink(&((VGeomData*)vnode->data)->queue, vlayer);
- BLI_dlist_add_item_index(&((VGeomData*)vnode->data)->layers, (void*)vlayer, (unsigned int)vlayer->id);
- /* send all not sent vertexes to verse server
- * other items waiting in sending queue will be automaticaly sent to verse server,
- * when verse vertexes will be received from verse server */
- if((vlayer->type == VN_G_LAYER_VERTEX_XYZ) && (layer_id==0)) {
- struct VerseVert *vvert = (VerseVert*)vlayer->queue.first;
- while(vvert) {
- send_verse_vertex(vvert);
- vvert = vvert->next;
- }
- }
- }
- else {
- /* create new VerseLayer */
- vlayer = create_verse_layer(vnode, layer_id, name, type, def_integer, def_real);
- /* add layer to the list of VerseLayers */
- BLI_dlist_add_item_index(&(((VGeomData*)vnode->data)->layers), (void*)vlayer, (unsigned int)layer_id);
- }
-
- vlayer->flag |= LAYER_RECEIVED;
-
- /* post callback function */
- vlayer->post_layer_create(vlayer);
-}
-
-/*
- * this function will send destroy commands for all VerseVertexes and
- * VerseFaces to verse server, but it will not send destroy commands
- * for VerseLayers or geometry node, it can be used in other functions
- * (undo, destroy geom node, some edit mesh commands, ... ), parameter of
- * this function has to be geometry verse node
- */
-void destroy_geometry(VNode *vnode)
-{
- struct VLayer *vert_vlayer, *face_vlayer;
- struct VerseFace *vface;
- struct VerseVert *vvert;
-
- if(vnode->type != V_NT_GEOMETRY) return;
-
- face_vlayer = find_verse_layer_type((VGeomData*)vnode->data, POLYGON_LAYER);
- vface = face_vlayer->dl.lb.first;
-
- while(vface) {
- send_verse_face_delete(vface);
- vface = vface->next;
- }
-
- vert_vlayer = find_verse_layer_type((VGeomData*)vnode->data, VERTEX_LAYER);
- vvert = vert_vlayer->dl.lb.first;
-
- while(vvert) {
- send_verse_vertex_delete(vvert);
- vvert = vvert->next;
- }
-
- /* own destruction of local verse date will be executed, when client will
- * receive apropriate callback commands from verse server */
-}
-
-/*
- * free VGeomData
- */
-void free_geom_data(VNode *vnode)
-{
- struct VerseSession *session = vnode->session;
- struct VLayer *vlayer;
-
- if(vnode->data){
- vlayer = (VLayer*)((VGeomData*)vnode->data)->layers.lb.first;
- while(vlayer){
- /* unsubscribe from layer */
- if(session->flag & VERSE_CONNECTED)
- verse_send_g_layer_unsubscribe(vnode->id, vlayer->id);
- /* free VerseLayer data */
- free_verse_layer_data(vnode, vlayer);
- /* next layer */
- vlayer = vlayer->next;
- }
- /* free constraint between vnode and mesh */
- ((VGeomData*)vnode->data)->post_geometry_free_constraint(vnode);
- /* free all VerseLayers */
- BLI_dlist_destroy(&(((VGeomData*)vnode->data)->layers));
- /* free fake verse edges */
- BLI_freelistN(&((VGeomData*)vnode->data)->edges);
- /* free edge hash */
- MEM_freeN(((VGeomData*)vnode->data)->hash);
- }
-}
-
-void set_geometry_callbacks(void)
-{
- /* new layer created */
- verse_callback_set(verse_send_g_layer_create, cb_g_layer_create, NULL);
- /* layer was destroyed */
- verse_callback_set(verse_send_g_layer_destroy, cb_g_layer_destroy, NULL);
-
- /* position of vertex was changed */
- verse_callback_set(verse_send_g_vertex_set_xyz_real32, cb_g_vertex_set_xyz_real32, NULL);
- /* vertex was deleted */
- verse_callback_set(verse_send_g_vertex_delete_real32, cb_g_vertex_delete_real32, NULL);
-
- /* callback functions for values being associated with vertexes */
- verse_callback_set(verse_send_g_vertex_set_uint32, cb_g_vertex_set_uint32, NULL);
- verse_callback_set(verse_send_g_vertex_set_real32, cb_g_vertex_set_real32, NULL);
-
- /* new polygon was created / vertex(es) of polygon was set */
- verse_callback_set(verse_send_g_polygon_set_corner_uint32, cb_g_polygon_set_corner_uint32, NULL);
- /* polygon was deleted */
- verse_callback_set(verse_send_g_polygon_delete, cb_g_polygon_delete, NULL);
-
- /* callback functions for values being associated with polygon corners */
- verse_callback_set(verse_send_g_polygon_set_corner_real32, cb_g_polygon_set_corner_real32, NULL);
- /* callback functions for values being associated with faces */
- verse_callback_set(verse_send_g_polygon_set_face_uint8, cb_g_polygon_set_face_uint8, NULL);
- verse_callback_set(verse_send_g_polygon_set_face_uint32, cb_g_polygon_set_face_uint32, NULL);
- verse_callback_set(verse_send_g_polygon_set_face_real32, cb_g_polygon_set_face_real32, NULL);
-
- /* crease of vertex was set */
- verse_callback_set(verse_send_g_crease_set_vertex, cb_g_crease_set_vertex, NULL);
- /* crease of edge was set */
- verse_callback_set(verse_send_g_crease_set_edge, cb_g_crease_set_edge, NULL);
-}
-
-#endif
diff --git a/source/blender/blenkernel/intern/verse_method.c b/source/blender/blenkernel/intern/verse_method.c
deleted file mode 100644
index b95b302f6c6..00000000000
--- a/source/blender/blenkernel/intern/verse_method.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Contributor(s): Nathan Letwory.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifdef WITH_VERSE
-
-#include <string.h>
-
-#include "MEM_guardedalloc.h"
-
-#include "DNA_listBase.h"
-#include "DNA_userdef_types.h"
-#include "DNA_text_types.h"
-
-#include "BLI_dynamiclist.h"
-#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
-
-//XXX #include "BIF_verse.h"
-
-#include "BKE_library.h"
-#include "BKE_text.h"
-#include "BKE_verse.h"
-#include "BKE_global.h"
-#include "BKE_main.h"
-
-#include "verse.h"
-
-/* helper struct for creating method descriptions */
-typedef struct VMethodInfo {
- const char *name;
- uint8 param_count;
- const VNOParamType param_type[4];
- const char *param_name[4];
- uint16 id;
-} VMethodInfo;
-
-#ifdef VERSECHAT
-/* array with methods for verse chat */
-static VMethodInfo vmethod_info[] = {
- { "join", 1, { VN_O_METHOD_PTYPE_STRING }, { "channel"}},
- { "leave", 1, { VN_O_METHOD_PTYPE_STRING }, { "channel"}},
- { "hear", 3, { VN_O_METHOD_PTYPE_STRING, VN_O_METHOD_PTYPE_STRING, VN_O_METHOD_PTYPE_STRING }, { "channel", "from", "msg"}}
-};
-#endif
-
-/* lookup a method group based on its name */
-struct VMethodGroup *lookup_vmethodgroup_name(ListBase *lb, const char *name) {
- struct VMethodGroup *vmg;
-
- for(vmg= lb->first; vmg; vmg= vmg->next)
- if(strcmp(vmg->name,name)==0) break;
-
- return vmg;
-}
-
-/* lookup a method group based on its group_id */
-struct VMethodGroup *lookup_vmethodgroup(ListBase *lb, uint16 group_id) {
- struct VMethodGroup *vmg;
-
- for(vmg= lb->first; vmg; vmg= vmg->next)
- if(vmg->group_id==group_id) break;
-
- return vmg;
-}
-
-/* lookup a method based on its name */
-struct VMethod *lookup_vmethod_name(ListBase *lb, const char *name) {
- struct VMethod *vm;
- for(vm= lb->first; vm; vm= vm->next)
- if(strcmp(vm->name,name)==0) break;
-
- return vm;
-}
-
-/* lookup a method based on its method_id */
-struct VMethod *lookup_vmethod(ListBase *lb, uint8 method_id) {
- struct VMethod *vm;
- for(vm= lb->first; vm; vm= vm->next)
- if(vm->id==method_id) break;
-
- return vm;
-}
-
-#ifdef VERSECHAT
-/*
- * send say command
- */
-void send_say(const char *chan, const char *utter)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VMethodGroup *vmg;
- struct VMethod *vm;
- VNOPackedParams *utterpack;
- VNOParam args[2];
-
- vnode= (VNode *)(session->nodes.lb.first);
-
- for( ; vnode; vnode= vnode->next) {
- if(strcmp(vnode->name, "tawksrv")==0) {
- vmg= lookup_vmethodgroup_name(&(vnode->methodgroups), "tawk");
- if(!vmg) break;
- vm= lookup_vmethod_name(&(vmg->methods), "say");
- if(!vm) break;
- args[0].vstring= (char *)chan;
- args[1].vstring= (char *)utter;
- if((utterpack= verse_method_call_pack(vm->param_count, vm->param_type, args))!=NULL) {
- verse_send_o_method_call(vnode->id, vmg->group_id, vm->id, vnode->session->avatar, utterpack);
- }
- break;
- }
-
- }
-}
-
-/*
- * send logout command
- */
-void send_logout(VNode *vnode)
-{
- struct VMethodGroup *vmg;
- struct VMethod *vm;
- VNOPackedParams *pack;
-
- vnode->chat_flag = CHAT_LOGGED;
- vmg= lookup_vmethodgroup_name(&(vnode->methodgroups), "tawk");
- if(!vmg) return;
- vm= lookup_vmethod_name(&(vmg->methods), "logout");
- if(!vm) return;
-
- if((pack= verse_method_call_pack(vm->param_count, vm->param_type, NULL))!=NULL) {
- verse_send_o_method_call(vnode->id, vmg->group_id, vm->id, vnode->session->avatar, pack);
- }
- vnode->chat_flag = CHAT_NOTLOGGED;
-}
-
-/*
- * send join command
- */
-void send_join(VNode *vnode, const char *chan)
-{
- struct VMethodGroup *vmg;
- struct VMethod *vm;
- VNOPackedParams *join;
- VNOParam channel[1];
-
- vmg= lookup_vmethodgroup_name(&(vnode->methodgroups), "tawk");
- if(!vmg) return;
- vm= lookup_vmethod_name(&(vmg->methods), "join");
- if(!vm) return;
-
- channel[0].vstring= (char *)chan;
- if((join= verse_method_call_pack(vm->param_count, vm->param_type, channel))!=NULL) {
- verse_send_o_method_call(vnode->id, vmg->group_id, vm->id, vnode->session->avatar, join);
- }
-}
-
-/*
- * send leave command
- */
-void send_leave(VNode *vnode, const char *chan)
-{
- struct VMethodGroup *vmg;
- struct VMethod *vm;
- VNOPackedParams *leave;
- VNOParam channel[1];
-
- vmg= lookup_vmethodgroup_name(&(vnode->methodgroups), "tawk");
- if(!vmg) return;
- vm= lookup_vmethod_name(&(vmg->methods), "leave");
- if(!vm) return;
-
- channel[0].vstring= (char *)chan;
- if((leave= verse_method_call_pack(vm->param_count, vm->param_type, channel))!=NULL) {
- verse_send_o_method_call(vnode->id, vmg->group_id, vm->id, vnode->session->avatar, leave);
- }
-}
-
-/*
- * send login command
- */
-void send_login(VNode *vnode)
-{
- struct VMethodGroup *vmg;
- struct VMethod *vm;
- VNOPackedParams *login;
- VNOParam param[1];
-
- vnode->chat_flag = CHAT_LOGGED;
- vmg= lookup_vmethodgroup_name(&(vnode->methodgroups), "tawk");
- if(!vmg) return;
- vm= lookup_vmethod_name(&(vmg->methods), "login");
- if(!vm) return;
-
- param[0].vstring= U.verseuser;
-
- if((login= verse_method_call_pack(vm->param_count, vm->param_type, param))!=NULL) {
- verse_send_o_method_call(vnode->id, vmg->group_id, vm->id, vnode->session->avatar, login);
- }
- vnode->chat_flag = CHAT_LOGGED;
-
- vnode= lookup_vnode(vnode->session, vnode->session->avatar);
- vmg= lookup_vmethodgroup_name(&(vnode->methodgroups), "tawk-client");
- if(!vmg)
- verse_send_o_method_group_create(vnode->session->avatar, ~0, "tawk-client");
-}
-#endif
-
-/*
- * Free a VMethod
- */
-void free_verse_method(VMethod *vm) {
- if(!vm) return;
-
- MEM_freeN(vm->param_type);
-}
-
-/*
- * Free methods for VMethodGroup
- */
-void free_verse_methodgroup(VMethodGroup *vmg)
-{
- struct VMethod *vm, *tmpvm;
-
- if(!vmg) return;
-
- vm= vmg->methods.first;
- while(vm) {
- tmpvm=vm->next;
- free_verse_method(vm);
- vm= tmpvm;
- }
- BLI_freelistN(&(vmg->methods));
-}
-
-/* callback for method group creation */
-static void cb_o_method_group_create(
- void *user_data,
- VNodeID node_id,
- uint16 group_id,
- const char *name)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VMethodGroup *vmg;
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- vmg = lookup_vmethodgroup(&(vnode->methodgroups), group_id);
-
- /* create method group holder in node node_id */
- if(!vmg) {
- vmg= MEM_mallocN(sizeof(VMethodGroup), "VMethodGroup");
- vmg->group_id = group_id;
- vmg->methods.first = vmg->methods.last = NULL;
- BLI_addtail(&(vnode->methodgroups), vmg);
- printf("new method group with name %s (group_id %d) for node %u created\n", name, group_id, node_id);
- }
-
- /* this ensures name of an existing group gets updated, in case it is changed */
- BLI_strncpy(vmg->name, (char *)name, 16);
-
- /* subscribe to method group */
- verse_send_o_method_group_subscribe(node_id, group_id);
-
-#ifdef VERSECHAT
- /* if this is our own method group, register our methods */
- if(node_id==session->avatar) {
- verse_send_o_method_create(node_id, group_id, (uint8)~0u, vmethod_info[0].name,
- vmethod_info[0].param_count,
- (VNOParamType *)vmethod_info[0].param_type,
- (const char **)vmethod_info[0].param_name);
- b_verse_update();
- verse_send_o_method_create(node_id, group_id, (uint8)~0u, vmethod_info[1].name,
- vmethod_info[1].param_count,
- (VNOParamType *)vmethod_info[1].param_type,
- (const char **)vmethod_info[1].param_name);
- b_verse_update();
- verse_send_o_method_create(node_id, group_id, (uint8)~0u, vmethod_info[2].name,
- vmethod_info[2].param_count,
- (VNOParamType *)vmethod_info[2].param_type,
- (const char **)vmethod_info[2].param_name);
- b_verse_update();
- }
-#endif
-}
-
-/* callback for method group destruction */
-static void cb_o_method_group_destroy(
- void *user_data,
- VNodeID node_id,
- uint16 group_id,
- const char *name)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VMethodGroup *vmg;
- struct VMethod *vm;
-
- printf("method group %d destroyed\n", group_id);
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- for(vmg= vnode->methodgroups.first; vmg; vmg= vmg->next)
- if(vmg->group_id==group_id) break;
-
- if(!vmg) return; /* method group doesn't exist? */
-
- vmg->group_id = 0;
- vmg->name[0] = '\0';
- vm= vmg->methods.first;
- while(vm) {
- /* free vm */
-
- }
-
- /* TODO: unsubscribe from method group */
- BLI_remlink(&(vnode->methodgroups),vmg);
- MEM_freeN(vmg);
-}
-
-/* callback for method creation */
-static void cb_o_method_create(
- void *user_data,
- VNodeID node_id,
- uint16 group_id,
- uint16 method_id,
- const char *name,
- uint8 param_count,
- const VNOParamType *param_type,
- const char *param_name[])
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VMethodGroup *vmg;
- struct VMethod *vm;
- unsigned int size;
- unsigned int i;
- char *put;
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- vmg= lookup_vmethodgroup((&vnode->methodgroups), group_id);
-
- if(!vmg) return;
-
- vm= lookup_vmethod((&vmg->methods), method_id);
-
- if(!vm) {
- vm= MEM_mallocN(sizeof(VMethod), "VMethod");
- vm->id= method_id;
- vm->param_count= param_count;
- size= param_count* (sizeof(*vm->param_type) + sizeof(*vm->param_name));
- for(i= 0; i <param_count; i++) {
- size+=strlen(param_name[i])+1;
- }
- vm->param_type= MEM_mallocN(size, "param_type and param_name");
- memcpy(vm->param_type, param_type, sizeof(VNOParamType)*param_count);
- vm->param_name= (char **)(vm->param_type + param_count);
- put= (char *)(vm->param_name + param_count);
- for(i= 0; i < param_count; i++) {
- vm->param_name[i]= put;
- strcpy(put, param_name[i]);
- put += strlen(param_name[i]) + 1;
- }
-
- BLI_addtail(&(vmg->methods), vm);
-#ifdef VERSECHAT
- if(strcmp(vmethod_info[0].name, name)==0) {
- vmethod_info[0].id = method_id;
- }
-#endif
- printf("method %s in group %d of node %u created\n", name, group_id, node_id);
- }
-
- BLI_strncpy(vm->name, (char *)name, 500);
-}
-
-/* callback for method destruction */
-static void cb_o_method_destroy(
- void *user_data,
- VNodeID node_id,
- uint16 group_id,
- uint16 method_id,
- const char *name,
- uint8 param_count,
- const VNOParamType *param_type,
- const char *param_name[])
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VMethodGroup *vmg;
- struct VMethod *vm;
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- for(vmg= vnode->methodgroups.first; vmg; vmg= vmg->next)
- if(vmg->group_id==group_id) break;
-
- if(!vmg) return; /* method group doesn't exist? */
-
- for(vm= vmg->methods.first; vm; vm= vm->next)
- if(vm->id==method_id) break;
-
- if(!vm) return;
-
- BLI_remlink(&(vmg->methods), vm);
- MEM_freeN(vm->param_type);
- MEM_freeN(vm);
-}
-
-/* callback for method calls */
-static void cb_o_method_call(void *user_data, VNodeID node_id, uint8 group_id, uint8 method_id, VNodeID sender, VNOPackedParams *params)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VMethodGroup *vmg;
- struct VMethod *vm;
- Text *text;
- int method_idx= -1;
-
- VNOParam arg[3];
-
- if(!session) return;
-
- if(session->avatar!=node_id) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- vmg= lookup_vmethodgroup(&(vnode->methodgroups), group_id);
- if(!vmg) return;
-
- vm= lookup_vmethod(&(vmg->methods), method_id);
- if(!vm) return;
-#ifdef VERSECHAT
- if(strcmp(vm->name, "join")==0) method_idx=0;
- if(strcmp(vm->name, "leave")==0) method_idx=1;
- if(strcmp(vm->name, "hear")==0) method_idx=2;
- if(method_idx>-1)
- verse_method_call_unpack(params, vmethod_info[method_idx].param_count, vmethod_info[method_idx].param_type, arg);
-
- switch(method_idx) {
- case 0:
- printf("Joining channel %s\n",arg[0].vstring);
- text=add_empty_text();
- text->flags |= TXT_ISCHAT;
- rename_id(&(text->id), arg[0].vstring);
- break;
- case 1:
- printf("Leaving channel %s\n",arg[0].vstring);
- break;
- case 2:
- {
- ListBase lb = G.main->text;
- ID *id= (ID *)lb.first;
- char showstr[1024];
- showstr[0]='\0';
- text = NULL;
- sprintf(showstr, "%s: %s\n", arg[1].vstring, arg[2].vstring);
- for(; id; id= id->next) {
- if(strcmp(id->name+2, arg[0].vstring)==0 && strcmp(arg[0].vstring, "#server")!=0) {
- text = (Text *)id;
- break;
- }
- }
- if(text) {
- txt_insert_buf(text, showstr);
- txt_move_eof(text, 0);
-// XXX allqueue(REDRAWCHAT, 0);
- } else {
- printf("%s> %s: %s\n",arg[0].vstring, arg[1].vstring, arg[2].vstring);
- }
- }
- break;
- }
-#endif
-}
-
-void set_method_callbacks(void)
-{
- /* create and destroy method groups */
- verse_callback_set(verse_send_o_method_group_create, cb_o_method_group_create, NULL);
- verse_callback_set(verse_send_o_method_group_destroy, cb_o_method_group_destroy, NULL);
-
- /* create and destroy methods */
- verse_callback_set(verse_send_o_method_create, cb_o_method_create, NULL);
- verse_callback_set(verse_send_o_method_destroy, cb_o_method_destroy, NULL);
-
- /* call methods */
- verse_callback_set(verse_send_o_method_call, cb_o_method_call, NULL);
-}
-
-#endif
diff --git a/source/blender/blenkernel/intern/verse_node.c b/source/blender/blenkernel/intern/verse_node.c
deleted file mode 100644
index ee47896474a..00000000000
--- a/source/blender/blenkernel/intern/verse_node.c
+++ /dev/null
@@ -1,747 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Contributor(s): Jiri Hnidek.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifdef WITH_VERSE
-
-#include <string.h>
-
-#include "MEM_guardedalloc.h"
-
-#include "DNA_listBase.h"
-#include "DNA_userdef_types.h"
-
-#include "BLI_dynamiclist.h"
-#include "BLI_blenlib.h"
-
-//XXX #include "BIF_verse.h"
-
-#include "BKE_verse.h"
-
-#include "verse.h"
-
-/* function prototypes of static functions */
- /* for tags */
-static void free_verse_tag_data(struct VTag *vtag);
-static struct VTag *find_tag_in_queue(struct VTagGroup *vtaggroup, const char *name);
-static struct VTag *create_verse_tag(struct VTagGroup *vtaggroup, uint16 tag_id, const char *name, VNTagType type, const VNTag *tag);
- /* for verse tag groups */
-static void free_verse_taggroup_data(struct VTagGroup *taggroup);
-static struct VTagGroup *find_taggroup_in_queue(struct VNode *vnode, const char *name);
-static struct VTagGroup *create_verse_taggroup(VNode *vnode, uint16 group_id, const char *name);
- /* for verse nodes */
-static void move_verse_node_to_dlist(struct VerseSession *session, VNodeID vnode_id);
- /* function prototypes of node callback functions */
-static void cb_tag_destroy(void *user_data, VNodeID node_id, uint16 group_id, uint16 tag_id);
-static void cb_tag_create(void *user_data, VNodeID node_id, uint16 group_id, uint16 tag_id, const char *name, VNTagType type, const VNTag *tag);
-static void cb_tag_group_destroy(void *user_data, VNodeID node_id, uint16 group_id);
-static void cb_tag_group_create(void *user_data, VNodeID node_id, uint16 group_id, const char *name);
-static void cb_node_name_set(void *user_data, VNodeID node_id, const char *name);
-static void cb_node_destroy(void *user_data, VNodeID node_id);
-static void cb_node_create(void *user_data, VNodeID node_id, uint8 type, VNodeID owner_id);
-
-/*
- * send new tag to verse server
- */
-void send_verse_tag(VTag *vtag)
-{
- verse_send_tag_create(vtag->vtaggroup->vnode->id,
- vtag->vtaggroup->id,
- vtag->id,
- vtag->name,
- vtag->type,
- vtag->tag);
-}
-
-/*
- * free tag data
- */
-static void free_verse_tag_data(VTag *vtag)
-{
- /* free name of verse tag */
- MEM_freeN(vtag->name);
- /* free value of tag */
- MEM_freeN(vtag->tag);
-}
-
-/*
- * try to find tag in sending queue ... if tag will be found, then
- * this function will removed tag from queue and will return pointer
- * at this tag
- */
-static VTag *find_tag_in_queue(VTagGroup *vtaggroup, const char *name)
-{
- struct VTag *vtag;
-
- vtag = vtaggroup->queue.first;
-
- while(vtag) {
- if(strcmp(vtag->name, name)==0) {
- BLI_remlink(&(vtaggroup->queue), vtag);
- break;
- }
- vtag = vtag->next;
- }
-
- return vtag;
-}
-
-/*
- * create new verse tag
- */
-static VTag *create_verse_tag(
- VTagGroup *vtaggroup,
- uint16 tag_id,
- const char *name,
- VNTagType type,
- const VNTag *tag)
-{
- struct VTag *vtag;
-
- vtag = (VTag*)MEM_mallocN(sizeof(VTag), "VTag");
-
- vtag->vtaggroup = vtaggroup;
- vtag->id = tag_id;
- vtag->name = (char*)MEM_mallocN(sizeof(char)*(strlen(name)+1), "VTag name");
- strcpy(vtag->name, name);
- vtag->type = type;
-
- vtag->tag = (VNTag*)MEM_mallocN(sizeof(VNTag), "VNTag");
- *vtag->tag = *tag;
-
- vtag->value = NULL;
-
- return vtag;
-}
-
-/*
- * send taggroup to verse server
- */
-void send_verse_taggroup(VTagGroup *vtaggroup)
-{
- verse_send_tag_group_create(
- vtaggroup->vnode->id,
- vtaggroup->id,
- vtaggroup->name);
-}
-
-/*
- * free taggroup data
- */
-static void free_verse_taggroup_data(VTagGroup *taggroup)
-{
- struct VerseSession *session = taggroup->vnode->session;
- struct VTag *vtag;
-
- vtag = taggroup->tags.lb.first;
-
- while(vtag) {
- free_verse_tag_data(vtag);
- vtag = vtag->next;
- }
-
- /* unsubscribe from taggroup */
- if(session->flag & VERSE_CONNECTED)
- verse_send_tag_group_unsubscribe(taggroup->vnode->id, taggroup->id);
-
- BLI_dlist_destroy(&(taggroup->tags));
- MEM_freeN(taggroup->name);
-}
-
-/*
- * move taggroup from queue to dynamic list with access array,
- * set up taggroup id and return pointer at this taggroup
- */
-static VTagGroup *find_taggroup_in_queue(VNode *vnode, const char *name)
-{
- struct VTagGroup *vtaggroup;
-
- vtaggroup = vnode->queue.first;
-
- while(vtaggroup) {
- if(strcmp(vtaggroup->name, name)==0) {
- BLI_remlink(&(vnode->queue), vtaggroup);
- break;
- }
- vtaggroup = vtaggroup->next;
- }
-
- return vtaggroup;
-}
-
-/*
- * create new verse group of tags
- */
-static VTagGroup *create_verse_taggroup(VNode *vnode, uint16 group_id, const char *name)
-{
- struct VTagGroup *taggroup;
-
- taggroup = (VTagGroup*)MEM_mallocN(sizeof(VTagGroup), "VTagGroup");
-
- taggroup->vnode = vnode;
- taggroup->id = group_id;
- taggroup->name = (char*)MEM_mallocN(sizeof(char)*(strlen(name)+1), "VTagGroup name");
- strcpy(taggroup->name, name);
-
- BLI_dlist_init(&(taggroup->tags));
- taggroup->queue.first = taggroup->queue.last = NULL;
-
- //XXX taggroup->post_tag_change = post_tag_change;
- //XXX taggroup->post_taggroup_create = post_taggroup_create;
-
- return taggroup;
-}
-
-/*
- * move first VerseNode waiting in sending queue to dynamic list of VerseNodes
- * (it usually happens, when "our" VerseNode was received from verse server)
- */
-static void move_verse_node_to_dlist(VerseSession *session, VNodeID vnode_id)
-{
- VNode *vnode;
-
- vnode = session->queue.first;
-
- if(vnode) {
- BLI_remlink(&(session->queue), vnode);
- BLI_dlist_add_item_index(&(session->nodes), (void*)vnode, vnode_id);
- }
-}
-
-/*
- * send VerseNode to verse server
- */
-void send_verse_node(VNode *vnode)
-{
- verse_send_node_create(
- vnode->id,
- vnode->type,
- vnode->session->avatar);
-}
-
-/*
- * free Verse Node data
- */
-void free_verse_node_data(VNode *vnode)
-{
- struct VerseSession *session = vnode->session;
- struct VTagGroup *vtaggroup;
-
- /* free node data (object, geometry, etc.) */
- switch(vnode->type){
- case V_NT_OBJECT:
- free_object_data(vnode);
- break;
- case V_NT_GEOMETRY:
- free_geom_data(vnode);
- break;
- case V_NT_BITMAP:
- free_bitmap_node_data(vnode);
- break;
- default:
- break;
- }
-
- /* free all tag groups in dynamic list with access array */
- vtaggroup = vnode->taggroups.lb.first;
- while(vtaggroup) {
- free_verse_taggroup_data(vtaggroup);
- vtaggroup = vtaggroup->next;
- }
- BLI_dlist_destroy(&(vnode->taggroups));
-
- /* free all tag groups still waiting in queue */
- vtaggroup = vnode->queue.first;
- while(vtaggroup) {
- free_verse_taggroup_data(vtaggroup);
- vtaggroup = vtaggroup->next;
- }
- BLI_freelistN(&(vnode->queue));
-
- /* unsubscribe from node */
- if(session->flag & VERSE_CONNECTED)
- verse_send_node_unsubscribe(vnode->id);
-
- /* free node name */
- MEM_freeN(vnode->name);
- vnode->name = NULL;
-
- /* free node data */
- MEM_freeN(vnode->data);
- vnode->data = NULL;
-
-}
-
-/*
- * free VerseNode
- */
-void free_verse_node(VNode *vnode)
-{
- free_verse_node_data(vnode);
-
- BLI_dlist_free_item(&(vnode->session->nodes), vnode->id);
-}
-
-/*
- * Find a Verse Node from session
- */
-VNode* lookup_vnode(VerseSession *session, VNodeID node_id)
-{
- struct VNode *vnode;
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- return vnode;
-}
-
-/*
- * create new Verse Node
- */
-VNode* create_verse_node(VerseSession *session, VNodeID node_id, uint8 type, VNodeID owner_id)
-{
- struct VNode *vnode;
-
- vnode = (VNode*)MEM_mallocN(sizeof(VNode), "VerseNode");
-
- vnode->session = session;
- vnode->id = node_id;
- vnode->owner_id = owner_id;
- vnode->name = NULL;
- vnode->type = type;
-
- BLI_dlist_init(&(vnode->taggroups));
- vnode->queue.first = vnode->queue.last = NULL;
- vnode->methodgroups.first = vnode->methodgroups.last = NULL;
-
- vnode->data = NULL;
-
- vnode->counter = 0;
-
- vnode->flag = 0;
-#ifdef VERSECHAT
- vnode->chat_flag = CHAT_NOTLOGGED;
-#endif
-
- //XXX vnode->post_node_create = post_node_create;
- //XXX vnode->post_node_destroy = post_node_destroy;
- //XXX vnode->post_node_name_set = post_node_name_set;
-
- return vnode;
-}
-
-/*
- * callback function: tag was destroyed
- */
-static void cb_tag_destroy(
- void *user_data,
- VNodeID node_id,
- uint16 group_id,
- uint16 tag_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VTagGroup *vtaggroup;
- struct VTag *vtag;
-
- if(!session) return;
-
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode) return;
-
- /* try to find tag group in list of tag groups */
- vtaggroup = BLI_dlist_find_link(&(vnode->taggroups), group_id);
-
- if(!vtaggroup) return;
-
- /* try to find verse tag in dynamic list of tags in tag group */
- vtag = (VTag*)BLI_dlist_find_link(&(vtaggroup->tags), tag_id);
-
- if(vtag) {
- free_verse_tag_data(vtag);
- BLI_dlist_free_item(&(vtaggroup->tags), vtag->id);
- }
-}
-
-/*
- * callback function: new tag was created
- */
-static void cb_tag_create(
- void *user_data,
- VNodeID node_id,
- uint16 group_id,
- uint16 tag_id,
- const char *name,
- VNTagType type,
- const VNTag *tag)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VTagGroup *vtaggroup;
- struct VTag *vtag;
-
- if(!session) return;
-
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode) return;
-
- /* try to find tag group in list of tag groups */
- vtaggroup = BLI_dlist_find_link(&(vnode->taggroups), group_id);
-
- if(!vtaggroup) return;
-
- /* try to find verse tag in dynamic list of tags in tag group */
- vtag = (VTag*)BLI_dlist_find_link(&(vtaggroup->tags), tag_id);
-
- if(!vtag) {
- /* we will try to find vtag in sending queue */
- vtag = find_tag_in_queue(vtaggroup, name);
-
- /* when we didn't create this tag, then we will have to create one */
- if(!vtag) vtag = create_verse_tag(vtaggroup, tag_id, name, type, tag);
- else vtag->id = tag_id;
-
- /* add tag to the list of tags in tag group */
- BLI_dlist_add_item_index(&(vtaggroup->tags), vtag, tag_id);
-
- /* post change/create method */
- vtaggroup->post_tag_change(vtag);
- }
- else {
- /* this tag exists, then we will propably change value of this tag */
- if((vtag->type != type) || (strcmp(vtag->name, name)!=0)) {
- /* changes of type or name are not allowed and such
- * stupid changes will be returned back */
- send_verse_tag(vtag);
- }
- else {
- /* post change/create method */
- vtaggroup->post_tag_change(vtag);
- }
- }
-}
-
-/*
- * callback function: tag group was destroyed
- */
-static void cb_tag_group_destroy(
- void *user_data,
- VNodeID node_id,
- uint16 group_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VTagGroup *vtaggroup;
-
- if(!session) return;
-
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode) return;
-
- vtaggroup = BLI_dlist_find_link(&(vnode->taggroups), group_id);
-
- if(vtaggroup) {
- free_verse_taggroup_data(vtaggroup);
- BLI_dlist_free_item(&(vnode->taggroups), vtaggroup->id);
- }
-}
-
-/*
- * callback function: new tag group was created
- */
-static void cb_tag_group_create(
- void *user_data,
- VNodeID node_id,
- uint16 group_id,
- const char *name)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VTagGroup *vtaggroup;
-
- if(!session) return;
-
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(!vnode) return;
-
- /* name of taggroup has to begin with string "blender:" */
- if(strncmp("blender:", name, 8)) return;
-
- /* try to find tag group in list of tag groups */
- vtaggroup = BLI_dlist_find_link(&(vnode->taggroups), group_id);
-
- if(!vtaggroup) {
- /* subscribe to tag group (when new tag will be created, then blender will
- * receive command about it) */
- verse_send_tag_group_subscribe(vnode->id, group_id);
- verse_callback_update(0);
-
- /* try to find taggroup in waiting queue */
- vtaggroup = find_taggroup_in_queue(vnode, name);
-
- /* if no taggroup exist, then new has to be created */
- if(!vtaggroup) vtaggroup = create_verse_taggroup(vnode, group_id, name);
- else vtaggroup->id = group_id;
-
- /* add tag group to dynamic list with access array */
- BLI_dlist_add_item_index(&(vnode->taggroups), (void*)vtaggroup, (unsigned int)group_id);
-
- /* post create method */
- vtaggroup->post_taggroup_create(vtaggroup);
- }
- else {
- /* this taggroup exist and somebody try to change its name */
- if(strcmp(vtaggroup->name, name)!=0) {
- /* blender doesn't allow such stupid and dangerous things */
- send_verse_taggroup(vtaggroup);
- }
- }
-}
-
-/*
- * callback function: change name of node
- */
-static void cb_node_name_set(
- void *user_data,
- VNodeID node_id,
- const char *name)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
-
- if(!session) return;
-
- vnode = (VNode*)BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- if(vnode && name) {
- if(!vnode->name) {
- vnode->name = (char*)MEM_mallocN(sizeof(char)*(strlen(name)+1), "VerseNode name");
- }
- else if(strlen(name) > strlen(vnode->name)) {
- MEM_freeN(vnode->name);
- vnode->name = (char*)MEM_mallocN(sizeof(char)*(strlen(name)+1), "VerseNode name");
- }
- strcpy(vnode->name, name);
-
- vnode->post_node_name_set(vnode);
- }
-}
-
-/*
- * callback function for deleting node
- */
-static void cb_node_destroy(
- void *user_data,
- VNodeID node_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- if(vnode) {
- /* remove VerseNode from dynamic list */
- BLI_dlist_rem_item(&(session->nodes), (unsigned int)node_id);
- /* do post destroy operations */
- vnode->post_node_destroy(vnode);
- /* free verse data */
- free_verse_node_data(vnode);
- /* free VerseNode */
- MEM_freeN(vnode);
- };
-}
-
-
-/*
- * callback function for new created node
- */
-static void cb_node_create(
- void *user_data,
- VNodeID node_id,
- uint8 type,
- VNodeID owner_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode = NULL;
-
- if(!session) return;
-
- /* subscribe to node */
- if((type==V_NT_OBJECT) || (type==V_NT_GEOMETRY) || (type==V_NT_BITMAP))
- verse_send_node_subscribe(node_id);
- else
- return;
-
- switch(type){
- case V_NT_OBJECT :
- if(owner_id==VN_OWNER_MINE) {
- struct VLink *vlink;
- /* collect VerseNode from VerseNode queue */
- move_verse_node_to_dlist(session, node_id);
- /* send next VerseNode waiting in queue */
- if(session->queue.first) send_verse_node(session->queue.first);
- /* get received VerseNode from list of VerseNodes */
- vnode = BLI_dlist_find_link(&(session->nodes), node_id);
- /* set up ID */
- vnode->id = node_id;
- /* set up flags */
- vnode->flag |= NODE_RECEIVED;
- /* find unsent link pointing at this VerseNode */
- vlink = find_unsent_child_vlink(session, vnode);
- /* send VerseLink */
- if(vlink) send_verse_link(vlink);
- /* send name of object node */
- verse_send_node_name_set(node_id, vnode->name);
- /* subscribe to changes of object node transformations */
- verse_send_o_transform_subscribe(node_id, 0);
- /* send object transformation matrix */
- send_verse_object_position(vnode);
- send_verse_object_rotation(vnode);
- send_verse_object_scale(vnode);
- }
- else {
- /* create new VerseNode */
- vnode = create_verse_node(session, node_id, type, owner_id);
- /* add VerseNode to list of nodes */
- BLI_dlist_add_item_index(&(session->nodes), (void*)vnode, (unsigned int)node_id);
- /* set up flags */
- vnode->flag |= NODE_RECEIVED;
- /* create object data */
- vnode->data = create_object_data();
- /* set up avatar's name */
- if(node_id == session->avatar) {
- verse_send_node_name_set(node_id, U.verseuser);
- }
- else if(session->flag & VERSE_AUTOSUBSCRIBE) {
- /* subscribe to changes of object node transformations */
- verse_send_o_transform_subscribe(node_id, 0);
- }
- }
- break;
- case V_NT_GEOMETRY :
- if(owner_id==VN_OWNER_MINE){
- struct VLink *vlink;
- struct VLayer *vlayer;
- /* collect VerseNode from VerseNode queue */
- move_verse_node_to_dlist(session, node_id);
- /* send next VerseNode waiting in queue */
- if(session->queue.first) send_verse_node(session->queue.first);
- /* get received VerseNode from list of VerseNodes */
- vnode = BLI_dlist_find_link(&(session->nodes), node_id);
- /* set up ID */
- vnode->id = node_id;
- /* set up flags */
- vnode->flag |= NODE_RECEIVED;
- /* find unsent link pointing at this VerseNode */
- vlink = find_unsent_parent_vlink(session, vnode);
- /* send VerseLink */
- if(vlink) send_verse_link(vlink);
- /* send name of geometry node */
- verse_send_node_name_set(node_id, vnode->name);
- /* send all not sent layer to verse server */
- vlayer = (VLayer*)((VGeomData*)vnode->data)->queue.first;
- if(vlayer) {
- while(vlayer) {
- send_verse_layer(vlayer);
- vlayer = vlayer->next;
- }
- }
- else {
- /* send two verse layers to verse server */
-/* verse_send_g_layer_create(node_id, 0, "vertex", VN_G_LAYER_VERTEX_XYZ, 0, 0);
- verse_send_g_layer_create(node_id, 1, "polygon", VN_G_LAYER_POLYGON_CORNER_UINT32, 0, 0);*/
- }
- }
- else {
- /* create new VerseNode*/
- vnode = create_verse_node(session, node_id, type, owner_id);
- /* add VerseNode to dlist of nodes */
- BLI_dlist_add_item_index(&(session->nodes), (void*)vnode, (unsigned int)node_id);
- /* set up flags */
- vnode->flag |= NODE_RECEIVED;
- /* create geometry data */
- vnode->data = (void*)create_geometry_data();
- }
- break;
- case V_NT_BITMAP :
- if(owner_id==VN_OWNER_MINE) {
- /* collect VerseNode from VerseNode queue */
- move_verse_node_to_dlist(session, node_id);
- /* send next VerseNode waiting in queue */
- if(session->queue.first) send_verse_node(session->queue.first);
- /* get received VerseNode from list of VerseNodes */
- vnode = BLI_dlist_find_link(&(session->nodes), node_id);
- /* set up ID */
- vnode->id = node_id;
- /* set up flags */
- vnode->flag |= NODE_RECEIVED;
- /* send name of object node */
- verse_send_node_name_set(node_id, vnode->name);
- /* send dimension of image to verse server */
- verse_send_b_dimensions_set(node_id,
- ((VBitmapData*)vnode->data)->width,
- ((VBitmapData*)vnode->data)->height,
- ((VBitmapData*)vnode->data)->depth);
- }
- else {
- /* create new VerseNode*/
- vnode = create_verse_node(session, node_id, type, owner_id);
- /* add VerseNode to dlist of nodes */
- BLI_dlist_add_item_index(&(session->nodes), (void*)vnode, (unsigned int)node_id);
- /* set up flags */
- vnode->flag |= NODE_RECEIVED;
- /* create bitmap data */
- vnode->data = (void*)create_bitmap_data();
- }
- break;
- default:
- vnode = NULL;
- break;
- }
-
- if(vnode) vnode->post_node_create(vnode);
-}
-
-/*
- * set up all callbacks for verse nodes
- */
-void set_node_callbacks(void)
-{
- /* new node created */
- verse_callback_set(verse_send_node_create, cb_node_create, NULL);
- /* node was deleted */
- verse_callback_set(verse_send_node_destroy, cb_node_destroy, NULL);
- /* name of node was set */
- verse_callback_set(verse_send_node_name_set, cb_node_name_set, NULL);
-
- /* new tag group was created */
- verse_callback_set(verse_send_tag_group_create, cb_tag_group_create, NULL);
- /* tag group was destroy */
- verse_callback_set(verse_send_tag_group_destroy, cb_tag_group_destroy, NULL);
-
- /* new tag was created */
- verse_callback_set(verse_send_tag_create, cb_tag_create, NULL);
- /* tag was destroy */
- verse_callback_set(verse_send_tag_destroy, cb_tag_destroy, NULL);
-}
-
-#endif
diff --git a/source/blender/blenkernel/intern/verse_object_node.c b/source/blender/blenkernel/intern/verse_object_node.c
deleted file mode 100644
index e7827c8dc46..00000000000
--- a/source/blender/blenkernel/intern/verse_object_node.c
+++ /dev/null
@@ -1,617 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Contributor(s): Jiri Hnidek.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifdef WITH_VERSE
-
-#include <string.h>
-#include <math.h>
-
-#include "MEM_guardedalloc.h"
-
-#include "DNA_listBase.h"
-#include "DNA_userdef_types.h"
-
-#include "BLI_dynamiclist.h"
-#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
-
-//XXX #include "BIF_verse.h"
-
-#include "BKE_verse.h"
-#include "BKE_utildefines.h"
-
-#include "verse.h"
-
-/* function prototypes of static functions */
-
-/* callback functions */
-static void cb_o_transform_pos_real32(void *user_data, VNodeID node_id, uint32 time_s, uint32 time_f, const real32 *pos, const real32 *speed, const real32 *accelerate, const real32 *drag_normal, real32 drag);
-static void cb_o_transform_rot_real32(void *user_data, VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat32 *temp, const VNQuat32 *speed, const VNQuat32 *accelerate, const VNQuat32 *drag_normal, real32 drag);
-static void cb_o_transform_scale_real32(void *user_data, VNodeID node_id, real32 scale_x, real32 scale_y, real32 scale_z);
-static void cb_o_link_set(void *user_data, VNodeID node_id, uint16 link_id, VNodeID link, const char *label, uint32 target_id);
-static void cb_o_link_destroy(void *user_data, VNodeID node_id,uint16 link_id);
-
-/* other functions */
-static void set_target_node_link_pointer(struct VNode *vnode, struct VLink *vlink);
-static void free_verse_link_data(struct VLink *vlink);
-
-/*
- * find noy sent VerseLink in queue
- */
-VLink *find_unsent_child_vlink(VerseSession *session, VNode *vnode)
-{
- struct VLink *vlink;
-
- if(vnode->type!=V_NT_OBJECT) return NULL;
-
- vlink = ((VObjectData*)vnode->data)->queue.first;
- while(vlink) {
- if(vlink->target->id != -1) {
- printf("\t vlink found, vnode target id %d\n", vlink->target->id);
- return vlink;
- }
- vlink = vlink->next;
- }
- return NULL;
-}
-
-/*
- * find unsent VerseLink "pointing at this VerseNode"
- */
-VLink *find_unsent_parent_vlink(VerseSession *session, VNode *vnode)
-{
- struct VNode *tmp;
- struct VLink *vlink;
-
- tmp = session->nodes.lb.first;
-
- while(tmp) {
- if(tmp->type==V_NT_OBJECT) {
- vlink = ((VObjectData*)tmp->data)->queue.first;
- while(vlink) {
- if(vlink->target == vnode)
- return vlink;
- vlink = vlink->next;
- }
- }
- tmp = tmp->next;
- }
- return NULL;
-}
-
-/*
- * send object position to verse server
- */
-void send_verse_object_position(VNode *vnode)
-{
- float tmp;
-
- ((VObjectData*)vnode->data)->flag &= ~POS_SEND_READY;
-
- /* we have to do rotation around x axis (+pi/2) to be
- compatible with other verse applications */
- tmp = -((VObjectData*)vnode->data)->pos[1];
- ((VObjectData*)vnode->data)->pos[1] = ((VObjectData*)vnode->data)->pos[2];
- ((VObjectData*)vnode->data)->pos[2] = tmp;
-
- verse_send_o_transform_pos_real32(
- vnode->id, /* node id */
- 0, /* time_s ... no interpolation */
- 0, /* time_f ... no interpolation */
- ((VObjectData*)vnode->data)->pos,
- NULL, /* speed ... no interpolation */
- NULL, /* accelerate ... no interpolation */
- NULL, /* drag normal ... no interpolation */
- 0.0); /* drag ... no interpolation */
-}
-
-/*
- * send object rotation to verse server
- */
-void send_verse_object_rotation(VNode *vnode)
-{
- VNQuat32 quat;
- float q[4] = {cos(-M_PI/4), -sin(-M_PI/4), 0, 0}, v[4], tmp[4];
-
- /* inverse transformation to transformation in function cb_o_transform_rot_real32 */
- QuatMul(v, ((VObjectData*)vnode->data)->quat, q);
- q[1]= sin(-M_PI/4);
- QuatMul(tmp, q, v);
-
- quat.x = tmp[1];
- quat.y = tmp[2];
- quat.z = tmp[3];
- quat.w = tmp[0];
-
- ((VObjectData*)vnode->data)->flag &= ~ROT_SEND_READY;
-
- verse_send_o_transform_rot_real32(
- vnode->id, /* node id */
- 0, /* time_s ... no interpolation */
- 0, /* time_f ... no interpolation */
- &quat,
- NULL, /* speed ... no interpolation */
- NULL, /* accelerate ... no interpolation */
- NULL, /* drag normal ... no interpolation */
- 0.0); /* drag ... no interpolation */
-}
-
-/*
- * send object rotation to verse server
- */
-void send_verse_object_scale(VNode *vnode)
-{
- float tmp;
-
- ((VObjectData*)vnode->data)->flag &= ~SCALE_SEND_READY;
-
- /* we have to do rotation around x axis (+pi/2) to be
- compatible with other verse applications */
- tmp = ((VObjectData*)vnode->data)->scale[1];
- ((VObjectData*)vnode->data)->scale[1] = ((VObjectData*)vnode->data)->scale[2];
- ((VObjectData*)vnode->data)->scale[2] = tmp;
-
- verse_send_o_transform_scale_real32(
- vnode->id,
- ((VObjectData*)vnode->data)->scale[0],
- ((VObjectData*)vnode->data)->scale[1],
- ((VObjectData*)vnode->data)->scale[2]);
-}
-
-/*
- * send VerseLink to verse server
- */
-void send_verse_link(VLink *vlink)
-{
- verse_session_set(vlink->session->vsession);
-
- verse_send_o_link_set(
- vlink->source->id,
- vlink->id,
- vlink->target->id,
- vlink->label,
- vlink->target_id);
-}
-
-/*
- * set up pointer at VerseLink of target node (geometry node, material node, etc.)
- */
-static void set_target_node_link_pointer(VNode *vnode, VLink *vlink)
-{
- switch (vnode->type) {
- case V_NT_GEOMETRY:
- ((VGeomData*)vnode->data)->vlink = vlink;
- break;
- default:
- break;
- }
-}
-
-/*
- * free VerseLink and it's label
- */
-static void free_verse_link_data(VLink *vlink)
-{
- MEM_freeN(vlink->label);
-}
-
-/*
- * create new VerseLink
- */
-VLink *create_verse_link(
- VerseSession *session,
- VNode *source,
- VNode *target,
- uint16 link_id,
- uint32 target_id,
- const char *label)
-{
- struct VLink *vlink;
-
- vlink = (VLink*)MEM_mallocN(sizeof(VLink), "VerseLink");
- vlink->session = session;
- vlink->source = source;
- vlink->target = target;
- vlink->id = link_id;
- vlink->target_id = target_id;
-
- set_target_node_link_pointer(target, vlink);
-
- vlink->label = (char*)MEM_mallocN(sizeof(char)*(strlen(label)+1), "VerseLink label");
- vlink->label[0] = '\0';
- strcat(vlink->label, label);
-
- vlink->flag = 0;
-
- //XXX vlink->post_link_set = post_link_set;
- //XXX vlink->post_link_destroy = post_link_destroy;
-
- return vlink;
-}
-
-/*
- * free ObjectData (links, links in queue and lables of links)
- */
-void free_object_data(VNode *vnode)
-{
- struct VerseSession *session = vnode->session;
- struct VObjectData *obj = (VObjectData*)vnode->data;
- struct VLink *vlink;
- struct VMethodGroup *vmg;
-
- if(!obj) return;
-
- /* free all labels of links in dlist */
- vlink = obj->links.lb.first;
- while(vlink){
- free_verse_link_data(vlink);
- vlink = vlink->next;
- }
-
- /* free all labels of links waiting in queue */
- vlink = obj->queue.first;
- while(vlink){
- free_verse_link_data(vlink);
- vlink = vlink->next;
- }
- /* free dynamic list and sendig queue of links */
- BLI_dlist_destroy(&(obj->links));
- BLI_freelistN(&(obj->queue));
-
- /* free method groups and their methods */
- for(vmg = vnode->methodgroups.first; vmg; vmg= vmg->next) {
- free_verse_methodgroup(vmg);
- }
- BLI_freelistN(&(vnode->methodgroups));
-
- /* free constraint between VerseNode and Object */
- obj->post_object_free_constraint(vnode);
-
- /* unsubscribe from receiving changes of transformation matrix */
- if(session->flag & VERSE_CONNECTED)
- verse_send_o_transform_unsubscribe(vnode->id, 0);
-}
-
-/*
- * create new object data
- */
-VObjectData *create_object_data(void)
-{
- VObjectData *obj;
-
- obj = (VObjectData*)MEM_mallocN(sizeof(VObjectData), "VerseObjectData");
- obj->object = NULL;
- BLI_dlist_init(&(obj->links));
- obj->queue.first = obj->queue.last = NULL;
- obj->flag = 0;
-
- /* transformation matrix */
- obj->pos[0] = obj->pos[1] = obj->pos[2] = 0.0;
- obj->quat[0] = obj->quat[1] = obj->quat[2] = 0.0; obj->quat[3] = 1;
- obj->scale[0] = obj->scale[1] = obj->scale[2] = 1.0;
-
- /* transformation flags */
- obj->flag |= POS_SEND_READY;
- obj->flag |= ROT_SEND_READY;
- obj->flag |= SCALE_SEND_READY;
-
- /* set up pointers at post callback functions */
-/* obj->post_transform = post_transform;*/
- //XXX obj->post_transform_pos = post_transform_pos;
- //XXX obj->post_transform_rot = post_transform_rot;
- //XXX obj->post_transform_scale = post_transform_scale;
- //XXX obj->post_object_free_constraint = post_object_free_constraint;
-
- return obj;
-}
-
-/*
- * callback function:
- */
-static void cb_o_transform_pos_real32(
- void *user_data,
- VNodeID node_id,
- uint32 time_s,
- uint32 time_f,
- const real32 *pos,
- const real32 *speed,
- const real32 *accelerate,
- const real32 *drag_normal,
- real32 drag)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- float vec[3], dt, tmp;
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- ((VObjectData*)vnode->data)->flag |= POS_SEND_READY;
-
- /* verse server sends automaticaly some stupid default values ...
- * we have to ignore these values, when we created this object node */
- if( (vnode->owner_id==VN_OWNER_MINE) && !(((VObjectData*)vnode->data)->flag & POS_RECEIVE_READY) ) {
- ((VObjectData*)vnode->data)->flag |= POS_RECEIVE_READY;
- return;
- }
-
- dt = time_s + time_f/(0xffff);
-
- if(pos) {
- vec[0] = pos[0];
- vec[1] = pos[1];
- vec[2] = pos[2];
- }
- else {
- vec[0] = 0.0f;
- vec[1] = 0.0f;
- vec[2] = 0.0f;
- }
-
- if(speed) {
- vec[0] += speed[0]*dt;
- vec[1] += speed[1]*dt;
- vec[2] += speed[2]*dt;
- }
-
- if(accelerate) {
- vec[0] += accelerate[0]*dt*dt/2;
- vec[1] += accelerate[1]*dt*dt/2;
- vec[2] += accelerate[2]*dt*dt/2;
- }
-
- /* we have to do rotation around x axis (+pi/2) to be
- compatible with other verse applications */
- tmp = vec[1];
- vec[1] = -vec[2];
- vec[2] = tmp;
-
- if( (((VObjectData*)vnode->data)->pos[0] != vec[0]) ||
- (((VObjectData*)vnode->data)->pos[1] != vec[1]) ||
- (((VObjectData*)vnode->data)->pos[2] != vec[2]))
- {
- ((VObjectData*)vnode->data)->pos[0] = vec[0];
- ((VObjectData*)vnode->data)->pos[1] = vec[1];
- ((VObjectData*)vnode->data)->pos[2] = vec[2];
-
- ((VObjectData*)vnode->data)->post_transform_pos(vnode);
- }
-}
-
-/*
- * callback function:
- */
-static void cb_o_transform_rot_real32(
- void *user_data,
- VNodeID node_id,
- uint32 time_s,
- uint32 time_f,
- const VNQuat32 *quat,
- const VNQuat32 *speed,
- const VNQuat32 *accelerate,
- const VNQuat32 *drag_normal,
- real32 drag)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- float temp[4]={0, 0, 0, 0}, v[4], dt; /* temporary quaternions */
- float q[4]={cos(M_PI/4), -sin(M_PI/4), 0, 0}; /* conjugate quaternion (represents rotation
- around x-axis +90 degrees) */
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- ((VObjectData*)vnode->data)->flag |= ROT_SEND_READY;
-
- /* verse server sends automaticaly some stupid default values ...
- * we have to ignore these values, when we created this object node */
- if( (vnode->owner_id==VN_OWNER_MINE) && !(((VObjectData*)vnode->data)->flag & ROT_RECEIVE_READY) ) {
- ((VObjectData*)vnode->data)->flag |= ROT_RECEIVE_READY;
- return;
- }
-
- dt = time_s + time_f/(0xffff);
-
- if(quat) {
- temp[1] = quat->x;
- temp[2] = quat->y;
- temp[3] = quat->z;
- temp[0] = quat->w;
- }
-
- if(speed) {
- temp[1] += speed->x*dt;
- temp[2] += speed->y*dt;
- temp[3] += speed->z*dt;
- temp[0] += speed->w*dt;
- }
-
- if(accelerate) {
- temp[1] += accelerate->x*dt*dt/2;
- temp[2] += accelerate->y*dt*dt/2;
- temp[3] += accelerate->z*dt*dt/2;
- temp[0] += accelerate->w*dt*dt/2;
- }
-
- /* following matematical operation transform rotation:
- *
- * v' = quaternion * v * conjugate_quaternion
- *
- *, where v is original representation of rotation */
-
- QuatMul(v, temp, q);
- q[1]= sin(M_PI/4); /* normal quaternion */
- QuatMul(temp, q, v);
-
- if( (((VObjectData*)vnode->data)->quat[0] != temp[0]) ||
- (((VObjectData*)vnode->data)->quat[1] != temp[1]) ||
- (((VObjectData*)vnode->data)->quat[2] != temp[2]) ||
- (((VObjectData*)vnode->data)->quat[3] != temp[3]))
- {
- QUATCOPY(((VObjectData*)vnode->data)->quat, temp);
-
- ((VObjectData*)vnode->data)->post_transform_rot(vnode);
- }
-}
-
-/*
- * callback function:
- */
-static void cb_o_transform_scale_real32(
- void *user_data,
- VNodeID node_id,
- real32 scale_x,
- real32 scale_y,
- real32 scale_z)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- real32 tmp;
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- ((VObjectData*)vnode->data)->flag |= SCALE_SEND_READY;
-
- /* verse server sends automaticaly some stupid default values ...
- * we have to ignore these values, when we created this object node */
- if( (vnode->owner_id==VN_OWNER_MINE) && !(((VObjectData*)vnode->data)->flag & SCALE_RECEIVE_READY) ) {
- ((VObjectData*)vnode->data)->flag |= SCALE_RECEIVE_READY;
- return;
- }
-
- /* flip axis (verse spec) */
- tmp = scale_y;
- scale_y = scale_z;
- scale_z = tmp;
-
- /* z and y axis are flipped here too */
- if( (((VObjectData*)vnode->data)->scale[0] != scale_x) ||
- (((VObjectData*)vnode->data)->scale[1] != scale_y) ||
- (((VObjectData*)vnode->data)->scale[2] != scale_z))
- {
- ((VObjectData*)vnode->data)->scale[0] = scale_x;
- ((VObjectData*)vnode->data)->scale[1] = scale_y;
- ((VObjectData*)vnode->data)->scale[2] = scale_z;
-
- ((VObjectData*)vnode->data)->post_transform_scale(vnode);
- }
-}
-
-/*
- * callback function: link between object node and some other node was created
- */
-static void cb_o_link_set(
- void *user_data,
- VNodeID node_id,
- uint16 link_id,
- VNodeID link,
- const char *label,
- uint32 target_id)
-{
- struct VLink *vlink;
- struct VNode *source;
- struct VNode *target;
-
- struct VerseSession *session = (VerseSession*)current_verse_session();
-
- if(!session) return;
-
- source = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
- target = BLI_dlist_find_link(&(session->nodes), (unsigned int)link);
-
- if(!(source && target)) return;
-
- vlink = ((VObjectData*)source->data)->queue.first;
-
- if(vlink && (vlink->source==source) && (vlink->target==target)) {
- /* remove VerseLink from sending queue */
- BLI_remlink(&(((VObjectData*)source->data)->queue), vlink);
- /* add VerseLink to dynamic list of VerseLinks */
- BLI_dlist_add_item_index(&(((VObjectData*)source->data)->links), vlink, (unsigned int)link_id);
- /* send next link from sending queue */
- if(((VObjectData*)source->data)->queue.first)
- send_verse_link(((VObjectData*)source->data)->queue.first);
- /* set up VerseLink variables */
- vlink->flag = 0;
- vlink->id = link_id;
- vlink->target_id = target_id;
- }
- else {
- /* create new VerseLink */
- vlink = create_verse_link(session, source, target, link_id, target_id, label);
- /* add VerseLink to dynamic list of VerseLinks */
- BLI_dlist_add_item_index(&(((VObjectData*)source->data)->links), vlink, (unsigned int)link_id);
- }
-
- target->counter++;
-
- vlink->post_link_set(vlink);
-}
-
-/*
- * callback function: destroy link between two VerseNodes
- */
-static void cb_o_link_destroy(
- void *user_data,
- VNodeID node_id,
- uint16 link_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VNode *vnode;
- struct VLink *vlink;
-
- if(!session) return;
-
- vnode = BLI_dlist_find_link(&(session->nodes), (unsigned int)node_id);
-
- vlink = BLI_dlist_find_link(&(((VObjectData*)vnode->data)->links), link_id);
-
- if(vlink) {
- vlink->target->counter--;
- free_verse_link_data(vlink);
- BLI_dlist_free_item(&(((VObjectData*)vnode->data)->links), link_id);
- }
-
- vlink->post_link_destroy(vlink);
-}
-
-void set_object_callbacks(void)
-{
- /* position of object was changed */
- verse_callback_set(verse_send_o_transform_pos_real32, cb_o_transform_pos_real32, NULL);
- /* rotation of object was changed */
- verse_callback_set(verse_send_o_transform_rot_real32, cb_o_transform_rot_real32, NULL);
- /* size of object was changed */
- verse_callback_set(verse_send_o_transform_scale_real32, cb_o_transform_scale_real32, NULL);
- /* new link between nodes was created */
- verse_callback_set(verse_send_o_link_set, cb_o_link_set, NULL);
- /* link between nodes was destroyed */
- verse_callback_set(verse_send_o_link_destroy, cb_o_link_destroy, NULL);
-}
-
-#endif
diff --git a/source/blender/blenkernel/intern/verse_session.c b/source/blender/blenkernel/intern/verse_session.c
deleted file mode 100644
index 9771c8a46de..00000000000
--- a/source/blender/blenkernel/intern/verse_session.c
+++ /dev/null
@@ -1,478 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Contributor(s): Jiri Hnidek.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifdef WITH_VERSE
-
-#include <string.h>
-
-#include "MEM_guardedalloc.h"
-
-#include "DNA_mesh_types.h" /* temp */
-#include "DNA_listBase.h"
-#include "DNA_screen_types.h"
-#include "DNA_userdef_types.h"
-
-#include "BLI_dynamiclist.h"
-#include "BLI_blenlib.h"
-
-//XXX #include "BIF_screen.h"
-//XXX #include "BIF_verse.h"
-
-#include "BKE_global.h"
-#include "BKE_verse.h"
-
-struct ListBase session_list={NULL, NULL};
-struct ListBase server_list={NULL, NULL};
-
-static int cb_ping_registered = 0;
-
-/* list of static function prototypes */
-static void cb_connect_terminate(const char *address, const char *bye);
-static void cb_connect_accept(void *user_data, uint32 avatar, void *address, void *connection, const uint8 *host_id);
-static void set_all_callbacks(void);
-static void free_verse_session_data(struct VerseSession *session);
-static void add_verse_server(VMSServer *server);
-static void check_connection_state(struct VerseServer *server);
-
-static void check_connection_state(struct VerseServer *server)
-{
- struct VerseSession *session;
- session = session_list.first;
- while(session) {
- if(strcmp(server->ip,session->address)==0) {
- server->flag = session->flag;
- return;
- }
- session = session->next;
- }
-}
-/*
- * add verse server to server_list. Prevents duplicate
- * entries
- */
-static void add_verse_server(VMSServer *server)
-{
- struct VerseServer *iter, *niter;
- VerseServer *newserver;
- const char *name = verse_ms_field_value(server, "DE");
- iter = server_list.first;
-
- while(iter) {
- niter = iter->next;
- if(strcmp(iter->ip, server->ip)==0) {
- return;
- }
- iter = niter;
- }
-
- newserver = (VerseServer *)MEM_mallocN(sizeof(VerseServer), "VerseServer");
- newserver->ip = (char *)MEM_mallocN(sizeof(char)*(strlen(server->ip)+1), "VerseServer ip");
- strcpy(newserver->ip, server->ip);
-
- if(name) {
- newserver->name = (char *)MEM_mallocN(sizeof(char)*(strlen(name)+strlen(newserver->ip)+4), "VerseServer name");
- strcpy(newserver->name, name);
- strcat(newserver->name, " (");
- strcat(newserver->name, newserver->ip);
- strcat(newserver->name, ")");
- }
-
- newserver->flag = 0;
- check_connection_state(newserver);
-
- printf("Adding new verse server: %s at %s\n", newserver->name, newserver->ip);
-
- BLI_addtail(&server_list, newserver);
- //XXX post_server_add();
-}
-
-/*
- * callback function for ping
- */
-static void cb_ping(void *user, const char *address, const char *message)
-{
- VMSServer **servers = verse_ms_list_parse(message);
- if(servers != NULL)
- {
- int i;
-
- for(i = 0; servers[i] != NULL; i++)
- add_verse_server(servers[i]);
-
- free(servers);
- }
-}
-
-/*
- * callback function for connection terminated
- */
-static void cb_connect_terminate(const char *address, const char *bye)
-{
- VerseSession *session = (VerseSession*)current_verse_session();
-
- if(!session) return;
-
- /* remove session from list of session */
- BLI_remlink(&session_list, session);
- /* do post connect operations */
- session->post_connect_terminated(session);
- /* free session data */
- free_verse_session_data(session);
- /* free session */
- MEM_freeN(session);
-}
-
-/*
- * callback function for accepted connection to verse server
- */
-static void cb_connect_accept(
- void *user_data,
- uint32 avatar,
- void *address,
- void *connection,
- const uint8 *host_id)
-{
- struct VerseSession *session = (VerseSession*)current_verse_session();
- struct VerseServer *server = server_list.first;
- uint32 i, mask=0;
-
- if(!session) return;
-
- session->flag |= VERSE_CONNECTED;
- session->flag &= ~VERSE_CONNECTING;
-
- while(server) {
- if(strcmp(session->address, server->ip)==0) {
- server->flag |= VERSE_CONNECTED;
- server->flag &= ~VERSE_CONNECTING;
- server->session = session;
- break;
- }
- server = server->next;
- }
-
- printf("\tBlender is connected to verse server: %s\n", (char*)address);
- printf("\tVerseSession->counter: %d\n", session->counter);
-
- session->avatar = avatar;
-
- session->post_connect_accept(session);
-
- for(i = 0; i < V_NT_NUM_TYPES; i++)
- mask = mask | (1 << i);
- verse_send_node_index_subscribe(mask);
- verse_send_node_subscribe(session->avatar); /* subscribe to avatar node, as well */
-
- /* create our own method group and method */
- /*verse_send_o_method_group_create(session->avatar, ~0, "tawk-client");*/
-}
-
-/*
- * set up all callbacks for sessions
- */
-void set_verse_session_callbacks(void)
-{
- /* connection */
- verse_callback_set(verse_send_connect_accept, cb_connect_accept, NULL);
- /* connection was terminated */
- verse_callback_set(verse_send_connect_terminate, cb_connect_terminate, NULL);
-
-}
-
-/*
- * set all callbacks used in Blender
- */
-static void set_all_callbacks(void)
-{
- /* set up all callbacks for sessions */
- set_verse_session_callbacks();
-
- /* set up callbacks for nodes */
- set_node_callbacks();
-
- /* set up all callbacks for object nodes */
- set_object_callbacks();
-
- /* set up all callbacks for geometry nodes */
- set_geometry_callbacks();
-
- /* set up all callbacks for bitmap nodes */
- set_bitmap_callbacks();
-
- /* set up all callbacks for method groups and methods */
- set_method_callbacks();
-}
-
-/*
- * this function sends and receive all packets for all sessions
- */
-void b_verse_update(void)
-{
- VerseSession *session, *next_session;
-
- session = session_list.first;
- while(session){
- next_session = session->next;
- verse_session_set(session->vsession);
- if((session->flag & VERSE_CONNECTED) || (session->flag & VERSE_CONNECTING)) {
- verse_callback_update(10);
- session->post_connect_update(session);
- }
- session = next_session;
- }
- if(cb_ping_registered>0) {
- verse_callback_update(10);
- }
-}
-
-/*
- * returns VerseSession coresponding to vsession pointer
- */
-VerseSession *versesession_from_vsession(VSession *vsession)
-{
- struct VerseSession *session;
-
- session = session_list.first;
-
- while(session) {
- if(session->vsession==vsession) return session;
- session = session->next;
- }
-
- return session;
-}
-
-/*
- * returns pointer at current VerseSession
- */
-VerseSession *current_verse_session(void)
-{
- struct VerseSession *session;
- VSession vsession = verse_session_get();
-
- session = session_list.first;
-
- while(session){
- if(session->vsession == vsession)
- return session;
- session = session->next;
- }
-
- printf("error: non-existing SESSION occured!\n");
- return NULL;
-}
-
-/*
- * free VerseSession
- */
-static void free_verse_session_data(VerseSession *session)
-{
- struct VNode *vnode;
-
- /* free data of all nodes */
- vnode = session->nodes.lb.first;
- while(vnode){
- free_verse_node_data(vnode);
- vnode = vnode->next;
- }
-
- /* free data of nodes waiting in queue */
- vnode = session->queue.first;
- while(vnode){
- free_verse_node_data(vnode);
- vnode = vnode->next;
- }
-
- /* free all VerseNodes */
- BLI_dlist_destroy(&(session->nodes));
- /* free all VerseNodes waiting in queque */
- BLI_freelistN(&(session->queue));
-
- /* free name of verse host for this session */
- MEM_freeN(session->address);
-}
-
-/*
- * free VerseSession
- */
-void free_verse_session(VerseSession *session)
-{
- /* remove session from session list*/
- BLI_remlink(&session_list, session);
- /* do post terminated operations */
- session->post_connect_terminated(session);
- /* free session data (nodes, layers) */
- free_verse_session_data(session);
- /* free session */
- MEM_freeN(session);
-}
-
-/*
- * create new verse session and return coresponding data structure
- */
-VerseSession *create_verse_session(
- const char *name,
- const char *pass,
- const char *address,
- uint8 *expected_key)
-{
- struct VerseSession *session;
- VSession *vsession;
-
- vsession = verse_send_connect(name, pass, address, expected_key);
-
- if(!vsession) return NULL;
-
- session = (VerseSession*)MEM_mallocN(sizeof(VerseSession), "VerseSession");
-
- session->flag = VERSE_CONNECTING;
-
- session->vsession = vsession;
- session->avatar = -1;
-
- session->address = (char*)MEM_mallocN(sizeof(char)*(strlen(address)+1),"session adress name");
- strcpy(session->address, address);
-
- session->connection = NULL;
- session->host_id = NULL;
- session->counter = 0;
-
- /* initialize dynamic list of nodes and node queue */
- BLI_dlist_init(&(session->nodes));
- session->queue.first = session->queue.last = NULL;
-
- /* set up all client dependent functions */
- //XXX session->post_connect_accept = post_connect_accept;
- //XXX session->post_connect_terminated = post_connect_terminated;
- //XXX session->post_connect_update = post_connect_update;
-
- //XXX post_server_add();
-
- return session;
-}
-
-/*
- * end verse session and free all session data
- */
-void end_verse_session(VerseSession *session)
-{
- /* send terminate command to verse server */
- verse_send_connect_terminate(session->address, "blender: bye bye");
- /* update callbacks */
- verse_callback_update(1000);
- /* send destroy session command to verse server */
- verse_session_destroy(session->vsession);
- /* set up flag of verse session */
- session->flag &= ~VERSE_CONNECTED;
- /* do post connect operations */
- session->post_connect_terminated(session);
- /* free structure of verse session */
- free_verse_session(session);
-}
-
-void free_all_servers(void)
-{
- VerseServer *server, *nextserver;
-
- server = server_list.first;
-
- while(server) {
- nextserver = server->next;
- BLI_remlink(&server_list, server);
- MEM_freeN(server->name);
- MEM_freeN(server->ip);
- MEM_freeN(server);
- server = nextserver;
- }
-
- BLI_freelistN(&server_list);
-}
-
-/*
- * end connection to all verse hosts (servers) ... free all VerseSessions
- * free all VerseServers
- */
-void end_all_verse_sessions(void)
-{
- VerseSession *session,*nextsession;
-
- session = session_list.first;
-
- while(session) {
- nextsession= session->next;
- end_verse_session(session);
- /* end next session */
- session = nextsession;
- }
-
- BLI_freelistN(&session_list);
-
- free_all_servers();
-}
-
-/*
- * do a get from ms
- */
-void b_verse_ms_get(void)
-{
- if(cb_ping_registered==0) {
- /* handle ping messages (for master server) */
- verse_callback_set(verse_send_ping, cb_ping, NULL);
- //XXX add_screenhandler(G.curscreen, SCREEN_HANDLER_VERSE, 1);
- cb_ping_registered++;
- }
- free_all_servers();
-
- verse_ms_get_send(U.versemaster, VERSE_MS_FIELD_DESCRIPTION, NULL);
- verse_callback_update(10);
-}
-
-/*
- * connect to verse host, set up all callbacks, create session
- */
-void b_verse_connect(char *address)
-{
- VerseSession *session = NULL;
-
- /* if no session was created before, then set up all callbacks */
- if((session_list.first==NULL) && (session_list.last==NULL))
- set_all_callbacks();
-
- /* create new session */
- if(address)
- session = create_verse_session("Blender", "pass", address, NULL);
-
- if(session) {
- /* add new session to the list of sessions */
- BLI_addtail(&session_list, session);
-
- /* add verse handler if this is first session */
- if(session_list.first == session_list.last) {
- //XXX add_screenhandler(G.curscreen, SCREEN_HANDLER_VERSE, 1);
- }
-
- }
-}
-
-#endif
diff --git a/source/blender/blenkernel/intern/writeavi.c b/source/blender/blenkernel/intern/writeavi.c
index 1829a07d543..f84bd690347 100644
--- a/source/blender/blenkernel/intern/writeavi.c
+++ b/source/blender/blenkernel/intern/writeavi.c
@@ -171,7 +171,7 @@ void start_avi(RenderData *rd, int rectx, int recty)
printf("Created avi: %s\n", name);
}
-void append_avi(int frame, int *pixels, int rectx, int recty)
+void append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty)
{
unsigned int *rt1, *rt2, *rectot;
int x, y;
diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
index 908defb08cc..8fd2426a1b6 100644
--- a/source/blender/blenkernel/intern/writeffmpeg.c
+++ b/source/blender/blenkernel/intern/writeffmpeg.c
@@ -558,7 +558,7 @@ static AVStream* alloc_audio_stream(RenderData *rd, int codec_id, AVFormatContex
return NULL;
}
- set_ffmpeg_properties(c, "audio");
+ set_ffmpeg_properties(rd, c, "audio");
if (avcodec_open(c, codec) < 0) {
//XXX error("Couldn't initialize audio codec");
diff --git a/source/blender/blenlib/BLI_editVert.h b/source/blender/blenlib/BLI_editVert.h
index fec89690090..f0f54bae8ea 100644
--- a/source/blender/blenlib/BLI_editVert.h
+++ b/source/blender/blenlib/BLI_editVert.h
@@ -70,9 +70,6 @@ typedef struct EditVert
short fast; /* only 0 or 1, for editmesh_fastmalloc, do not store temp data here! */
int hash;
int keyindex; /* original index #, for restoring key information */
-/*#ifdef WITH_VERSE*/
- void *vvert;
-/*#endif*/
void *data; /* custom vertex data */
} EditVert;
@@ -132,9 +129,6 @@ typedef struct EditFace
unsigned char f, f1, h;
unsigned char fast; /* only 0 or 1, for editmesh_fastmalloc */
unsigned char fgonf; /* flag for fgon options */
-/*#ifdef WITH_VERSE*/
- void *vface;
-/*#endif*/
void *data; /* custom face data */
} EditFace;
@@ -187,9 +181,6 @@ typedef struct EditMesh
CustomData vdata, edata, fdata;
-#ifdef WITH_VERSE
- void *vnode;
-#endif
} EditMesh;
#endif
diff --git a/source/blender/blenlib/BLI_storage_types.h b/source/blender/blenlib/BLI_storage_types.h
index 01627f62e72..385aa39e6cb 100644
--- a/source/blender/blenlib/BLI_storage_types.h
+++ b/source/blender/blenlib/BLI_storage_types.h
@@ -74,9 +74,6 @@ struct direntry{
#define HIDDEN 1
#define FIRST 1
#define ACTIVE 2
-/*#ifdef WITH_VERSE*/
-#define VERSE 3
-/*#endif*/
#define DESELECT 0
#define NOT_YET 0
#define VISIBLE 0
diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt
index 4eb01a50f39..b22e7b1dd70 100644
--- a/source/blender/blenlib/CMakeLists.txt
+++ b/source/blender/blenlib/CMakeLists.txt
@@ -40,11 +40,6 @@ SET(INC
)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
-IF(WITH_VERSE)
- ADD_DEFINITIONS(-DWITH_VERSE)
- SET(INC ${INC} ${VERSE_INC})
-ENDIF(WITH_VERSE)
-
IF(WITH_INTERNATIONAL)
ADD_DEFINITIONS(-DWITH_FREETYPE2)
ENDIF(WITH_INTERNATIONAL)
diff --git a/source/blender/blenlib/SConscript b/source/blender/blenlib/SConscript
index 39d4df62a93..142ffeb0a83 100644
--- a/source/blender/blenlib/SConscript
+++ b/source/blender/blenlib/SConscript
@@ -15,10 +15,6 @@ if env['WITH_BF_SDL']:
if env['WITH_BF_INTERNATIONAL']:
defs = 'WITH_FREETYPE2'
-if env['WITH_BF_VERSE']:
- defs += ' WITH_VERSE'
- incs += ' ' + env['BF_VERSE_INCLUDE']
-
if env['OURPLATFORM'] == 'linux2':
cflags='-pthread'
incs += ' ../../../extern/binreloc/include'
diff --git a/source/blender/blenloader/CMakeLists.txt b/source/blender/blenloader/CMakeLists.txt
index 9101536c23f..1b9c5647702 100644
--- a/source/blender/blenloader/CMakeLists.txt
+++ b/source/blender/blenloader/CMakeLists.txt
@@ -34,10 +34,4 @@ SET(INC
${ZLIB_INC}
)
-IF(WITH_VERSE)
- ADD_DEFINITIONS(-DWITH_VERSE)
- SET(INC ${INC} ${VERSE_INC})
-ENDIF(WITH_VERSE)
-
BLENDERLIB(bf_blenloader "${SRC}" "${INC}")
-#env.BlenderLib ( 'bf_blenloader', sources, Split(incs), Split(defs), libtype=['core','player'], priority = [70, 30] )
diff --git a/source/blender/blenloader/SConscript b/source/blender/blenloader/SConscript
index c07170fea95..5a445ad0cfc 100644
--- a/source/blender/blenloader/SConscript
+++ b/source/blender/blenloader/SConscript
@@ -9,9 +9,6 @@ incs += ' ../render/extern/include'
incs += ' ' + env['BF_ZLIB_INC']
-defs = ''
-if env['WITH_BF_VERSE']:
- defs += ' WITH_VERSE'
- incs += ' ' + env['BF_VERSE_INCLUDE']
+defs = []
-env.BlenderLib ( 'bf_blenloader', sources, Split(incs), Split(defs), libtype=['core','player'], priority = [165, 30] )
+env.BlenderLib ( 'bf_blenloader', sources, Split(incs), defs, libtype=['core','player'], priority = [165, 30] )
diff --git a/source/blender/blenloader/intern/Makefile b/source/blender/blenloader/intern/Makefile
index 4f729d98d00..7382dd655b2 100644
--- a/source/blender/blenloader/intern/Makefile
+++ b/source/blender/blenloader/intern/Makefile
@@ -44,11 +44,6 @@ ifeq ($(OS),$(findstring $(OS), "solaris windows"))
CPPFLAGS += -I$(NAN_ZLIB)/include
endif
-ifeq ($(WITH_VERSE), true)
- CPPFLAGS += -DWITH_VERSE
- CPPFLAGS += -I$(NAN_VERSE)/include
-endif
-
# streaming write function
CPPFLAGS += -I../../writestreamglue
CPPFLAGS += -I../../readstreamglue
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index a34c3cc88a5..ebc6cb4dcbd 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -161,10 +161,6 @@ Any case: direct data is ALWAYS after the lib block
#include "BKE_utildefines.h" // for defines
#include "BKE_modifier.h"
#include "BKE_idprop.h"
-#ifdef WITH_VERSE
-#include "BKE_verse.h"
-//XXX #include "BIF_verse.h"
-#endif
#include "BLO_writefile.h"
#include "BLO_readfile.h"
@@ -918,15 +914,7 @@ static void write_objects(WriteData *wd, ListBase *idbase)
while(ob) {
if(ob->id.us>0 || wd->current) {
/* write LibData */
-#ifdef WITH_VERSE
- /* pointer at vnode stored in file have to be NULL */
- struct VNode *vnode = (VNode*)ob->vnode;
- if(vnode) ob->vnode = NULL;
-#endif
writestruct(wd, ID_OB, "Object", 1, ob);
-#ifdef WITH_VERSE
- if(vnode) ob->vnode = (void*)vnode;
-#endif
/*Write ID Properties -- and copy this comment EXACTLY for easy finding
of library blocks that implement this.*/
@@ -1204,20 +1192,7 @@ static void write_meshs(WriteData *wd, ListBase *idbase)
while(mesh) {
if(mesh->id.us>0 || wd->current) {
/* write LibData */
-#ifdef WITH_VERSE
- struct VNode *vnode = (VNode*)mesh->vnode;
- if(vnode) {
- /* mesh has to be created from verse geometry node*/
- //XXX create_meshdata_from_geom_node(mesh, vnode);
- /* pointer at verse node can't be stored in file */
- mesh->vnode = NULL;
- }
-#endif
-
writestruct(wd, ID_ME, "Mesh", 1, mesh);
-#ifdef WITH_VERSE
- if(vnode) mesh->vnode = (void*)vnode;
-#endif
/* direct data */
if (mesh->id.properties) IDP_WriteProperty(mesh->id.properties, wd);
diff --git a/source/blender/editors/CMakeLists.txt b/source/blender/editors/CMakeLists.txt
index 19a91d08d08..15c0bca8ffb 100644
--- a/source/blender/editors/CMakeLists.txt
+++ b/source/blender/editors/CMakeLists.txt
@@ -71,11 +71,6 @@ IF(WIN32)
SET(INC ${INC} ${PTHREADS_INC})
ENDIF(WIN32)
-IF(WITH_VERSE)
- SET(INC ${INC} ${VERSE_INC})
- ADD_DEFINITIONS(-DWITH_VERSE)
-ENDIF(WITH_VERSE)
-
# TODO buildinfo
IF(BF_BUILDINFO)
ADD_DEFINITIONS(-DNAN_BUILDINFO)
@@ -83,7 +78,3 @@ ENDIF(BF_BUILDINFO)
BLENDERLIB_NOLIST(bf_editors "${SRC}" "${INC}")
-IF(WITH_VERSE)
- ADD_DEPENDENCIES(bf_editors mkprot verse)
-ENDIF(WITH_VERSE)
-
diff --git a/source/blender/editors/screen/CMakeLists.txt b/source/blender/editors/screen/CMakeLists.txt
index c6d1288cf4f..42480f65268 100644
--- a/source/blender/editors/screen/CMakeLists.txt
+++ b/source/blender/editors/screen/CMakeLists.txt
@@ -74,11 +74,6 @@ IF(WIN32)
SET(INC ${INC} ${PTHREADS_INC})
ENDIF(WIN32)
-IF(WITH_VERSE)
- SET(INC ${INC} ${VERSE_INC})
- ADD_DEFINITIONS(-DWITH_VERSE)
-ENDIF(WITH_VERSE)
-
# TODO buildinfo
IF(BF_BUILDINFO)
ADD_DEFINITIONS(-DNAN_BUILDINFO)
@@ -86,7 +81,3 @@ ENDIF(BF_BUILDINFO)
BLENDERLIB_NOLIST(bf_editors "${SRC}" "${INC}")
-IF(WITH_VERSE)
- ADD_DEPENDENCIES(bf_editors mkprot verse)
-ENDIF(WITH_VERSE)
-
diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c
index c7f49a31938..cfae1b127cf 100644
--- a/source/blender/editors/space_outliner/outliner.c
+++ b/source/blender/editors/space_outliner/outliner.c
@@ -3588,7 +3588,7 @@ static void outliner_draw_tree_element(Scene *scene, ARegion *ar, SpaceOops *soo
/* open/close icon, only when sublevels, except for scene */
if(te->subtree.first || (tselem->type==0 && te->idcode==ID_SCE) || (te->flag & TE_LAZY_CLOSED)) {
int icon_x;
- if((tselem->type==0 && ELEM(te->idcode, ID_OB, ID_SCE)) || ELEM4(te->idcode,ID_VN,ID_VS, ID_MS, ID_SS))
+ if(tselem->type==0 && ELEM(te->idcode, ID_OB, ID_SCE))
icon_x = startx;
else
icon_x = startx+5;
@@ -3680,7 +3680,7 @@ static void outliner_draw_hierarchy(SpaceOops *soops, ListBase *lb, int startx,
tselem= TREESTORE(te);
/* horizontal line? */
- if((tselem->type==0 && (te->idcode==ID_OB || te->idcode==ID_SCE)) || ELEM4(te->idcode,ID_VS,ID_VN,ID_MS,ID_SS))
+ if(tselem->type==0 && (te->idcode==ID_OB || te->idcode==ID_SCE))
glRecti(startx, *starty, startx+OL_X, *starty-1);
*starty-= OL_H;
@@ -3693,7 +3693,7 @@ static void outliner_draw_hierarchy(SpaceOops *soops, ListBase *lb, int startx,
te= lb->last;
if(te->parent || lb->first!=lb->last) {
tselem= TREESTORE(te);
- if((tselem->type==0 && te->idcode==ID_OB) || ELEM4(te->idcode,ID_VS,ID_VN,ID_MS,ID_SS)) {
+ if(tselem->type==0 && te->idcode==ID_OB) {
glRecti(startx, y1+OL_H, startx+1, y2);
}
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index 806afa8e624..3f123300c5a 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -170,9 +170,6 @@ typedef struct TransData {
void *extra; /* extra data (mirrored element pointer, in editmode mesh to EditVert) (editbone for roll fixing) (...) */
short flag; /* Various flags */
short protectflag; /* If set, copy of Object or PoseChannel protection */
-/*#ifdef WITH_VERSE*/
- void *verse; /* pointer at verse data struct (VerseVert, etc.) */
-/*#endif*/
} TransData;
typedef struct MouseInput {
@@ -318,10 +315,6 @@ typedef struct TransInfo {
#define TD_USEQUAT (1 << 3)
#define TD_NOTCONNECTED (1 << 4)
#define TD_SINGLESIZE (1 << 5) /* used for scaling of MetaElem->rad */
-#ifdef WITH_VERSE
- #define TD_VERSE_OBJECT (1 << 6)
- #define TD_VERSE_VERT (1 << 7)
-#endif
#define TD_TIMEONLY (1 << 8)
#define TD_NOCENTER (1 << 9)
#define TD_NO_EXT (1 << 10) /* ext abused for particle key timing */
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index cd06c27e12e..6b633600db7 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -1914,15 +1914,6 @@ static void VertsToTransData(TransInfo *t, TransData *td, EditMesh *em, EditVert
td->val = &(eve->bweight);
td->ival = eve->bweight;
}
-
-#ifdef WITH_VERSE
- if(eve->vvert) {
- td->verse = (void*)eve->vvert;
- td->flag |= TD_VERSE_VERT;
- }
- else
- td->flag &= ~TD_VERSE_VERT;
-#endif
}
/* *********************** CrazySpace correction. Now without doing subsurf optimal ****************** */
@@ -3320,15 +3311,6 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object *
{
td->flag |= TD_ACTIVE;
}
-
-#ifdef WITH_VERSE
- if(ob->vnode) {
- td->verse = (void*)ob;
- td->flag |= TD_VERSE_OBJECT;
- }
- else
- td->flag &= ~TD_VERSE_OBJECT;
-#endif
}
@@ -4215,6 +4197,11 @@ void createTransData(bContext *C, TransInfo *t)
else if(t->spacetype == SPACE_NODE) {
t->flag |= T_2D_EDIT|T_POINTS;
createTransNodeData(C, t);
+ if (t->data && (t->flag & T_PROP_EDIT)) {
+ sort_trans_data(t); // makes selected become first in array
+ set_prop_dist(t, 1);
+ sort_trans_data_dist(t);
+ }
}
else if (t->obedit) {
t->ext = NULL;
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index ea79a559f44..76e2e68e015 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -68,10 +68,6 @@
//#include "BSE_editipo.h"
//#include "BSE_editipo_types.h"
-#ifdef WITH_VERSE
-#include "BIF_verse.h"
-#endif
-
#include "BKE_action.h"
#include "BKE_anim.h"
#include "BKE_armature.h"
@@ -91,10 +87,6 @@
#include "BKE_utildefines.h"
#include "BKE_context.h"
-#ifdef WITH_VERSE
-#include "BKE_verse.h"
-#endif
-
#include "ED_view3d.h"
#include "ED_mesh.h"
@@ -272,9 +264,6 @@ void recalcData(TransInfo *t)
{
Scene *scene = t->scene;
Base *base;
-#ifdef WITH_VERSE
- struct TransData *td;
-#endif
#if 0 // TRANSFORM_FIX_ME
if (t->spacetype == SPACE_ACTION) {
@@ -639,17 +628,6 @@ void recalcData(TransInfo *t)
}
}
-#ifdef WITH_VERSE
- for (td = t->data; td < t->data + t->total; td++) {
- if(td->flag & TD_VERSE_VERT) {
- if(td->verse)
- send_versevert_pos((VerseVert*)td->verse);
- }
- else if(td->flag & TD_VERSE_OBJECT)
- if(td->verse) b_verse_send_transformation((Object*)td->verse);
- }
-#endif
-
/* update shaded drawmode while transform */
if(t->spacetype==SPACE_VIEW3D && ((View3D*)t->view)->drawtype == OB_SHADED)
reshadeall_displist(t->scene);
@@ -800,24 +778,6 @@ void postTrans (TransInfo *t)
TransData *td;
G.moving = 0; // Set moving flag off (display as usual)
-#ifdef WITH_VERSE
-
- for (td = t->data; td < t->data + t->total; td++) {
- if(td->flag & TD_VERSE_VERT) {
- if(td->verse) send_versevert_pos((VerseVert*)td->verse);
- }
- else if(td->flag & TD_VERSE_OBJECT) {
- if(td->verse) {
- struct VNode *vnode;
- vnode = (VNode*)((Object*)td->verse)->vnode;
- ((VObjectData*)vnode->data)->flag |= POS_SEND_READY;
- ((VObjectData*)vnode->data)->flag |= ROT_SEND_READY;
- ((VObjectData*)vnode->data)->flag |= SCALE_SEND_READY;
- b_verse_send_transformation((Object*)td->verse);
- }
- }
- }
-#endif
stopConstraint(t);
@@ -927,25 +887,6 @@ void restoreTransObjects(TransInfo *t)
for (td = t->data; td < t->data + t->total; td++) {
restoreElement(td);
-#ifdef WITH_VERSE
- /* position of vertexes and object transformation matrix is sent
- * extra, becuase blender uses synchronous sending of vertexes
- * position as well object trans. matrix and it isn't possible to
- * send it in recalcData sometimes */
- if(td->flag & TD_VERSE_VERT) {
- if(td->verse) {
- ((VerseVert*)td->verse)->flag |= VERT_POS_OBSOLETE;
- }
- }
- else if(td->flag & TD_VERSE_OBJECT)
- if(td->verse) {
- struct VNode *vnode;
- vnode = (VNode*)((Object*)td->verse)->vnode;
- ((VObjectData*)vnode->data)->flag |= POS_SEND_READY;
- ((VObjectData*)vnode->data)->flag |= ROT_SEND_READY;
- ((VObjectData*)vnode->data)->flag |= SCALE_SEND_READY;
- }
-#endif
}
Mat3One(t->mat);
diff --git a/source/blender/imbuf/CMakeLists.txt b/source/blender/imbuf/CMakeLists.txt
index 2d41a6d73e6..61ec3430bff 100644
--- a/source/blender/imbuf/CMakeLists.txt
+++ b/source/blender/imbuf/CMakeLists.txt
@@ -35,11 +35,6 @@ SET(INC
${ZLIB_INC}
)
-IF(WITH_VERSE)
- ADD_DEFINITIONS(-DWITH_VERSE)
- SET(INC ${INC} VERSE_INC)
-ENDIF(WITH_VERSE)
-
IF(WITH_OPENEXR)
ADD_DEFINITIONS(-DWITH_OPENEXR)
ENDIF(WITH_OPENEXR)
diff --git a/source/blender/imbuf/SConscript b/source/blender/imbuf/SConscript
index 27337a0b15a..9da0cf21596 100644
--- a/source/blender/imbuf/SConscript
+++ b/source/blender/imbuf/SConscript
@@ -13,10 +13,6 @@ incs += ' ' + env['BF_ZLIB_INC']
defs = []
-if env['WITH_BF_VERSE']:
- defs.append('WITH_VERSE')
- incs += ' ' + env['BF_VERSE_INCLUDE']
-
if env['WITH_BF_OPENEXR']:
defs.append('WITH_OPENEXR')
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h
index 243f236ce3b..2846d138fbf 100644
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@ -200,15 +200,6 @@ typedef struct PreviewImage {
/* fluidsim Ipo */
#define ID_FLUIDSIM MAKE_ID2('F', 'S')
-
-/*#ifdef WITH_VERSE*/
-#define ID_VS MAKE_ID2('V', 'S') /* fake id for VerseSession, needed for outliner */
-#define ID_VN MAKE_ID2('V', 'N') /* fake id for VerseNode, needed for outliner */
-#define ID_MS MAKE_ID2('M', 'S') /* fake id for VerseServer root entry, needed for outliner */
-#define ID_SS MAKE_ID2('S', 'S') /* fake id for VerseServer entry, needed for ountliner */
-/*#endif*/
-
-
/* id->flag: set frist 8 bits always at zero while reading */
#define LIB_LOCAL 0
#define LIB_EXTERN 1
diff --git a/source/blender/makesdna/DNA_image_types.h b/source/blender/makesdna/DNA_image_types.h
index 7a6e1707dad..371b0d75951 100644
--- a/source/blender/makesdna/DNA_image_types.h
+++ b/source/blender/makesdna/DNA_image_types.h
@@ -95,10 +95,6 @@ typedef struct Image {
/* display aspect - for UV editing images resized for faster openGL display */
float aspx, aspy;
-
-/*#ifdef WITH_VERSE*/
- void *vnode; /* pointer at verse bitmap node */
-/*#endif*/
} Image;
diff --git a/source/blender/makesdna/DNA_mesh_types.h b/source/blender/makesdna/DNA_mesh_types.h
index 8e9341cae0f..7da057efdb1 100644
--- a/source/blender/makesdna/DNA_mesh_types.h
+++ b/source/blender/makesdna/DNA_mesh_types.h
@@ -99,10 +99,6 @@ typedef struct Mesh {
struct Multires *mr; /* Multiresolution modeling data */
struct PartialVisibility *pv;
-/*ifdef WITH_VERSE*/
- /* not written in file, pointer at geometry VerseNode */
- void *vnode;
-/*#endif*/
} Mesh;
/* deprecated by MTFace, only here for file reading */
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index f3d18e0559b..7deea1899d1 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -225,10 +225,6 @@ typedef struct Object {
unsigned int init_state; /* bit masks of initial state as recorded by the users */
int pad2;
-/*#ifdef WITH_VERSE*/
- void *vnode; /* pointer at object VerseNode */
-/*#endif*/
-
ListBase gpulamp; /* runtime, for lamps only */
} Object;
diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c
index 53359a9c39d..de81ff10ae8 100644
--- a/source/blender/makesrna/intern/rna_image.c
+++ b/source/blender/makesrna/intern/rna_image.c
@@ -92,7 +92,6 @@ static void rna_def_image(BlenderRNA *brna)
{IMA_TYPE_IMAGE, "IMAGE", "Image", ""},
{IMA_TYPE_MULTILAYER, "MULTILAYER", "Multilayer", ""},
{IMA_TYPE_UV_TEST, "UVTEST", "UV Test", ""},
- //{IMA_TYPE_VERSE, "VERSE", "Verse", ""},
{IMA_TYPE_R_RESULT, "RENDERRESULT", "Render Result", ""},
{IMA_TYPE_COMPOSITE, "COMPOSITING", "Compositing", ""},
{0, NULL, NULL, NULL}};
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt
index 4f8f4f38167..0b2bd9b4bfd 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -35,11 +35,6 @@ SET(INC
${ZLIB_INC}
)
-IF(WITH_VERSE)
- ADD_DEFINITIONS(-DWITH_VERSE)
- SET(INC ${INC} ${VERSE_INC})
-ENDIF(WITH_VERSE)
-
IF(WITH_OPENEXR)
ADD_DEFINITIONS(-DWITH_OPENEXR)
ENDIF(WITH_OPENEXR)
@@ -64,10 +59,6 @@ ADD_DEFINITIONS(-DWITH_CCGSUBSURF)
BLENDERLIB(bf_nodes "${SRC}" "${INC}")
-IF(WITH_VERSE)
- ADD_DEPENDENCIES(bf_nodes mkprot verse)
-ENDIF(WITH_VERSE)
-
IF(WITH_INTERNATIONAL)
ADD_DEFINITIONS(-DWITH_FREETYPE2)
ENDIF(WITH_INTERNATIONAL)
diff --git a/source/blender/nodes/SConscript b/source/blender/nodes/SConscript
index 7efbbd83aba..c7be20e3ec0 100644
--- a/source/blender/nodes/SConscript
+++ b/source/blender/nodes/SConscript
@@ -28,13 +28,6 @@ else:
if env['WITH_BF_INTERNATIONAL']:
defs += ' WITH_FREETYPE2'
-if env['WITH_BF_VERSE']:
- defs += ' WITH_VERSE'
- incs += ' ' + env['BF_VERSE_INCLUDE']
-
-if env['WITH_BF_VERSE']:
- defs += ' WITH_VERSE'
-
if env['WITH_BF_OPENEXR']:
defs += ' WITH_OPENEXR'
diff --git a/source/blender/python/CMakeLists.txt b/source/blender/python/CMakeLists.txt
index 0ae8e5c421f..b94ae8749df 100644
--- a/source/blender/python/CMakeLists.txt
+++ b/source/blender/python/CMakeLists.txt
@@ -30,11 +30,6 @@ SET(INC
../blenkernel ../editors/include ../windowmanager ${PYTHON_INC}
)
-IF(WITH_VERSE)
- ADD_DEFINITIONS(-DWITH_VERSE)
- SET(INC ${INC} ${VERSE_INC})
-ENDIF(WITH_VERSE)
-
IF(WITH_OPENEXR)
ADD_DEFINITIONS(-DWITH_OPENEXR)
ENDIF(WITH_OPENEXR)
@@ -53,10 +48,6 @@ ADD_DEFINITIONS(-DWITH_CCGSUBSURF)
BLENDERLIB(bf_python "${SRC}" "${INC}")
-IF(WITH_VERSE)
- ADD_DEPENDENCIES(bf_nodes mkprot verse)
-ENDIF(WITH_VERSE)
-
IF(WITH_INTERNATIONAL)
ADD_DEFINITIONS(-DWITH_FREETYPE2)
ENDIF(WITH_INTERNATIONAL)
diff --git a/source/blender/python/intern/Makefile b/source/blender/python/intern/Makefile
index ef4fc8bb58a..ea08ecac945 100644
--- a/source/blender/python/intern/Makefile
+++ b/source/blender/python/intern/Makefile
@@ -62,15 +62,5 @@ CPPFLAGS += -I../../render/extern/include
CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
CPPFLAGS += -I$(NAN_MEMUTIL)/include
-
-ifeq ($(WITH_VERSE), true)
- CPPFLAGS += -DWITH_VERSE
- CPPFLAGS += -I$(NAN_VERSE)/include
- # print some other debug information
- ifeq ($(VERSE_DEBUG_PRINT), true)
- CPPFLAGS += -DVERSE_DEBUG_PRINT
- endif
-endif
-
# path to our own headerfiles
CPPFLAGS += -I..
diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt
index 10830d8d0aa..b381206cb8b 100644
--- a/source/blender/windowmanager/CMakeLists.txt
+++ b/source/blender/windowmanager/CMakeLists.txt
@@ -71,11 +71,6 @@ IF(WIN32)
SET(INC ${INC} ${PTHREADS_INC})
ENDIF(WIN32)
-IF(WITH_VERSE)
- SET(INC ${INC} ${VERSE_INC})
- ADD_DEFINITIONS(-DWITH_VERSE)
-ENDIF(WITH_VERSE)
-
# TODO buildinfo
IF(BF_BUILDINFO)
ADD_DEFINITIONS(-DNAN_BUILDINFO)
@@ -83,7 +78,3 @@ ENDIF(BF_BUILDINFO)
BLENDERLIB_NOLIST(bf_windowmanager "${SRC}" "${INC}")
-IF(WITH_VERSE)
- ADD_DEPENDENCIES(bf_windowmanager mkprot verse)
-ENDIF(WITH_VERSE)
-
diff --git a/source/blender/windowmanager/intern/Makefile b/source/blender/windowmanager/intern/Makefile
index 5ca68bef0a2..b5b04b11be7 100644
--- a/source/blender/windowmanager/intern/Makefile
+++ b/source/blender/windowmanager/intern/Makefile
@@ -71,15 +71,6 @@ ifeq ($(INTERNATIONAL), true)
CPPFLAGS += -DINTERNATIONAL
endif
-ifeq ($(WITH_VERSE), true)
- CPPFLAGS += -DWITH_VERSE
- CPPFLAGS += -I$(NAN_VERSE)/include
- # print some other debug information
- ifeq ($(VERSE_DEBUG_PRINT), true)
- CPPFLAGS += -DVERSE_DEBUG_PRINT
- endif
-endif
-
ifeq ($(WITH_QUICKTIME),true)
CPPFLAGS += -I../quicktime
CPPFLAGS += -DWITH_QUICKTIME
diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c
index 65df71a067a..4bac829c80a 100644
--- a/source/blender/windowmanager/intern/wm_init_exit.c
+++ b/source/blender/windowmanager/intern/wm_init_exit.c
@@ -200,9 +200,6 @@ void WM_exit(bContext *C)
free_ttfont(); /* bke_font.h */
-#ifdef WITH_VERSE
- end_all_verse_sessions();
-#endif
free_openrecent();
BKE_freecubetable();